summaryrefslogtreecommitdiff
path: root/src-ed25519/supercop-ref/test.c
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2013-08-22 16:39:52 -0400
committerMicah Anderson <micah@riseup.net>2013-08-22 16:39:52 -0400
commit5e60e0e3af85f22aa0afe8bf0ecf85619afacfeb (patch)
tree6a91a3de86fa8de0b4167cc947ab72991bf8da31 /src-ed25519/supercop-ref/test.c
parent30e9097985656920f01a72efc1088caa2b8d41b3 (diff)
Imported Upstream version 0.6.0.12upstream/0.6.0.12
Diffstat (limited to 'src-ed25519/supercop-ref/test.c')
-rw-r--r--src-ed25519/supercop-ref/test.c39
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;
+}