Very experimental Ed480-Ridinghood support is now in. It's not fully optimized,
but in general the current build is 8-15% slower than Goldilocks. It only works on
arch_x86_64, though arch_ref64 support ought to be easy. Support on other arches
will be trickier, which is of course why I chose Goldilocks over Ridinghood in the
first place.
Next up, E-521. Hopefully.
The code is starting to get spread out over a lot of files. Some are per field*arch,
some per field, some per curve, some global. It's hard to do much about this, though,
with a rather ugly .c.inc system.
There's currently no way to make a Ridinghood eBAT. In fact, I haven't tested eBAT
support in this commit. I also haven't tested NEON, but at least ARCH_32 works on
Intel.
Trying to work around an apparent GCC bug on SSE2, thanks Samuel
Neves.
Added an experimental NEON arch. It's fast. It's not yet GCC clean.
It needs some more work on general cleanliness too.
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.
(you knew this would happen).
Added ARM NEON support.
Added support for precomputation on public keys, which speeds up
later signatures and ECDH calls. See history.txt or the doc for
details.
Reworked internals so that private keys can be derived from any
32-byte secret random value. This also means that secret keys
can be "compressed" for cold storage.
Added more tests. Running the tests now requires GMP, though
Goldilocks itself does not.
Linking now uses visibility instead of exported.sym.
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.
Changed the formats of private keys and shared secrets.
Added SHA512 support. It's slow and probably has endian bugs.
Signatures are now supported.
Renamed a bunch of internal functions to be more readable and
consistent.
Began documenting functions with Doxygen.
See HISTORY.txt for more details.