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

Updated 3.1 release plan.

parent ab8fb60b
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
<body> <body>
<h1> Nettle release plans </h1> <h1> Nettle release plans </h1>
<p> This is an attempt at defining a development target for <p> This is an attempt at defining a development target for
Nettle-3.0, inspired by similar pages for recent GMP releases. [Last Nettle-3.1, inspired by similar pages for recent GMP releases. [Last
updated 2014-06-04]</p> updated 2014-09-07]</p>
<p class='should'> <p class='should'>
This really ought to be done before release This really ought to be done before release
</p> </p>
...@@ -28,163 +28,97 @@ ...@@ -28,163 +28,97 @@
Leave for some later release! Leave for some later release!
</p> </p>
<h1> Plans for nettle-3.0 </h1> <h1> Plans for nettle-3.1 </h1>
<p> nettle-3.0 is intended primarily as an API cleanup, with few new
features. </p>
<h2> Interface changes </h2> <h2> Interface changes </h2>
<p class='done'> <p class='should'>
Change the type of all lengths from <tt>unsigned</tt> Review public functions in ecc.h, move some to ecc-internal.h, to
to <tt>size_t</tt>. An ABI change on most 64-bit platforms. enable sane support for other types of curves.
</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> </p>
<h2> New features </h2> <h2> New features </h2>
<p class='done'> <p class='should'>
Add <a href='http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf'>EAX</a > Add support for curve25519. What about the "x25519" name?
mode?
</p>
<p class='done'>
Add poly1305.
</p> </p>
<p class='done'> <p class='should'>
Add chacha. Add support for EdDSA25519 signatures.
</p> </p>
<p class='done'> <p class='wish'>
Add ecc_bit_size function. Add larger "safe" curves, e.g., M-383, curve41417 and E-521.
</p> </p>
<p class='postponed'> <p class='wish'>
Add functions for converting ECC points to and from ANSI x9.62. Add functions for converting ECC points to and from ANSI x9.62.
</p> </p>
<p class='postponed'> <p class='wish'>
Use side-channel silent GMP functions for RSA and DSA. May require Use side-channel silent GMP functions for RSA and DSA. May require
additional interface changes, to use mpn functions. additional interface changes, to use mpn functions.
</p> </p>
<h2> Documentation </h2>
<p class='done'> <p class='done'>
Document new AES and Camellia interface. Make it possible to build nettle and hogweed using mini-gmp.
</p> </p>
<p class='done'> <p class='should'>
Document additional sha512 variants. Side-channel silent mem_equalp.
</p> </p>
<p class='done'>
Document new EAX mode. <h2> Optimizations </h2>
<p class='should'>
Support for using AES acceleration.
</p> </p>
<p class='done'>
Document new CCM mode. <p class='should'>
Assembly optimizations for ARMv8 (64-bit).
</p> </p>
<p class='done'>
Document new DSA interface. <h2> Miscellaneous </h2>
<p class='should'>
Use more GMP-6 functions when available.
</p> </p>
<p class='done'>
Document poly1305. <h2> Documentation </h2>
<p class='should'>
Document curve25519.
</p> </p>
<p class='done'> <p class='should'>
Document chacha. Document EdDSA.
</p> </p>
<h2> Build system </h2> <h2> Build system </h2>
<p class='done'> <p class='should'>
Update config.guess and config.sub. Needed for ppc64le support. Support for fat binaries on ARM and x86_64, selecting code at
</p> runtime depending on cpu capabilities.
<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> </p>
<p class='done'> <p class='done'>
Delay building of test programs until <tt>make check</tt>. Stop using the nonstandard <tt>.po</tt> extension.
</p> </p>
<p class='done'> <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>
<p class='postponed'> <p class='should'>
Make the time consuming ecc_curve_check in eccdata.c Update AX_CREATE_STDINT_H to the latest version.
optional. <span class='done'>Enabled optimization instead.</span>
</p> </p>
<h2> Testing </h2> <h2> Testing </h2>
<p> Since xenofarm isn't up and running, do some manual testing: <p> Since xenofarm isn't up and running, do some manual testing:
</p> </p>
<ul> <ul>
<li class='done'> Test with gmp-6.0.0 </li> <li class='should> x86_64-linux-gnu</li>
<li class='done'> x86_64-linux-gnu</li> <li class='should'> x86-linux-gnu</li>
<li class='done'> x86-linux-gnu</li> <li class='should'> x86_64-freebsd</li>
<li class='done'> x86_64-freebsd</li> <li class='should'> x86-w*ndows (using cross compiler and wine)</li>
<li class='postponed'> x86-freebsd (building with -m32 on a 64-bit <li class='should'> x86_64-w*ndows (using cross compiler and wine)</li>
system doesn't work due to broken header files).</li> <li class='should'> x86-darwin (needs help from Nettle users)</li>
<li class='done'> x86-w*ndows (using cross compiler and wine)</li> <li class='should'> x86_64-darwin (needs help from Nettle users)</li>
<li class='done'> x86_64-w*ndows (using cross compiler and wine)</li> <li class='should'> armv7-linux-gnu (pandaboard test platform)</li>
<li class='done'> x86-darwin (needs help from Nettle users)</li> <li class='wish'> armv7-android </li>
<li class='done'> x86_64-darwin (needs help from Nettle users)</li> <li class='should'> sparc32-solaris10</li>
<li class='done'> armv7-linux-gnu (pandaboard test platform)</li> <li class='should'> sparc64-solaris10</li>
<li class='wish'> armv7-android (possible test platform: N10 tablet)</li>
<li class='done'> sparc32-solaris10</li>
<li class='done'> sparc64-solaris10</li>
</ul> </ul>
<h1> Changes under consideration for later releases </h1> <h1> Changes under consideration for later releases </h1>
<p> These are some other changes under consideration. </p> <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> <h2> Interface changes </h2>
<p class='should'> <p class='should'>
For Merkle-Damgaard hash functions, separate the state and the For Merkle-Damgaard hash functions, separate the state and the
...@@ -198,9 +132,5 @@ ...@@ -198,9 +132,5 @@
the private key is not available to the library. And without an the private key is not available to the library. And without an
explosion of the number of functions. explosion of the number of functions.
</p> </p>
<h2> Miscellaneous </h2>
<p class='should'>
Update AX_CREATE_STDINT_H to the latest version.
</p>
</body> </body>
</html> </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