Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Nettle
nettle
Commits
eee1f125
Commit
eee1f125
authored
Sep 07, 2014
by
Niels Möller
Browse files
Updated 3.1 release plan.
parent
ab8fb60b
Changes
1
Hide whitespace changes
Inline
Side-by-side
misc/plan.html
View file @
eee1f125
...
...
@@ -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-0
6
-0
4
]
</p>
Nettle-3.
1
, inspired by similar pages for recent GMP releases. [Last
updated 2014-0
9
-0
7
]
</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>
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment