| Index: mojo/public/dart/third_party/crypto/lib/crypto.dart
|
| diff --git a/mojo/public/dart/third_party/crypto/lib/crypto.dart b/mojo/public/dart/third_party/crypto/lib/crypto.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..eb2905a7e2dfb10abf6d28ba5b8ed34c20a37835
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/crypto/lib/crypto.dart
|
| @@ -0,0 +1,112 @@
|
| +// 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.
|
| +
|
| +/**
|
| + * Cryptographic algorithms, with support for hash functions such as
|
| + * SHA-1, SHA-256, HMAC, and MD5.
|
| + */
|
| +library crypto;
|
| +
|
| +import 'dart:math';
|
| +import 'dart:typed_data';
|
| +import 'dart:convert';
|
| +
|
| +part 'src/crypto_utils.dart';
|
| +part 'src/hash_utils.dart';
|
| +part 'src/hmac.dart';
|
| +part 'src/md5.dart';
|
| +part 'src/sha1.dart';
|
| +part 'src/sha256.dart';
|
| +part 'src/base64.dart';
|
| +
|
| +/**
|
| + * Interface for cryptographic hash functions.
|
| + *
|
| + * The [add] method is used to add data to the hash. The [close] method
|
| + * is used to extract the message digest.
|
| + *
|
| + * Once the [close] method has been called no more data can be added using the
|
| + * [add] method. If [add] is called after the first call to [close] a
|
| + * HashException is thrown.
|
| + *
|
| + * If multiple instances of a given Hash is needed the [newInstance]
|
| + * method can provide a new instance.
|
| + */
|
| +// TODO(floitsch): make Hash implement Sink, EventSink or similar.
|
| +abstract class Hash {
|
| + /**
|
| + * Add a list of bytes to the hash computation.
|
| + */
|
| + void add(List<int> data);
|
| +
|
| + /**
|
| + * Finish the hash computation and extract the message digest as
|
| + * a list of bytes.
|
| + */
|
| + List<int> close();
|
| +
|
| + /**
|
| + * Returns a new instance of this hash function.
|
| + */
|
| + Hash newInstance();
|
| +
|
| + /**
|
| + * Internal block size of the hash in bytes.
|
| + *
|
| + * This is exposed for use by the HMAC class which needs to know the
|
| + * block size for the [Hash] it is using.
|
| + */
|
| + int get blockSize;
|
| +}
|
| +
|
| +/**
|
| + * Utility methods for working with message digests.
|
| + */
|
| +class CryptoUtils {
|
| + /**
|
| + * Convert a list of bytes (for example a message digest) into a hex
|
| + * string.
|
| + */
|
| + static String bytesToHex(List<int> bytes) {
|
| + return _CryptoUtils.bytesToHex(bytes);
|
| + }
|
| +
|
| + /**
|
| + * 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 _CryptoUtils.bytesToBase64(bytes,
|
| + urlSafe,
|
| + 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 _CryptoUtils.base64StringToBytes(input);
|
| + }
|
| +}
|
|
|