Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(565)

Unified Diff: lib/src/sha256.dart

Issue 1348983002: Update documentation comments. (Closed) Base URL: git@github.com:dart-lang/crypto.git@master
Patch Set: Code review changes Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/sha1.dart ('k') | lib/src/utils.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/sha256.dart
diff --git a/lib/src/sha256.dart b/lib/src/sha256.dart
index 158f3f950da1455cfee308baea43693d417c5ca0..f66976dfcc3bbe5eb898cfa751dd97c5fb9f5047 100644
--- a/lib/src/sha256.dart
+++ b/lib/src/sha256.dart
@@ -10,19 +10,26 @@ import 'hash.dart';
import 'hash_base.dart';
import 'utils.dart';
-/**
- * SHA256 hash function implementation.
- */
+/// An implementation of the [SHA-256][rfc] hash function.
+///
+/// [rfc]: http://tools.ietf.org/html/rfc6234
abstract class SHA256 implements Hash {
factory SHA256() = _SHA256;
SHA256 newInstance();
}
+/// The concrete implementation of [SHA256].
+///
+/// This is separate so that it can extend [HashBase] without leaking additional
+/// public memebers.
class _SHA256 extends HashBase implements SHA256 {
+ /// The sixteen words from the original chunk, extended to 64 words.
+ ///
+ /// This is an instance variable to avoid re-allocating, but its data isn't
+ /// used across invocations of [updateHash].
final Uint32List _w;
- // Construct a SHA256 hasher object.
_SHA256()
: _w = new Uint32List(64),
super(16, 8, true) {
@@ -38,13 +45,11 @@ class _SHA256 extends HashBase implements SHA256 {
h[7] = 0x5be0cd19;
}
- // Returns a new instance of this Hash.
SHA256 newInstance() {
return new _SHA256();
}
- // Table of round constants. First 32 bits of the fractional
- // parts of the cube roots of the first 64 prime numbers.
+ /// Data from a non-linear function that functions as reproducible noise.
static const List<int> _K = const [
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,
0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,
@@ -61,7 +66,9 @@ class _SHA256 extends HashBase implements SHA256 {
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
];
- // Helper functions as defined in http://tools.ietf.org/html/rfc6234
+ // The following helper functions are taken directly from
+ // http://tools.ietf.org/html/rfc6234.
+
_rotr32(n, x) => (x >> n) | ((x << (32 - n)) & MASK_32);
_ch(x, y, z) => (x & y) ^ ((~x & MASK_32) & z);
_maj(x, y, z) => (x & y) ^ (x & z) ^ (y & z);
@@ -70,8 +77,6 @@ class _SHA256 extends HashBase implements SHA256 {
_ssig0(x) => _rotr32(7, x) ^ _rotr32(18, x) ^ (x >> 3);
_ssig1(x) => _rotr32(17, x) ^ _rotr32(19, x) ^ (x >> 10);
- // Compute one iteration of the SHA256 algorithm with a chunk of
- // 16 32-bit pieces.
void updateHash(Uint32List M) {
assert(M.length == 16);
« no previous file with comments | « lib/src/sha1.dart ('k') | lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698