libsodium update: 1.0.0
[tomato.git] / release / src-rt-6.x.4708 / router / libsodium / test / default / box_easy2.c
blob5e22677f33f83aed74a676b9b41beb08110142a9
2 #define TEST_NAME "box_easy2"
3 #include "cmptest.h"
5 unsigned char m[10000];
6 unsigned char m2[10000];
7 unsigned char c[crypto_box_MACBYTES + 10000];
8 unsigned char nonce[crypto_box_NONCEBYTES];
9 unsigned char alicepk[crypto_box_PUBLICKEYBYTES];
10 unsigned char alicesk[crypto_box_SECRETKEYBYTES];
11 unsigned char bobpk[crypto_box_PUBLICKEYBYTES];
12 unsigned char bobsk[crypto_box_SECRETKEYBYTES];
13 unsigned char mac[crypto_box_MACBYTES];
15 int main(void)
17 unsigned long long mlen;
18 unsigned long long i;
20 crypto_box_keypair(alicepk, alicesk);
21 crypto_box_keypair(bobpk, bobsk);
22 mlen = (unsigned long long)randombytes_uniform((uint32_t)sizeof m);
23 randombytes_buf(m, mlen);
24 randombytes_buf(nonce, sizeof nonce);
25 crypto_box_easy(c, m, mlen, nonce, bobpk, alicesk);
26 if (crypto_box_open_easy(m2, c, mlen + crypto_box_MACBYTES, nonce, alicepk,
27 bobsk) != 0) {
28 printf("open() failed");
29 return 1;
31 printf("%d\n", memcmp(m, m2, mlen));
33 for (i = 0; i < mlen + crypto_box_MACBYTES - 1; i++) {
34 if (crypto_box_open_easy(m2, c, i, nonce, alicepk, bobsk) == 0) {
35 printf("short open() should have failed");
36 return 1;
39 crypto_box_detached(c, mac, m, mlen, nonce, bobsk, alicepk);
40 crypto_box_open_detached(m2, c, mac, mlen, nonce, alicepk, bobsk);
41 printf("%d\n", memcmp(m, m2, mlen));
43 return 0;