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:57:38 -0400
commit6d35b188b668c5007409e63a15e8340ed34dcfb8 (patch)
treec9dd25f3675b3b6f9b29b0786057f8a4d377bc2b /src-ed25519/supercop-ref/test.c
parent86a1089dc6694f58d0f3356bdf9c8fe4061421f5 (diff)
parent5e60e0e3af85f22aa0afe8bf0ecf85619afacfeb (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.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;
+}