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