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