diff --git a/NEWS b/NEWS index 1cea89cabe3ca3590d6e3efa0f3bcedf62130986..04a7138d47744c7fcf2adc5c309bcbdeae6eaa07 100644 --- a/NEWS +++ b/NEWS @@ -1,74 +1,126 @@ -NEWS for the 2.8 release +NEWS for the Nettle 3.0 release - This release includes several interface changes. It is not - binary compatible with earlier versions. It is mostly - source-level (API) compatible, with a couple of + This is a major release, including several interface changes, + and new features, some of which are a bit experimental. + Feedback is highly appreciated. + + It is *not* binary (ABI) compatible with earlier versions. It + is mostly source-level (API) compatible, with a couple of incompatibilities noted below. + There may be some problems in the new interfaces and new + features which really need incompatible fixes. It is likely + that there will be an update in the form of a 3.1 release in + the not too distant future, with small but incompatible + changes, and if that happens, bugfix-only releases 3.0.x are + unlikely. Users and applications which desire better API and + ABI stability are advised to stay with nettle-2.7.x (latest + version is now 2.7.1) until the dust settles. + Interface changes: * For the many _set_key functions, it is now consider the - normal case to have a fixed key size, with no key_size - arguments. _set_key functions with a length parameter are - provided only for algorithms with a truly variable keysize, - and where it makes sense for backwards compatibility. + normal case to have a fixed key size, with no key_size + arguments. _set_key functions with a length parameter are + provided only for algorithms with a truly variable keysize, + and where it makes sense for backwards compatibility. - INCOMPATIBLE CHANGE: cast128_set_key no longer accepts a key size - argument. The old function is available under the new name. - cast5_set_key. + INCOMPATIBLE CHANGE: cast128_set_key no longer accepts a key + size argument. The old function is available under a new + name, cast5_set_key. INCOMPATIBLE CHANGE: The function typedef nettle_set_key_func no longer accepts a key size argument. In particular, this affects users of struct nettle_cipher. + * The nettle_cipher abstraction (in nettle-meta.h) is + restricted to block ciphers only. The encrypt and decrypt + functions now take a const argument for the context. + + INCOMPATIBLE CHANGE: nettle_arcfour, i.e., the nettle_cipher + abstraction for the arcfour stream cipher, is deleted. + + INCOMPATIBLE CHANGE: New type, nettle_cipher_func, for the + encrypt and decrypt fields of struct nettle_cipher. + + * New DSA interface, with a separate struct dsa_param to + represent the underlying group, and generalized dsa_sign and + dsa_verify functions which don't care about the hash + function used. Limited backwards compatibility provided in + dsa-compat.h. + + INCOMPATIBLE CHANGE: Declarations of the old interface, + e.g., struct dsa_public_key, dsa_sha1_sign, etc, is moved to + dsa-compat.h. + + INCOMPATIBLE CHANGE: The various key conversion functions, + e.g., dsa_keypair_to_sexp, all use the new DSA interface, with + no backwards compatible functions. + + INCOMPATIBLE CHANGE: dsa_generate_keypair also uses the new + interface. dsa-compat.h declares a function + dsa_compate_generate_keypair, implementing the old + interface, and #defines dsa_generate_keypair to refer to + this backwards compatible function. + * New AES and Camellia interfaces. There are now separate - context structs for each key size, e.g., aes128_ctx and - camellia256_ctx, and corresponding new functions. The old - interface, with struct aes_ctx and struct camellia_ctx, is - kept for backwards compatibility, but might be removed in - later versions. + context structs for each key size, e.g., aes128_ctx and + camellia256_ctx, and corresponding new functions. The old + interface, with struct aes_ctx and struct camellia_ctx, is + kept for backwards compatibility, but might be removed in + later versions. * The type of most length arguments is changed from unsigned - to size_t. The memxor functions have their pointer arguments - changed from uint8_t * to void *, for consistency with - related libc functions. + to size_t. The memxor functions have their pointer arguments + changed from uint8_t * to void *, for consistency with + related libc functions. - * DSA: Support a wider range for the size of q. XXX Also - interface changes. - Bug fixes: * Building with ./configure --disable-static now works. - + + * Use GMP's allocation functions for temporary storage related + to bignums, to avoid potentially large stack allocations. + New features: * Support for poly1305-aes MAC. * Experimental support for the Chacha stream cipher and the - chacha-poly1305 AEAD mode. Specifications are still in - flux, and future releases may do incompatible changes to - track standardization. Currently uses 256-bit key and 64-bit - nonce. + chacha-poly1305 AEAD mode. Specifications are still in + flux, and future releases may do incompatible changes to + track standardization. Currently uses 256-bit key and 64-bit + nonce. * Support for EAX mode. - * New interfaces for mechanisms providing authenticated - encryption with associated data (AEAD). - + * Support for CCM mode. Contributed by Owen Kirby. + + * Support for additional variants of SHA512 with output size + of 224 and 256 bits. Contributed by Joachim Strömbergson. + + * New interface, struct nettle_aead, for mechanisms providing + authenticated encryption with associated data (AEAD). + + * DSA: Support a wider range for the size of q and a wider + range for the digest size. + Optimizations: * New x86_64 assembly for GCM and MD5. Modest speedups on the - order of 10%-20%. - + order of 10%-20%. + Miscellaneous: - * Use GMP's allocation functions for temporary storage related - to bignums, to avoid potentially large stack allocations. - * The portability fix for the rotation macros, mentioned in NEWS for 2.7.1, actually didn't make it into that release. It is included now. + * cast128_set_key rewritten for clarity, also eliminating a + couple of compiler warnings. + + * New command line tool nettle-pbkdf2. + NEWS for the 2.7.1 release This is a bugfix release.