Hi Everyone,

We merged PR 566 tonight, which is an interface to TweetNaCl library. Also 
see https://github.com/weidai11/cryptopp/pull/566 .

TweetNaCl is a compact reimplementation of the NaCl library by Daniel J. 
Bernstein, Bernard van Gastel, Wesley Janssen, Tanja Lange, Peter Schwabe 
and Sjaak Smetsers. The library is less than 20 KB in size and provides 25 
of the NaCl library functions.


The compact library uses curve25519, XSalsa20, Poly1305 and SHA-512 as 
default primitives, and includes both x25519 key exchange and ed25519 
signatures. The complete list of functions can be found in TweetNaCl: A 
crypto library in 100 tweets (20140917), Table 1, page 5 
(https://tweetnacl.cr.yp.to/tweetnacl-20140917.pdf).


Crypto++ retained the function names and signatures but switched to data 
types provided by <stdint.h> to promote interoperability with Crypto++ and 
avoid size problems on platforms like Cygwin. For example, NaCl typdef'd 
u64 as an unsigned long long, but Cygwin, MinGW and MSYS are LP64 systems 
(not LLP64 systems). In addition, Crypto++ was missing NaCl's signed 64-bit 
integer i64.


Crypto++ rejects all 0-keys due to small points. The TweetNaCl library 
allowed the 0-keys due to small points. Also see RFC 7748, Elliptic Curves 
for Security, Section 6.


TweetNaCl is well written but not well optimized. It runs 2x to 3x slower 
than optimized routines from libsodium. However, the library is still 2x to 
4x faster than the algorithms NaCl was designed to replace.


The Crypto++ wrapper for TweetNaCl requires OS features. That is, 
NO_OS_DEPENDENCE cannot be defined. It is due to TweetNaCl's internal 
function randombytes. Crypto++ used DefaultAutoSeededRNG within 
randombytes, so OS integration must be enabled. You can use another 
generator like RDRAND to avoid the restriction.


Jeff

-- 
You received this message because you are subscribed to "Crypto++ Users". More 
information about Crypto++ and this group is available at 
http://www.cryptopp.com and 
http://groups.google.com/forum/#!forum/cryptopp-users.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to