- Poly1305: Loup Vaillant, implemented from spec.
- Blake2b: derived from https://tools.ietf.org/html/rfc7693
- Argon2i: Loup Vaillant, implemented from spec.
-- X25519: taken from http://tweetnacl.cr.yp.to/
-- ed25519: taken from http://tweetnacl.cr.yp.to/
+- X25519: taken from SUPERCOP ref10.
+- ed25519: adapted http://tweetnacl.cr.yp.to/ for ref10 arithmetic.
- High-level constructions: Loup Vaillant, implemented from specs and
first principles
Current status
--------------
-Beta. Interfaces may still change. Needs external review.
+0.2 Interfaces should stabilise. Needs external review.
Test suite
*Do not* use Monocypher without having run the test suite at least
once.
+
Integration to your project
---------------------------
Just copy monocypher.c and monocypher.h.
+Compile as C99, C11, C++98, C++11, C++14, and C++17. (Tested with
+gcc 5.4.0 and clang 2.8.0 on GNU/Linux.)
+
Customisation
-------------
- Link the final program with a suitable SHA-512 implementation. You
can use the sha512.c and sha512.h files provided here.
+
+Note that even though the default hash (Blake2b) is not widely used,
+it doesn't prevent you from upgrading to faster implementations if you
+need to. The Donna implementations of ed25519 for instance can use a
+custom hash.
crypto_x25519(out->buf, scalar->buf, point->buf);
}
-// Disabling the following test, because it takes too damn long
-// I suggest you run it once, though.
sv iterate_x25519(uint8_t k[32], uint8_t u[32])
{
uint8_t tmp[32];