diff options
Diffstat (limited to 'libs/libaxolotl/src/curve25519/ed25519/main/main.c')
-rw-r--r-- | libs/libaxolotl/src/curve25519/ed25519/main/main.c | 107 |
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; } |