blob: 99613ef2d679d746aeb16c3f90c38b7c01cfd0c9 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library crypto.crypto_utils;
import 'base64.dart';
/**
* Utility methods for working with message digests.
*/
abstract class CryptoUtils {
/**
* Convert a list of bytes (for example a message digest) into a hex
* string.
*/
static String bytesToHex(List<int> bytes) {
var result = new StringBuffer();
for (var part in bytes) {
result.write('${part < 16 ? '0' : ''}${part.toRadixString(16)}');
}
return result.toString();
}
/**
* Converts a list of bytes into a Base 64 encoded string.
*
* The list can be any list of integers in the range 0..255,
* for example a message digest.
*
* If [addLineSeparator] is true, the resulting string will be
* broken into lines of 76 characters, separated by "\r\n".
*
* If [urlSafe] is true, the result is URL and filename safe.
*
* Based on [RFC 4648](http://tools.ietf.org/html/rfc4648)
*
*/
static String bytesToBase64(List<int> bytes,
{bool urlSafe: false, bool addLineSeparator: false}) {
return BASE64.encode(bytes,
urlSafe: urlSafe, addLineSeparator: addLineSeparator);
}
/**
* Converts a Base 64 encoded String into list of bytes.
*
* Decoder ignores "\r\n" sequences from input.
*
* Accepts both URL safe and unsafe Base 64 encoded strings.
*
* Throws a FormatException exception if input contains invalid characters.
*
* Based on [RFC 4648](http://tools.ietf.org/html/rfc4648)
*/
static List<int> base64StringToBytes(String input) {
return BASE64.decode(input);
}
}