| Index: crypto/third_party/curve25519-donna/README
|
| ===================================================================
|
| --- crypto/third_party/curve25519-donna/README (revision 0)
|
| +++ crypto/third_party/curve25519-donna/README (revision 0)
|
| @@ -0,0 +1,43 @@
|
| +See http://code.google.com/p/curve25519-donna/ for details.
|
| +
|
| +BUILDING:
|
| +
|
| +If you run `make`, two .a archives will be built, similar to djb's curve25519
|
| +code. Alternatively, read on:
|
| +
|
| +The C implementation is contained within curve25519-donna.c. It has no external
|
| +dependancies and is BSD licenced. You can copy/include/link it directly in with
|
| +your program. Recommended C flags: -O2
|
| +
|
| +The x86-64 bit implementation is contained within curve25519-donna-x86-64.c and
|
| +curve25519-donna-x86-64.s. Build like this:
|
| +
|
| +% cpp curve25519-donna-x86-64.s > curve25519-donna-x86-64.s.pp
|
| +% as -o curve25519-donna-x86-64.s.o curve25519-donna-x86-64.s.pp
|
| +% gcc -O2 -c curve25519-donna-x86-64.c
|
| +
|
| +Then the two .o files can be linked in
|
| +
|
| +USAGE:
|
| +
|
| +The usage is exactly the same as djb's code (as described at
|
| +http://cr.yp.to/ecdh.html) expect that the function is called curve25519_donna.
|
| +
|
| +In short,
|
| +
|
| +To generate a private key, generate 32 random bytes and:
|
| +
|
| + mysecret[0] &= 248;
|
| + mysecret[31] &= 127;
|
| + mysecret[31] |= 64;
|
| +
|
| +To generate the public key, just do
|
| +
|
| + static const uint8_t basepoint[32] = {9};
|
| + curve25519_donna(mypublic, mysecret, basepoint);
|
| +
|
| +To generate an agreed key do:
|
| + uint8_t shared_key[32];
|
| + curve25519_donna(shared_key, mysecret, theirpublic);
|
| +
|
| +And hash the shared_key with a cryptographic hash function before using.
|
|
|