mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-13 22:49: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>(
|
pub fn prove<C: EvrfCurve>(
|
||||||
rng: &mut (impl RngCore + CryptoRng),
|
rng: &mut (impl RngCore + CryptoRng),
|
||||||
generators: &Generators<C>,
|
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],
|
invocation: [u8; 32],
|
||||||
quantity: usize,
|
quantity: usize,
|
||||||
) -> Result<EvrfProveResult<C>, AcError>
|
) -> Result<EvrfProveResult<C>, AcError>
|
||||||
@@ -202,7 +202,7 @@ impl Evrf {
|
|||||||
let transcript = Blake2s256::digest(
|
let transcript = Blake2s256::digest(
|
||||||
[
|
[
|
||||||
invocation.as_slice(),
|
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()
|
.to_bytes()
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
]
|
]
|
||||||
@@ -303,7 +303,7 @@ impl Evrf {
|
|||||||
generator_tables.push(GeneratorTable::new(&curve_spec, x, y));
|
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 {
|
for coefficient in &dlog {
|
||||||
let mut coefficient = *coefficient;
|
let mut coefficient = *coefficient;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use std::time::Instant;
|
|||||||
|
|
||||||
use rand_core::OsRng;
|
use rand_core::OsRng;
|
||||||
|
|
||||||
use zeroize::Zeroize;
|
use zeroize::{Zeroize, Zeroizing};
|
||||||
use generic_array::typenum::{Sum, Diff, Quot, U, U1, U2};
|
use generic_array::typenum::{Sum, Diff, Quot, U, U1, U2};
|
||||||
use blake2::{Digest, Blake2b512};
|
use blake2::{Digest, Blake2b512};
|
||||||
|
|
||||||
@@ -66,9 +66,10 @@ impl EvrfCurve for Pallas {
|
|||||||
#[test]
|
#[test]
|
||||||
fn pasta_test() {
|
fn pasta_test() {
|
||||||
let generators = generators(1024);
|
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 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);
|
println!("Proving time: {:?}", Instant::now() - time);
|
||||||
|
|
||||||
let time = Instant::now();
|
let time = Instant::now();
|
||||||
@@ -77,7 +78,7 @@ fn pasta_test() {
|
|||||||
&mut OsRng,
|
&mut OsRng,
|
||||||
&generators,
|
&generators,
|
||||||
&mut verifier,
|
&mut verifier,
|
||||||
Vesta::generator() * vesta_private_key,
|
Vesta::generator() * *vesta_private_key,
|
||||||
[0; 32],
|
[0; 32],
|
||||||
1,
|
1,
|
||||||
&res.proof,
|
&res.proof,
|
||||||
|
|||||||
Reference in New Issue
Block a user