Path: blob/main/sys/contrib/libsodium/test/default/box7.c
48378 views
1#define TEST_NAME "box7"2#include "cmptest.h"34static unsigned char alicesk[crypto_box_SECRETKEYBYTES];5static unsigned char alicepk[crypto_box_PUBLICKEYBYTES];6static unsigned char bobsk[crypto_box_SECRETKEYBYTES];7static unsigned char bobpk[crypto_box_PUBLICKEYBYTES];8static unsigned char n[crypto_box_NONCEBYTES];910int11main(void)12{13unsigned char *m;14unsigned char *c;15unsigned char *m2;16size_t mlen;17size_t mlen_max = 1000;18size_t i;19int ret;2021m = (unsigned char *) sodium_malloc(mlen_max);22c = (unsigned char *) sodium_malloc(mlen_max);23m2 = (unsigned char *) sodium_malloc(mlen_max);24memset(m, 0, crypto_box_ZEROBYTES);25crypto_box_keypair(alicepk, alicesk);26crypto_box_keypair(bobpk, bobsk);27for (mlen = 0; mlen + crypto_box_ZEROBYTES <= mlen_max; mlen++) {28randombytes_buf(n, crypto_box_NONCEBYTES);29randombytes_buf(m + crypto_box_ZEROBYTES, mlen);30ret = crypto_box(c, m, mlen + crypto_box_ZEROBYTES, n, bobpk, alicesk);31assert(ret == 0);32if (crypto_box_open(m2, c, mlen + crypto_box_ZEROBYTES, n, alicepk,33bobsk) == 0) {34for (i = 0; i < mlen + crypto_box_ZEROBYTES; ++i) {35if (m2[i] != m[i]) {36printf("bad decryption\n");37break;38}39}40} else {41printf("ciphertext fails verification\n");42}43}44sodium_free(m);45sodium_free(c);46sodium_free(m2);4748return 0;49}505152