From eee1f125616f0f54c0581f1156a3d44fcebbc2f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Sun, 7 Sep 2014 09:38:29 +0200
Subject: [PATCH] Updated 3.1 release plan.

---
 misc/plan.html | 176 +++++++++++++++----------------------------------
 1 file 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>
-- 
GitLab