scalarmult.c revision 1.1 1 1.1 riastrad
2 1.1 riastrad #define TEST_NAME "scalarmult"
3 1.1 riastrad #include "cmptest.h"
4 1.1 riastrad
5 1.1 riastrad static const unsigned char alicesk[crypto_scalarmult_BYTES] = {
6 1.1 riastrad 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1,
7 1.1 riastrad 0x72, 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0,
8 1.1 riastrad 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a
9 1.1 riastrad };
10 1.1 riastrad
11 1.1 riastrad static const unsigned char bobsk[crypto_scalarmult_BYTES] = {
12 1.1 riastrad 0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, 0x4b, 0x79, 0xe1, 0x7f,
13 1.1 riastrad 0x8b, 0x83, 0x80, 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, 0x26, 0x18,
14 1.1 riastrad 0xb6, 0xfd, 0x1c, 0x2f, 0x8b, 0x27, 0xff, 0x88, 0xe0, 0xeb
15 1.1 riastrad };
16 1.1 riastrad
17 1.1 riastrad static const unsigned char small_order_p[crypto_scalarmult_BYTES] = {
18 1.1 riastrad 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3,
19 1.1 riastrad 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32,
20 1.1 riastrad 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00
21 1.1 riastrad };
22 1.1 riastrad
23 1.1 riastrad static char hex[crypto_scalarmult_BYTES * 2 + 1];
24 1.1 riastrad
25 1.1 riastrad int
26 1.1 riastrad main(void)
27 1.1 riastrad {
28 1.1 riastrad unsigned char *alicepk =
29 1.1 riastrad (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES);
30 1.1 riastrad unsigned char *bobpk =
31 1.1 riastrad (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES);
32 1.1 riastrad unsigned char *k = (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES);
33 1.1 riastrad int ret;
34 1.1 riastrad
35 1.1 riastrad assert(alicepk != NULL && bobpk != NULL && k != NULL);
36 1.1 riastrad
37 1.1 riastrad crypto_scalarmult_base(alicepk, alicesk);
38 1.1 riastrad sodium_bin2hex(hex, sizeof hex, alicepk, crypto_scalarmult_BYTES);
39 1.1 riastrad printf("%s\n", hex);
40 1.1 riastrad
41 1.1 riastrad crypto_scalarmult_base(bobpk, bobsk);
42 1.1 riastrad sodium_bin2hex(hex, sizeof hex, bobpk, crypto_scalarmult_BYTES);
43 1.1 riastrad printf("%s\n", hex);
44 1.1 riastrad
45 1.1 riastrad ret = crypto_scalarmult(k, alicesk, bobpk);
46 1.1 riastrad assert(ret == 0);
47 1.1 riastrad sodium_bin2hex(hex, sizeof hex, k, crypto_scalarmult_BYTES);
48 1.1 riastrad printf("%s\n", hex);
49 1.1 riastrad
50 1.1 riastrad ret = crypto_scalarmult(k, bobsk, alicepk);
51 1.1 riastrad assert(ret == 0);
52 1.1 riastrad sodium_bin2hex(hex, sizeof hex, k, crypto_scalarmult_BYTES);
53 1.1 riastrad printf("%s\n", hex);
54 1.1 riastrad
55 1.1 riastrad ret = crypto_scalarmult(k, bobsk, small_order_p);
56 1.1 riastrad assert(ret == -1);
57 1.1 riastrad
58 1.1 riastrad sodium_free(bobpk);
59 1.1 riastrad sodium_free(alicepk);
60 1.1 riastrad sodium_free(k);
61 1.1 riastrad
62 1.1 riastrad assert(crypto_scalarmult_bytes() > 0U);
63 1.1 riastrad assert(crypto_scalarmult_scalarbytes() > 0U);
64 1.1 riastrad assert(strcmp(crypto_scalarmult_primitive(), "curve25519") == 0);
65 1.1 riastrad assert(crypto_scalarmult_bytes() == crypto_scalarmult_curve25519_bytes());
66 1.1 riastrad assert(crypto_scalarmult_scalarbytes() ==
67 1.1 riastrad crypto_scalarmult_curve25519_scalarbytes());
68 1.1 riastrad assert(crypto_scalarmult_bytes() == crypto_scalarmult_scalarbytes());
69 1.1 riastrad
70 1.1 riastrad return 0;
71 1.1 riastrad }
72