Commit eee1f125 authored by Niels Möller's avatar Niels Möller

Updated 3.1 release plan.

parent ab8fb60b
......@@ -13,8 +13,8 @@
<body>
<h1> Nettle release plans </h1>
<p> 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]</p>
Nettle-3.1, inspired by similar pages for recent GMP releases. [Last
updated 2014-09-07]</p>
<p class='should'>
This really ought to be done before release
</p>
......@@ -28,163 +28,97 @@
Leave for some later release!
</p>
<h1> Plans for nettle-3.0 </h1>
<p> nettle-3.0 is intended primarily as an API cleanup, with few new
features. </p>
<h1> Plans for nettle-3.1 </h1>
<h2> Interface changes </h2>
<p class='done'>
Change the type of all lengths from <tt>unsigned</tt>
to <tt>size_t</tt>. An ABI change on most 64-bit platforms.
</p>
<p class='done'>
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.
</p>
<p class='done'>
Use the type <tt>uint64_t</tt> for 64-bit block counts in all hash
functions.
</p>
<p class='postponed'>
Move some internal-use macros from macros.h to nettle-internal.h.
</p>
<p class='done'>
Do separate aes128_ctx, etc, with smaller allocation for subkeys.
</p>
<p class='wish'>
<span class='done'>Do the same separation for camellia, which also
use fewer subkeys for shorter key
sizes.</span> <span class='postponed'>(And possibly also for
cast128).</span>
</p>
<p class='done'>
Don't require initialization of *dst_length for base*_decode_update.
</p>
<p class='done'>
New DSA interface, with a separate struct dsa_params.
</p>
<p class='done'>
Drop key size argument from <tt>nettle_set_key_func</tt>.
</p>
<p class='done'>
Use the nettle_cipher abstraction only for block ciphers (in
particular, exclude arcfour). Introduce nettle_cipher_func, with
const for the ctx argument.
</p>
<p class='wish'>
Consider making a public interface similar to nettle_aead? With
the above change, it can't use nettle_crypt_func.
<p class='should'>
Review public functions in ecc.h, move some to ecc-internal.h, to
enable sane support for other types of curves.
</p>
<h2> New features </h2>
<p class='done'>
Add <a href='http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf'>EAX</a >
mode?
</p>
<p class='done'>
Add poly1305.
<p class='should'>
Add support for curve25519. What about the "x25519" name?
</p>
<p class='done'>
Add chacha.
<p class='should'>
Add support for EdDSA25519 signatures.
</p>
<p class='done'>
Add ecc_bit_size function.
<p class='wish'>
Add larger "safe" curves, e.g., M-383, curve41417 and E-521.
</p>
<p class='postponed'>
<p class='wish'>
Add functions for converting ECC points to and from ANSI x9.62.
</p>
<p class='postponed'>
<p class='wish'>
Use side-channel silent GMP functions for RSA and DSA. May require
additional interface changes, to use mpn functions.
</p>
<h2> Documentation </h2>
<p class='done'>
Document new AES and Camellia interface.
Make it possible to build nettle and hogweed using mini-gmp.
</p>
<p class='done'>
Document additional sha512 variants.
<p class='should'>
Side-channel silent mem_equalp.
</p>
<p class='done'>
Document new EAX mode.
<h2> Optimizations </h2>
<p class='should'>
Support for using AES acceleration.
</p>
<p class='done'>
Document new CCM mode.
<p class='should'>
Assembly optimizations for ARMv8 (64-bit).
</p>
<p class='done'>
Document new DSA interface.
<h2> Miscellaneous </h2>
<p class='should'>
Use more GMP-6 functions when available.
</p>
<p class='done'>
Document poly1305.
<h2> Documentation </h2>
<p class='should'>
Document curve25519.
</p>
<p class='done'>
Document chacha.
<p class='should'>
Document EdDSA.
</p>
<h2> Build system </h2>
<p class='done'>
Update config.guess and config.sub. Needed for ppc64le support.
</p>
<p class='postponed'>
Stop using the nonstandard <tt>.po</tt> extension,
using <tt>.p.o</tt> or some subdirectory instead. Also drop
<tt>CCPIC_MAYBE</tt>, and let the static libraries depend on the
right object files.
</p>
<p class='postponed'>
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.
<p class='should'>
Support for fat binaries on ARM and x86_64, selecting code at
runtime depending on cpu capabilities.
</p>
<p class='done'>
Delay building of test programs until <tt>make check</tt>.
Stop using the nonstandard <tt>.po</tt> extension.
</p>
<p class='done'>
Fix dependency problems with <tt>--disable-static</tt>.
Reconsider assembly make rules, going back to an .asm.o: rule
might work better with Solaris' make.
</p>
<p class='postponed'>
Make the time consuming ecc_curve_check in eccdata.c
optional. <span class='done'>Enabled optimization instead.</span>
<p class='should'>
Update AX_CREATE_STDINT_H to the latest version.
</p>
<h2> Testing </h2>
<p> Since xenofarm isn't up and running, do some manual testing:
</p>
<ul>
<li class='done'> Test with gmp-6.0.0 </li>
<li class='done'> x86_64-linux-gnu</li>
<li class='done'> x86-linux-gnu</li>
<li class='done'> x86_64-freebsd</li>
<li class='postponed'> x86-freebsd (building with -m32 on a 64-bit
system doesn't work due to broken header files).</li>
<li class='done'> x86-w*ndows (using cross compiler and wine)</li>
<li class='done'> x86_64-w*ndows (using cross compiler and wine)</li>
<li class='done'> x86-darwin (needs help from Nettle users)</li>
<li class='done'> x86_64-darwin (needs help from Nettle users)</li>
<li class='done'> armv7-linux-gnu (pandaboard test platform)</li>
<li class='wish'> armv7-android (possible test platform: N10 tablet)</li>
<li class='done'> sparc32-solaris10</li>
<li class='done'> sparc64-solaris10</li>
<li class='should> x86_64-linux-gnu</li>
<li class='should'> x86-linux-gnu</li>
<li class='should'> x86_64-freebsd</li>
<li class='should'> x86-w*ndows (using cross compiler and wine)</li>
<li class='should'> x86_64-w*ndows (using cross compiler and wine)</li>
<li class='should'> x86-darwin (needs help from Nettle users)</li>
<li class='should'> x86_64-darwin (needs help from Nettle users)</li>
<li class='should'> armv7-linux-gnu (pandaboard test platform)</li>
<li class='wish'> armv7-android </li>
<li class='should'> sparc32-solaris10</li>
<li class='should'> sparc64-solaris10</li>
</ul>
<h1> Changes under consideration for later releases </h1>
<p> These are some other changes under consideration. </p>
<h2> New features </h2>
<p class='should'>
Make it possible to build nettle and hogweed using mini-gmp.
</p>
<p class='should'>
Fat binary, selecting code at runtime depending on cpu
capabilities.
</p>
<p class='should'>
Side-channel silent mem_equalp.
</p>
<h2> Interface changes </h2>
<p class='should'>
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.
</p>
<h2> Miscellaneous </h2>
<p class='should'>
Update AX_CREATE_STDINT_H to the latest version.
</p>
</body>
</html>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment