From d52b3a7046ece4a5769664c554c3f533801a341e Mon Sep 17 00:00:00 2001 From: Orson Peters Date: Tue, 22 Jan 2013 10:58:57 +0100 Subject: [PATCH] more work - documentation o.0 --- ed25519.dll | Bin 0 -> 91648 bytes readme.txt | 15 +++++++++++++++ src/ed25519.h | 29 +++++++++++++++++++++++++---- src/seed.c | 4 +++- src/test.c => test.c | 4 ++-- 5 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 ed25519.dll create mode 100644 readme.txt rename src/test.c => test.c (95%) diff --git a/ed25519.dll b/ed25519.dll new file mode 100644 index 0000000000000000000000000000000000000000..72de5b18d11ac44d6b4562cf53dc4f0ce87fca18 GIT binary patch literal 91648 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�N6P&4KGWXQZ^cmq=Nj2Ql-d_M#JqkKP;`!5#+ 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 -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); -int ed25519_create_keypair(unsigned char *verify_key, unsigned char *sign_key, unsigned char *seed); +#if defined(_WIN32) + #if defined(ED25519_BUILD_DLL) + #define ED25519_DECLSPEC __declspec(dllexport) + #elif defined(ED25519_DLL) + #define ED25519_DECLSPEC __declspec(dllimport) + #else + #define ED25519_DECLSPEC + #endif +#else + #define ED25519_DECLSPEC +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +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); +int ED25519_DECLSPEC ed25519_create_keypair(unsigned char *verify_key, unsigned char *sign_key, unsigned char *seed); #ifndef ED25519_NO_SEED -int ed25519_create_seed(unsigned char *seed); +int ED25519_DECLSPEC ed25519_create_seed(unsigned char *seed); +#endif + +#ifdef __cplusplus +} #endif #endif \ No newline at end of file diff --git a/src/seed.c b/src/seed.c index a662fa1..a34f273 100644 --- a/src/seed.c +++ b/src/seed.c @@ -1,3 +1,5 @@ +#include "ed25519.h" + #ifndef ED25519_NO_SEED #ifdef _WIN32 @@ -31,7 +33,7 @@ int ed25519_create_seed(unsigned char *seed) { freadf(seed, 1, 32, f); fclose(f); #endif - + return 0; } diff --git a/src/test.c b/test.c similarity index 95% rename from src/test.c rename to test.c index d438001..ef59202 100644 --- a/src/test.c +++ b/test.c @@ -3,7 +3,8 @@ #include #include -#include "ed25519.h" +#define ED25519_DLL +#include "src/ed25519.h" const char message[] = "Hello, world!"; @@ -46,7 +47,6 @@ int main(int argc, char *argv[]) { end = clock(); printf("%fus per signature\n", ((double) ((end - start) * 1000)) / CLOCKS_PER_SEC / i * 1000); - printf("%f\n", (double) (end - start) / CLOCKS_PER_SEC); printf("testing verify performance: "); start = clock();