Home | History | Annotate | Line # | Download | only in default
      1  1.1  riastrad 
      2  1.1  riastrad #define TEST_NAME "box"
      3  1.1  riastrad #include "cmptest.h"
      4  1.1  riastrad 
      5  1.1  riastrad static const unsigned char alicesk[32] = {
      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 bobpk[32] = {
     12  1.1  riastrad     0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3, 0x5b, 0x61,
     13  1.1  riastrad     0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, 0x78,
     14  1.1  riastrad     0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f
     15  1.1  riastrad };
     16  1.1  riastrad 
     17  1.1  riastrad static const unsigned char small_order_p[crypto_box_PUBLICKEYBYTES] = {
     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 const unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6,
     24  1.1  riastrad                                          0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8,
     25  1.1  riastrad                                          0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19,
     26  1.1  riastrad                                          0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 };
     27  1.1  riastrad 
     28  1.1  riastrad /* API requires first 32 bytes to be 0 */
     29  1.1  riastrad static const unsigned char m[163] = {
     30  1.1  riastrad     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     31  1.1  riastrad     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     32  1.1  riastrad     0,    0,    0,    0,    0,    0,    0,    0,    0xbe, 0x07, 0x5f, 0xc5,
     33  1.1  riastrad     0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, 0xeb, 0xeb, 0x0c, 0x7b,
     34  1.1  riastrad     0x52, 0x28, 0xc5, 0x2a, 0x4c, 0x62, 0xcb, 0xd4, 0x4b, 0x66, 0x84, 0x9b,
     35  1.1  riastrad     0x64, 0x24, 0x4f, 0xfc, 0xe5, 0xec, 0xba, 0xaf, 0x33, 0xbd, 0x75, 0x1a,
     36  1.1  riastrad     0x1a, 0xc7, 0x28, 0xd4, 0x5e, 0x6c, 0x61, 0x29, 0x6c, 0xdc, 0x3c, 0x01,
     37  1.1  riastrad     0x23, 0x35, 0x61, 0xf4, 0x1d, 0xb6, 0x6c, 0xce, 0x31, 0x4a, 0xdb, 0x31,
     38  1.1  riastrad     0x0e, 0x3b, 0xe8, 0x25, 0x0c, 0x46, 0xf0, 0x6d, 0xce, 0xea, 0x3a, 0x7f,
     39  1.1  riastrad     0xa1, 0x34, 0x80, 0x57, 0xe2, 0xf6, 0x55, 0x6a, 0xd6, 0xb1, 0x31, 0x8a,
     40  1.1  riastrad     0x02, 0x4a, 0x83, 0x8f, 0x21, 0xaf, 0x1f, 0xde, 0x04, 0x89, 0x77, 0xeb,
     41  1.1  riastrad     0x48, 0xf5, 0x9f, 0xfd, 0x49, 0x24, 0xca, 0x1c, 0x60, 0x90, 0x2e, 0x52,
     42  1.1  riastrad     0xf0, 0xa0, 0x89, 0xbc, 0x76, 0x89, 0x70, 0x40, 0xe0, 0x82, 0xf9, 0x37,
     43  1.1  riastrad     0x76, 0x38, 0x48, 0x64, 0x5e, 0x07, 0x05
     44  1.1  riastrad };
     45  1.1  riastrad 
     46  1.1  riastrad static unsigned char c[163];
     47  1.1  riastrad 
     48  1.1  riastrad int
     49  1.1  riastrad main(void)
     50  1.1  riastrad {
     51  1.1  riastrad     unsigned char k[crypto_box_BEFORENMBYTES];
     52  1.1  riastrad     int           i;
     53  1.1  riastrad     int           ret;
     54  1.1  riastrad 
     55  1.1  riastrad     ret = crypto_box(c, m, 163, nonce, bobpk, alicesk);
     56  1.1  riastrad     assert(ret == 0);
     57  1.1  riastrad     for (i = 16; i < 163; ++i) {
     58  1.1  riastrad         printf(",0x%02x", (unsigned int) c[i]);
     59  1.1  riastrad         if (i % 8 == 7)
     60  1.1  riastrad             printf("\n");
     61  1.1  riastrad     }
     62  1.1  riastrad     printf("\n");
     63  1.1  riastrad 
     64  1.1  riastrad     ret = crypto_box(c, m, 163, nonce, small_order_p, alicesk);
     65  1.1  riastrad     assert(ret == -1);
     66  1.1  riastrad 
     67  1.1  riastrad     memset(c, 0, sizeof c);
     68  1.1  riastrad 
     69  1.1  riastrad     ret = crypto_box_beforenm(k, bobpk, alicesk);
     70  1.1  riastrad     assert(ret == 0);
     71  1.1  riastrad     crypto_box_afternm(c, m, 163, nonce, k);
     72  1.1  riastrad     for (i = 16; i < 163; ++i) {
     73  1.1  riastrad         printf(",0x%02x", (unsigned int) c[i]);
     74  1.1  riastrad         if (i % 8 == 7)
     75  1.1  riastrad             printf("\n");
     76  1.1  riastrad     }
     77  1.1  riastrad     printf("\n");
     78  1.1  riastrad 
     79  1.1  riastrad     ret = crypto_box_beforenm(k, small_order_p, alicesk);
     80  1.1  riastrad     assert(ret == -1);
     81  1.1  riastrad 
     82  1.1  riastrad     assert(crypto_box_seedbytes() > 0U);
     83  1.1  riastrad     assert(crypto_box_publickeybytes() > 0U);
     84  1.1  riastrad     assert(crypto_box_secretkeybytes() > 0U);
     85  1.1  riastrad     assert(crypto_box_beforenmbytes() > 0U);
     86  1.1  riastrad     assert(crypto_box_noncebytes() > 0U);
     87  1.1  riastrad     assert(crypto_box_zerobytes() > 0U);
     88  1.1  riastrad     assert(crypto_box_boxzerobytes() > 0U);
     89  1.1  riastrad     assert(crypto_box_macbytes() > 0U);
     90  1.1  riastrad     assert(crypto_box_messagebytes_max() > 0U);
     91  1.1  riastrad     assert(strcmp(crypto_box_primitive(), "curve25519xsalsa20poly1305") == 0);
     92  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_seedbytes() ==
     93  1.1  riastrad            crypto_box_seedbytes());
     94  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_publickeybytes() ==
     95  1.1  riastrad            crypto_box_publickeybytes());
     96  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_secretkeybytes() ==
     97  1.1  riastrad            crypto_box_secretkeybytes());
     98  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_beforenmbytes() ==
     99  1.1  riastrad            crypto_box_beforenmbytes());
    100  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_noncebytes() ==
    101  1.1  riastrad            crypto_box_noncebytes());
    102  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_zerobytes() ==
    103  1.1  riastrad            crypto_box_zerobytes());
    104  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_boxzerobytes() ==
    105  1.1  riastrad            crypto_box_boxzerobytes());
    106  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_macbytes() ==
    107  1.1  riastrad            crypto_box_macbytes());
    108  1.1  riastrad     assert(crypto_box_curve25519xsalsa20poly1305_messagebytes_max() ==
    109  1.1  riastrad            crypto_box_messagebytes_max());
    110  1.1  riastrad 
    111  1.1  riastrad     return 0;
    112  1.1  riastrad }
    113