diff options
author | Micah Anderson <micah@riseup.net> | 2013-08-22 16:39:52 -0400 |
---|---|---|
committer | Micah Anderson <micah@riseup.net> | 2013-08-22 16:57:38 -0400 |
commit | 6d35b188b668c5007409e63a15e8340ed34dcfb8 (patch) | |
tree | c9dd25f3675b3b6f9b29b0786057f8a4d377bc2b /src-ed25519/supercop-ref/test.c | |
parent | 86a1089dc6694f58d0f3356bdf9c8fe4061421f5 (diff) | |
parent | 5e60e0e3af85f22aa0afe8bf0ecf85619afacfeb (diff) |
Merge tag 'upstream/0.6.0.12'
Upstream version 0.6.0.12
Diffstat (limited to 'src-ed25519/supercop-ref/test.c')
-rw-r--r-- | src-ed25519/supercop-ref/test.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src-ed25519/supercop-ref/test.c b/src-ed25519/supercop-ref/test.c new file mode 100644 index 0000000..35620f2 --- /dev/null +++ b/src-ed25519/supercop-ref/test.c @@ -0,0 +1,39 @@ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include "crypto_sign.h" + +char *msg = "Hello World"; + +int main(int argc, char *argv[]) { + unsigned char sk[SECRETKEYBYTES], vk[PUBLICKEYBYTES]; + unsigned char *sigmsg, *newmsg; + unsigned long long sigmsglen, newmsglen; + int ret; + crypto_sign_keypair(vk, sk); + printf("got keypair\n"); + sigmsg = malloc(strlen(msg)+1+BYTES); + if (!sigmsg) + return 1; + crypto_sign(sigmsg, &sigmsglen, (unsigned char *)msg, strlen(msg)+1, sk); + printf("got signature\n"); + if (sigmsglen != strlen(msg)+1+BYTES) + return 2; + newmsg = malloc(sigmsglen); + if (!newmsg) + return 3; + ret = crypto_sign_open(newmsg, &newmsglen, sigmsg, sigmsglen, vk); + printf("verified signature\n"); + if (ret == 0) + printf("good!\n"); + else + printf("bad\n"); + sigmsg[0] ^= 0x01; + ret = crypto_sign_open(newmsg, &newmsglen, sigmsg, sigmsglen, vk); + if (ret == 0) + printf("bad: failed to detect simple corruption\n"); + else + printf("good: detected simple corruption\n"); + return 0; +} |