| Index: lib/src/sha1.dart
|
| diff --git a/lib/src/sha1.dart b/lib/src/sha1.dart
|
| index 3946484172fc54ba44fed78c0c46d53031e66f31..d05922661e1f1a3ed0c071e6f4ac4cc8240b24bd 100644
|
| --- a/lib/src/sha1.dart
|
| +++ b/lib/src/sha1.dart
|
| @@ -2,70 +2,82 @@
|
| // 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.
|
|
|
| -part of crypto;
|
| +library crypto.sha1;
|
| +
|
| +import 'dart:typed_data';
|
| +
|
| +import 'hash.dart';
|
| +import 'hash_base.dart';
|
| +import 'utils.dart';
|
|
|
| /**
|
| * SHA1 hash function implementation.
|
| */
|
| -class SHA1 extends _HashBase {
|
| +abstract class SHA1 implements Hash {
|
| + factory SHA1() = _SHA1;
|
| +
|
| + SHA1 newInstance();
|
| +}
|
| +
|
| +class _SHA1 extends HashBase implements SHA1 {
|
| final Uint32List _w;
|
|
|
| // Construct a SHA1 hasher object.
|
| - SHA1()
|
| + _SHA1()
|
| : _w = new Uint32List(80),
|
| super(16, 5, true) {
|
| - _h[0] = 0x67452301;
|
| - _h[1] = 0xEFCDAB89;
|
| - _h[2] = 0x98BADCFE;
|
| - _h[3] = 0x10325476;
|
| - _h[4] = 0xC3D2E1F0;
|
| + h[0] = 0x67452301;
|
| + h[1] = 0xEFCDAB89;
|
| + h[2] = 0x98BADCFE;
|
| + h[3] = 0x10325476;
|
| + h[4] = 0xC3D2E1F0;
|
| }
|
|
|
| // Returns a new instance of this Hash.
|
| SHA1 newInstance() {
|
| - return new SHA1();
|
| + return new _SHA1();
|
| }
|
|
|
| // Compute one iteration of the SHA1 algorithm with a chunk of
|
| // 16 32-bit pieces.
|
| - void _updateHash(Uint32List m) {
|
| + void updateHash(Uint32List m) {
|
| assert(m.length == 16);
|
|
|
| - var a = _h[0];
|
| - var b = _h[1];
|
| - var c = _h[2];
|
| - var d = _h[3];
|
| - var e = _h[4];
|
| + var a = h[0];
|
| + var b = h[1];
|
| + var c = h[2];
|
| + var d = h[3];
|
| + var e = h[4];
|
|
|
| for (var i = 0; i < 80; i++) {
|
| if (i < 16) {
|
| _w[i] = m[i];
|
| } else {
|
| var n = _w[i - 3] ^ _w[i - 8] ^ _w[i - 14] ^ _w[i - 16];
|
| - _w[i] = _rotl32(n, 1);
|
| + _w[i] = rotl32(n, 1);
|
| }
|
| - var t = _add32(_add32(_rotl32(a, 5), e), _w[i]);
|
| + var t = add32(add32(rotl32(a, 5), e), _w[i]);
|
| if (i < 20) {
|
| - t = _add32(_add32(t, (b & c) | (~b & d)), 0x5A827999);
|
| + t = add32(add32(t, (b & c) | (~b & d)), 0x5A827999);
|
| } else if (i < 40) {
|
| - t = _add32(_add32(t, (b ^ c ^ d)), 0x6ED9EBA1);
|
| + t = add32(add32(t, (b ^ c ^ d)), 0x6ED9EBA1);
|
| } else if (i < 60) {
|
| - t = _add32(_add32(t, (b & c) | (b & d) | (c & d)), 0x8F1BBCDC);
|
| + t = add32(add32(t, (b & c) | (b & d) | (c & d)), 0x8F1BBCDC);
|
| } else {
|
| - t = _add32(_add32(t, b ^ c ^ d), 0xCA62C1D6);
|
| + t = add32(add32(t, b ^ c ^ d), 0xCA62C1D6);
|
| }
|
|
|
| e = d;
|
| d = c;
|
| - c = _rotl32(b, 30);
|
| + c = rotl32(b, 30);
|
| b = a;
|
| - a = t & _MASK_32;
|
| + a = t & MASK_32;
|
| }
|
|
|
| - _h[0] = _add32(a, _h[0]);
|
| - _h[1] = _add32(b, _h[1]);
|
| - _h[2] = _add32(c, _h[2]);
|
| - _h[3] = _add32(d, _h[3]);
|
| - _h[4] = _add32(e, _h[4]);
|
| + h[0] = add32(a, h[0]);
|
| + h[1] = add32(b, h[1]);
|
| + h[2] = add32(c, h[2]);
|
| + h[3] = add32(d, h[3]);
|
| + h[4] = add32(e, h[4]);
|
| }
|
| }
|
|
|