mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-13 06:29:25 +00:00
Have the eVRF take a Zeroizing private key
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user