Home | History | Annotate | Line # | Download | only in default
      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