#include #include #include "fake_random.h" extern "C" int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) { int initialized = sodium_init(); assert(initialized >= 0); setup_fake_random(data, size); unsigned char key[crypto_secretbox_KEYBYTES]; unsigned char nonce[crypto_secretbox_NONCEBYTES]; // these use a deterministic generator crypto_secretbox_keygen(key); randombytes_buf(nonce, sizeof nonce); size_t ciphertext_len = crypto_secretbox_MACBYTES + size; unsigned char ciphertext[ciphertext_len]; crypto_secretbox_easy(ciphertext, data, size, nonce, key); unsigned char decrypted[size]; crypto_secretbox_open_easy(decrypted, ciphertext, ciphertext_len, nonce, key); return 0; }