secretbox.c revision 1.1 1 1.1 riastrad
2 1.1 riastrad #define TEST_NAME "secretbox"
3 1.1 riastrad #include "cmptest.h"
4 1.1 riastrad
5 1.1 riastrad static unsigned char firstkey[32] = { 0x1b, 0x27, 0x55, 0x64, 0x73, 0xe9, 0x85,
6 1.1 riastrad 0xd4, 0x62, 0xcd, 0x51, 0x19, 0x7a, 0x9a,
7 1.1 riastrad 0x46, 0xc7, 0x60, 0x09, 0x54, 0x9e, 0xac,
8 1.1 riastrad 0x64, 0x74, 0xf2, 0x06, 0xc4, 0xee, 0x08,
9 1.1 riastrad 0x44, 0xf6, 0x83, 0x89 };
10 1.1 riastrad
11 1.1 riastrad static unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6,
12 1.1 riastrad 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8,
13 1.1 riastrad 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19,
14 1.1 riastrad 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 };
15 1.1 riastrad
16 1.1 riastrad /* API requires first 32 bytes to be 0 */
17 1.1 riastrad static unsigned char m[163] = {
18 1.1 riastrad 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
19 1.1 riastrad 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
20 1.1 riastrad 0, 0, 0, 0, 0, 0, 0, 0, 0xbe, 0x07, 0x5f, 0xc5,
21 1.1 riastrad 0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, 0xeb, 0xeb, 0x0c, 0x7b,
22 1.1 riastrad 0x52, 0x28, 0xc5, 0x2a, 0x4c, 0x62, 0xcb, 0xd4, 0x4b, 0x66, 0x84, 0x9b,
23 1.1 riastrad 0x64, 0x24, 0x4f, 0xfc, 0xe5, 0xec, 0xba, 0xaf, 0x33, 0xbd, 0x75, 0x1a,
24 1.1 riastrad 0x1a, 0xc7, 0x28, 0xd4, 0x5e, 0x6c, 0x61, 0x29, 0x6c, 0xdc, 0x3c, 0x01,
25 1.1 riastrad 0x23, 0x35, 0x61, 0xf4, 0x1d, 0xb6, 0x6c, 0xce, 0x31, 0x4a, 0xdb, 0x31,
26 1.1 riastrad 0x0e, 0x3b, 0xe8, 0x25, 0x0c, 0x46, 0xf0, 0x6d, 0xce, 0xea, 0x3a, 0x7f,
27 1.1 riastrad 0xa1, 0x34, 0x80, 0x57, 0xe2, 0xf6, 0x55, 0x6a, 0xd6, 0xb1, 0x31, 0x8a,
28 1.1 riastrad 0x02, 0x4a, 0x83, 0x8f, 0x21, 0xaf, 0x1f, 0xde, 0x04, 0x89, 0x77, 0xeb,
29 1.1 riastrad 0x48, 0xf5, 0x9f, 0xfd, 0x49, 0x24, 0xca, 0x1c, 0x60, 0x90, 0x2e, 0x52,
30 1.1 riastrad 0xf0, 0xa0, 0x89, 0xbc, 0x76, 0x89, 0x70, 0x40, 0xe0, 0x82, 0xf9, 0x37,
31 1.1 riastrad 0x76, 0x38, 0x48, 0x64, 0x5e, 0x07, 0x05
32 1.1 riastrad };
33 1.1 riastrad
34 1.1 riastrad static unsigned char c[163];
35 1.1 riastrad
36 1.1 riastrad int
37 1.1 riastrad main(void)
38 1.1 riastrad {
39 1.1 riastrad int i;
40 1.1 riastrad
41 1.1 riastrad crypto_secretbox(c, m, 163, nonce, firstkey);
42 1.1 riastrad for (i = 16; i < 163; ++i) {
43 1.1 riastrad printf(",0x%02x", (unsigned int) c[i]);
44 1.1 riastrad if (i % 8 == 7)
45 1.1 riastrad printf("\n");
46 1.1 riastrad }
47 1.1 riastrad printf("\n");
48 1.1 riastrad
49 1.1 riastrad memcpy(c, m, 163);
50 1.1 riastrad crypto_secretbox(c, c, 163, nonce, firstkey);
51 1.1 riastrad for (i = 16; i < 163; ++i) {
52 1.1 riastrad printf(",0x%02x", (unsigned int) c[i]);
53 1.1 riastrad if (i % 8 == 7)
54 1.1 riastrad printf("\n");
55 1.1 riastrad }
56 1.1 riastrad printf("\n");
57 1.1 riastrad
58 1.1 riastrad assert(crypto_secretbox(c, c, 31, nonce, firstkey) == -1);
59 1.1 riastrad assert(crypto_secretbox(c, c, 12, nonce, firstkey) == -1);
60 1.1 riastrad assert(crypto_secretbox(c, c, 1, nonce, firstkey) == -1);
61 1.1 riastrad assert(crypto_secretbox(c, c, 0, nonce, firstkey) == -1);
62 1.1 riastrad
63 1.1 riastrad assert(crypto_secretbox_keybytes() > 0U);
64 1.1 riastrad assert(crypto_secretbox_noncebytes() > 0U);
65 1.1 riastrad assert(crypto_secretbox_zerobytes() > 0U);
66 1.1 riastrad assert(crypto_secretbox_boxzerobytes() > 0U);
67 1.1 riastrad assert(crypto_secretbox_macbytes() > 0U);
68 1.1 riastrad assert(crypto_secretbox_messagebytes_max() > 0U);
69 1.1 riastrad assert(strcmp(crypto_secretbox_primitive(), "xsalsa20poly1305") == 0);
70 1.1 riastrad assert(crypto_secretbox_keybytes() ==
71 1.1 riastrad crypto_secretbox_xsalsa20poly1305_keybytes());
72 1.1 riastrad assert(crypto_secretbox_noncebytes() ==
73 1.1 riastrad crypto_secretbox_xsalsa20poly1305_noncebytes());
74 1.1 riastrad assert(crypto_secretbox_zerobytes() ==
75 1.1 riastrad crypto_secretbox_xsalsa20poly1305_zerobytes());
76 1.1 riastrad assert(crypto_secretbox_boxzerobytes() ==
77 1.1 riastrad crypto_secretbox_xsalsa20poly1305_boxzerobytes());
78 1.1 riastrad assert(crypto_secretbox_macbytes() ==
79 1.1 riastrad crypto_secretbox_xsalsa20poly1305_macbytes());
80 1.1 riastrad assert(crypto_secretbox_messagebytes_max() ==
81 1.1 riastrad crypto_secretbox_xsalsa20poly1305_messagebytes_max());
82 1.1 riastrad
83 1.1 riastrad return 0;
84 1.1 riastrad }
85