1 #define TEST_NAME "scalarmult_ristretto255"
2 #include "cmptest.h"
3 
4 #define B_HEX "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76"
5 
6 int
main(void)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 }
52