scalarmult_ristretto255.c (1910B)
1 #define TEST_NAME "scalarmult_ristretto255" 2 #include "cmptest.h" 3 4 #define B_HEX "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" 5 6 int 7 main(void) 8 { 9 unsigned char *b = 10 (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES); 11 unsigned char *n = 12 (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_SCALARBYTES); 13 unsigned char *p = 14 (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES); 15 unsigned char *p2 = 16 (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES); 17 char *hex = 18 (char *) sodium_malloc(2 * crypto_scalarmult_ristretto255_BYTES + 1); 19 int i; 20 21 sodium_hex2bin(b, crypto_scalarmult_ristretto255_BYTES, 22 B_HEX, sizeof B_HEX - (size_t) 1U, NULL, NULL, NULL); 23 memset(n, 0, crypto_scalarmult_ristretto255_SCALARBYTES); 24 for (i = 0; i < 16; i++) { 25 crypto_scalarmult_ristretto255_base(p, n); 26 if (crypto_scalarmult_ristretto255(p2, n, b) != 0) { 27 printf("crypto_scalarmult_ristretto255(%d) != 0\n", i); 28 } 29 sodium_bin2hex(hex, 2 * crypto_scalarmult_ristretto255_BYTES + 1, 30 p, crypto_scalarmult_ristretto255_BYTES); 31 printf("%s\n", hex); 32 assert(memcmp(p, p2, crypto_scalarmult_ristretto255_BYTES) == 0); 33 sodium_increment(n, crypto_scalarmult_ristretto255_SCALARBYTES); 34 } 35 36 memset(p, 0xfe, crypto_scalarmult_ristretto255_BYTES); 37 assert(crypto_scalarmult_ristretto255(guard_page, n, p) == -1); 38 39 sodium_free(hex); 40 sodium_free(p2); 41 sodium_free(p); 42 sodium_free(n); 43 sodium_free(b); 44 45 assert(crypto_scalarmult_ristretto255_BYTES == crypto_scalarmult_ristretto255_bytes()); 46 assert(crypto_scalarmult_ristretto255_SCALARBYTES == crypto_scalarmult_ristretto255_scalarbytes()); 47 48 printf("OK\n"); 49 50 return 0; 51 }