plan.html 5.49 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
  Nettle-2.8, inspired by similar pages for recent GMP releases. [Last
Niels Möller's avatar
Niels Möller committed
17
  updated 2014-01-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
32
  <h1> Plans for nettle-2.8 </h1>

Niels Möller's avatar
Niels Möller committed
33
  <p> nettle-2.8 is intended to be an API cleanup, with few new
Niels Möller's avatar
Niels Möller committed
34
  features. </p>
Niels Möller's avatar
Niels Möller committed
35
36

  <h2> Interface changes </h2>
Niels Möller's avatar
Niels Möller committed
37
  <p class='done'>
Niels Möller's avatar
Niels Möller committed
38
39
40
    Change the type of all lengths from <tt>unsigned</tt>
    to <tt>size_t</tt>. An ABI change on most 64-bit platforms.
  </p>
Niels Möller's avatar
Niels Möller committed
41
  <p class='done'>
42
43
44
45
46
    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
47
  <p class='done'>
Niels Möller's avatar
Niels Möller committed
48
49
50
51
52
53
    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>
Niels Möller's avatar
Niels Möller committed
54
  <p class='done'>
Niels Möller's avatar
Niels Möller committed
55
56
    Do separate aes128_ctx, etc, with smaller allocation for subkeys.
  </p>
Niels Möller's avatar
Niels Möller committed
57
  <p class='wish'>
Niels Möller's avatar
Niels Möller committed
58
59
    Consider doing the same separation for camellia (and possibly
    cast128), which also use fewer subkeys for shorter key sizes.
Niels Möller's avatar
Niels Möller committed
60
  </p>
Niels Möller's avatar
Niels Möller committed
61
62
63
  <p class='should'>
    Don't require initialization of *dst_length for base*_decode_update.
  </p>
Niels Möller's avatar
Niels Möller committed
64
65
66
67
  <p class='should'>
    Rename gcm "iv" to "nonce". Keep old names for backwards
    compatibility.
  </p>
Niels Möller's avatar
Niels Möller committed
68
69
70
71
  <p class='should'>
    New DSA interface, with a separate struct dsa_params.
  </p>
  
Niels Möller's avatar
Niels Möller committed
72
73
  <h2> New features </h2>
  <p class='done'>
Niels Möller's avatar
Niels Möller committed
74
    Add <a href='http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf'>EAX</a >
Niels Möller's avatar
Niels Möller committed
75
76
    mode?
  </p>
Niels Möller's avatar
Niels Möller committed
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  <p class='should'>
    Add poly1305.
  </p>
  <p class='should'>
    Add chacha.
  </p>
  <p class='should'>
    Add ecc_bitsize function.
  </p>
  <p class='wish'>
    Add functions for converting ECC points to and from ANSI x9.62.
  </p>
  <p class='wish'>
    Use side-channel silent GMP functions for RSA and DSA. May require
    additional interface changes, to use mpn functions.
  </p>
Niels Möller's avatar
Niels Möller committed
93
94
95
96
  <h2> Documentation </h2>
  <p class='should'>
    Document new AES interface.
  </p>
Niels Möller's avatar
Niels Möller committed
97
98
99
  <p class='should'>
    Document new EAX mode.
  </p>
Niels Möller's avatar
Niels Möller committed
100
101
102
103
104
105
  <p class='should'>
    Document new DSA interface.
  </p>
  <p class='should'>
    Document poly1305.
  </p>
Niels Möller's avatar
Niels Möller committed
106
  
Niels Möller's avatar
Niels Möller committed
107
  <h2> Build system </h2>
Niels Möller's avatar
Niels Möller committed
108
  <p class='done'>
109
110
    Update config.guess and config.sub. Needed for ppc64le support.    
  </p>
Niels Möller's avatar
Niels Möller committed
111
112
113
114
115
116
117
118
119
  <p class='should'>
    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='should'>
    Delay building of test programs until <tt>make check</tt>.
  </p>
Niels Möller's avatar
Niels Möller committed
120
121
122
  <p class='done'>
    Fix dependency problems with <tt>--disable-static</tt>.
  </p>
Niels Möller's avatar
Niels Möller committed
123
124
125
  <p class='should'>
    Make the time consuming ecc_curve_check in eccdata.c optional.
  </p>
Niels Möller's avatar
Niels Möller committed
126
  
Niels Möller's avatar
Niels Möller committed
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
  <h2> Testing </h2>
  <p> Since xenofarm isn't up and running, do some manual testing:
  </p>
  <ul>
    <li class='should'> x86_64-linux-gnu</li>
    <li class='should'> x86_64-freebsd</li>
    <li class='should'> x86-linux-gnu</li>
    <li class='should'> x86-freebsd</li>
    <li class='should'> x86-w*ndows (using cross compiler and wine)</li>
    <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>
    <li class='should'> sparc32-solaris10</li>
    <li class='should'> sparc64-solaris10</li>
  </ul>

Niels Möller's avatar
Niels Möller committed
146
147
148
149
150
  <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
151
152
  <p class='should'>
    For Merkle-Damgaard hash functions, separate the state and the
Niels Möller's avatar
Niels Möller committed
153
154
    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
155
156
157
158
159
160
  </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
161
  <p class='wish'>
Niels Möller's avatar
Niels Möller committed
162
163
164
    Consider making a public interface similar to nettle_aead? With
    the above change, it can't use nettle_crypt_func.
  </p>
165
166
167
  <p class='wish'>
    Make it possible to build nettle and hogweed using mini-gmp.
  </p>
Niels Möller's avatar
Niels Möller committed
168
169
  <p class='should'>
    Reorganize private key operations. Need to support RSA with and
Niels Möller's avatar
Niels Möller committed
170
171
172
    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
173
    explosion of the number of functions.
Niels Möller's avatar
Niels Möller committed
174
175
176
  </p>
</body>
</html>