Modifications to use latest version of RandomSHAKE CSPRNG API

Signed-off-by: Anjan Roy <hello@itzmeanjan.in>
This commit is contained in:
Anjan Roy
2025-11-17 18:13:27 +05:30
parent 1e3ca9e0c0
commit b1033331c3
15 changed files with 28 additions and 29 deletions

View File

@@ -13,7 +13,7 @@ bench_ml_kem_1024_keygen(benchmark::State& state)
std::array<uint8_t, ml_kem_1024::PKEY_BYTE_LEN> pubkey{};
std::array<uint8_t, ml_kem_1024::SKEY_BYTE_LEN> seckey{};
randomshake::randomshake_t<256> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
@@ -45,7 +45,7 @@ bench_ml_kem_1024_encapsulate(benchmark::State& state)
std::array<uint8_t, ml_kem_1024::CIPHER_TEXT_BYTE_LEN> cipher{};
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> shared_secret{};
randomshake::randomshake_t<256> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
@@ -84,7 +84,7 @@ bench_ml_kem_1024_decapsulate(benchmark::State& state)
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<256> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);

View File

@@ -13,7 +13,7 @@ bench_ml_kem_512_keygen(benchmark::State& state)
std::array<uint8_t, ml_kem_512::PKEY_BYTE_LEN> pubkey{};
std::array<uint8_t, ml_kem_512::SKEY_BYTE_LEN> seckey{};
randomshake::randomshake_t<128> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
@@ -45,7 +45,7 @@ bench_ml_kem_512_encapsulate(benchmark::State& state)
std::array<uint8_t, ml_kem_512::CIPHER_TEXT_BYTE_LEN> cipher{};
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> shared_secret{};
randomshake::randomshake_t<128> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
@@ -84,7 +84,7 @@ bench_ml_kem_512_decapsulate(benchmark::State& state)
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<128> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);

View File

@@ -13,7 +13,7 @@ bench_ml_kem_768_keygen(benchmark::State& state)
std::array<uint8_t, ml_kem_768::PKEY_BYTE_LEN> pubkey{};
std::array<uint8_t, ml_kem_768::SKEY_BYTE_LEN> seckey{};
randomshake::randomshake_t<192> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
@@ -45,7 +45,7 @@ bench_ml_kem_768_encapsulate(benchmark::State& state)
std::array<uint8_t, ml_kem_768::CIPHER_TEXT_BYTE_LEN> cipher{};
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> shared_secret{};
randomshake::randomshake_t<192> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
@@ -84,7 +84,7 @@ bench_ml_kem_768_decapsulate(benchmark::State& state)
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<192> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);

View File

@@ -55,7 +55,7 @@ main()
auto receiver_key_span = std::span<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN>(receiver_key);
// Pseudo-randomness source
randomshake::randomshake_t<192> csprng{};
randomshake::randomshake_t csprng{};
// Fill up seeds using PRNG
csprng.generate(d_span);

View File

