diff --git a/crypto/evrf/src/lib.rs b/crypto/evrf/src/lib.rs index b321e5dd..4561f106 100644 --- a/crypto/evrf/src/lib.rs +++ b/crypto/evrf/src/lib.rs @@ -185,7 +185,7 @@ impl Evrf { pub fn prove( rng: &mut (impl RngCore + CryptoRng), generators: &Generators, - evrf_private_key: <::EmbeddedCurve as Ciphersuite>::F, + evrf_private_key: Zeroizing<<::EmbeddedCurve as Ciphersuite>::F>, invocation: [u8; 32], quantity: usize, ) -> Result, AcError> @@ -202,7 +202,7 @@ impl Evrf { let transcript = Blake2s256::digest( [ invocation.as_slice(), - (<::EmbeddedCurve as Ciphersuite>::generator() * evrf_private_key) + (<::EmbeddedCurve as Ciphersuite>::generator() * *evrf_private_key) .to_bytes() .as_ref(), ] @@ -303,7 +303,7 @@ impl Evrf { generator_tables.push(GeneratorTable::new(&curve_spec, x, y)); } - let dh = generator * evrf_private_key; + let dh = generator * *evrf_private_key; { for coefficient in &dlog { let mut coefficient = *coefficient; diff --git a/crypto/evrf/src/tests.rs b/crypto/evrf/src/tests.rs index b13112d8..a4c1c003 100644 --- a/crypto/evrf/src/tests.rs +++ b/crypto/evrf/src/tests.rs @@ -2,7 +2,7 @@ use std::time::Instant; use rand_core::OsRng; -use zeroize::Zeroize; +use zeroize::{Zeroize, Zeroizing}; use generic_array::typenum::{Sum, Diff, Quot, U, U1, U2}; use blake2::{Digest, Blake2b512}; @@ -66,9 +66,10 @@ impl EvrfCurve for Pallas { #[test] fn pasta_test() { let generators = generators(1024); - let vesta_private_key = ::F::random(&mut OsRng); + let vesta_private_key = Zeroizing::new(::F::random(&mut OsRng)); let time = Instant::now(); - let res = Evrf::prove::(&mut OsRng, &generators, vesta_private_key, [0; 32], 1).unwrap(); + let res = + Evrf::prove::(&mut OsRng, &generators, vesta_private_key.clone(), [0; 32], 1).unwrap(); println!("Proving time: {:?}", Instant::now() - time); let time = Instant::now(); @@ -77,7 +78,7 @@ fn pasta_test() { &mut OsRng, &generators, &mut verifier, - Vesta::generator() * vesta_private_key, + Vesta::generator() * *vesta_private_key, [0; 32], 1, &res.proof,