diff --git a/common/dkg/src/bte/encryption.rs b/common/dkg/src/bte/encryption.rs index 4fc6b6d793..5c9e38e986 100644 --- a/common/dkg/src/bte/encryption.rs +++ b/common/dkg/src/bte/encryption.rs @@ -398,7 +398,7 @@ pub fn baby_step_giant_step( #[cfg(test)] mod tests { use super::*; - use crate::bte::{encryption, keygen, setup}; + use crate::bte::{encryption, keygen, setup, BSGS_TABLE}; use rand_core::SeedableRng; fn verify_hazmat_rand(ciphertext: &Ciphertexts, randomness: &HazmatRandomness) { @@ -456,8 +456,6 @@ mod tests { let (decryption_key1, public_key1) = keygen(¶ms, &mut rng); let (decryption_key2, public_key2) = keygen(¶ms, &mut rng); - let lookup_table = encryption::BabyStepGiantStepLookup::default(); - for _ in 0..10 { let m1 = Share::random(&mut rng); let m2 = Share::random(&mut rng); @@ -466,22 +464,12 @@ mod tests { let (ciphertext, hazmat) = encrypt_shares(shares, ¶ms, &mut rng); verify_hazmat_rand(&ciphertext, &hazmat); - let recovered1 = decrypt_share( - ¶ms, - &decryption_key1, - 0, - &ciphertext, - Some(&lookup_table), - ) - .unwrap(); - let recovered2 = decrypt_share( - ¶ms, - &decryption_key2, - 1, - &ciphertext, - Some(&lookup_table), - ) - .unwrap(); + let recovered1 = + decrypt_share(¶ms, &decryption_key1, 0, &ciphertext, Some(&BSGS_TABLE)) + .unwrap(); + let recovered2 = + decrypt_share(¶ms, &decryption_key2, 1, &ciphertext, Some(&BSGS_TABLE)) + .unwrap(); assert_eq!(m1, recovered1); assert_eq!(m2, recovered2); } @@ -497,8 +485,6 @@ mod tests { let (decryption_key1, public_key1) = keygen(¶ms, &mut rng); let (decryption_key2, public_key2) = keygen(¶ms, &mut rng); - let lookup_table = encryption::BabyStepGiantStepLookup::default(); - for _ in 0..10 { let m1 = Share::random(&mut rng); let m2 = Share::random(&mut rng); @@ -507,22 +493,12 @@ mod tests { let (ciphertext, hazmat) = encrypt_shares(shares, ¶ms, &mut rng); verify_hazmat_rand(&ciphertext, &hazmat); - let recovered1 = decrypt_share( - ¶ms, - &decryption_key1, - 0, - &ciphertext, - Some(&lookup_table), - ) - .unwrap(); - let recovered2 = decrypt_share( - ¶ms, - &decryption_key2, - 1, - &ciphertext, - Some(&lookup_table), - ) - .unwrap(); + let recovered1 = + decrypt_share(¶ms, &decryption_key1, 0, &ciphertext, Some(&BSGS_TABLE)) + .unwrap(); + let recovered2 = + decrypt_share(¶ms, &decryption_key2, 1, &ciphertext, Some(&BSGS_TABLE)) + .unwrap(); assert_eq!(m1, recovered1); assert_eq!(m2, recovered2); } diff --git a/common/dkg/src/bte/mod.rs b/common/dkg/src/bte/mod.rs index 8a96cc0481..273dc4c2e3 100644 --- a/common/dkg/src/bte/mod.rs +++ b/common/dkg/src/bte/mod.rs @@ -3,6 +3,7 @@ use std::sync::LazyLock; +use crate::bte::encryption::BabyStepGiantStepLookup; use crate::utils::hash_g2; use crate::{Chunk, Share}; use bls12_381::{G1Affine, G2Affine, G2Prepared, G2Projective, Gt}; @@ -21,6 +22,8 @@ pub(crate) static PAIRING_BASE: LazyLock = LazyLock::new(|| bls12_381::pairing(&G1Affine::generator(), &G2Affine::generator())); pub(crate) static G2_GENERATOR_PREPARED: LazyLock = LazyLock::new(|| G2Prepared::from(G2Affine::generator())); +pub(crate) static BSGS_TABLE: LazyLock = + LazyLock::new(|| BabyStepGiantStepLookup::default()); // Domain tries to follow guidelines specified by: // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-11#section-3.1