From: Niels Möller This is an attempt at defining a development target for
- Nettle-3.0, inspired by similar pages for recent GMP releases. [Last
- updated 2014-06-04] Nettle release plans
This really ought to be done before release
@@ -28,163 +28,97 @@ Leave for some later release! -nettle-3.0 is intended primarily as an API cleanup, with few new - features.
+- Change the type of all lengths from unsigned - to size_t. An ABI change on most 64-bit platforms. -
-- Change argument type of memxor and memxor3 from uint8_t * to void - * (like modern memcpy). Consider them unconditionally part of the - nettle library, with nettle_ prefix on the symbols, and no - AC_REPLACE_FUNCS. -
-- Use the type uint64_t for 64-bit block counts in all hash - functions. -
-- Move some internal-use macros from macros.h to nettle-internal.h. -
-- Do separate aes128_ctx, etc, with smaller allocation for subkeys. -
-- Do the same separation for camellia, which also - use fewer subkeys for shorter key - sizes. (And possibly also for - cast128). -
-- Don't require initialization of *dst_length for base*_decode_update. -
-- New DSA interface, with a separate struct dsa_params. -
-- Drop key size argument from nettle_set_key_func. -
-- Use the nettle_cipher abstraction only for block ciphers (in - particular, exclude arcfour). Introduce nettle_cipher_func, with - const for the ctx argument. -
-- Consider making a public interface similar to nettle_aead? With - the above change, it can't use nettle_crypt_func. +
+ Review public functions in ecc.h, move some to ecc-internal.h, to + enable sane support for other types of curves.
- Add EAX - mode? -
-- Add poly1305. +
+ Add support for curve25519. What about the "x25519" name?
-- Add chacha. +
+ Add support for EdDSA25519 signatures.
-- Add ecc_bit_size function. +
+ Add larger "safe" curves, e.g., M-383, curve41417 and E-521.
-+
Add functions for converting ECC points to and from ANSI x9.62.
-+
Use side-channel silent GMP functions for RSA and DSA. May require additional interface changes, to use mpn functions.
-- Document new AES and Camellia interface. + Make it possible to build nettle and hogweed using mini-gmp.
-- Document additional sha512 variants. +
+ Side-channel silent mem_equalp.
-- Document new EAX mode. + +
+ Support for using AES acceleration.
-- Document new CCM mode. + +
+ Assembly optimizations for ARMv8 (64-bit).
-- Document new DSA interface. + +
+ Use more GMP-6 functions when available.
-- Document poly1305. + +
+ Document curve25519.
-- Document chacha. +
+ Document EdDSA.
- Update config.guess and config.sub. Needed for ppc64le support. -
-- Stop using the nonstandard .po extension, - using .p.o or some subdirectory instead. Also drop - CCPIC_MAYBE, and let the static libraries depend on the - right object files. -
-- Reconsider assembly make rules, going back to a .asm.o: rule might - work better with Solaris' make. Alternatively, simply drop support - for non-GNU make programs. +
+ Support for fat binaries on ARM and x86_64, selecting code at + runtime depending on cpu capabilities.
- Delay building of test programs until make check. + Stop using the nonstandard .po extension.
- Fix dependency problems with --disable-static. + Reconsider assembly make rules, going back to an .asm.o: rule + might work better with Solaris' make.
-- Make the time consuming ecc_curve_check in eccdata.c - optional. Enabled optimization instead. +
+ Update AX_CREATE_STDINT_H to the latest version.
Since xenofarm isn't up and running, do some manual testing:
These are some other changes under consideration.
-- Make it possible to build nettle and hogweed using mini-gmp. -
-- Fat binary, selecting code at runtime depending on cpu - capabilities. -
-- Side-channel silent mem_equalp. -
-For Merkle-Damgaard hash functions, separate the state and the @@ -198,9 +132,5 @@ the private key is not available to the library. And without an explosion of the number of functions.
-- Update AX_CREATE_STDINT_H to the latest version. -