@@ -115,8 +115,7 @@ public:
forceinline constexpr auto operator<=>(const zq_t&) const = default;
// Samples a random Zq element, using pseudo random number generator.
template<size_t bit_security_level>
static forceinline zq_t random(randomshake::randomshake_t<bit_security_level>& csprng)
static forceinline zq_t random(randomshake::randomshake_t<>& csprng)
{
uint16_t res = 0;
csprng.generate(std::span(reinterpret_cast<uint8_t*>(&res), sizeof(res)));

View File

@@ -37,7 +37,7 @@ test_zq_compression()
requires(itr_cnt > 0)
{
bool res = true;
randomshake::randomshake_t<256> csprng{};
randomshake::randomshake_t csprng{};
for (size_t i = 0; i < itr_cnt; i++) {
const auto a = ml_kem_field::zq_t::random(csprng);

View File

@@ -8,7 +8,7 @@ TEST(ML_KEM, ArithmeticOverZq)
{
constexpr size_t ITERATION_COUNT = 1ul << 20;
randomshake::randomshake_t<128> csprng{};
randomshake::randomshake_t csprng{};
for (size_t i = 0; i < ITERATION_COUNT; i++) {
const auto a = ml_kem_field::zq_t::random(csprng);

View File

@@ -73,9 +73,9 @@ make_malformed_pubkey(std::span<uint8_t, pubkey_byte_len> pubkey)
}
// Given a ML-KEM-{512, 768, 1024} cipher text, this function flips a random bit of it, while sampling choice of random index from input PRNG.
template<size_t cipher_byte_len, size_t bit_sec_lvl>
template<size_t cipher_byte_len>
static forceinline constexpr void
random_bitflip_in_cipher_text(std::span<uint8_t, cipher_byte_len> cipher, randomshake::randomshake_t<bit_sec_lvl>& csprng)
random_bitflip_in_cipher_text(std::span<uint8_t, cipher_byte_len> cipher, randomshake::randomshake_t<>& csprng)
{
size_t random_u64 = 0;
csprng.generate(std::span<uint8_t, sizeof(random_u64)>(reinterpret_cast<uint8_t*>(&random_u64), sizeof(random_u64)));

View File

@@ -26,7 +26,7 @@ TEST(ML_KEM, ML_KEM_1024_KeygenEncapsDecaps)
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<256> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);
@@ -56,7 +56,7 @@ TEST(ML_KEM, ML_KEM_1024_EncapsFailureDueToNonReducedPubKey)
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> shared_secret{};
randomshake::randomshake_t<256> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);
@@ -90,7 +90,7 @@ TEST(ML_KEM, ML_KEM_1024_DecapsFailureDueToBitFlippedCipherText)
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<256> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);

View File

@@ -200,7 +200,7 @@ TEST(ML_KEM, ML_KEM_1024_SeckeyCheck_ACVP_KnownAnswerTests)
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> computed_shared_secret_sender{};
std::array<uint8_t, ml_kem_1024::SHARED_SECRET_BYTE_LEN> computed_shared_secret_receiver{};
randomshake::randomshake_t<256> csprng;
randomshake::randomshake_t csprng;
csprng.generate(random_m);
EXPECT_TRUE(ml_kem_1024::encapsulate(random_m, pk, computed_ctxt, computed_shared_secret_sender));

View File

@@ -27,7 +27,7 @@ TEST(ML_KEM, ML_KEM_512_KeygenEncapsDecaps)
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<128> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);
@@ -57,7 +57,7 @@ TEST(ML_KEM, ML_KEM_512_EncapsFailureDueToNonReducedPubKey)
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> shared_secret{};
randomshake::randomshake_t<128> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);
@@ -91,7 +91,7 @@ TEST(ML_KEM, ML_KEM_512_DecapsFailureDueToBitFlippedCipherText)
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<128> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);

View File

@@ -200,7 +200,7 @@ TEST(ML_KEM, ML_KEM_512_SeckeyCheck_ACVP_KnownAnswerTests)
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> computed_shared_secret_sender{};
std::array<uint8_t, ml_kem_512::SHARED_SECRET_BYTE_LEN> computed_shared_secret_receiver{};
randomshake::randomshake_t<128> csprng;
randomshake::randomshake_t csprng;
csprng.generate(random_m);
EXPECT_TRUE(ml_kem_512::encapsulate(random_m, pk, computed_ctxt, computed_shared_secret_sender));

View File

@@ -26,7 +26,7 @@ TEST(ML_KEM, ML_KEM_768_KeygenEncapsDecaps)
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<192> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);
@@ -56,7 +56,7 @@ TEST(ML_KEM, ML_KEM_768_EncapsFailureDueToNonReducedPubKey)
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> shared_secret{};
randomshake::randomshake_t<192> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);
@@ -90,7 +90,7 @@ TEST(ML_KEM, ML_KEM_768_DecapsFailureDueToBitFlippedCipherText)
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> shared_secret_sender{};
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> shared_secret_receiver{};
randomshake::randomshake_t<192> csprng{};
randomshake::randomshake_t csprng{};
csprng.generate(seed_d);
csprng.generate(seed_z);
csprng.generate(seed_m);

View File

@@ -200,7 +200,7 @@ TEST(ML_KEM, ML_KEM_768_SeckeyCheck_ACVP_KnownAnswerTests)
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> computed_shared_secret_sender{};
std::array<uint8_t, ml_kem_768::SHARED_SECRET_BYTE_LEN> computed_shared_secret_receiver{};
randomshake::randomshake_t<192> csprng;
randomshake::randomshake_t csprng;
csprng.generate(random_m);
EXPECT_TRUE(ml_kem_768::encapsulate(random_m, pk, computed_ctxt, computed_shared_secret_sender));

View File

@@ -17,7 +17,7 @@ test_serialize_deserialize()
std::vector<ml_kem_field::zq_t> dst(ml_kem_ntt::N);
std::vector<uint8_t> bytes(blen);
randomshake::randomshake_t<256> csprng{};
randomshake::randomshake_t csprng{};
for (size_t i = 0; i < ml_kem_ntt::N; i++) {
src[i] = ml_kem_field::zq_t::random(csprng);