Hi Collin,
Great work!
> + * lib/sha3.c: New file.
> + * lib/sha3.h: Likewise.
Do these files borrow significant code from other lib/sha* files?
If so, it would be good to indicate this in the ChangeLog entry
("New file, based on ..."), just as a precaution measure against possible
future copyright claims.
> * tests/test-sha3-224-buffer.c: Likewise.
> * tests/test-sha3-256-buffer.c: Likewise.
> * tests/test-sha3-384-buffer.c: Likewise.
> * tests/test-sha3-512-buffer.c: Likewise.
Did you check the expected results against the results of some other
implementation than yours? In other words, where is the proof that the
new code does not have a silly typo somewhere, that leads to completely
different results than those described by FIPS-202?
(Yes, you said that you haven't added the OpenSSL alternative yet. But
maybe it is easy to run openssl interactively, to produce their results,
and compare?)
Re u64 support: I wouldn't have gone through the trouble of using the 'u64'
module. Lots of other code in Gnulib assumes an uint64_t type in <stdint.h>,
for more than 10 or 15 years. But this is not an objection.
Bruno