summaryrefslogtreecommitdiff
path: root/misc/plan.html
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2014-09-07 09:38:29 +0200
committerNiels Möller <nisse@lysator.liu.se>2014-09-07 09:38:29 +0200
commiteee1f125616f0f54c0581f1156a3d44fcebbc2f9 (patch)
tree1345f5570d0af07085eb7d1bfd5d101b5cff28f7 /misc/plan.html
parentab8fb60b93cacb54e00e75da3133d2af6f1d32ec (diff)
downloadnettle-eee1f125616f0f54c0581f1156a3d44fcebbc2f9.tar.gz
Updated 3.1 release plan.
Diffstat (limited to 'misc/plan.html')
-rw-r--r--misc/plan.html176
1 files changed, 53 insertions, 123 deletions
diff --git a/misc/plan.html b/misc/plan.html
index 3f8ff489..aafd0992 100644
--- a/misc/plan.html
+++ b/misc/plan.html
@@ -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>