Browse Source

Add test that torsion doesn't affect signature verification.

master
Sean Bowe 6 years ago
parent
commit
3e43cae526
No known key found for this signature in database
GPG Key ID: 95684257D8F8B031
  1. 31
      src/redjubjub.rs

31
src/redjubjub.rs

@ -155,10 +155,39 @@ mod tests {
use pairing::bls12_381::Bls12;
use rand::thread_rng;
use jubjub::JubjubBls12;
use jubjub::{JubjubBls12, fs::Fs, edwards};
use super::*;
#[test]
fn cofactor_check() {
let rng = &mut thread_rng();
let params = &JubjubBls12::new();
let inf = edwards::Point::zero();
let p_g = FixedGenerators::SpendingKeyGenerator;
let p8 = loop {
let r = edwards::Point::<Bls12, _>::rand(rng, params).mul(Fs::char(), params);
let r2 = r.double(params);
let r4 = r2.double(params);
let r8 = r4.double(params);
if r2 != inf && r4 != inf && r8 == inf {
break r;
}
};
let sk = PrivateKey::<Bls12>(rng.gen());
let vk = PublicKey::from_private(&sk, p_g, params);
let msg = b"Foo bar";
let sig = sk.sign(msg, rng, p_g, params);
assert!(vk.verify(msg, &sig, p_g, params));
let vktorsion = PublicKey(vk.0.add(&p8, params));
assert!(vktorsion.verify(msg, &sig, p_g, params));
}
#[test]
fn round_trip_serialization() {
let rng = &mut thread_rng();

Loading…
Cancel
Save