Have the eVRF take a Zeroizing private key

This commit is contained in:
Luke Parker
2024-07-23 19:23:21 -04:00
parent b6e688076f
commit b7103038cb
2 changed files with 8 additions and 7 deletions

View File

@@ -185,7 +185,7 @@ impl Evrf {
pub fn prove<C: EvrfCurve>(
rng: &mut (impl RngCore + CryptoRng),
generators: &Generators<C>,
evrf_private_key: <<C as EvrfCurve>::EmbeddedCurve as Ciphersuite>::F,
evrf_private_key: Zeroizing<<<C as EvrfCurve>::EmbeddedCurve as Ciphersuite>::F>,
invocation: [u8; 32],
quantity: usize,
) -> Result<EvrfProveResult<C>, AcError>
@@ -202,7 +202,7 @@ impl Evrf {
let transcript = Blake2s256::digest(
[
invocation.as_slice(),
(<<C as EvrfCurve>::EmbeddedCurve as Ciphersuite>::generator() * evrf_private_key)
(<<C as EvrfCurve>::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;

View File

@@ -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 = <Vesta as Ciphersuite>::F::random(&mut OsRng);
let vesta_private_key = Zeroizing::new(<Vesta as Ciphersuite>::F::random(&mut OsRng));
let time = Instant::now();
let res = Evrf::prove::<Pallas>(&mut OsRng, &generators, vesta_private_key, [0; 32], 1).unwrap();
let res =
Evrf::prove::<Pallas>(&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,