Add tests for box_xchacha20poly1305
This commit is contained in:
parent
99e6c94739
commit
eb5c17d3ec
@ -278,12 +278,102 @@ tv_secretbox_xchacha20poly1305(void)
|
|||||||
printf("tv_secretbox_xchacha20: ok\n");
|
printf("tv_secretbox_xchacha20: ok\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
tv_box_xchacha20poly1305(void)
|
||||||
|
{
|
||||||
|
char hex[65];
|
||||||
|
unsigned char *pk;
|
||||||
|
unsigned char *sk;
|
||||||
|
unsigned char *m;
|
||||||
|
unsigned char *m2;
|
||||||
|
unsigned char *mac;
|
||||||
|
unsigned char *nonce;
|
||||||
|
unsigned char *out;
|
||||||
|
unsigned char *pc;
|
||||||
|
unsigned char *seed;
|
||||||
|
size_t m_len;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
pk = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES);
|
||||||
|
sk = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES);
|
||||||
|
nonce = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_NONCEBYTES);
|
||||||
|
mac = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_MACBYTES);
|
||||||
|
pc = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES);
|
||||||
|
for (i = 0; i < 10; i++) {
|
||||||
|
m_len = (i == 0) ? 0 : randombytes_uniform(150);
|
||||||
|
m = (unsigned char *) sodium_malloc(m_len);
|
||||||
|
m2 = (unsigned char *) sodium_malloc(m_len);
|
||||||
|
|
||||||
|
out = (unsigned char *) sodium_malloc
|
||||||
|
(crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len);
|
||||||
|
randombytes_buf(nonce, crypto_box_curve25519xchacha20poly1305_NONCEBYTES);
|
||||||
|
randombytes_buf(m, m_len);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_keypair(pk, sk) == 0);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_easy(out, m, m_len, nonce,
|
||||||
|
pk, sk) == 0);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_open_easy
|
||||||
|
(m2, out, crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len,
|
||||||
|
nonce, pk, sk) == 0);
|
||||||
|
assert(memcmp(m2, m, m_len) == 0);
|
||||||
|
sodium_free(out);
|
||||||
|
|
||||||
|
out = (unsigned char *) sodium_malloc
|
||||||
|
(crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_beforenm(pc, pk, sk) == 0);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_easy_afternm
|
||||||
|
(out, m, m_len, nonce, pc) == 0);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_open_easy_afternm
|
||||||
|
(m2, out, crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len,
|
||||||
|
nonce, pc) == 0);
|
||||||
|
assert(memcmp(m2, m, m_len) == 0);
|
||||||
|
sodium_free(out);
|
||||||
|
|
||||||
|
out = (unsigned char *) sodium_malloc(m_len);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_detached(out, mac, m, m_len,
|
||||||
|
nonce, pk, sk) == 0);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_open_detached
|
||||||
|
(m2, out, mac, m_len, nonce, pk, sk) == 0);
|
||||||
|
sodium_free(out);
|
||||||
|
|
||||||
|
out = (unsigned char *) sodium_malloc(m_len);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_detached_afternm
|
||||||
|
(out, mac, m, m_len, nonce, pc) == 0);
|
||||||
|
assert(crypto_box_curve25519xchacha20poly1305_open_detached_afternm
|
||||||
|
(m2, out, mac, m_len, nonce, pc) == 0);
|
||||||
|
sodium_free(out);
|
||||||
|
|
||||||
|
sodium_free(m2);
|
||||||
|
sodium_free(m);
|
||||||
|
}
|
||||||
|
sodium_free(pc);
|
||||||
|
sodium_free(mac);
|
||||||
|
sodium_free(nonce);
|
||||||
|
|
||||||
|
seed = (unsigned char *) sodium_malloc
|
||||||
|
(crypto_box_curve25519xchacha20poly1305_SEEDBYTES);
|
||||||
|
for (i = 0; i < crypto_box_curve25519xchacha20poly1305_SEEDBYTES; i++) {
|
||||||
|
seed[i] = i;
|
||||||
|
}
|
||||||
|
crypto_box_curve25519xchacha20poly1305_seed_keypair(pk, sk, seed);
|
||||||
|
sodium_bin2hex(hex, sizeof hex, pk, crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES);
|
||||||
|
assert(strcmp(hex, "4701d08488451f545a409fb58ae3e58581ca40ac3f7f114698cd71deac73ca01") == 0);
|
||||||
|
sodium_bin2hex(hex, sizeof hex, sk, crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES);
|
||||||
|
assert(strcmp(hex, "3d94eea49c580aef816935762be049559d6d1440dede12e6a125f1841fff8e6f") == 0);
|
||||||
|
sodium_free(seed);
|
||||||
|
|
||||||
|
sodium_free(sk);
|
||||||
|
sodium_free(pk);
|
||||||
|
|
||||||
|
printf("tv_box_xchacha20poly1305: ok\n");
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(void)
|
main(void)
|
||||||
{
|
{
|
||||||
tv_hchacha20();
|
tv_hchacha20();
|
||||||
tv_stream_xchacha20();
|
tv_stream_xchacha20();
|
||||||
tv_secretbox_xchacha20poly1305();
|
tv_secretbox_xchacha20poly1305();
|
||||||
|
tv_box_xchacha20poly1305();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
tv_hchacha20: ok
|
tv_hchacha20: ok
|
||||||
tv_stream_xchacha20: ok
|
tv_stream_xchacha20: ok
|
||||||
tv_secretbox_xchacha20: ok
|
tv_secretbox_xchacha20: ok
|
||||||
|
tv_box_xchacha20poly1305: ok
|
||||||
|
Loading…
Reference in New Issue
Block a user