From 7937aa68e5403fceea947e8fea345cc55b4d8d6d Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 09:37:29 -0700 Subject: [PATCH 01/11] boomerang: Remove unused comm_state accessor method This was unused, and unncessary since the member variable is public and can be accessed directly. --- boomerang/src/config.rs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/boomerang/src/config.rs b/boomerang/src/config.rs index 0813719..89b78c1 100644 --- a/boomerang/src/config.rs +++ b/boomerang/src/config.rs @@ -23,10 +23,3 @@ pub struct State { /// The user keypair pub c_key_pair: UKeyPair, } - -impl State { - /// Boomerang state - pub const fn state(&self) -> &Vec> { - &self.comm_state - } -} From f600bcec9be04accd519fd1170d13d03b2015e44 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 09:59:18 -0700 Subject: [PATCH 02/11] Take the signature by reference when verifying Avoid cloning these objects when the callee only needs temporary access to the data. --- acl/src/verify.rs | 4 ++-- boomerang/src/server.rs | 8 ++++---- .../client/benches/client_benchmark.rs | 6 +++--- end2end-example/client/src/main.rs | 6 +++--- macros/src/bench_tacl.rs | 8 ++++---- macros/src/test_acl.rs | 8 ++++---- macros/src/test_boomerang.rs | 16 ++++++++-------- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/acl/src/verify.rs b/acl/src/verify.rs index 5ebf84d..dc6114a 100644 --- a/acl/src/verify.rs +++ b/acl/src/verify.rs @@ -163,7 +163,7 @@ impl SigVerify { pub fn verify( pub_key: sw::Affine, tag_key: sw::Affine, - sig_m: SigSign, + sig_m: &SigSign, message: &str, ) -> bool { let z2 = sig_m.sigma.zeta - sig_m.sigma.zeta1; @@ -225,7 +225,7 @@ impl SigVerifProof { transcript.append_message(b"c1", &compressed_bytes[..]); } - pub fn verify(proof: SigProof, tag_key: sw::Affine, sig_m: SigSign) -> bool { + pub fn verify(proof: SigProof, tag_key: sw::Affine, sig_m: &SigSign) -> bool { // Equality proof of zeta = b_gamma let rhs1 = (tag_key.mul(proof.pi1.a1)).into_affine(); let rhs2 = (A::GENERATOR.mul(proof.pi1.a1)).into_affine(); diff --git a/boomerang/src/server.rs b/boomerang/src/server.rs index 6911b60..2bc06e6 100644 --- a/boomerang/src/server.rs +++ b/boomerang/src/server.rs @@ -245,7 +245,7 @@ impl CollectionS { let check = SigVerify::verify( key_pair.s_key_pair.verifying_key, key_pair.s_key_pair.tag_key, - c_m.m2.sig.clone(), + &c_m.m2.sig, "message", ); @@ -256,7 +256,7 @@ impl CollectionS { let check2 = SigVerifProof::verify( c_m.m2.s_proof, key_pair.s_key_pair.tag_key, - c_m.m2.sig.clone(), + &c_m.m2.sig, ); if !check2 { @@ -468,7 +468,7 @@ impl SpendVerifyS { let check = SigVerify::verify( key_pair.s_key_pair.verifying_key, key_pair.s_key_pair.tag_key, - c_m.m2.sig.clone(), + &c_m.m2.sig, "message", ); @@ -480,7 +480,7 @@ impl SpendVerifyS { let check2 = SigVerifProof::verify( c_m.m2.s_proof, key_pair.s_key_pair.tag_key, - c_m.m2.sig.clone(), + &c_m.m2.sig, ); if !check2 { diff --git a/end2end-example/client/benches/client_benchmark.rs b/end2end-example/client/benches/client_benchmark.rs index ab038f6..a630f3b 100644 --- a/end2end-example/client/benches/client_benchmark.rs +++ b/end2end-example/client/benches/client_benchmark.rs @@ -59,7 +59,7 @@ async fn issuance_protocol(ckp: UKeyPair, skp: ServerKeyPair) -> let check = SigVerify::::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig.clone(), + &sig, "message", ); assert!(check); @@ -114,7 +114,7 @@ async fn collection_protocol( let check = SigVerify::::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig_n.clone(), + &sig_n, "message", ); assert!(check); @@ -178,7 +178,7 @@ async fn spending_protocol( let check = SigVerify::::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig_n.clone(), + &sig_n, "message", ); assert!(check); diff --git a/end2end-example/client/src/main.rs b/end2end-example/client/src/main.rs index a3e4c38..53ff5d0 100644 --- a/end2end-example/client/src/main.rs +++ b/end2end-example/client/src/main.rs @@ -570,7 +570,7 @@ async fn main() { let check = SigVerify::::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig.clone(), + &sig, "message", ); assert!(check); @@ -634,7 +634,7 @@ async fn main() { let check = SigVerify::::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig_n.clone(), + &sig_n, "message", ); assert!(check); @@ -715,7 +715,7 @@ async fn main() { let check = SigVerify::::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig_n.clone(), + &sig_n, "message", ); assert!(check); diff --git a/macros/src/bench_tacl.rs b/macros/src/bench_tacl.rs index 1339a79..e410ebf 100644 --- a/macros/src/bench_tacl.rs +++ b/macros/src/bench_tacl.rs @@ -142,7 +142,7 @@ macro_rules! bench_tacl_verify_time { // Now we can just benchmark how long it takes to create a new multi proof. c.bench_function(concat!($curve_name, " acl verify time"), |b| { b.iter(|| { - ACLSV::verify(kp.verifying_key, kp.tag_key, m4.clone(), "message"); + ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); }); }); } @@ -169,7 +169,7 @@ macro_rules! bench_tacl_sign_proof_time { let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); let m3 = ACLSR::respond(kp.clone(), m1.clone(), m2.clone()); let m4 = ACLSG::sign(kp.verifying_key, kp.tag_key, m2.clone(), m3, "message"); - ACLSV::verify(kp.verifying_key, kp.tag_key, m4.clone(), "message"); + ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); // Now we can just benchmark how long it takes to create a new multi proof. c.bench_function(concat!($curve_name, " acl proof sign time"), |b| { @@ -208,7 +208,7 @@ macro_rules! bench_tacl_sign_verify_time { let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); let m3 = ACLSR::respond(kp.clone(), m1.clone(), m2.clone()); let m4 = ACLSG::sign(kp.verifying_key, kp.tag_key, m2.clone(), m3, "message"); - ACLSV::verify(kp.verifying_key, kp.tag_key, m4.clone(), "message"); + ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); let proof = ACLSP::prove( &mut OsRng, kp.tag_key, @@ -220,7 +220,7 @@ macro_rules! bench_tacl_sign_verify_time { // Now we can just benchmark how long it takes to create a new multi proof. c.bench_function(concat!($curve_name, " acl proof verify time"), |b| { - b.iter(|| ACLSPV::verify(proof.clone(), kp.tag_key, m4.clone())); + b.iter(|| ACLSPV::verify(proof.clone(), kp.tag_key, &m4)); }); } }; diff --git a/macros/src/test_acl.rs b/macros/src/test_acl.rs index 709232e..2c26392 100644 --- a/macros/src/test_acl.rs +++ b/macros/src/test_acl.rs @@ -185,7 +185,7 @@ macro_rules! __test_acl { assert!(m4.sigma.zeta.is_on_curve()); assert!(m4.sigma.zeta1.is_on_curve()); - let check = ACLSV::verify(kp.verifying_key, kp.tag_key, m4, "message"); + let check = ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); assert!(check == true); } @@ -224,7 +224,7 @@ macro_rules! __test_acl { assert!(m4.sigma.zeta.is_on_curve()); assert!(m4.sigma.zeta1.is_on_curve()); - let check = ACLSV::verify(kp.verifying_key, kp.tag_key, m4.clone(), "message"); + let check = ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); assert!(check == true); let proof = ACLSP::prove(&mut OsRng, kp.tag_key, m4, vals, gens.generators, c1.r); @@ -270,7 +270,7 @@ macro_rules! __test_acl { assert!(m4.sigma.zeta.is_on_curve()); assert!(m4.sigma.zeta1.is_on_curve()); - let check = ACLSV::verify(kp.verifying_key, kp.tag_key, m4.clone(), "message"); + let check = ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); assert!(check == true); let proof = ACLSP::prove( @@ -287,7 +287,7 @@ macro_rules! __test_acl { assert!(proof.pi1.t2.is_on_curve()); assert!(proof.pi2.t3.is_on_curve()); - let check = ACLSPV::verify(proof, kp.tag_key, m4); + let check = ACLSPV::verify(proof, kp.tag_key, &m4); assert!(check == true); } }; diff --git a/macros/src/test_boomerang.rs b/macros/src/test_boomerang.rs index 9109fd5..9a2655e 100644 --- a/macros/src/test_boomerang.rs +++ b/macros/src/test_boomerang.rs @@ -142,7 +142,7 @@ macro_rules! __test_boomerang { let check = ACLSV::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig.clone(), + &sig, "message", ); assert!(check == true); @@ -187,7 +187,7 @@ macro_rules! __test_boomerang { let check = ACLSV::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig.clone(), + &sig, "message", ); assert!(check == true); @@ -238,7 +238,7 @@ macro_rules! __test_boomerang { let check = ACLSV::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig.clone(), + &sig, "message", ); assert!(check == true); @@ -304,7 +304,7 @@ macro_rules! __test_boomerang { let check = ACLSV::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig.clone(), + &sig, "message", ); assert!(check == true); @@ -357,7 +357,7 @@ macro_rules! __test_boomerang { let check = ACLSV::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig_n.clone(), + &sig_n, "message", ); assert!(check == true); @@ -411,7 +411,7 @@ macro_rules! __test_boomerang { let check = ACLSV::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig.clone(), + &sig, "message", ); assert!(check == true); @@ -465,7 +465,7 @@ macro_rules! __test_boomerang { let check = ACLSV::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig_n.clone(), + &sig_n, "message", ); assert!(check == true); @@ -544,7 +544,7 @@ macro_rules! __test_boomerang { let check = ACLSV::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - sig_n.clone(), + &sig_n, "message", ); assert!(check == true); From a4de1934308e095b7b58d72d2b58629990efda65 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 10:16:41 -0700 Subject: [PATCH 03/11] Take the Pedersen generatos by reference when verifying Avoid cloning these objects when the callee only needs temporary access to the data. --- boomerang/src/server.rs | 10 +++++----- macros/src/bench_tcurve.rs | 4 ++-- macros/src/test_pedersen.rs | 4 ++-- pedersen/src/issuance_protocol.rs | 8 ++++---- pedersen/src/opening_protocol.rs | 8 ++++---- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/boomerang/src/server.rs b/boomerang/src/server.rs index 2bc06e6..2a9871b 100644 --- a/boomerang/src/server.rs +++ b/boomerang/src/server.rs @@ -113,7 +113,7 @@ impl IssuanceS { &c_m.m1.comm.comm, &c_m.m1.u_pk, c_m.m1.len, - c_m.m1.gens.clone(), + &c_m.m1.gens, ); if !check { @@ -269,7 +269,7 @@ impl CollectionS { let check3 = c_m .m2 .pi_1 - .verify(&mut transcript, &c_m.m2.comm.comm, 4, c_m.m2.gens.clone()); + .verify(&mut transcript, &c_m.m2.comm.comm, 4, &c_m.m2.gens); if !check3 { panic!("Boomerang collection: invalid proof opening 1"); @@ -282,7 +282,7 @@ impl CollectionS { &mut transcript1, &c_m.m2.prev_comm.comm, 4, - c_m.m2.prev_gens.clone(), + &c_m.m2.prev_gens, ); if !check4 { @@ -493,7 +493,7 @@ impl SpendVerifyS { &mut transcript_p1, &c_m.m2.comm.comm, 4, - c_m.m2.gens.clone(), + &c_m.m2.gens, ); if !check3 { @@ -506,7 +506,7 @@ impl SpendVerifyS { &mut transcript_p2, &c_m.m2.prev_comm.comm, 4, - c_m.m2.prev_gens.clone(), + &c_m.m2.prev_gens, ); /*if !check4 { diff --git a/macros/src/bench_tcurve.rs b/macros/src/bench_tcurve.rs index a941db0..ed5aadf 100644 --- a/macros/src/bench_tcurve.rs +++ b/macros/src/bench_tcurve.rs @@ -112,7 +112,7 @@ macro_rules! bench_tcurve_opening_multi_verifier_time { |b| { b.iter(|| { let mut transcript_v = Transcript::new(b"test-open-multi"); - proof.verify(&mut transcript_v, &com.comm, vals.len(), gens.clone()); + proof.verify(&mut transcript_v, &com.comm, vals.len(), &gens); }); }, ); @@ -198,7 +198,7 @@ macro_rules! bench_tcurve_issuance_multi_verifier_time { |b| { b.iter(|| { let mut transcript_v = Transcript::new(b"test-issue-multi"); - proof.verify(&mut transcript_v, &com.comm, &pk, vals.len(), gens.clone()); + proof.verify(&mut transcript_v, &com.comm, &pk, vals.len(), &gens); }); }, ); diff --git a/macros/src/test_pedersen.rs b/macros/src/test_pedersen.rs index 31ada18..d476302 100644 --- a/macros/src/test_pedersen.rs +++ b/macros/src/test_pedersen.rs @@ -301,7 +301,7 @@ macro_rules! __test_pedersen { // Now check that the proof verifies correctly. let mut transcript_v = Transcript::new(label); - assert!(proof.verify(&mut transcript_v, &c1.comm, vals.len(), gens.clone())); + assert!(proof.verify(&mut transcript_v, &c1.comm, vals.len(), &gens)); } #[test] @@ -333,7 +333,7 @@ macro_rules! __test_pedersen { // Now check that the proof verifies correctly. let mut transcript_v = Transcript::new(label); - assert!(proof.verify(&mut transcript_v, &c1.comm, &pk, vals.len(), gens.clone())); + assert!(proof.verify(&mut transcript_v, &c1.comm, &pk, vals.len(), &gens)); } #[test] diff --git a/pedersen/src/issuance_protocol.rs b/pedersen/src/issuance_protocol.rs index a510c63..80901ca 100644 --- a/pedersen/src/issuance_protocol.rs +++ b/pedersen/src/issuance_protocol.rs @@ -270,7 +270,7 @@ impl IssuanceProofMulti

{ c1: &sw::Affine

, pk: &sw::Affine

, l: usize, - gens: Generators

, + gens: &Generators

, ) -> bool { // Make the transcript. self.add_to_transcript(transcript, c1); @@ -290,7 +290,7 @@ impl IssuanceProofMulti

{ c1: &sw::Affine

, pk: &sw::Affine

, l: usize, - gens: Generators

, + gens: &Generators

, ) -> bool { self.verify_proof(c1, pk, &transcript.challenge_scalar(b"c")[..], l, gens) } @@ -307,7 +307,7 @@ impl IssuanceProofMulti

{ pk: &sw::Affine

, chal_buf: &[u8], l: usize, - gens: Generators

, + gens: &Generators

, ) -> bool { // Make the challenge and check. let chal =

::make_challenge_from_buffer(chal_buf); @@ -326,7 +326,7 @@ impl IssuanceProofMulti

{ pk: &sw::Affine

, chal: &

::ScalarField, l: usize, - gens: Generators

, + gens: &Generators

, ) -> bool { // first proof diff --git a/pedersen/src/opening_protocol.rs b/pedersen/src/opening_protocol.rs index e1b7120..b1ed3aa 100644 --- a/pedersen/src/opening_protocol.rs +++ b/pedersen/src/opening_protocol.rs @@ -519,7 +519,7 @@ impl OpeningProofMulti

{ transcript: &mut Transcript, c1: &sw::Affine

, l: usize, - gens: Generators

, + gens: &Generators

, ) -> bool { // Make the transcript. self.add_to_transcript(transcript, c1); @@ -538,7 +538,7 @@ impl OpeningProofMulti

{ transcript: &mut Transcript, c1: &sw::Affine

, l: usize, - gens: Generators

, + gens: &Generators

, ) -> bool { self.verify_proof(c1, &transcript.challenge_scalar(b"c")[..], l, gens) } @@ -554,7 +554,7 @@ impl OpeningProofMulti

{ c1: &sw::Affine

, chal_buf: &[u8], l: usize, - gens: Generators

, + gens: &Generators

, ) -> bool { // Make the challenge and check. let chal =

::make_challenge_from_buffer(chal_buf); @@ -572,7 +572,7 @@ impl OpeningProofMulti

{ c1: &sw::Affine

, chal: &

::ScalarField, l: usize, - gens: Generators

, + gens: &Generators

, ) -> bool { let rhs = c1.mul(*chal) + self.alpha; From c2dab9455df4a4235a15b90972c6ab77c8963b95 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 10:35:46 -0700 Subject: [PATCH 04/11] pedersen: improve data handling Take a few values by reference to avoid having to `clone()` them at call sites, and simplify generator construction so it's more clear how many copies are needed. --- boomerang/src/server.rs | 6 +++--- pedersen/src/pedersen_config.rs | 21 ++++++++++----------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/boomerang/src/server.rs b/boomerang/src/server.rs index 2a9871b..14395c4 100644 --- a/boomerang/src/server.rs +++ b/boomerang/src/server.rs @@ -127,7 +127,7 @@ impl IssuanceS { let v3 = ::ScalarField::zero(); let vals: Vec<::ScalarField> = vec![id_1, v1, v2, v3]; - let c1 = PedersenComm::new_multi_with_all_generators(vals.clone(), rng, c_m.m1.gens); + let c1 = PedersenComm::new_multi_with_all_generators(&vals, rng, &c_m.m1.gens); let c = c1 + c_m.m1.comm; @@ -317,7 +317,7 @@ impl CollectionS { let v3 = ::ScalarField::zero(); let vals: Vec<::ScalarField> = vec![id_1, v, v2, v3]; - let c1 = PedersenComm::new_multi_with_all_generators(vals.clone(), rng, c_m.m2.gens); + let c1 = PedersenComm::new_multi_with_all_generators(&vals, rng, &c_m.m2.gens); let c = c1 + c_m.m2.comm; let sig_comm = SigComm::commit(key_pair.s_key_pair.clone(), rng, c.comm); @@ -556,7 +556,7 @@ impl SpendVerifyS { ::ScalarField::zero(), ]; let c0dashdash = - PedersenComm::new_multi_with_all_generators(vals.clone(), rng, c_m.m2.gens); + PedersenComm::new_multi_with_all_generators(&vals, rng, &c_m.m2.gens); // C0 = C0' - C0'' let c0 = c_m.m2.comm - c0dashdash; diff --git a/pedersen/src/pedersen_config.rs b/pedersen/src/pedersen_config.rs index 887d6da..dcaa024 100644 --- a/pedersen/src/pedersen_config.rs +++ b/pedersen/src/pedersen_config.rs @@ -546,18 +546,18 @@ impl PedersenComm

{ /// * `r` - the randomness to use. /// Returns a new commitment to `x`. pub fn new_multi_with_both( - vals: Vec<

::ScalarField>, + vals: &[

::ScalarField], r:

::ScalarField, ) -> (Self, Generators

) { - let mut gens: Vec> = vec![]; - gens.push(

::GENERATOR); - let label = [b'G', 0, 0, 0, 0]; let mut shake = Shake256::default(); shake.update(b"GeneratorsChain"); shake.update(label); let mut reader = shake.finalize_xof_dirty(); + let mut gens: Vec> = Vec::with_capacity(vals.len() + 1); + gens.push(

::GENERATOR); + for _ in 1..vals.len() { let mut uniform_bytes = [0u8; 64]; reader.read(&mut uniform_bytes); @@ -566,10 +566,6 @@ impl PedersenComm

{ gens.push(rest); } - let gens_s = Generators { - generators: gens.clone(), - }; - let mut total: sw::Affine

= sw::Affine::identity(); for i in 0..gens.len() { total = (total + gens[i].mul(vals[i])).into(); @@ -580,7 +576,10 @@ impl PedersenComm

{ comm: (total + P::GENERATOR2.mul(r)).into_affine(), r, }, - gens_s.clone(), + Generators { + generators: gens, + }, + ) } @@ -593,9 +592,9 @@ impl PedersenComm

{ /// secure. /// Returns a new commitment to `x`. pub fn new_multi_with_all_generators( - vals: Vec<

::ScalarField>, + vals: &[

::ScalarField], rng: &mut T, - gens: Generators

, + gens: &Generators

, ) -> Self { // Returns a new multi pedersen commitment using fixed generators. let r =

::ScalarField::rand(rng); From e7645a05e2130026640536db8ab74d8270680c5f Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 10:48:16 -0700 Subject: [PATCH 05/11] pedersen: improve data handling for new_multi Make similar changes to the previous commit. --- boomerang/src/client.rs | 6 +++--- macros/src/bench_tacl.rs | 14 +++++++------- macros/src/bench_tcurve.rs | 8 ++++---- macros/src/test_acl.rs | 14 +++++++------- macros/src/test_pedersen.rs | 6 +++--- pedersen/src/pedersen_config.rs | 18 ++++++++---------- 6 files changed, 32 insertions(+), 34 deletions(-) diff --git a/boomerang/src/client.rs b/boomerang/src/client.rs index eec8f69..51dc6ba 100644 --- a/boomerang/src/client.rs +++ b/boomerang/src/client.rs @@ -119,7 +119,7 @@ impl IssuanceC { let r_0 = ::ScalarField::rand(rng); let vals: Vec<::ScalarField> = vec![id_0, v, key_pair.x, r_0]; - let (c1, gens) = PedersenComm::new_multi(vals.clone(), rng); + let (c1, gens) = PedersenComm::new_multi(&vals, rng); let label = b"BoomerangM1"; let mut transcript = Transcript::new(label); @@ -283,7 +283,7 @@ impl CollectionC { state.token_state[0].r, ]; - let (c1, gens) = PedersenComm::new_multi(vals.clone(), rng); + let (c1, gens) = PedersenComm::new_multi(&vals, rng); let label = b"BoomerangCollectionM2O1"; let mut transcript = Transcript::new(label); @@ -506,7 +506,7 @@ impl SpendVerifyC { ]; // pedersen commitment - let (c1, gens) = PedersenComm::new_multi(vals.clone(), rng); + let (c1, gens) = PedersenComm::new_multi(&vals, rng); // pi_open tk0 (token) let mut transcript_p1 = Transcript::new(b"BoomerangSpendVerifyM2O1"); diff --git a/macros/src/bench_tacl.rs b/macros/src/bench_tacl.rs index e410ebf..0573d0b 100644 --- a/macros/src/bench_tacl.rs +++ b/macros/src/bench_tacl.rs @@ -12,7 +12,7 @@ macro_rules! bench_tacl_commit_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); // Now we can just benchmark how long it takes to commit. @@ -39,7 +39,7 @@ macro_rules! bench_tacl_challenge_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); @@ -67,7 +67,7 @@ macro_rules! bench_tacl_respond_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); @@ -96,7 +96,7 @@ macro_rules! bench_tacl_sign_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); @@ -132,7 +132,7 @@ macro_rules! bench_tacl_verify_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); @@ -163,7 +163,7 @@ macro_rules! bench_tacl_sign_proof_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); @@ -202,7 +202,7 @@ macro_rules! bench_tacl_sign_verify_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); diff --git a/macros/src/bench_tcurve.rs b/macros/src/bench_tcurve.rs index ed5aadf..5aaa636 100644 --- a/macros/src/bench_tcurve.rs +++ b/macros/src/bench_tcurve.rs @@ -58,7 +58,7 @@ macro_rules! bench_tcurve_opening_multi_prover_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); // Now we can just benchmark how long it takes to create a new multi proof. c.bench_function( @@ -94,7 +94,7 @@ macro_rules! bench_tcurve_opening_multi_verifier_time { vals.push(d); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); // Make the proof object. let mut transcript = Transcript::new(b"test-open-multi"); @@ -139,7 +139,7 @@ macro_rules! bench_tcurve_issuance_multi_prover_time { let pk = gen.mul(sk).into_affine(); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); // Now we can just benchmark how long it takes to create a new multi proof. c.bench_function( @@ -180,7 +180,7 @@ macro_rules! bench_tcurve_issuance_multi_verifier_time { let pk = gen.mul(sk).into_affine(); // And commit to them. - let (com, gens) = PedersenComm::<$config>::new_multi(vals.clone(), &mut OsRng); + let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); // Make the proof object. let mut transcript = Transcript::new(b"test-issue-multi"); diff --git a/macros/src/test_acl.rs b/macros/src/test_acl.rs index 2c26392..c6e7d2d 100644 --- a/macros/src/test_acl.rs +++ b/macros/src/test_acl.rs @@ -34,7 +34,7 @@ macro_rules! __test_acl { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals, &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); // Test that committing to a random points works. @@ -63,7 +63,7 @@ macro_rules! __test_acl { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals, &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); // Test that committing to a random point works. @@ -94,7 +94,7 @@ macro_rules! __test_acl { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals, &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); // Test that committing to a random point works. @@ -127,7 +127,7 @@ macro_rules! __test_acl { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals, &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); // Test that committing to a random point works. @@ -163,7 +163,7 @@ macro_rules! __test_acl { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals, &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); // Test that committing to a random point works. @@ -202,7 +202,7 @@ macro_rules! __test_acl { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals.clone(), &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); // Test that committing to a random point works. @@ -248,7 +248,7 @@ macro_rules! __test_acl { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals.clone(), &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); // Test that committing to a random point works. diff --git a/macros/src/test_pedersen.rs b/macros/src/test_pedersen.rs index d476302..5172386 100644 --- a/macros/src/test_pedersen.rs +++ b/macros/src/test_pedersen.rs @@ -276,7 +276,7 @@ macro_rules! __test_pedersen { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals.clone(), &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); } @@ -293,7 +293,7 @@ macro_rules! __test_pedersen { vals.push(c); vals.push(d); - let (c1, gens) = PC::new_multi(vals.clone(), &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); let proof = OPM::create(&mut transcript, &mut OsRng, vals.clone(), &c1, gens.clone()); @@ -325,7 +325,7 @@ macro_rules! __test_pedersen { vals.push(d); vals.push(e); - let (c1, gens) = PC::new_multi(vals.clone(), &mut OsRng); + let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); let proof = IPM::create(&mut transcript, &mut OsRng, vals.clone(), &c1, gens.clone()); diff --git a/pedersen/src/pedersen_config.rs b/pedersen/src/pedersen_config.rs index dcaa024..29d840f 100644 --- a/pedersen/src/pedersen_config.rs +++ b/pedersen/src/pedersen_config.rs @@ -420,7 +420,7 @@ impl PedersenComm

{ /// secure. /// Returns a new Pedersen Commitment to `x`. pub fn new_multi( - vals: Vec<

::ScalarField>, + vals: &[

::ScalarField], rng: &mut T, ) -> (Self, Generators

) { Self::new_multi_with_generators(vals, rng, &

::GENERATOR, &P::GENERATOR2) @@ -478,7 +478,7 @@ impl PedersenComm

{ /// * `q` - a distinct generator of `P`'s scalar field. /// Returns a new commitment to `x`. pub fn new_multi_with_generators( - vals: Vec<

::ScalarField>, + vals: &[

::ScalarField], rng: &mut T, g: &sw::Affine

, q: &sw::Affine

, @@ -488,15 +488,15 @@ impl PedersenComm

{ assert!(g != q); let r =

::ScalarField::rand(rng); - let mut gens: Vec> = vec![]; - gens.push(*g); - let label = [b'G', 0, 0, 0, 0]; let mut shake = Shake256::default(); shake.update(b"GeneratorsChain"); shake.update(label); let mut reader = shake.finalize_xof_dirty(); + let mut gens: Vec> = Vec::with_capacity(vals.len() + 1); + gens.push(*g); + for _ in 0..vals.len() { let mut uniform_bytes = [0u8; 64]; reader.read(&mut uniform_bytes); @@ -505,10 +505,6 @@ impl PedersenComm

{ gens.push(rest); } - let gens_s = Generators { - generators: gens.clone(), - }; - let mut total: sw::Affine

= sw::Affine::identity(); for i in 0..vals.len() { total = (total + gens[i].mul(vals[i])).into(); @@ -519,7 +515,9 @@ impl PedersenComm

{ comm: (total + q.mul(r)).into_affine(), r, }, - gens_s.clone(), + Generators { + generators: gens, + }, ) } From bf41b273f57e7d6b600177da9fe1ed4c81e7da73 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 12:14:58 -0700 Subject: [PATCH 06/11] pedersen: Take more arguments by reference Remove further clone calls as an optimization. --- boomerang/src/client.rs | 16 ++++++++-------- macros/src/bench_tcurve.rs | 16 ++++++++-------- macros/src/test_pedersen.rs | 4 ++-- pedersen/src/issuance_protocol.rs | 12 ++++++------ pedersen/src/opening_protocol.rs | 12 ++++++------ 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/boomerang/src/client.rs b/boomerang/src/client.rs index 51dc6ba..1c07912 100644 --- a/boomerang/src/client.rs +++ b/boomerang/src/client.rs @@ -125,14 +125,14 @@ impl IssuanceC { let mut transcript = Transcript::new(label); let proof = - IssuanceProofMulti::create(&mut transcript, rng, vals.clone(), &c1, gens.clone()); + IssuanceProofMulti::create(&mut transcript, rng, &vals, &c1, &gens); let m1 = IssuanceM1 { comm: c1, pi_issuance: proof, u_pk: key_pair.public_key, len: vals.len(), - gens: gens.clone(), + gens, id_0, r: r_0, }; @@ -289,7 +289,7 @@ impl CollectionC { let mut transcript = Transcript::new(label); let proof_1 = - OpeningProofMulti::create(&mut transcript, rng, vals.clone(), &c1, gens.clone()); + OpeningProofMulti::create(&mut transcript, rng, &vals, &c1, &gens); let label1 = b"BoomerangCollectionM2O2"; let mut transcript1 = Transcript::new(label1); @@ -297,9 +297,9 @@ impl CollectionC { let proof_2 = OpeningProofMulti::create( &mut transcript1, rng, - prev_vals.clone(), + &prev_vals, &state.comm_state[0], - state.token_state[0].gens.clone(), + &state.token_state[0].gens, ); let t_tag = state.c_key_pair.x * state.token_state[0].id; @@ -511,16 +511,16 @@ impl SpendVerifyC { // pi_open tk0 (token) let mut transcript_p1 = Transcript::new(b"BoomerangSpendVerifyM2O1"); let proof_1 = - OpeningProofMulti::create(&mut transcript_p1, rng, vals.clone(), &c1, gens.clone()); + OpeningProofMulti::create(&mut transcript_p1, rng, &vals, &c1, &gens); // pi_open tk? (previous token?) let mut transcript_p2 = Transcript::new(b"BoomerangSpendVerifyM2O2"); let proof_2 = OpeningProofMulti::create( &mut transcript_p2, rng, - prev_vals.clone(), + &prev_vals, &state.comm_state[0], - state.token_state[0].gens.clone(), + &state.token_state[0].gens, ); // tag = (sk_u * tk0.r1) + r2 diff --git a/macros/src/bench_tcurve.rs b/macros/src/bench_tcurve.rs index 5aaa636..24ed6ba 100644 --- a/macros/src/bench_tcurve.rs +++ b/macros/src/bench_tcurve.rs @@ -69,9 +69,9 @@ macro_rules! bench_tcurve_opening_multi_prover_time { OPM::create( &mut transcript, &mut OsRng, - vals.clone(), + &vals, &com, - gens.clone(), + &gens, ) }); }, @@ -101,9 +101,9 @@ macro_rules! bench_tcurve_opening_multi_verifier_time { let proof = OPM::create( &mut transcript, &mut OsRng, - vals.clone(), + &vals, &com, - gens.clone(), + &gens, ); // And now just check how long it takes to verify the proof. @@ -150,9 +150,9 @@ macro_rules! bench_tcurve_issuance_multi_prover_time { IPM::create( &mut transcript, &mut OsRng, - vals.clone(), + &vals, &com, - gens.clone(), + &gens, ) }); }, @@ -187,9 +187,9 @@ macro_rules! bench_tcurve_issuance_multi_verifier_time { let proof = IPM::create( &mut transcript, &mut OsRng, - vals.clone(), + &vals, &com, - gens.clone(), + &gens, ); // And now just check how long it takes to verify the proof. diff --git a/macros/src/test_pedersen.rs b/macros/src/test_pedersen.rs index 5172386..cd27782 100644 --- a/macros/src/test_pedersen.rs +++ b/macros/src/test_pedersen.rs @@ -296,7 +296,7 @@ macro_rules! __test_pedersen { let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); - let proof = OPM::create(&mut transcript, &mut OsRng, vals.clone(), &c1, gens.clone()); + let proof = OPM::create(&mut transcript, &mut OsRng, &vals, &c1, &gens); assert!(proof.alpha.is_on_curve()); // Now check that the proof verifies correctly. @@ -328,7 +328,7 @@ macro_rules! __test_pedersen { let (c1, gens) = PC::new_multi(&vals, &mut OsRng); let mut transcript = Transcript::new(label); - let proof = IPM::create(&mut transcript, &mut OsRng, vals.clone(), &c1, gens.clone()); + let proof = IPM::create(&mut transcript, &mut OsRng, &vals, &c1, &gens); assert!(proof.alpha.is_on_curve()); // Now check that the proof verifies correctly. diff --git a/pedersen/src/issuance_protocol.rs b/pedersen/src/issuance_protocol.rs index 80901ca..f4d4440 100644 --- a/pedersen/src/issuance_protocol.rs +++ b/pedersen/src/issuance_protocol.rs @@ -136,9 +136,9 @@ impl IssuanceProofMulti

{ pub fn create( transcript: &mut Transcript, rng: &mut T, - x: Vec<

::ScalarField>, + x: &[

::ScalarField], c1: &PedersenComm

, - gens: Generators

, + gens: &Generators

, ) -> Self { // This function just creates the intermediary objects and makes the proof from // those. @@ -162,7 +162,7 @@ impl IssuanceProofMulti

{ rng: &mut T, c1: &PedersenComm

, l: usize, - gens: Generators

, + gens: &Generators

) -> IssuanceProofMultiIntermediate

{ let mut total: sw::Affine

= sw::Affine::identity(); let mut ts: Vec<

::ScalarField> = vec![]; @@ -198,7 +198,7 @@ impl IssuanceProofMulti

{ /// * `c1` - the commitment that is opened. /// * `chal_buf` - the buffer that contains the challenge bytes. pub fn create_proof( - x: Vec<

::ScalarField>, + x: &[

::ScalarField], inter: &IssuanceProofMultiIntermediate

, c1: &PedersenComm

, chal_buf: &[u8], @@ -218,7 +218,7 @@ impl IssuanceProofMulti

{ /// * `c1` - the commitment that is opened. pub fn create_proof_own_challenge( transcript: &mut Transcript, - x: Vec<

::ScalarField>, + x: &[

::ScalarField], inter: &IssuanceProofMultiIntermediate

, c1: &PedersenComm

, ) -> Self { @@ -234,7 +234,7 @@ impl IssuanceProofMulti

{ /// * `c1` - the commitment that is opened. /// * `chal` - the challenge. pub fn create_proof_with_challenge( - x: Vec<

::ScalarField>, + x: &[

::ScalarField], inter: &IssuanceProofMultiIntermediate

, c1: &PedersenComm

, chal: &

::ScalarField, diff --git a/pedersen/src/opening_protocol.rs b/pedersen/src/opening_protocol.rs index b1ed3aa..6657811 100644 --- a/pedersen/src/opening_protocol.rs +++ b/pedersen/src/opening_protocol.rs @@ -402,9 +402,9 @@ impl OpeningProofMulti

{ pub fn create( transcript: &mut Transcript, rng: &mut T, - x: Vec<

::ScalarField>, + x: &[

::ScalarField], c1: &PedersenComm

, - gens: Generators

, + gens: &Generators

, ) -> Self { // This function just creates the intermediary objects and makes the proof from // those. @@ -428,7 +428,7 @@ impl OpeningProofMulti

{ rng: &mut T, c1: &PedersenComm

, l: usize, - gens: Generators

, + gens: &Generators

, ) -> OpeningProofMultiIntermediate

{ let mut total: sw::Affine

= sw::Affine::identity(); let mut ts: Vec<

::ScalarField> = vec![]; @@ -453,7 +453,7 @@ impl OpeningProofMulti

{ /// * `c1` - the commitment that is opened. /// * `chal_buf` - the buffer that contains the challenge bytes. pub fn create_proof( - x: Vec<

::ScalarField>, + x: &[

::ScalarField], inter: &OpeningProofMultiIntermediate

, c1: &PedersenComm

, chal_buf: &[u8], @@ -473,7 +473,7 @@ impl OpeningProofMulti

{ /// * `c1` - the commitment that is opened. pub fn create_proof_own_challenge( transcript: &mut Transcript, - x: Vec<

::ScalarField>, + x: &[

::ScalarField], inter: &OpeningProofMultiIntermediate

, c1: &PedersenComm

, ) -> Self { @@ -489,7 +489,7 @@ impl OpeningProofMulti

{ /// * `c1` - the commitment that is opened. /// * `chal` - the challenge. pub fn create_proof_with_challenge( - x: Vec<

::ScalarField>, + x: &[

::ScalarField], inter: &OpeningProofMultiIntermediate

, c1: &PedersenComm

, chal: &

::ScalarField, From 22a2137caf98472f14dc33b8c4fc87f68dd7e706 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 12:25:15 -0700 Subject: [PATCH 07/11] Take more arguments by reference in SigProof::prove Optimize and clean up argument passing to reduce the number of clone calls. --- acl/src/sign.rs | 6 +++--- boomerang/src/client.rs | 12 ++++++------ macros/src/bench_tacl.rs | 12 ++++++------ macros/src/test_acl.rs | 8 ++++---- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/acl/src/sign.rs b/acl/src/sign.rs index 1a391a6..5f0e01b 100644 --- a/acl/src/sign.rs +++ b/acl/src/sign.rs @@ -386,9 +386,9 @@ impl SigProof { pub fn prove( rng: &mut T, tag_key: sw::Affine, - sig_m: SigSign, - vals: Vec<::ScalarField>, - gens: Vec>, + sig_m: &SigSign, + vals: &[::ScalarField], + gens: &[sw::Affine], comm_r: ::ScalarField, ) -> SigProof { let b_gamma = (A::GENERATOR.mul(sig_m.opening.gamma)).into_affine(); diff --git a/boomerang/src/client.rs b/boomerang/src/client.rs index 1c07912..5cc39e0 100644 --- a/boomerang/src/client.rs +++ b/boomerang/src/client.rs @@ -333,9 +333,9 @@ impl CollectionC { let sig_proof = SigProof::prove( rng, s_key_pair.s_key_pair.tag_key, - state.sig_state[0].clone(), - prev_vals, - state.token_state[0].gens.generators.clone(), + &state.sig_state[0], + &prev_vals, + &state.token_state[0].gens.generators, state.comm_state[0].r, ); @@ -558,9 +558,9 @@ impl SpendVerifyC { let sig_proof = SigProof::prove( rng, s_key_pair.s_key_pair.tag_key, - state.sig_state[0].clone(), - prev_vals, - state.token_state[0].gens.generators.clone(), + &state.sig_state[0], + &prev_vals, + &state.token_state[0].gens.generators, state.comm_state[0].r, ); diff --git a/macros/src/bench_tacl.rs b/macros/src/bench_tacl.rs index 0573d0b..d7fcdf3 100644 --- a/macros/src/bench_tacl.rs +++ b/macros/src/bench_tacl.rs @@ -177,9 +177,9 @@ macro_rules! bench_tacl_sign_proof_time { ACLSP::prove( &mut OsRng, kp.tag_key, - m4.clone(), - vals.clone(), - gens.generators.clone(), + &m4, + &vals, + &gens.generators, com.r, ); }); @@ -212,9 +212,9 @@ macro_rules! bench_tacl_sign_verify_time { let proof = ACLSP::prove( &mut OsRng, kp.tag_key, - m4.clone(), - vals.clone(), - gens.generators.clone(), + &m4, + &vals, + &gens.generators, com.r, ); diff --git a/macros/src/test_acl.rs b/macros/src/test_acl.rs index c6e7d2d..a6fe027 100644 --- a/macros/src/test_acl.rs +++ b/macros/src/test_acl.rs @@ -227,7 +227,7 @@ macro_rules! __test_acl { let check = ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); assert!(check == true); - let proof = ACLSP::prove(&mut OsRng, kp.tag_key, m4, vals, gens.generators, c1.r); + let proof = ACLSP::prove(&mut OsRng, kp.tag_key, &m4, &vals, &gens.generators, c1.r); assert!(proof.b_gamma.is_on_curve()); assert!(proof.pi1.t1.is_on_curve()); @@ -276,9 +276,9 @@ macro_rules! __test_acl { let proof = ACLSP::prove( &mut OsRng, kp.tag_key, - m4.clone(), - vals, - gens.generators, + &m4, + &vals, + &gens.generators, c1.r, ); From 1053bf1edb29264639274ccb091f6662c3678a38 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 13:03:22 -0700 Subject: [PATCH 08/11] Take KeyPair by reference Update function signatures to not require a clone of the `KeyPair` struct when they only need temporary read access to the values. Looks cleaner and should be more efficient. --- acl/src/verify.rs | 2 +- boomerang/src/client.rs | 4 +- boomerang/src/server.rs | 18 +-- .../client/benches/client_benchmark.rs | 4 +- end2end-example/client/src/main.rs | 4 +- end2end-example/server/src/main.rs | 12 +- macros/src/bench_tacl.rs | 14 +- macros/src/bench_tboomerang.rs | 140 +++++++++--------- macros/src/test_acl.rs | 14 +- macros/src/test_boomerang.rs | 52 +++---- 10 files changed, 132 insertions(+), 132 deletions(-) diff --git a/acl/src/verify.rs b/acl/src/verify.rs index dc6114a..d0adcf6 100644 --- a/acl/src/verify.rs +++ b/acl/src/verify.rs @@ -49,7 +49,7 @@ impl SigComm { /// # Arguments /// * `inter` - the intermediate values to use. pub fn commit( - keys: KeyPair, + keys: &KeyPair, rng: &mut T, comm: sw::Affine, ) -> SigComm { diff --git a/boomerang/src/client.rs b/boomerang/src/client.rs index 5cc39e0..55e5911 100644 --- a/boomerang/src/client.rs +++ b/boomerang/src/client.rs @@ -268,7 +268,7 @@ impl CollectionC { rng: &mut T, state: State, s_m: CollectionS, - s_key_pair: ServerKeyPair, + s_key_pair: &ServerKeyPair, ) -> CollectionC { let r1 = ::ScalarField::rand(rng); let id1 = ::ScalarField::rand(rng); @@ -487,7 +487,7 @@ impl SpendVerifyC { rng: &mut T, state: State, s_m: SpendVerifyS, - s_key_pair: ServerKeyPair, + s_key_pair: &ServerKeyPair, ) -> SpendVerifyC { // Generate r1, ID_0' let r1 = ::ScalarField::rand(rng); diff --git a/boomerang/src/server.rs b/boomerang/src/server.rs index 14395c4..caacb14 100644 --- a/boomerang/src/server.rs +++ b/boomerang/src/server.rs @@ -103,7 +103,7 @@ impl IssuanceS { /// * `inter` - the intermediate values to use. pub fn generate_issuance_m2( c_m: IssuanceC, - key_pair: ServerKeyPair, + key_pair: &ServerKeyPair, rng: &mut T, ) -> IssuanceS { let label = b"BoomerangM1"; @@ -131,7 +131,7 @@ impl IssuanceS { let c = c1 + c_m.m1.comm; - let sig_comm = SigComm::commit(key_pair.s_key_pair.clone(), rng, c.comm); + let sig_comm = SigComm::commit(&key_pair.s_key_pair, rng, c.comm); let m2 = IssuanceM2 { id_1, comm: c1, @@ -146,7 +146,7 @@ impl IssuanceS { pub fn generate_issuance_m4( c_m: IssuanceC, s_m: IssuanceS, - key_pair: ServerKeyPair, + key_pair: &ServerKeyPair, ) -> IssuanceS { let sig_resp = SigResp::respond( key_pair.s_key_pair.clone(), @@ -239,7 +239,7 @@ impl CollectionS { rng: &mut T, c_m: CollectionC, s_m: CollectionS, - key_pair: ServerKeyPair, + key_pair: &ServerKeyPair, v: ::ScalarField, ) -> CollectionS { let check = SigVerify::verify( @@ -320,7 +320,7 @@ impl CollectionS { let c1 = PedersenComm::new_multi_with_all_generators(&vals, rng, &c_m.m2.gens); let c = c1 + c_m.m2.comm; - let sig_comm = SigComm::commit(key_pair.s_key_pair.clone(), rng, c.comm); + let sig_comm = SigComm::commit(&key_pair.s_key_pair, rng, c.comm); let m3 = CollectionM3 { id_1, @@ -340,7 +340,7 @@ impl CollectionS { pub fn generate_collection_m5( c_m: CollectionC, s_m: CollectionS, - key_pair: ServerKeyPair, + key_pair: &ServerKeyPair, ) -> CollectionS { let sig_resp = SigResp::respond( key_pair.s_key_pair.clone(), @@ -459,7 +459,7 @@ impl SpendVerifyS { rng: &mut T, c_m: SpendVerifyC, s_m: SpendVerifyS, - key_pair: ServerKeyPair, + key_pair: &ServerKeyPair, v: ::ScalarField, state_vector: Vec, policy_vector: Vec, @@ -564,7 +564,7 @@ impl SpendVerifyS { // create signature commitment // R = BSA.comm(sk_IC, C0) // sig_comm = R - let sig_comm = SigComm::commit(key_pair.s_key_pair.clone(), rng, c0.comm); + let sig_comm = SigComm::commit(&key_pair.s_key_pair, rng, c0.comm); // Compute reward state let reward: u64 = state_vector @@ -613,7 +613,7 @@ impl SpendVerifyS { pub fn generate_spendverify_m5( c_m: SpendVerifyC, s_m: SpendVerifyS, - key_pair: ServerKeyPair, + key_pair: &ServerKeyPair, ) -> SpendVerifyS { let sig_resp = SigResp::respond( key_pair.s_key_pair.clone(), diff --git a/end2end-example/client/benches/client_benchmark.rs b/end2end-example/client/benches/client_benchmark.rs index a630f3b..c7b00bd 100644 --- a/end2end-example/client/benches/client_benchmark.rs +++ b/end2end-example/client/benches/client_benchmark.rs @@ -80,7 +80,7 @@ async fn collection_protocol( &mut OsRng, issuance_state, collection_m1.clone(), - skp.clone(), + &skp, ); // send to server get m3 @@ -135,7 +135,7 @@ async fn spending_protocol( &mut OsRng, collection_state, spendverify_m1.clone(), - skp.clone(), + &skp, ); let policy_vector: Vec = (0..64).map(|_| 5).collect(); diff --git a/end2end-example/client/src/main.rs b/end2end-example/client/src/main.rs index 53ff5d0..0ad0c06 100644 --- a/end2end-example/client/src/main.rs +++ b/end2end-example/client/src/main.rs @@ -591,7 +591,7 @@ async fn main() { &mut OsRng, issuance_state, collection_m1.clone(), - skp.clone(), + &skp, ); assert!(collection_m2.m2.comm.comm.is_on_curve()); @@ -655,7 +655,7 @@ async fn main() { &mut OsRng, collection_state, spendverify_m1.clone(), - skp.clone(), + &skp, ); assert!(spendverify_m2.m2.comm.comm.is_on_curve()); diff --git a/end2end-example/server/src/main.rs b/end2end-example/server/src/main.rs index f4c8190..a676b5e 100644 --- a/end2end-example/server/src/main.rs +++ b/end2end-example/server/src/main.rs @@ -28,7 +28,7 @@ async fn boomerang_spending_m5(data: web::Data, req_body: String) -> i SpendVerifyC::::deserialize_compressed(spending_m4_bytes.as_slice()).unwrap(); let spending_m5 = - SpendVerifyS::::generate_spendverify_m5(spending_m4, spending_m3, data.skp.clone()); + SpendVerifyS::::generate_spendverify_m5(spending_m4, spending_m3, &data.skp); // Serialize spending_m3 let mut spending_m5_bytes = Vec::new(); @@ -75,7 +75,7 @@ async fn boomerang_spending_m3(data: web::Data, req_body: String) -> i &mut OsRng, spending_m2, spending_m1, - data.skp.clone(), + &data.skp, v, state_vector.to_vec(), policy_vector.to_vec(), @@ -126,7 +126,7 @@ async fn boomerang_collection_m5(data: web::Data, req_body: String) -> let collection_m5 = CollectionS::::generate_collection_m5( collection_m4, collection_m3, - data.skp.clone(), + &data.skp, ); // Serialize collection_m3 @@ -161,7 +161,7 @@ async fn boomerang_collection_m3(data: web::Data, req_body: String) -> &mut OsRng, collection_m2, collection_m1, - data.skp.clone(), + &data.skp, v, ); @@ -208,7 +208,7 @@ async fn boomerang_issuance_m4(data: web::Data, req_body: String) -> i IssuanceC::::deserialize_compressed(issuance_m3_bytes.as_slice()).unwrap(); let issuance_m4 = - IssuanceS::::generate_issuance_m4(issuance_m3, issuance_m2, data.skp.clone()); + IssuanceS::::generate_issuance_m4(issuance_m3, issuance_m2, &data.skp); // Serialize issuance_m4 let mut issuance_m4_bytes = Vec::new(); @@ -229,7 +229,7 @@ async fn boomerang_issuance_m2(data: web::Data, req_body: String) -> i let issuance_m1 = IssuanceC::::deserialize_compressed(&*issuance_m1_bytes).unwrap(); let issuance_m2 = - IssuanceS::::generate_issuance_m2(issuance_m1, data.skp.clone(), &mut OsRng); + IssuanceS::::generate_issuance_m2(issuance_m1, &data.skp, &mut OsRng); // Serialize issuance_m2 let mut issuance_m2_bytes = Vec::new(); diff --git a/macros/src/bench_tacl.rs b/macros/src/bench_tacl.rs index d7fcdf3..6c1e400 100644 --- a/macros/src/bench_tacl.rs +++ b/macros/src/bench_tacl.rs @@ -18,7 +18,7 @@ macro_rules! bench_tacl_commit_time { // Now we can just benchmark how long it takes to commit. c.bench_function(concat!($curve_name, " acl commit time"), |b| { b.iter(|| { - ACLSC::commit(kp.clone(), &mut OsRng, com.comm); + ACLSC::commit(&kp, &mut OsRng, com.comm); }); }); } @@ -41,7 +41,7 @@ macro_rules! bench_tacl_challenge_time { // And commit to them. let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, com.comm); // Now we can just benchmark how long it takes to create a new multi proof. c.bench_function(concat!($curve_name, " acl challenge time"), |b| { @@ -69,7 +69,7 @@ macro_rules! bench_tacl_respond_time { // And commit to them. let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); // Now we can just benchmark how long it takes to create a new multi proof. @@ -98,7 +98,7 @@ macro_rules! bench_tacl_sign_time { // And commit to them. let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); let m3 = ACLSR::respond(kp.clone(), m1.clone(), m2.clone()); @@ -134,7 +134,7 @@ macro_rules! bench_tacl_verify_time { // And commit to them. let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); let m3 = ACLSR::respond(kp.clone(), m1.clone(), m2.clone()); let m4 = ACLSG::sign(kp.verifying_key, kp.tag_key, m2.clone(), m3, "message"); @@ -165,7 +165,7 @@ macro_rules! bench_tacl_sign_proof_time { // And commit to them. let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); let m3 = ACLSR::respond(kp.clone(), m1.clone(), m2.clone()); let m4 = ACLSG::sign(kp.verifying_key, kp.tag_key, m2.clone(), m3, "message"); @@ -204,7 +204,7 @@ macro_rules! bench_tacl_sign_verify_time { // And commit to them. let (com, gens) = PedersenComm::<$config>::new_multi(&vals, &mut OsRng); let kp = ACLKP::generate(&mut OsRng); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, com.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, com.comm); let m2 = ACLCH::challenge(kp.tag_key, kp.verifying_key, &mut OsRng, m1, "message"); let m3 = ACLSR::respond(kp.clone(), m1.clone(), m2.clone()); let m4 = ACLSG::sign(kp.verifying_key, kp.tag_key, m2.clone(), m3, "message"); diff --git a/macros/src/bench_tboomerang.rs b/macros/src/bench_tboomerang.rs index 75cca09..3ee1e08 100644 --- a/macros/src/bench_tboomerang.rs +++ b/macros/src/bench_tboomerang.rs @@ -27,7 +27,7 @@ macro_rules! bench_tboomerang_issuance_m2_time { // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " issuance m2 time"), |b| { b.iter(|| { - IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); }); }); } @@ -42,7 +42,7 @@ macro_rules! bench_tboomerang_issuance_m3_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " issuance m3 time"), |b| { @@ -62,13 +62,13 @@ macro_rules! bench_tboomerang_issuance_m4_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " issuance m4 time"), |b| { b.iter(|| { - IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); }); }); } @@ -83,9 +83,9 @@ macro_rules! bench_tboomerang_issuance_m5_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " issuance m5 time"), |b| { @@ -105,9 +105,9 @@ macro_rules! bench_tboomerang_collection_m1_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); // Now we can just benchmark how long it takes for the first message. @@ -128,9 +128,9 @@ macro_rules! bench_tboomerang_collection_m2_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); @@ -141,7 +141,7 @@ macro_rules! bench_tboomerang_collection_m2_time { &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); }); }); @@ -157,16 +157,16 @@ macro_rules! bench_tboomerang_collection_m3_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -177,7 +177,7 @@ macro_rules! bench_tboomerang_collection_m3_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v, ); }); @@ -194,16 +194,16 @@ macro_rules! bench_tboomerang_collection_m4_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -211,7 +211,7 @@ macro_rules! bench_tboomerang_collection_m4_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v, ); @@ -233,16 +233,16 @@ macro_rules! bench_tboomerang_collection_m5_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -250,7 +250,7 @@ macro_rules! bench_tboomerang_collection_m5_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v, ); @@ -259,7 +259,7 @@ macro_rules! bench_tboomerang_collection_m5_time { // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " collection m5 time"), |b| { b.iter(|| { - CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), skp.clone()); + CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); }); }); } @@ -274,16 +274,16 @@ macro_rules! bench_tboomerang_collection_m6_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -291,11 +291,11 @@ macro_rules! bench_tboomerang_collection_m6_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v, ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); - let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), skp.clone()); + let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " collection m6 time"), |b| { @@ -315,16 +315,16 @@ macro_rules! bench_tboomerang_spending_m1_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -332,11 +332,11 @@ macro_rules! bench_tboomerang_spending_m1_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v, ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); - let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), skp.clone()); + let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); // Now we can just benchmark how long it takes for the first message. @@ -357,16 +357,16 @@ macro_rules! bench_tboomerang_spending_m2_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -374,11 +374,11 @@ macro_rules! bench_tboomerang_spending_m2_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v, ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); - let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), skp.clone()); + let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); @@ -390,7 +390,7 @@ macro_rules! bench_tboomerang_spending_m2_time { &mut OsRng, c_state.clone(), s_m1.clone(), - skp.clone(), + &skp, ); }); }); @@ -406,16 +406,16 @@ macro_rules! bench_tboomerang_spending_m3_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -423,16 +423,16 @@ macro_rules! bench_tboomerang_spending_m3_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v.clone(), ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); - let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), skp.clone()); + let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); let s_m2 = - SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), skp.clone()); + SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); let policy_vector: Vec = (0..64).map(|_| 5).collect(); let state_vector = vec![5u64; 64]; @@ -444,7 +444,7 @@ macro_rules! bench_tboomerang_spending_m3_time { &mut OsRng, s_m2.clone(), s_m1.clone(), - skp.clone(), + &skp, v, state_vector.clone(), policy_vector.clone(), @@ -463,16 +463,16 @@ macro_rules! bench_tboomerang_spending_m4_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -480,23 +480,23 @@ macro_rules! bench_tboomerang_spending_m4_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v.clone(), ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); - let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), skp.clone()); + let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); let s_m2 = - SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), skp.clone()); + SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); let policy_vector: Vec = (0..64).map(|_| 5).collect(); let state_vector = vec![5u64; 64]; let s_m3 = SVBSM::generate_spendverify_m3( &mut OsRng, s_m2.clone(), s_m1.clone(), - skp.clone(), + &skp, v, state_vector, policy_vector.clone(), @@ -525,16 +525,16 @@ macro_rules! bench_tboomerang_spending_m5_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -542,23 +542,23 @@ macro_rules! bench_tboomerang_spending_m5_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v.clone(), ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); - let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), skp.clone()); + let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); let s_m2 = - SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), skp.clone()); + SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); let policy_vector: Vec = (0..64).map(|_| 5).collect(); let state_vector = vec![5u64; 64]; let s_m3 = SVBSM::generate_spendverify_m3( &mut OsRng, s_m2.clone(), s_m1.clone(), - skp.clone(), + &skp, v, state_vector, policy_vector.clone(), @@ -573,7 +573,7 @@ macro_rules! bench_tboomerang_spending_m5_time { // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " spending m5 time"), |b| { b.iter(|| { - SVBSM::generate_spendverify_m5(s_m4.clone(), s_m3.clone(), skp.clone()); + SVBSM::generate_spendverify_m5(s_m4.clone(), s_m3.clone(), &skp); }); }); } @@ -588,16 +588,16 @@ macro_rules! bench_tboomerang_spending_m6_time { let kp = CBKP::<$config>::generate(&mut OsRng); let skp = SBKP::generate(&mut OsRng); let m1 = IBCM::generate_issuance_m1(kp.clone(), &mut OsRng); - let m2 = IBSM::generate_issuance_m2(m1.clone(), skp.clone(), &mut OsRng); + let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); - let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), skp.clone()); + let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, i_state.clone(), c_m1.clone(), - skp.clone(), + &skp, ); let v = <$config as CurveConfig>::ScalarField::one(); @@ -605,23 +605,23 @@ macro_rules! bench_tboomerang_spending_m6_time { &mut OsRng, c_m2.clone(), c_m1.clone(), - skp.clone(), + &skp, v.clone(), ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); - let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), skp.clone()); + let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); let s_m2 = - SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), skp.clone()); + SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); let policy_vector: Vec = (0..64).map(|_| 5).collect(); let state_vector = vec![5u64; 64]; let s_m3 = SVBSM::generate_spendverify_m3( &mut OsRng, s_m2.clone(), s_m1.clone(), - skp.clone(), + &skp, v, state_vector, policy_vector.clone(), @@ -632,7 +632,7 @@ macro_rules! bench_tboomerang_spending_m6_time { s_m3.clone(), policy_vector, ); - let s_m5 = SVBSM::generate_spendverify_m5(s_m4.clone(), s_m3.clone(), skp.clone()); + let s_m5 = SVBSM::generate_spendverify_m5(s_m4.clone(), s_m3.clone(), &skp); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " spending m6 time"), |b| { diff --git a/macros/src/test_acl.rs b/macros/src/test_acl.rs index a6fe027..5728e94 100644 --- a/macros/src/test_acl.rs +++ b/macros/src/test_acl.rs @@ -44,7 +44,7 @@ macro_rules! __test_acl { let kp = ACLKP::generate(&mut OsRng); assert!(kp.verifying_key.is_on_curve()); - let m1 = ACLSC::commit(kp, &mut OsRng, c1.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, c1.comm); assert!(m1.a.is_on_curve()); assert!(m1.a1.is_on_curve()); assert!(m1.a2.is_on_curve()); @@ -72,7 +72,7 @@ macro_rules! __test_acl { let kp = ACLKP::generate(&mut OsRng); assert!(kp.verifying_key.is_on_curve()); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, c1.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, c1.comm); assert!(m1.a.is_on_curve()); assert!(m1.a1.is_on_curve()); assert!(m1.a2.is_on_curve()); @@ -103,7 +103,7 @@ macro_rules! __test_acl { let kp = ACLKP::generate(&mut OsRng); assert!(kp.verifying_key.is_on_curve()); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, c1.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, c1.comm); assert!(m1.a.is_on_curve()); assert!(m1.a1.is_on_curve()); assert!(m1.a2.is_on_curve()); @@ -136,7 +136,7 @@ macro_rules! __test_acl { let kp = ACLKP::generate(&mut OsRng); assert!(kp.verifying_key.is_on_curve()); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, c1.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, c1.comm); assert!(m1.a.is_on_curve()); assert!(m1.a1.is_on_curve()); assert!(m1.a2.is_on_curve()); @@ -172,7 +172,7 @@ macro_rules! __test_acl { let kp = ACLKP::generate(&mut OsRng); assert!(kp.verifying_key.is_on_curve()); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, c1.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, c1.comm); assert!(m1.a.is_on_curve()); assert!(m1.a1.is_on_curve()); assert!(m1.a2.is_on_curve()); @@ -211,7 +211,7 @@ macro_rules! __test_acl { let kp = ACLKP::generate(&mut OsRng); assert!(kp.verifying_key.is_on_curve()); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, c1.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, c1.comm); assert!(m1.a.is_on_curve()); assert!(m1.a1.is_on_curve()); assert!(m1.a2.is_on_curve()); @@ -257,7 +257,7 @@ macro_rules! __test_acl { let kp = ACLKP::generate(&mut OsRng); assert!(kp.verifying_key.is_on_curve()); - let m1 = ACLSC::commit(kp.clone(), &mut OsRng, c1.comm); + let m1 = ACLSC::commit(&kp, &mut OsRng, c1.comm); assert!(m1.a.is_on_curve()); assert!(m1.a1.is_on_curve()); assert!(m1.a2.is_on_curve()); diff --git a/macros/src/test_boomerang.rs b/macros/src/test_boomerang.rs index 9a2655e..7397e11 100644 --- a/macros/src/test_boomerang.rs +++ b/macros/src/test_boomerang.rs @@ -52,7 +52,7 @@ macro_rules! __test_boomerang { let issuance_m1 = IBCM::generate_issuance_m1(ckp, &mut OsRng); assert!(issuance_m1.m1.u_pk.is_on_curve()); - let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1, skp, &mut OsRng); + let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1, &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); } @@ -70,7 +70,7 @@ macro_rules! __test_boomerang { let issuance_m1 = IBCM::generate_issuance_m1(ckp, &mut OsRng); assert!(issuance_m1.m1.u_pk.is_on_curve()); - let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1.clone(), skp, &mut OsRng); + let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -92,7 +92,7 @@ macro_rules! __test_boomerang { assert!(issuance_m1.m1.u_pk.is_on_curve()); let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), skp.clone(), &mut OsRng); + IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -100,7 +100,7 @@ macro_rules! __test_boomerang { IBCM::generate_issuance_m3(issuance_m1.clone(), issuance_m2.clone(), &mut OsRng); let issuance_m4 = - IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), skp.clone()); + IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); } #[test] @@ -117,7 +117,7 @@ macro_rules! __test_boomerang { assert!(issuance_m1.m1.u_pk.is_on_curve()); let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), skp.clone(), &mut OsRng); + IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -125,7 +125,7 @@ macro_rules! __test_boomerang { IBCM::generate_issuance_m3(issuance_m1.clone(), issuance_m2.clone(), &mut OsRng); let issuance_m4 = - IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), skp.clone()); + IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); let issuance_state = IBCM::populate_state( issuance_m3.clone(), @@ -162,7 +162,7 @@ macro_rules! __test_boomerang { assert!(issuance_m1.m1.u_pk.is_on_curve()); let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), skp.clone(), &mut OsRng); + IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -170,7 +170,7 @@ macro_rules! __test_boomerang { IBCM::generate_issuance_m3(issuance_m1.clone(), issuance_m2.clone(), &mut OsRng); let issuance_m4 = - IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), skp.clone()); + IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); let issuance_state = IBCM::populate_state( issuance_m3.clone(), @@ -194,7 +194,7 @@ macro_rules! __test_boomerang { let collection_m1 = CBSM::generate_collection_m1(&mut OsRng); let collection_m2 = - CBCM::generate_collection_m2(&mut OsRng, issuance_state, collection_m1, skp); + CBCM::generate_collection_m2(&mut OsRng, issuance_state, collection_m1, &skp); assert!(collection_m2.m2.comm.comm.is_on_curve()); } @@ -213,7 +213,7 @@ macro_rules! __test_boomerang { assert!(issuance_m1.m1.u_pk.is_on_curve()); let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), skp.clone(), &mut OsRng); + IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -221,7 +221,7 @@ macro_rules! __test_boomerang { IBCM::generate_issuance_m3(issuance_m1.clone(), issuance_m2.clone(), &mut OsRng); let issuance_m4 = - IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), skp.clone()); + IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); let issuance_state = IBCM::populate_state( issuance_m3.clone(), @@ -248,7 +248,7 @@ macro_rules! __test_boomerang { &mut OsRng, issuance_state, collection_m1.clone(), - skp.clone(), + &skp, ); assert!(collection_m2.m2.comm.comm.is_on_curve()); @@ -258,7 +258,7 @@ macro_rules! __test_boomerang { &mut OsRng, collection_m2, collection_m1.clone(), - skp.clone(), + &skp, v, ); @@ -279,7 +279,7 @@ macro_rules! __test_boomerang { assert!(issuance_m1.m1.u_pk.is_on_curve()); let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), skp.clone(), &mut OsRng); + IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -287,7 +287,7 @@ macro_rules! __test_boomerang { IBCM::generate_issuance_m3(issuance_m1.clone(), issuance_m2.clone(), &mut OsRng); let issuance_m4 = - IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), skp.clone()); + IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); let issuance_state = IBCM::populate_state( issuance_m3.clone(), @@ -314,7 +314,7 @@ macro_rules! __test_boomerang { &mut OsRng, issuance_state, collection_m1.clone(), - skp.clone(), + &skp, ); assert!(collection_m2.m2.comm.comm.is_on_curve()); @@ -324,7 +324,7 @@ macro_rules! __test_boomerang { &mut OsRng, collection_m2.clone(), collection_m1.clone(), - skp.clone(), + &skp, v, ); @@ -339,7 +339,7 @@ macro_rules! __test_boomerang { let collection_m5 = CBSM::generate_collection_m5( collection_m4.clone(), collection_m3.clone(), - skp.clone(), + &skp, ); let collection_state = CBCM::populate_state( @@ -380,7 +380,7 @@ macro_rules! __test_boomerang { assert!(issuance_m1.m1.u_pk.is_on_curve()); let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), skp.clone(), &mut OsRng); + IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -393,7 +393,7 @@ macro_rules! __test_boomerang { let issuance_m4 = IBSM::generate_issuance_m4( issuance_m3.clone(), issuance_m2.clone(), - skp.clone(), + &skp, ); let issuance_state = IBCM::populate_state( @@ -425,7 +425,7 @@ macro_rules! __test_boomerang { &mut OsRng, issuance_state, collection_m1.clone(), - skp.clone(), + &skp, ); assert!(collection_m2.m2.comm.comm.is_on_curve()); @@ -434,7 +434,7 @@ macro_rules! __test_boomerang { &mut OsRng, collection_m2.clone(), collection_m1.clone(), - skp.clone(), + &skp, v, ); assert!(collection_m3.m3.clone().unwrap().comm.comm.is_on_curve()); @@ -448,7 +448,7 @@ macro_rules! __test_boomerang { let collection_m5 = CBSM::generate_collection_m5( collection_m4.clone(), collection_m3.clone(), - skp.clone(), + &skp, ); let collection_state = CBCM::populate_state( @@ -481,7 +481,7 @@ macro_rules! __test_boomerang { &mut OsRng, collection_state, spendverify_m1.clone(), - skp.clone(), + &skp, ); assert!(spendverify_m2.m2.comm.comm.is_on_curve()); @@ -505,7 +505,7 @@ macro_rules! __test_boomerang { &mut OsRng, spendverify_m2.clone(), spendverify_m1.clone(), - skp.clone(), + &skp, v, state_vector, policy_vector.clone(), @@ -525,7 +525,7 @@ macro_rules! __test_boomerang { let spendverify_m5 = SVBSM::generate_spendverify_m5( spendverify_m4.clone(), spendverify_m3.clone(), - skp.clone(), + &skp, ); // populate state From 2939f3db86acce0f0580c7718e46804d83bf47c8 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 13:11:09 -0700 Subject: [PATCH 09/11] Take ServerKeyPair by reference in populate_state methods Further clean up to remove clone method calls. --- boomerang/src/client.rs | 6 +-- .../client/benches/client_benchmark.rs | 6 +-- end2end-example/client/src/main.rs | 6 +-- macros/src/bench_tboomerang.rs | 42 +++++++++---------- macros/src/test_boomerang.rs | 16 +++---- 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/boomerang/src/client.rs b/boomerang/src/client.rs index 55e5911..356a3fa 100644 --- a/boomerang/src/client.rs +++ b/boomerang/src/client.rs @@ -174,7 +174,7 @@ impl IssuanceC { pub fn populate_state( c_m: IssuanceC, s_m: IssuanceS, - s_key_pair: ServerKeyPair, + s_key_pair: &ServerKeyPair, c_key_pair: UKeyPair, ) -> State { let sig = SigSign::sign( @@ -389,7 +389,7 @@ impl CollectionC { pub fn populate_state( c_m: CollectionC, s_m: CollectionS, - s_key_pair: ServerKeyPair, + s_key_pair: &ServerKeyPair, c_key_pair: UKeyPair, ) -> State { let sig = SigSign::sign( @@ -635,7 +635,7 @@ impl SpendVerifyC { pub fn populate_state( c_m: SpendVerifyC, s_m: SpendVerifyS, - s_key_pair: ServerKeyPair, + s_key_pair: &ServerKeyPair, c_key_pair: UKeyPair, ) -> State { let sig = SigSign::sign( diff --git a/end2end-example/client/benches/client_benchmark.rs b/end2end-example/client/benches/client_benchmark.rs index c7b00bd..c38ebb8 100644 --- a/end2end-example/client/benches/client_benchmark.rs +++ b/end2end-example/client/benches/client_benchmark.rs @@ -52,7 +52,7 @@ async fn issuance_protocol(ckp: UKeyPair, skp: ServerKeyPair) -> // populate state let issuance_state = - IssuanceC::::populate_state(issuance_m3, issuance_m4, skp.clone(), ckp.clone()); + IssuanceC::::populate_state(issuance_m3, issuance_m4, &skp, ckp.clone()); let sig = &issuance_state.sig_state[0]; @@ -104,7 +104,7 @@ async fn collection_protocol( let collection_state = CollectionC::::populate_state( collection_m4.clone(), collection_m5.clone(), - skp.clone(), + &skp, ckp.clone(), ); @@ -169,7 +169,7 @@ async fn spending_protocol( let spending_state = SpendVerifyC::::populate_state( spendverify_m4, spendverify_m5, - skp.clone(), + &skp, ckp.clone(), ); diff --git a/end2end-example/client/src/main.rs b/end2end-example/client/src/main.rs index 0ad0c06..d60537e 100644 --- a/end2end-example/client/src/main.rs +++ b/end2end-example/client/src/main.rs @@ -562,7 +562,7 @@ async fn main() { // populate state let issuance_state = - IssuanceC::::populate_state(issuance_m3, issuance_m4, skp.clone(), ckp.clone()); + IssuanceC::::populate_state(issuance_m3, issuance_m4, &skp, ckp.clone()); let sig = &issuance_state.sig_state[0]; @@ -621,7 +621,7 @@ async fn main() { let collection_state = CollectionC::::populate_state( collection_m4.clone(), collection_m5.clone(), - skp.clone(), + &skp, ckp.clone(), ); assert!(collection_state.sig_state[0].sigma.zeta.is_on_curve()); @@ -700,7 +700,7 @@ async fn main() { let spending_state = SpendVerifyC::::populate_state( spendverify_m4, spendverify_m5, - skp.clone(), + &skp, ckp.clone(), ); assert!(spending_state.sig_state[0].sigma.zeta.is_on_curve()); diff --git a/macros/src/bench_tboomerang.rs b/macros/src/bench_tboomerang.rs index 3ee1e08..30a6c12 100644 --- a/macros/src/bench_tboomerang.rs +++ b/macros/src/bench_tboomerang.rs @@ -90,7 +90,7 @@ macro_rules! bench_tboomerang_issuance_m5_time { // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " issuance m5 time"), |b| { b.iter(|| { - IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); }); }); } @@ -108,7 +108,7 @@ macro_rules! bench_tboomerang_collection_m1_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " collection m1 time"), |b| { @@ -131,7 +131,7 @@ macro_rules! bench_tboomerang_collection_m2_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); // Now we can just benchmark how long it takes for the first message. @@ -160,7 +160,7 @@ macro_rules! bench_tboomerang_collection_m3_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -197,7 +197,7 @@ macro_rules! bench_tboomerang_collection_m4_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -236,7 +236,7 @@ macro_rules! bench_tboomerang_collection_m5_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -277,7 +277,7 @@ macro_rules! bench_tboomerang_collection_m6_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -300,7 +300,7 @@ macro_rules! bench_tboomerang_collection_m6_time { // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " collection m6 time"), |b| { b.iter(|| { - CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); + CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); }); }); } @@ -318,7 +318,7 @@ macro_rules! bench_tboomerang_spending_m1_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -337,7 +337,7 @@ macro_rules! bench_tboomerang_spending_m1_time { ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); - let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); + let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " spending m1 time"), |b| { @@ -360,7 +360,7 @@ macro_rules! bench_tboomerang_spending_m2_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -379,7 +379,7 @@ macro_rules! bench_tboomerang_spending_m2_time { ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); - let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); + let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); @@ -409,7 +409,7 @@ macro_rules! bench_tboomerang_spending_m3_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -428,7 +428,7 @@ macro_rules! bench_tboomerang_spending_m3_time { ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); - let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); + let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); let s_m2 = @@ -466,7 +466,7 @@ macro_rules! bench_tboomerang_spending_m4_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -485,7 +485,7 @@ macro_rules! bench_tboomerang_spending_m4_time { ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); - let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); + let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); let s_m2 = @@ -528,7 +528,7 @@ macro_rules! bench_tboomerang_spending_m5_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -547,7 +547,7 @@ macro_rules! bench_tboomerang_spending_m5_time { ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); - let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); + let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); let s_m2 = @@ -591,7 +591,7 @@ macro_rules! bench_tboomerang_spending_m6_time { let m2 = IBSM::generate_issuance_m2(m1.clone(), &skp, &mut OsRng); let m3 = IBCM::generate_issuance_m3(m1.clone(), m2.clone(), &mut OsRng); let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); - let i_state = IBCM::populate_state(m3.clone(), m4.clone(), skp.clone(), kp.clone()); + let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); let c_m2 = CBCM::generate_collection_m2( &mut OsRng, @@ -610,7 +610,7 @@ macro_rules! bench_tboomerang_spending_m6_time { ); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); - let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), skp.clone(), kp.clone()); + let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); let s_m2 = @@ -637,7 +637,7 @@ macro_rules! bench_tboomerang_spending_m6_time { // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " spending m6 time"), |b| { b.iter(|| { - SVBCM::populate_state(s_m4.clone(), s_m5.clone(), skp.clone(), kp.clone()); + SVBCM::populate_state(s_m4.clone(), s_m5.clone(), &skp, kp.clone()); }); }); } diff --git a/macros/src/test_boomerang.rs b/macros/src/test_boomerang.rs index 7397e11..0043a32 100644 --- a/macros/src/test_boomerang.rs +++ b/macros/src/test_boomerang.rs @@ -130,7 +130,7 @@ macro_rules! __test_boomerang { let issuance_state = IBCM::populate_state( issuance_m3.clone(), issuance_m4.clone(), - skp.clone(), + &skp, ckp.clone(), ); @@ -175,7 +175,7 @@ macro_rules! __test_boomerang { let issuance_state = IBCM::populate_state( issuance_m3.clone(), issuance_m4.clone(), - skp.clone(), + &skp, ckp.clone(), ); @@ -226,7 +226,7 @@ macro_rules! __test_boomerang { let issuance_state = IBCM::populate_state( issuance_m3.clone(), issuance_m4.clone(), - skp.clone(), + &skp, ckp.clone(), ); @@ -292,7 +292,7 @@ macro_rules! __test_boomerang { let issuance_state = IBCM::populate_state( issuance_m3.clone(), issuance_m4.clone(), - skp.clone(), + &skp, ckp.clone(), ); @@ -345,7 +345,7 @@ macro_rules! __test_boomerang { let collection_state = CBCM::populate_state( collection_m4.clone(), collection_m5.clone(), - skp.clone(), + &skp, ckp.clone(), ); @@ -399,7 +399,7 @@ macro_rules! __test_boomerang { let issuance_state = IBCM::populate_state( issuance_m3.clone(), issuance_m4.clone(), - skp.clone(), + &skp, ckp.clone(), ); @@ -454,7 +454,7 @@ macro_rules! __test_boomerang { let collection_state = CBCM::populate_state( collection_m4.clone(), collection_m5.clone(), - skp.clone(), + &skp, ckp.clone(), ); assert!(collection_state.sig_state[0].sigma.zeta.is_on_curve()); @@ -532,7 +532,7 @@ macro_rules! __test_boomerang { let spendverify_state = SVBCM::populate_state( spendverify_m4.clone(), spendverify_m5.clone(), - skp.clone(), + &skp, ckp.clone(), ); From a8fef071a3599b42ee4090ad7d930bc29de185b7 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 13:16:25 -0700 Subject: [PATCH 10/11] fixup redundant references --- end2end-example/client/src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/end2end-example/client/src/main.rs b/end2end-example/client/src/main.rs index d60537e..f556f95 100644 --- a/end2end-example/client/src/main.rs +++ b/end2end-example/client/src/main.rs @@ -634,7 +634,7 @@ async fn main() { let check = SigVerify::::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - &sig_n, + sig_n, "message", ); assert!(check); @@ -715,7 +715,7 @@ async fn main() { let check = SigVerify::::verify( skp.s_key_pair.verifying_key, skp.s_key_pair.tag_key, - &sig_n, + sig_n, "message", ); assert!(check); From 76e6e2c7d016904b8c7e45ad09618107bc242d28 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 23 Jul 2024 13:16:49 -0700 Subject: [PATCH 11/11] cargo fmt --- boomerang/src/client.rs | 9 +- boomerang/src/server.rs | 27 +-- .../client/benches/client_benchmark.rs | 8 +- end2end-example/server/src/main.rs | 10 +- macros/src/bench_tacl.rs | 18 +- macros/src/bench_tboomerang.rs | 159 ++++-------------- macros/src/bench_tcurve.rs | 32 +--- macros/src/test_acl.rs | 9 +- macros/src/test_boomerang.rs | 64 ++----- pedersen/src/issuance_protocol.rs | 2 +- pedersen/src/pedersen_config.rs | 9 +- 11 files changed, 82 insertions(+), 265 deletions(-) diff --git a/boomerang/src/client.rs b/boomerang/src/client.rs index 356a3fa..b46ea4f 100644 --- a/boomerang/src/client.rs +++ b/boomerang/src/client.rs @@ -124,8 +124,7 @@ impl IssuanceC { let label = b"BoomerangM1"; let mut transcript = Transcript::new(label); - let proof = - IssuanceProofMulti::create(&mut transcript, rng, &vals, &c1, &gens); + let proof = IssuanceProofMulti::create(&mut transcript, rng, &vals, &c1, &gens); let m1 = IssuanceM1 { comm: c1, @@ -288,8 +287,7 @@ impl CollectionC { let label = b"BoomerangCollectionM2O1"; let mut transcript = Transcript::new(label); - let proof_1 = - OpeningProofMulti::create(&mut transcript, rng, &vals, &c1, &gens); + let proof_1 = OpeningProofMulti::create(&mut transcript, rng, &vals, &c1, &gens); let label1 = b"BoomerangCollectionM2O2"; let mut transcript1 = Transcript::new(label1); @@ -510,8 +508,7 @@ impl SpendVerifyC { // pi_open tk0 (token) let mut transcript_p1 = Transcript::new(b"BoomerangSpendVerifyM2O1"); - let proof_1 = - OpeningProofMulti::create(&mut transcript_p1, rng, &vals, &c1, &gens); + let proof_1 = OpeningProofMulti::create(&mut transcript_p1, rng, &vals, &c1, &gens); // pi_open tk? (previous token?) let mut transcript_p2 = Transcript::new(b"BoomerangSpendVerifyM2O2"); diff --git a/boomerang/src/server.rs b/boomerang/src/server.rs index caacb14..6b4aabb 100644 --- a/boomerang/src/server.rs +++ b/boomerang/src/server.rs @@ -253,11 +253,8 @@ impl CollectionS { panic!("Boomerang collection: invalid signature"); } - let check2 = SigVerifProof::verify( - c_m.m2.s_proof, - key_pair.s_key_pair.tag_key, - &c_m.m2.sig, - ); + let check2 = + SigVerifProof::verify(c_m.m2.s_proof, key_pair.s_key_pair.tag_key, &c_m.m2.sig); if !check2 { panic!("Boomerang collection: invalid proof sig"); @@ -477,11 +474,8 @@ impl SpendVerifyS { } // verify signature proof - let check2 = SigVerifProof::verify( - c_m.m2.s_proof, - key_pair.s_key_pair.tag_key, - &c_m.m2.sig, - ); + let check2 = + SigVerifProof::verify(c_m.m2.s_proof, key_pair.s_key_pair.tag_key, &c_m.m2.sig); if !check2 { panic!("Boomerang spend/verify: invalid proof sig"); @@ -489,12 +483,10 @@ impl SpendVerifyS { // verify opening proof \pi_open(tk0) let mut transcript_p1 = Transcript::new(b"BoomerangSpendVerifyM2O1"); - let check3 = c_m.m2.pi_1.verify( - &mut transcript_p1, - &c_m.m2.comm.comm, - 4, - &c_m.m2.gens, - ); + let check3 = c_m + .m2 + .pi_1 + .verify(&mut transcript_p1, &c_m.m2.comm.comm, 4, &c_m.m2.gens); if !check3 { panic!("Boomerang spend/verify: invalid proof opening 1"); @@ -555,8 +547,7 @@ impl SpendVerifyS { ::ScalarField::zero(), ::ScalarField::zero(), ]; - let c0dashdash = - PedersenComm::new_multi_with_all_generators(&vals, rng, &c_m.m2.gens); + let c0dashdash = PedersenComm::new_multi_with_all_generators(&vals, rng, &c_m.m2.gens); // C0 = C0' - C0'' let c0 = c_m.m2.comm - c0dashdash; diff --git a/end2end-example/client/benches/client_benchmark.rs b/end2end-example/client/benches/client_benchmark.rs index c38ebb8..ef2a27a 100644 --- a/end2end-example/client/benches/client_benchmark.rs +++ b/end2end-example/client/benches/client_benchmark.rs @@ -166,12 +166,8 @@ async fn spending_protocol( spending_send_m3m4_get_m5(spendverify_m3.clone(), spendverify_m4.clone(), endpoint2).await; // populate state - let spending_state = SpendVerifyC::::populate_state( - spendverify_m4, - spendverify_m5, - &skp, - ckp.clone(), - ); + let spending_state = + SpendVerifyC::::populate_state(spendverify_m4, spendverify_m5, &skp, ckp.clone()); let sig_n = &spending_state.sig_state[0]; diff --git a/end2end-example/server/src/main.rs b/end2end-example/server/src/main.rs index a676b5e..c54f681 100644 --- a/end2end-example/server/src/main.rs +++ b/end2end-example/server/src/main.rs @@ -123,11 +123,8 @@ async fn boomerang_collection_m5(data: web::Data, req_body: String) -> let collection_m4 = CollectionC::::deserialize_compressed(collection_m4_bytes.as_slice()).unwrap(); - let collection_m5 = CollectionS::::generate_collection_m5( - collection_m4, - collection_m3, - &data.skp, - ); + let collection_m5 = + CollectionS::::generate_collection_m5(collection_m4, collection_m3, &data.skp); // Serialize collection_m3 let mut collection_m5_bytes = Vec::new(); @@ -228,8 +225,7 @@ async fn boomerang_issuance_m2(data: web::Data, req_body: String) -> i let issuance_m1_bytes: Vec = serde_json::from_str(&req_body).unwrap(); let issuance_m1 = IssuanceC::::deserialize_compressed(&*issuance_m1_bytes).unwrap(); - let issuance_m2 = - IssuanceS::::generate_issuance_m2(issuance_m1, &data.skp, &mut OsRng); + let issuance_m2 = IssuanceS::::generate_issuance_m2(issuance_m1, &data.skp, &mut OsRng); // Serialize issuance_m2 let mut issuance_m2_bytes = Vec::new(); diff --git a/macros/src/bench_tacl.rs b/macros/src/bench_tacl.rs index 6c1e400..7d55c79 100644 --- a/macros/src/bench_tacl.rs +++ b/macros/src/bench_tacl.rs @@ -174,14 +174,7 @@ macro_rules! bench_tacl_sign_proof_time { // Now we can just benchmark how long it takes to create a new multi proof. c.bench_function(concat!($curve_name, " acl proof sign time"), |b| { b.iter(|| { - ACLSP::prove( - &mut OsRng, - kp.tag_key, - &m4, - &vals, - &gens.generators, - com.r, - ); + ACLSP::prove(&mut OsRng, kp.tag_key, &m4, &vals, &gens.generators, com.r); }); }); } @@ -209,14 +202,7 @@ macro_rules! bench_tacl_sign_verify_time { let m3 = ACLSR::respond(kp.clone(), m1.clone(), m2.clone()); let m4 = ACLSG::sign(kp.verifying_key, kp.tag_key, m2.clone(), m3, "message"); ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); - let proof = ACLSP::prove( - &mut OsRng, - kp.tag_key, - &m4, - &vals, - &gens.generators, - com.r, - ); + let proof = ACLSP::prove(&mut OsRng, kp.tag_key, &m4, &vals, &gens.generators, com.r); // Now we can just benchmark how long it takes to create a new multi proof. c.bench_function(concat!($curve_name, " acl proof verify time"), |b| { diff --git a/macros/src/bench_tboomerang.rs b/macros/src/bench_tboomerang.rs index 30a6c12..3d94ac3 100644 --- a/macros/src/bench_tboomerang.rs +++ b/macros/src/bench_tboomerang.rs @@ -137,12 +137,7 @@ macro_rules! bench_tboomerang_collection_m2_time { // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " collection m2 time"), |b| { b.iter(|| { - CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); }); }); } @@ -162,24 +157,14 @@ macro_rules! bench_tboomerang_collection_m3_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " collection m3 time"), |b| { b.iter(|| { - CBSM::generate_collection_m3( - &mut OsRng, - c_m2.clone(), - c_m1.clone(), - &skp, - v, - ); + CBSM::generate_collection_m3(&mut OsRng, c_m2.clone(), c_m1.clone(), &skp, v); }); }); } @@ -199,21 +184,12 @@ macro_rules! bench_tboomerang_collection_m4_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); - let c_m3 = CBSM::generate_collection_m3( - &mut OsRng, - c_m2.clone(), - c_m1.clone(), - &skp, - v, - ); + let c_m3 = + CBSM::generate_collection_m3(&mut OsRng, c_m2.clone(), c_m1.clone(), &skp, v); // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " collection m4 time"), |b| { @@ -238,21 +214,12 @@ macro_rules! bench_tboomerang_collection_m5_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); - let c_m3 = CBSM::generate_collection_m3( - &mut OsRng, - c_m2.clone(), - c_m1.clone(), - &skp, - v, - ); + let c_m3 = + CBSM::generate_collection_m3(&mut OsRng, c_m2.clone(), c_m1.clone(), &skp, v); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); @@ -279,21 +246,12 @@ macro_rules! bench_tboomerang_collection_m6_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); - let c_m3 = CBSM::generate_collection_m3( - &mut OsRng, - c_m2.clone(), - c_m1.clone(), - &skp, - v, - ); + let c_m3 = + CBSM::generate_collection_m3(&mut OsRng, c_m2.clone(), c_m1.clone(), &skp, v); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); @@ -320,21 +278,12 @@ macro_rules! bench_tboomerang_spending_m1_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); - let c_m3 = CBSM::generate_collection_m3( - &mut OsRng, - c_m2.clone(), - c_m1.clone(), - &skp, - v, - ); + let c_m3 = + CBSM::generate_collection_m3(&mut OsRng, c_m2.clone(), c_m1.clone(), &skp, v); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); @@ -362,21 +311,12 @@ macro_rules! bench_tboomerang_spending_m2_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); - let c_m3 = CBSM::generate_collection_m3( - &mut OsRng, - c_m2.clone(), - c_m1.clone(), - &skp, - v, - ); + let c_m3 = + CBSM::generate_collection_m3(&mut OsRng, c_m2.clone(), c_m1.clone(), &skp, v); let c_m4 = CBCM::generate_collection_m4(&mut OsRng, c_m2.clone(), c_m3.clone()); let c_m5 = CBSM::generate_collection_m5(c_m4.clone(), c_m3.clone(), &skp); let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); @@ -386,12 +326,7 @@ macro_rules! bench_tboomerang_spending_m2_time { // Now we can just benchmark how long it takes for the first message. c.bench_function(concat!($curve_name, " spending m2 time"), |b| { b.iter(|| { - SVBCM::generate_spendverify_m2( - &mut OsRng, - c_state.clone(), - s_m1.clone(), - &skp, - ); + SVBCM::generate_spendverify_m2(&mut OsRng, c_state.clone(), s_m1.clone(), &skp); }); }); } @@ -411,12 +346,8 @@ macro_rules! bench_tboomerang_spending_m3_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); let c_m3 = CBSM::generate_collection_m3( @@ -431,8 +362,7 @@ macro_rules! bench_tboomerang_spending_m3_time { let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); - let s_m2 = - SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); + let s_m2 = SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); let policy_vector: Vec = (0..64).map(|_| 5).collect(); let state_vector = vec![5u64; 64]; @@ -468,12 +398,8 @@ macro_rules! bench_tboomerang_spending_m4_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); let c_m3 = CBSM::generate_collection_m3( @@ -488,8 +414,7 @@ macro_rules! bench_tboomerang_spending_m4_time { let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); - let s_m2 = - SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); + let s_m2 = SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); let policy_vector: Vec = (0..64).map(|_| 5).collect(); let state_vector = vec![5u64; 64]; let s_m3 = SVBSM::generate_spendverify_m3( @@ -530,12 +455,8 @@ macro_rules! bench_tboomerang_spending_m5_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); let c_m3 = CBSM::generate_collection_m3( @@ -550,8 +471,7 @@ macro_rules! bench_tboomerang_spending_m5_time { let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); - let s_m2 = - SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); + let s_m2 = SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); let policy_vector: Vec = (0..64).map(|_| 5).collect(); let state_vector = vec![5u64; 64]; let s_m3 = SVBSM::generate_spendverify_m3( @@ -593,12 +513,8 @@ macro_rules! bench_tboomerang_spending_m6_time { let m4 = IBSM::generate_issuance_m4(m3.clone(), m2.clone(), &skp); let i_state = IBCM::populate_state(m3.clone(), m4.clone(), &skp, kp.clone()); let c_m1 = CBSM::<$config>::generate_collection_m1(&mut OsRng); - let c_m2 = CBCM::generate_collection_m2( - &mut OsRng, - i_state.clone(), - c_m1.clone(), - &skp, - ); + let c_m2 = + CBCM::generate_collection_m2(&mut OsRng, i_state.clone(), c_m1.clone(), &skp); let v = <$config as CurveConfig>::ScalarField::one(); let c_m3 = CBSM::generate_collection_m3( @@ -613,8 +529,7 @@ macro_rules! bench_tboomerang_spending_m6_time { let c_state = CBCM::populate_state(c_m4.clone(), c_m5.clone(), &skp, kp.clone()); let s_m1 = SVBSM::generate_spendverify_m1(&mut OsRng); - let s_m2 = - SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); + let s_m2 = SVBCM::generate_spendverify_m2(&mut OsRng, c_state, s_m1.clone(), &skp); let policy_vector: Vec = (0..64).map(|_| 5).collect(); let state_vector = vec![5u64; 64]; let s_m3 = SVBSM::generate_spendverify_m3( diff --git a/macros/src/bench_tcurve.rs b/macros/src/bench_tcurve.rs index 24ed6ba..2789303 100644 --- a/macros/src/bench_tcurve.rs +++ b/macros/src/bench_tcurve.rs @@ -66,13 +66,7 @@ macro_rules! bench_tcurve_opening_multi_prover_time { |b| { b.iter(|| { let mut transcript = Transcript::new(b"test-open-multi"); - OPM::create( - &mut transcript, - &mut OsRng, - &vals, - &com, - &gens, - ) + OPM::create(&mut transcript, &mut OsRng, &vals, &com, &gens) }); }, ); @@ -98,13 +92,7 @@ macro_rules! bench_tcurve_opening_multi_verifier_time { // Make the proof object. let mut transcript = Transcript::new(b"test-open-multi"); - let proof = OPM::create( - &mut transcript, - &mut OsRng, - &vals, - &com, - &gens, - ); + let proof = OPM::create(&mut transcript, &mut OsRng, &vals, &com, &gens); // And now just check how long it takes to verify the proof. c.bench_function( @@ -147,13 +135,7 @@ macro_rules! bench_tcurve_issuance_multi_prover_time { |b| { b.iter(|| { let mut transcript = Transcript::new(b"test-issue-multi"); - IPM::create( - &mut transcript, - &mut OsRng, - &vals, - &com, - &gens, - ) + IPM::create(&mut transcript, &mut OsRng, &vals, &com, &gens) }); }, ); @@ -184,13 +166,7 @@ macro_rules! bench_tcurve_issuance_multi_verifier_time { // Make the proof object. let mut transcript = Transcript::new(b"test-issue-multi"); - let proof = IPM::create( - &mut transcript, - &mut OsRng, - &vals, - &com, - &gens, - ); + let proof = IPM::create(&mut transcript, &mut OsRng, &vals, &com, &gens); // And now just check how long it takes to verify the proof. c.bench_function( diff --git a/macros/src/test_acl.rs b/macros/src/test_acl.rs index 5728e94..ea50036 100644 --- a/macros/src/test_acl.rs +++ b/macros/src/test_acl.rs @@ -273,14 +273,7 @@ macro_rules! __test_acl { let check = ACLSV::verify(kp.verifying_key, kp.tag_key, &m4, "message"); assert!(check == true); - let proof = ACLSP::prove( - &mut OsRng, - kp.tag_key, - &m4, - &vals, - &gens.generators, - c1.r, - ); + let proof = ACLSP::prove(&mut OsRng, kp.tag_key, &m4, &vals, &gens.generators, c1.r); assert!(proof.b_gamma.is_on_curve()); assert!(proof.pi1.t1.is_on_curve()); diff --git a/macros/src/test_boomerang.rs b/macros/src/test_boomerang.rs index 0043a32..6bdf6d3 100644 --- a/macros/src/test_boomerang.rs +++ b/macros/src/test_boomerang.rs @@ -91,8 +91,7 @@ macro_rules! __test_boomerang { let issuance_m1 = IBCM::generate_issuance_m1(ckp, &mut OsRng); assert!(issuance_m1.m1.u_pk.is_on_curve()); - let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); + let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -116,8 +115,7 @@ macro_rules! __test_boomerang { let issuance_m1 = IBCM::generate_issuance_m1(ckp.clone(), &mut OsRng); assert!(issuance_m1.m1.u_pk.is_on_curve()); - let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); + let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -127,12 +125,8 @@ macro_rules! __test_boomerang { let issuance_m4 = IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); - let issuance_state = IBCM::populate_state( - issuance_m3.clone(), - issuance_m4.clone(), - &skp, - ckp.clone(), - ); + let issuance_state = + IBCM::populate_state(issuance_m3.clone(), issuance_m4.clone(), &skp, ckp.clone()); assert!(issuance_state.sig_state[0].sigma.zeta.is_on_curve()); assert!(issuance_state.sig_state[0].sigma.zeta1.is_on_curve()); @@ -161,8 +155,7 @@ macro_rules! __test_boomerang { let issuance_m1 = IBCM::generate_issuance_m1(ckp.clone(), &mut OsRng); assert!(issuance_m1.m1.u_pk.is_on_curve()); - let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); + let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -172,12 +165,8 @@ macro_rules! __test_boomerang { let issuance_m4 = IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); - let issuance_state = IBCM::populate_state( - issuance_m3.clone(), - issuance_m4.clone(), - &skp, - ckp.clone(), - ); + let issuance_state = + IBCM::populate_state(issuance_m3.clone(), issuance_m4.clone(), &skp, ckp.clone()); assert!(issuance_state.sig_state[0].sigma.zeta.is_on_curve()); assert!(issuance_state.sig_state[0].sigma.zeta1.is_on_curve()); @@ -212,8 +201,7 @@ macro_rules! __test_boomerang { let issuance_m1 = IBCM::generate_issuance_m1(ckp.clone(), &mut OsRng); assert!(issuance_m1.m1.u_pk.is_on_curve()); - let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); + let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -223,12 +211,8 @@ macro_rules! __test_boomerang { let issuance_m4 = IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); - let issuance_state = IBCM::populate_state( - issuance_m3.clone(), - issuance_m4.clone(), - &skp, - ckp.clone(), - ); + let issuance_state = + IBCM::populate_state(issuance_m3.clone(), issuance_m4.clone(), &skp, ckp.clone()); assert!(issuance_state.sig_state[0].sigma.zeta.is_on_curve()); assert!(issuance_state.sig_state[0].sigma.zeta1.is_on_curve()); @@ -278,8 +262,7 @@ macro_rules! __test_boomerang { let issuance_m1 = IBCM::generate_issuance_m1(ckp.clone(), &mut OsRng); assert!(issuance_m1.m1.u_pk.is_on_curve()); - let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); + let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -289,12 +272,8 @@ macro_rules! __test_boomerang { let issuance_m4 = IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); - let issuance_state = IBCM::populate_state( - issuance_m3.clone(), - issuance_m4.clone(), - &skp, - ckp.clone(), - ); + let issuance_state = + IBCM::populate_state(issuance_m3.clone(), issuance_m4.clone(), &skp, ckp.clone()); assert!(issuance_state.sig_state[0].sigma.zeta.is_on_curve()); assert!(issuance_state.sig_state[0].sigma.zeta1.is_on_curve()); @@ -336,11 +315,8 @@ macro_rules! __test_boomerang { collection_m3.clone(), ); - let collection_m5 = CBSM::generate_collection_m5( - collection_m4.clone(), - collection_m3.clone(), - &skp, - ); + let collection_m5 = + CBSM::generate_collection_m5(collection_m4.clone(), collection_m3.clone(), &skp); let collection_state = CBCM::populate_state( collection_m4.clone(), @@ -379,8 +355,7 @@ macro_rules! __test_boomerang { let issuance_m1 = IBCM::generate_issuance_m1(ckp.clone(), &mut OsRng); assert!(issuance_m1.m1.u_pk.is_on_curve()); - let issuance_m2 = - IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); + let issuance_m2 = IBSM::generate_issuance_m2(issuance_m1.clone(), &skp, &mut OsRng); assert!(issuance_m2.m2.verifying_key.is_on_curve()); assert!(issuance_m2.m2.tag_key.is_on_curve()); @@ -390,11 +365,8 @@ macro_rules! __test_boomerang { &mut OsRng, ); - let issuance_m4 = IBSM::generate_issuance_m4( - issuance_m3.clone(), - issuance_m2.clone(), - &skp, - ); + let issuance_m4 = + IBSM::generate_issuance_m4(issuance_m3.clone(), issuance_m2.clone(), &skp); let issuance_state = IBCM::populate_state( issuance_m3.clone(), diff --git a/pedersen/src/issuance_protocol.rs b/pedersen/src/issuance_protocol.rs index f4d4440..2de5f37 100644 --- a/pedersen/src/issuance_protocol.rs +++ b/pedersen/src/issuance_protocol.rs @@ -162,7 +162,7 @@ impl IssuanceProofMulti

{ rng: &mut T, c1: &PedersenComm

, l: usize, - gens: &Generators

+ gens: &Generators

, ) -> IssuanceProofMultiIntermediate

{ let mut total: sw::Affine

= sw::Affine::identity(); let mut ts: Vec<

::ScalarField> = vec![]; diff --git a/pedersen/src/pedersen_config.rs b/pedersen/src/pedersen_config.rs index 29d840f..43134e1 100644 --- a/pedersen/src/pedersen_config.rs +++ b/pedersen/src/pedersen_config.rs @@ -515,9 +515,7 @@ impl PedersenComm

{ comm: (total + q.mul(r)).into_affine(), r, }, - Generators { - generators: gens, - }, + Generators { generators: gens }, ) } @@ -574,10 +572,7 @@ impl PedersenComm

{ comm: (total + P::GENERATOR2.mul(r)).into_affine(), r, }, - Generators { - generators: gens, - }, - + Generators { generators: gens }, ) }