summaryrefslogtreecommitdiff
path: root/libs/libaxolotl/src/curve25519/ed25519/main/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/libaxolotl/src/curve25519/ed25519/main/main.c')
-rw-r--r--libs/libaxolotl/src/curve25519/ed25519/main/main.c107
1 files changed, 7 insertions, 100 deletions
diff --git a/libs/libaxolotl/src/curve25519/ed25519/main/main.c b/libs/libaxolotl/src/curve25519/ed25519/main/main.c
index 5fbe39956d..a6ff569b9e 100644
--- a/libs/libaxolotl/src/curve25519/ed25519/main/main.c
+++ b/libs/libaxolotl/src/curve25519/ed25519/main/main.c
@@ -1,106 +1,13 @@
-#include <stdio.h>
-#include <string.h>
-#include "crypto_hash_sha512.h"
-#include "curve_sigs.h"
+#include "tests.h"
-#define MSG_LEN 200
int main(int argc, char* argv[])
{
- unsigned char privkey[32];
- unsigned char pubkey[32];
- unsigned char signature[64];
- unsigned char msg[MSG_LEN];
- unsigned char random[64];
+ all_fast_tests(0);
+ curvesigs_slow_test(0, 10000);
+ xeddsa_slow_test(0, 10000);
+ xeddsa_to_curvesigs_slow_test(0, 10000);
+ vxeddsa_slow_test(0, 10000000);
- /* Initialize pubkey, privkey, msg */
- memset(msg, 0, MSG_LEN);
- memset(privkey, 0, 32);
- memset(pubkey, 0, 32);
- privkey[0] &= 248;
- privkey[31] &= 63;
- privkey[31] |= 64;
-
- privkey[8] = 189; /* just so there's some bits set */
-
-
- /* SHA512 test */
- unsigned char sha512_input[112] = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu";
- unsigned char sha512_correct_output[64] =
-{
-0x8E, 0x95, 0x9B, 0x75, 0xDA, 0xE3, 0x13, 0xDA,
-0x8C, 0xF4, 0xF7, 0x28, 0x14, 0xFC, 0x14, 0x3F,
-0x8F, 0x77, 0x79, 0xC6, 0xEB, 0x9F, 0x7F, 0xA1,
-0x72, 0x99, 0xAE, 0xAD, 0xB6, 0x88, 0x90, 0x18,
-0x50, 0x1D, 0x28, 0x9E, 0x49, 0x00, 0xF7, 0xE4,
-0x33, 0x1B, 0x99, 0xDE, 0xC4, 0xB5, 0x43, 0x3A,
-0xC7, 0xD3, 0x29, 0xEE, 0xB6, 0xDD, 0x26, 0x54,
-0x5E, 0x96, 0xE5, 0x5B, 0x87, 0x4B, 0xE9, 0x09
-};
- unsigned char sha512_actual_output[64];
-
- crypto_hash_sha512(sha512_actual_output, sha512_input, sizeof(sha512_input));
- if (memcmp(sha512_actual_output, sha512_correct_output, 64) != 0)
- printf("SHA512 bad #1\n");
- else
- printf("SHA512 good #1\n");
-
- sha512_input[111] ^= 1;
-
- crypto_hash_sha512(sha512_actual_output, sha512_input, sizeof(sha512_input));
- if (memcmp(sha512_actual_output, sha512_correct_output, 64) != 0)
- printf("SHA512 good #2\n");
- else
- printf("SHA512 bad #2\n");
-
- /* Signature test */
- curve25519_keygen(pubkey, privkey);
-
- curve25519_sign(signature, privkey, msg, MSG_LEN, random);
-
- if (curve25519_verify(signature, pubkey, msg, MSG_LEN) == 0)
- printf("Signature good #1\n");
- else
- printf("Signature bad #1\n");
-
- signature[0] ^= 1;
-
- if (curve25519_verify(signature, pubkey, msg, MSG_LEN) == 0)
- printf("Signature bad #2\n");
- else
- printf("Signature good #2\n");
-
-
- printf("Random testing...\n");
- for (int count = 0; count < 10000; count++) {
- unsigned char b[64];
- crypto_hash_sha512(b, privkey, 32);
- memmove(privkey, b, 32);
- crypto_hash_sha512(b, privkey, 32);
- memmove(random, b, 64);
-
- privkey[0] &= 248;
- privkey[31] &= 63;
- privkey[31] |= 64;
-
- curve25519_keygen(pubkey, privkey);
-
- curve25519_sign(signature, privkey, msg, MSG_LEN, random);
-
- if (curve25519_verify(signature, pubkey, msg, MSG_LEN) != 0) {
- printf("failure #1 %d\n", count);
- return -1;
- }
-
- if (b[63] & 1)
- signature[count % 64] ^= 1;
- else
- msg[count % MSG_LEN] ^= 1;
- if (curve25519_verify(signature, pubkey, msg, MSG_LEN) == 0) {
- printf("failure #2 %d\n", count);
- return -1;
- }
- }
- printf("OK\n");
- return 1;
+ return 0;
}