diff --git a/ed25519.dll b/ed25519.dll index 72de5b1..e3e370a 100644 Binary files a/ed25519.dll and b/ed25519.dll differ diff --git a/readme.md b/readme.md index 451bd60..a04039f 100644 --- a/readme.md +++ b/readme.md @@ -4,18 +4,42 @@ Ed25519 This is a portable implementation of [Ed25519](http://ed25519.cr.yp.to/). All code is in the public domain. -No code uses libc, except for the random seed generation which uses standard -OS cryptography APIs. If you wish to be entirely portable define -`ED25519_NO_SEED`. This does disable the `ed25519_create_seed` function -however. +All code is pure ANSI C without any dependencies, except for the random seed +generation which uses standard OS cryptography APIs. If you wish to be +entirely portable define `ED25519_NO_SEED`. This does disable the +`ed25519_create_seed` function however (you can use your own seeding function +if you wish.) Usage ----- -Simply add all .c and .h files in the src/ folder to your project and include -ed25519.h. If you prefer to use a shared library, only copy `ed25519.h` and define -`ED25519_DLL` before importing. A windows DLL is pre-built. +Simply add all .c and .h files in the `src/` folder to your project and +include `ed25519.h` in any file you want to use the API. If you prefer to use +a shared library, only copy `ed25519.h` and define `ED25519_DLL` before +importing. A windows DLL is pre-built. -The API is simple: +There are no defined types for seeds, signing keys, verifying keys or +signatures. Instead simple `unsigned char` buffers are used with the following +sizes: - int ED25519_DECLSPEC ed25519_create_seed(unsigned char *seed); \ No newline at end of file + unsigned char seed[32] + unsigned char signature[64] + unsigned char verify_key[32] + unsigned char signing_key[64] + +API +--- + + int ed25519_create_seed(unsigned char *seed); + +Creates a 32 byte random seed in `seed` for key generation. `seed` must be a +writable 32 byte buffer. + + int ed25519_create_keypair(unsigned char *verify_key, unsigned char *sign_key, const unsigned char *seed); + +Creates a new key pair from the given seed. `verify_key` must be a writable 32 +byte buffer, `sign_key` must be a writable 64 byte buffer and `seed` must be a +32 byte buffer. + + int ed25519_sign(unsigned char *signature, const unsigned char *message, size_t message_len, const unsigned char *sign_key); + int ed25519_verify(const unsigned char *signature, const unsigned char *message, size_t message_len, const unsigned char *verify_key); \ No newline at end of file diff --git a/src/ed25519.h b/src/ed25519.h index d2c8c10..f987c6f 100644 --- a/src/ed25519.h +++ b/src/ed25519.h @@ -24,7 +24,7 @@ extern "C" { int ED25519_DECLSPEC ed25519_create_seed(unsigned char *seed); #endif -int ED25519_DECLSPEC ed25519_create_keypair(unsigned char *verify_key, unsigned char *sign_key, unsigned char *seed); +int ED25519_DECLSPEC ed25519_create_keypair(unsigned char *verify_key, unsigned char *sign_key, const unsigned char *seed); int ED25519_DECLSPEC ed25519_sign(unsigned char *signature, const unsigned char *message, size_t message_len, const unsigned char *sign_key); int ED25519_DECLSPEC ed25519_verify(const unsigned char *signature, const unsigned char *message, size_t message_len, const unsigned char *verify_key); diff --git a/src/keypair.c b/src/keypair.c index 6e8417c..b3ed843 100644 --- a/src/keypair.c +++ b/src/keypair.c @@ -3,7 +3,7 @@ #include "ge.h" -int ed25519_create_keypair(unsigned char *verify_key, unsigned char *sign_key, unsigned char *seed) { +int ed25519_create_keypair(unsigned char *verify_key, unsigned char *sign_key, const unsigned char *seed) { unsigned char h[64]; ge_p3 A; int i;