On Sun, Nov 04 2018, brian m. carlson wrote:
> SHA-1 is weak and we need to transition to a new hash function. For
> some time, we have referred to this new function as NewHash. Recently,
> we decided to pick SHA-256 as NewHash. The reasons behind the choice of
> SHA-256 are outlined in the thread starting at [1] and in the commit
> history for the hash function transition document.
Nit: In some contradiction now to what's said in
hash-function-transition.txt, see 5988eb631a ("doc
hash-function-transition: clarify what SHAttered means", 2018-03-26).
> + {
> + "sha256",
> + /* "s256", big-endian */
The existing entry/comment for sha1 is:
"sha1",
/* "sha1", big-endian */
So why the sha256/s256 difference in the code/comment? Wondering if I'm
missing something and we're using "s256" for something.
> const char *empty_tree_oid_hex(void)
> diff --git a/sha256/block/sha256.c b/sha256/block/sha256.c
> [...]
I had a question before about whether we see ourselves perma-forking
this implementation based off libtomcrypt, as I recall you said yes.
Still, I think it would be better to introduce this in at least two-four
commits where the upstream code is added as-is, then trimmed down to
size, then adapted to our coding style, and finally we add our own
utility functions.
It'll make it easier to forward-port any future upstream changes.
> + perl -E "for (1..100000) { print q{aaaaaaaaaa}; }" | \
> + test-tool sha256 >actual &&
> + grep cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0
> actual &&
> + perl -E "for (1..100000) { print q{abcdefghijklmnopqrstuvwxyz}; }" | \
> + test-tool sha256 >actual &&
I've been wanting to make use depend on perl >= 5.10 (previous noises
about that on-list), but for now we claim to support >=5.8, which
doesn't have the -E switch.
But most importantly you aren't even using -E features here, and this
isn't very idoimatic Perl. Instead do, respectively:
perl -e 'print q{aaaaaaaaaa} x 100000'
perl -e "print q{abcdefghijklmnopqrstuvwxyz} x 100000"