plan.html 4.77 KB
Newer Older
Niels Möller's avatar
Niels Möller committed
1
<?xml version="1.0" encoding="utf-8"?>
Niels Möller's avatar
Niels Möller committed
2 3 4 5 6 7 8 9
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <link rel="stylesheet" title="Default"
      type="text/css" href="todo.css" media="all"/>
    <meta http-equiv="Content-Type"
Niels Möller's avatar
Niels Möller committed
10
      content="text/html; charset=utf-8"/>
Niels Möller's avatar
Niels Möller committed
11
<title>TODO for coming releases</title>
Niels Möller's avatar
Niels Möller committed
12 13
</head>
<body>
Niels Möller's avatar
Niels Möller committed
14
  <h1> Nettle release plans </h1>
Niels Möller's avatar
Niels Möller committed
15
  <p> This is an attempt at defining a development target for
Niels Möller's avatar
Niels Möller committed
16 17
  Nettle-2.7, inspired by similar pages for recent GMP releases. [Last
  updated 2013-04-02]</p>
Niels Möller's avatar
Niels Möller committed
18 19 20 21 22 23 24 25 26 27 28 29
  <p class='should'>
    This really ought to be done before release
  </p>
  <p class='wish'>
    Try to get this done before release
  </p>
  <p class='done'>
    Done!
  </p>
  <p class='postponed'>
    Leave for some later release!
  </p>
Niels Möller's avatar
Niels Möller committed
30

Niels Möller's avatar
Niels Möller committed
31
  <h1> Plan for the Nettle-2.7 release </h1>
Niels Möller's avatar
Niels Möller committed
32
  <h2> Code </h2>
Niels Möller's avatar
Niels Möller committed
33
  <p class='done'>
Niels Möller's avatar
Niels Möller committed
34 35
    Support older GMP versions, as far as practical.
  </p>
Niels Möller's avatar
Niels Möller committed
36
  <p class='done'>
Niels Möller's avatar
Niels Möller committed
37 38 39
    Make use of GMP's mpn_cnd_add_n and mpn_sub_n (which will be
    available in the next GMP release).
  </p>
40 41 42
  <p class='should'>
    Implement <tt>ecc_point_mul</tt> and <tt>ecc_point_mul_g</tt>.
  </p>  
Niels Möller's avatar
Niels Möller committed
43 44 45 46 47 48 49 50 51
  <p class='should'>
    Rewrite x86_64/sha3-permute.asm. Moves between xmm registers and
    regular registers kill performance at least on some AMD
    processors.
  </p>
  <p class='wish'>
    Include UMAC. Needs a serious effort to produce test vectors.
  </p>
  
Niels Möller's avatar
Niels Möller committed
52
  <h2> Documentation </h2>
Niels Möller's avatar
Niels Möller committed
53
  <p class='done'>
Niels Möller's avatar
Niels Möller committed
54 55 56 57 58
    Document new ECC functions.
  </p>
  <p class='should'>
    Document salsa20r12.
  </p>
Niels Möller's avatar
Niels Möller committed
59
  <p class='should'>
Niels Möller's avatar
Niels Möller committed
60 61
    Update NEWS file.
  </p>
Niels Möller's avatar
Niels Möller committed
62

Niels Möller's avatar
Niels Möller committed
63 64 65 66 67
  <h2> Build system </h2>
  <p class='done'>
    Ensure that <tt>make install</tt> without a preceding
    <tt>make</tt> works.
  </p>
Niels Möller's avatar
Niels Möller committed
68 69 70 71 72 73
  <p class='wish'>
    Make the assembly ALIGN-macro non-logarithmic, reusing the m4 log2
    macro in GMP. Current macros have the problem that in m4 eval,
    <tt>&lt;&lt;</tt> is not supported by Solaris, while <tt>**</tt>
    is not supported by OpenBSD.
  </p>
Niels Möller's avatar
Niels Möller committed
74

Niels Möller's avatar
Niels Möller committed
75 76
  <h2> Testing </h2>
  <p> Since xenofarm isn't up and running, do some manual testing:
Niels Möller's avatar
Niels Möller committed
77
  </p>
Niels Möller's avatar
Niels Möller committed
78
  <ul>
Niels Möller's avatar
Niels Möller committed
79
    <li class='should'> x86_64-linux-gnu</li>
80
    <li class='should'> x86_64-freebsd</li>
Niels Möller's avatar
Niels Möller committed
81
    <li class='should'> x86-linux-gnu</li>
82 83
    <li class='should'> x86-freebsd</li>
    <li class='should'> x86-w*ndows (using cross compiler and wine)</li>
Niels Möller's avatar
Niels Möller committed
84 85 86 87 88 89
    <li class='wish'> x86_64-w*ndows (seems a bit harder since 64-bit
    wine is not yet available in debian)</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 (possible test platform: N10 tablet)</li>
90 91
    <li class='should'> sparc32-solaris10</li>
    <li class='should'> sparc64-solaris10</li>
Niels Möller's avatar
Niels Möller committed
92 93
  </ul>

Niels Möller's avatar
Niels Möller committed
94 95 96 97
  <h1> Plans for nettle-2.8 </h1>

  <p> nettle-2.8 is intended to be a minor API cleanup, with few new
  features. </p>
Niels Möller's avatar
Niels Möller committed
98 99 100

  <h2> Interface changes </h2>
  <p class='should'>
Niels Möller's avatar
Niels Möller committed
101 102 103
    Change the type of all lengths from <tt>unsigned</tt>
    to <tt>size_t</tt>. An ABI change on most 64-bit platforms.
  </p>
104 105 106 107 108 109
  <p class='should'>
    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>
Niels Möller's avatar
Niels Möller committed
110 111 112 113 114 115 116 117 118 119 120 121 122
  <p class='should'>
    Use the type <tt>uint64_t</tt> for 64-bit block counts in all hash
    functions.
  </p>
  <p class='should'>
    Move some internal-use macros from macros.h to nettle-internal.h.
  </p>
  
  <h1> Plans for nettle-3.0 </h1>

  <p> These are some larger API changes under consideration. </p>

  <h2> Interface changes </h2>
Niels Möller's avatar
Niels Möller committed
123 124
  <p class='should'>
    For Merkle-Damgaard hash functions, separate the state and the
Niels Möller's avatar
Niels Möller committed
125 126
    buffering. E.g., when using them for HMAC keyed "inner" and
    "outer" states, we now get three buffers but we only need one.
Niels Möller's avatar
Niels Möller committed
127 128 129 130 131 132
  </p>
  <p class='should'>
    Use the nettle_cipher abstraction only for block ciphers (in
    particular, exclude arcfour). Use a const for the ctx argument to
    nettle_crypt_func.
  </p>
Niels Möller's avatar
Niels Möller committed
133
  <p class='wish'>
Niels Möller's avatar
Niels Möller committed
134 135 136
    Consider making a public interface similar to nettle_aead? With
    the above change, it can't use nettle_crypt_func.
  </p>
137 138 139
  <p class='wish'>
    Make it possible to build nettle and hogweed using mini-gmp.
  </p>
Niels Möller's avatar
Niels Möller committed
140 141
  <p class='should'>
    Reorganize private key operations. Need to support RSA with and
Niels Möller's avatar
Niels Möller committed
142 143 144
    without blinding, and DSA according to spec and some deterministic
    variant (like putty), and possibly also smartcard versions where
    the private key is not available to the library. And without an
Niels Möller's avatar
Niels Möller committed
145
    explosion of the number of functions.
Niels Möller's avatar
Niels Möller committed
146 147 148
  </p>
</body>
</html>