Home | History | Annotate | Line # | Download | only in default
      1  1.1  riastrad 
      2  1.1  riastrad #define TEST_NAME "box7"
      3  1.1  riastrad #include "cmptest.h"
      4  1.1  riastrad 
      5  1.1  riastrad static unsigned char alicesk[crypto_box_SECRETKEYBYTES];
      6  1.1  riastrad static unsigned char alicepk[crypto_box_PUBLICKEYBYTES];
      7  1.1  riastrad static unsigned char bobsk[crypto_box_SECRETKEYBYTES];
      8  1.1  riastrad static unsigned char bobpk[crypto_box_PUBLICKEYBYTES];
      9  1.1  riastrad static unsigned char n[crypto_box_NONCEBYTES];
     10  1.1  riastrad 
     11  1.1  riastrad int
     12  1.1  riastrad main(void)
     13  1.1  riastrad {
     14  1.1  riastrad     unsigned char *m;
     15  1.1  riastrad     unsigned char *c;
     16  1.1  riastrad     unsigned char *m2;
     17  1.1  riastrad     size_t         mlen;
     18  1.1  riastrad     size_t         mlen_max = 1000;
     19  1.1  riastrad     size_t         i;
     20  1.1  riastrad     int            ret;
     21  1.1  riastrad 
     22  1.1  riastrad     m  = (unsigned char *) sodium_malloc(mlen_max);
     23  1.1  riastrad     c  = (unsigned char *) sodium_malloc(mlen_max);
     24  1.1  riastrad     m2 = (unsigned char *) sodium_malloc(mlen_max);
     25  1.1  riastrad     memset(m, 0, crypto_box_ZEROBYTES);
     26  1.1  riastrad     crypto_box_keypair(alicepk, alicesk);
     27  1.1  riastrad     crypto_box_keypair(bobpk, bobsk);
     28  1.1  riastrad     for (mlen = 0; mlen + crypto_box_ZEROBYTES <= mlen_max; mlen++) {
     29  1.1  riastrad         randombytes_buf(n, crypto_box_NONCEBYTES);
     30  1.1  riastrad         randombytes_buf(m + crypto_box_ZEROBYTES, mlen);
     31  1.1  riastrad         ret = crypto_box(c, m, mlen + crypto_box_ZEROBYTES, n, bobpk, alicesk);
     32  1.1  riastrad         assert(ret == 0);
     33  1.1  riastrad         if (crypto_box_open(m2, c, mlen + crypto_box_ZEROBYTES, n, alicepk,
     34  1.1  riastrad                             bobsk) == 0) {
     35  1.1  riastrad             for (i = 0; i < mlen + crypto_box_ZEROBYTES; ++i) {
     36  1.1  riastrad                 if (m2[i] != m[i]) {
     37  1.1  riastrad                     printf("bad decryption\n");
     38  1.1  riastrad                     break;
     39  1.1  riastrad                 }
     40  1.1  riastrad             }
     41  1.1  riastrad         } else {
     42  1.1  riastrad             printf("ciphertext fails verification\n");
     43  1.1  riastrad         }
     44  1.1  riastrad     }
     45  1.1  riastrad     sodium_free(m);
     46  1.1  riastrad     sodium_free(c);
     47  1.1  riastrad     sodium_free(m2);
     48  1.1  riastrad 
     49  1.1  riastrad     return 0;
     50  1.1  riastrad }
     51