1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/* Target Functions: s2n_kem_recv_ciphertext s2n_kem_decapsulate kyber_512_r3_crypto_kem_dec */
#include "tests/s2n_test.h"
#include "tests/testlib/s2n_testlib.h"
#include "tls/s2n_kem.h"
#include "utils/s2n_safety.h"
#define KAT_FILE_NAME "../unit/kats/kyber_r3.kat"
/* This fuzz test uses the first private key (count = 0) from tests/unit/kats/kyber_r3.kat.
* A valid ciphertext to provide to s2n_kem_recv_ciphertext (as it would have appeared on
* the wire) was generated by taking the corresponding KAT ciphertext (count = 0) and
* prepending KYBER_512_R3_CIPHERTEXT_BYTES as two hex-encoded bytes. */
static struct s2n_kem_params kyber512_r3_draft0_params = { .kem = &s2n_kyber_512_r3, .len_prefixed = true };
static struct s2n_kem_params kyber512_r3_draft5_params = { .kem = &s2n_kyber_512_r3, .len_prefixed = false };
int s2n_fuzz_init(int *argc, char **argv[])
{
POSIX_GUARD(s2n_kem_recv_ciphertext_fuzz_test_init(KAT_FILE_NAME, &kyber512_r3_draft0_params));
POSIX_GUARD(s2n_kem_recv_ciphertext_fuzz_test_init(KAT_FILE_NAME, &kyber512_r3_draft5_params));
return S2N_SUCCESS;
}
int s2n_fuzz_test(const uint8_t *buf, size_t len)
{
POSIX_GUARD(s2n_kem_recv_ciphertext_fuzz_test(buf, len, &kyber512_r3_draft0_params));
POSIX_GUARD(s2n_kem_recv_ciphertext_fuzz_test(buf, len, &kyber512_r3_draft5_params));
return S2N_SUCCESS;
}
static void s2n_fuzz_cleanup()
{
s2n_kem_free(&kyber512_r3_draft0_params);
s2n_kem_free(&kyber512_r3_draft5_params);
}
S2N_FUZZ_TARGET(s2n_fuzz_init, s2n_fuzz_test, s2n_fuzz_cleanup)
|