You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add SHA384 and SHA512
Sha384 and Sha512 share the same implementation and differ only in the
initailization vectors and the digest concatentation. The algorithm from
from rfc6234 calls for 64bit words and operations and to remain dart2js
friendly, BigInt was used.
INPUT REQUESTED:
I'm not sure where the test vectors came from; but a simple comparison
to sha384 and sha512 command line methods shows it matching. If you
can point me to them, then I can write a better test.
* Add Sha224 + Refactor
Do something less stupid; use _Sha32BitSink and _Sha64BitSink to have
class heirarchies make better sense.
* Support 32bit and 64bit operations for SHA384/512
Two modes of operation: if you're in a browser, you get the slower 32bit
algorithm because you only have 2^53 bits. If you are on the VM /
Flutter, you'll have 64bit operations wich is *much* faster:
32BIT NUMBERS: ~20MB/s hashing
Removing BigInt has some good results:
Instance of 'Sha224' warmup: 0:00:00.015599
Instance of 'Sha256' warmup: 0:00:00.002325
Instance of 'Sha384' warmup: 0:00:00.019082
Instance of 'Sha512' warmup: 0:00:00.010288
Instance of 'Sha224' real: 0:00:00.092928
Instance of 'Sha256' real: 0:00:00.093426
Instance of 'Sha384' real: 0:00:00.823335
Instance of 'Sha512' real: 0:00:00.807871
64BIT NUMBERS: ~236MB/s hashing
On the VM, this is much faster with 64bit operations.
Instance of 'Sha224' warmup: 0:00:00.013285
Instance of 'Sha256' warmup: 0:00:00.002443
Instance of 'Sha384' warmup: 0:00:00.020954
Instance of 'Sha512' warmup: 0:00:00.005616
Instance of 'Sha224' real: 0:00:00.097196
Instance of 'Sha256' real: 0:00:00.094167
Instance of 'Sha384' real: 0:00:00.067605
Instance of 'Sha512' real: 0:00:00.067564
NOTE:
Compiles with dart2js - cannot reference 64bit hex as the compiler just
vomits... but you can left shift by 32.
* Fix comment
* Add conditional imports
* De-listify 32bit allocations
Speed is still meh in dart2js:
384/512 numbers:
Instance of 'minified:a2' real: 0:00:02.203820
Instance of 'minified:aO' real: 0:00:02.192515
* Add sha monte tests for 224,256,384, and 512
RSP values came from http://csrc.nist.gov/groups/STM/cavp/documents/shs/shabytetestvectors.zip
* Fix formattting of lib/crypto.dart
* Bump version (adding new features) + min sdk
* Bump travis (hidden file)
* Rework monte test to function-only.
0 commit comments