src/include/barrett_field.h:
- Requires review: corrected failure to cast to (mask_t) prior to negation. (Or, if this is wrong; should cast to needed bitwidth explicitly.)
- Changed type of nwords_out to uint32_t to agree with header.
src/include/intrinsics.h:
- Fixed up various preprocessor statements to check for definition rather than value of built-ins.
- Added macro to use Clang’s __builtin_readcyclecounter on platforms on which it’s available. (Which is most platforms these days.)
src/include/magic.h: Preprocessor “if” versus “if defined”.
src/include/word.h: Fixed ifdefs; enabled support for memset_s on Darwin. Added explicit cast to mask_t.
Added void to function definitions and declarations in the following files (not including void is okay in modern C++, but not modern C, IIRC):
include/goldilocks.h, src/crandom.c, src/goldilocks.c, src/include/api.h, src/include/intrinsics.h, test/bench.c, test/test.c, test/test.h, test/test_arithmetic.c, test/test_goldilocks.c, test/test_pointops.c, test/test_scalarmul.c, test/test_sha512.c
improve GCC-cleanness, etc.
Disable the crandom output buffer so that it won't return duplicate
data across fork(). I should still stir in more entropy into the
buffer at least when RDRAND is available, but this should prevent
disasters for now.
The Elligator code in the current version is incompatible with past
versions due to a minor tweak. It wasn't being called by any of
the API functions, though.
Removing "magic" constants and type names. So for example p448_t
is now field_t (though maybe it should really be felem_t?). This
should enable other curves with the Goldilocks code in the not-too-
distant future.
Added CRANDOM_MIGHT_IS_MUST so that you don't have to -D a bunch of
things on the command line.
You can `make bat` to make an eBAT which probably doesn't work.
I haven't implemented the improved nonce generation from the
curves@moderncrypto.org thread yet.
Rework the directory structure into something saner, with src/ test/ include/ and build/
Beginning some tests. Also, now support scan-build.
Now support 32-bit including vectorless ARM. NEON is not yet supported, because I don't
have a test machine.
Many internal changes, improvements, and bug fixes.