2 #define TEST_NAME "secretbox_easy2"
16 mlen
= (size_t) randombytes_uniform((uint32_t) 10000) + 1U;
17 m
= (unsigned char *) sodium_malloc(mlen
);
18 m2
= (unsigned char *) sodium_malloc(mlen
);
19 c
= (unsigned char *) sodium_malloc(crypto_secretbox_MACBYTES
+ mlen
);
20 nonce
= (unsigned char *) sodium_malloc(crypto_secretbox_NONCEBYTES
);
21 k
= (unsigned char *) sodium_malloc(crypto_secretbox_KEYBYTES
);
22 mac
= (unsigned char *) sodium_malloc(crypto_secretbox_MACBYTES
);
23 randombytes_buf(k
, crypto_secretbox_KEYBYTES
);
24 randombytes_buf(m
, (unsigned long long) mlen
);
25 randombytes_buf(nonce
, crypto_secretbox_NONCEBYTES
);
26 crypto_secretbox_easy(c
, m
, (unsigned long long) mlen
, nonce
, k
);
27 if (crypto_secretbox_open_easy(m2
, c
,
28 (unsigned long long) mlen
+ crypto_secretbox_MACBYTES
,
30 printf("crypto_secretbox_open_easy() failed\n");
32 printf("%d\n", memcmp(m
, m2
, mlen
));
34 for (i
= 0; i
< mlen
+ crypto_secretbox_MACBYTES
- 1; i
++) {
35 if (crypto_secretbox_open_easy(m2
, c
, (unsigned long long) i
,
37 printf("short open() should have failed\n");
41 crypto_secretbox_detached(c
, mac
, m
, (unsigned long long) mlen
, nonce
, k
);
42 if (crypto_secretbox_open_detached(m2
, c
, mac
, (unsigned long long) mlen
,
44 printf("crypto_secretbox_open_detached() failed\n");
46 printf("%d\n", memcmp(m
, m2
, mlen
));
49 crypto_secretbox_easy(c
, c
, (unsigned long long) mlen
, nonce
, k
);
50 printf("%d\n", memcmp(m
, c
, mlen
) == 0);
51 printf("%d\n", memcmp(m
, c
+ crypto_secretbox_MACBYTES
, mlen
) == 0);
52 if (crypto_secretbox_open_easy(c
, c
,
53 (unsigned long long) mlen
+ crypto_secretbox_MACBYTES
,
55 printf("crypto_secretbox_open_easy() failed\n");
57 printf("%d\n", memcmp(m
, c
, mlen
));