summaryrefslogtreecommitdiff
path: root/misc/plan.html
blob: aafd0992519594265ab2b3e6ba2cde4834cc333b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?xml version="1.0" encoding="utf-8"?>
<!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"
      content="text/html; charset=utf-8"/>
<title>TODO for coming releases</title>
</head>
<body>
  <h1> Nettle release plans </h1>
  <p> This is an attempt at defining a development target for
  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>
  <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>

  <h1> Plans for nettle-3.1 </h1>

  <h2> Interface changes </h2>
  <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='should'>
    Add support for curve25519. What about the "x25519" name?
  </p>
  <p class='should'>
    Add support for EdDSA25519 signatures.
  </p>
  <p class='wish'>
    Add larger "safe" curves, e.g., M-383, curve41417 and E-521.
  </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>
  <p class='done'>
    Make it possible to build nettle and hogweed using mini-gmp.
  </p>
  <p class='should'>
    Side-channel silent mem_equalp.
  </p>

  <h2> Optimizations </h2>
  <p class='should'>
    Support for using AES acceleration.
  </p>

  <p class='should'>
    Assembly optimizations for ARMv8 (64-bit).
  </p>
  
  <h2> Miscellaneous </h2>
  <p class='should'>
    Use more GMP-6 functions when available.
  </p>

  <h2> Documentation </h2>
  <p class='should'>
    Document curve25519.
  </p>
  <p class='should'>
    Document EdDSA.
  </p>
  
  <h2> Build system </h2>
  <p class='should'>
    Support for fat binaries on ARM and x86_64, selecting code at
    runtime depending on cpu capabilities.
  </p>
  <p class='done'>
    Stop using the nonstandard <tt>.po</tt> extension.
  </p>
  <p class='done'>
    Reconsider assembly make rules, going back to an .asm.o: rule
    might work better with Solaris' make.
  </p>
  <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='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> Interface changes </h2>
  <p class='should'>
    For Merkle-Damgaard hash functions, separate the state and the
    buffering. E.g., when using them for HMAC keyed "inner" and
    "outer" states, we now get three buffers but we only need one.
  </p>
  <p class='should'>
    Reorganize private key operations. Need to support RSA with and
    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
    explosion of the number of functions.
  </p>
</body>
</html>