xref: /netbsd-src/sys/external/isc/libsodium/dist/test/default/secretbox7.c (revision f447f37a0a0b7f2a0e879f17bef92d4992e27500)
1*f447f37aSriastradh 
2*f447f37aSriastradh #define TEST_NAME "secretbox7"
3*f447f37aSriastradh #include "cmptest.h"
4*f447f37aSriastradh 
5*f447f37aSriastradh static unsigned char k[crypto_secretbox_KEYBYTES];
6*f447f37aSriastradh static unsigned char n[crypto_secretbox_NONCEBYTES];
7*f447f37aSriastradh static unsigned char m[10000];
8*f447f37aSriastradh static unsigned char c[10000];
9*f447f37aSriastradh static unsigned char m2[10000];
10*f447f37aSriastradh 
11*f447f37aSriastradh int
main(void)12*f447f37aSriastradh main(void)
13*f447f37aSriastradh {
14*f447f37aSriastradh     size_t mlen;
15*f447f37aSriastradh     size_t i;
16*f447f37aSriastradh 
17*f447f37aSriastradh     for (mlen = 0; mlen < 1000 && mlen + crypto_secretbox_ZEROBYTES < sizeof m;
18*f447f37aSriastradh          ++mlen) {
19*f447f37aSriastradh         crypto_secretbox_keygen(k);
20*f447f37aSriastradh         randombytes_buf(n, crypto_secretbox_NONCEBYTES);
21*f447f37aSriastradh         randombytes_buf(m + crypto_secretbox_ZEROBYTES, mlen);
22*f447f37aSriastradh         crypto_secretbox(c, m, mlen + crypto_secretbox_ZEROBYTES, n, k);
23*f447f37aSriastradh         if (crypto_secretbox_open(m2, c, mlen + crypto_secretbox_ZEROBYTES, n,
24*f447f37aSriastradh                                   k) == 0) {
25*f447f37aSriastradh             for (i = 0; i < mlen + crypto_secretbox_ZEROBYTES; ++i) {
26*f447f37aSriastradh                 if (m2[i] != m[i]) {
27*f447f37aSriastradh                     printf("bad decryption\n");
28*f447f37aSriastradh                     break;
29*f447f37aSriastradh                 }
30*f447f37aSriastradh             }
31*f447f37aSriastradh         } else {
32*f447f37aSriastradh             printf("ciphertext fails verification\n");
33*f447f37aSriastradh         }
34*f447f37aSriastradh     }
35*f447f37aSriastradh     return 0;
36*f447f37aSriastradh }
37