Files
serai/crypto/dleq/src/tests/cross_group/schnorr.rs

40 lines
844 B
Rust
Raw Normal View History

use rand_core::OsRng;
2022-07-15 01:26:07 -04:00
use group::{
ff::{Field, PrimeFieldBits},
prime::PrimeGroup,
};
use multiexp::BatchVerifier;
use transcript::{Transcript, RecommendedTranscript};
use crate::cross_group::schnorr::SchnorrPoK;
2022-07-15 01:26:07 -04:00
fn test_schnorr<G: PrimeGroup>()
where
G::Scalar: PrimeFieldBits,
{
let private = G::Scalar::random(&mut OsRng);
let transcript = RecommendedTranscript::new(b"Schnorr Test");
let mut batch = BatchVerifier::new(3);
2022-07-15 01:26:07 -04:00
SchnorrPoK::prove(&mut OsRng, &mut transcript.clone(), G::generator(), private).verify(
&mut OsRng,
&mut transcript.clone(),
G::generator(),
G::generator() * private,
2022-07-15 01:26:07 -04:00
&mut batch,
);
assert!(batch.verify_vartime());
}
#[test]
fn test_secp256k1() {
test_schnorr::<k256::ProjectivePoint>();
}
#[test]
fn test_ed25519() {
test_schnorr::<dalek_ff_group::EdwardsPoint>();
}