Nettle release plans

This is an attempt at defining a development target for Nettle-2.8, inspired by similar pages for recent GMP releases. [Last updated 2013-10-05]

This really ought to be done before release

Try to get this done before release


Leave for some later release!

Plans for nettle-2.8

nettle-2.8 is intended to be a minor API cleanup, with few new features.

Interface changes

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.

Consider doing the same separation for camellia, cast128, and twofish, which also use fewer subkeys for shorter key sizes.

Don't require initialization of *dst_length for base*_decode_update.

Rename gcm "iv" to "nonce". Keep old names for backwards compatibility.

New features

Add EAX mode?


Document new AES interface.

Document new EAX mode.

Build system

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.

Delay building of test programs until make check.

Fix dependency problems with --disable-static.


Since xenofarm isn't up and running, do some manual testing:

Plans for nettle-3.0

These are some larger API changes under consideration.

Interface changes

For Merkle-Damgaard hash functions, separate the state and the buffering. E.g., when using them for HMAC keyed "inner" and "outer" states, we now get three buffers but we only need one.

Use the nettle_cipher abstraction only for block ciphers (in particular, exclude arcfour). Use a const for the ctx argument to nettle_crypt_func.

Consider making a public interface similar to nettle_aead? With the above change, it can't use nettle_crypt_func.

Make it possible to build nettle and hogweed using mini-gmp.

Reorganize private key operations. Need to support RSA with and without blinding, and DSA according to spec and some deterministic variant (like putty), and possibly also smartcard versions where the private key is not available to the library. And without an explosion of the number of functions.