Skip to content

Commit 544b143

Browse files
authored
* fix(SchnorrProof): remove get_comitment method, edition 2021
1 parent de906ee commit 544b143

File tree

12 files changed

+47
-40
lines changed

12 files changed

+47
-40
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ authors = [
66
"Michele Orrù <[email protected]>",
77
"Lénaïck Gouriou <[email protected]>"
88
]
9-
edition = "2024"
9+
edition = "2021"
1010
license = "CC0-1.0"
1111
readme = "README.md"
1212
repository = "https://github.com/mmaker/sigma-rs"

examples/schnorr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
//!
3232
//! This example uses the Ristretto group from `curve25519-dalek`, which provides a prime-order group
3333
//! suitable for secure zero-knowledge protocols.
34-
use curve25519_dalek::RistrettoPoint;
3534
use curve25519_dalek::scalar::Scalar;
35+
use curve25519_dalek::RistrettoPoint;
3636
use group::{Group, GroupEncoding};
3737
use rand::rngs::OsRng;
3838

examples/simple_composition.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ use curve25519_dalek::scalar::Scalar;
5050
use group::{Group, GroupEncoding};
5151
use rand::rngs::OsRng;
5252
use sigma_rs::{
53-
LinearRelation,
5453
codec::ShakeCodec,
5554
composition::{Protocol, ProtocolWitness},
5655
fiat_shamir::NISigmaProtocol,
56+
LinearRelation,
5757
};
5858

5959
type G = RistrettoPoint;

src/codec.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Encoding and decoding utilities for Fiat-Shamir and group operations.
22
33
pub use crate::duplex_sponge::keccak::KeccakDuplexSponge;
4-
use crate::duplex_sponge::{DuplexSpongeInterface, shake::ShakeDuplexSponge};
4+
use crate::duplex_sponge::{shake::ShakeDuplexSponge, DuplexSpongeInterface};
55
use crate::serialization::scalar_byte_size;
66
use ff::PrimeField;
77
use group::{Group, GroupEncoding};

src/composition.rs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ pub enum ProtocolProverState<G: Group + GroupEncoding> {
6666
Or(
6767
usize, // real index
6868
Vec<ProtocolProverState<G>>, // real ProverState
69-
(Vec<ProtocolChallenge<G>>, Vec<ProtocolResponse<G>>), // fake transcripts
69+
(Vec<ProtocolChallenge<G>>, Vec<ProtocolResponse<G>>), // simulated transcripts
7070
),
7171
}
7272

@@ -128,15 +128,15 @@ impl<G: Group + GroupEncoding> SigmaProtocol for Protocol<G> {
128128
}
129129
(Protocol::Or(ps), ProtocolWitness::Or(w_index, w)) => {
130130
let mut commitments = Vec::with_capacity(ps.len());
131-
let mut fake_challenges = Vec::new();
132-
let mut fake_responses = Vec::new();
131+
let mut simulated_challenges = Vec::new();
132+
let mut simulated_responses = Vec::new();
133133
let (real_commit, real_state) = ps[*w_index].prover_commit(&w[0], rng)?;
134134
for (i, _) in ps.iter().enumerate() {
135135
if i != *w_index {
136136
let (c, ch, r) = ps[i].simulate_transcript(rng);
137137
commitments.push(c);
138-
fake_challenges.push(ch);
139-
fake_responses.push(r);
138+
simulated_challenges.push(ch);
139+
simulated_responses.push(r);
140140
} else {
141141
commitments.push(real_commit.clone());
142142
}
@@ -146,7 +146,7 @@ impl<G: Group + GroupEncoding> SigmaProtocol for Protocol<G> {
146146
ProtocolProverState::Or(
147147
*w_index,
148148
vec![real_state],
149-
(fake_challenges, fake_responses),
149+
(simulated_challenges, simulated_responses),
150150
),
151151
))
152152
}
@@ -177,13 +177,17 @@ impl<G: Group + GroupEncoding> SigmaProtocol for Protocol<G> {
177177
}
178178
(
179179
Protocol::Or(ps),
180-
ProtocolProverState::Or(w_index, real_state, (f_challenges, f_responses)),
180+
ProtocolProverState::Or(
181+
w_index,
182+
real_state,
183+
(simulated_challenges, simulated_responses),
184+
),
181185
) => {
182186
let mut challenges = Vec::with_capacity(ps.len());
183187
let mut responses = Vec::with_capacity(ps.len());
184188

185189
let mut real_challenge = *challenge;
186-
for ch in &f_challenges {
190+
for ch in &simulated_challenges {
187191
real_challenge -= ch;
188192
}
189193
let real_response =
@@ -194,9 +198,9 @@ impl<G: Group + GroupEncoding> SigmaProtocol for Protocol<G> {
194198
challenges.push(real_challenge);
195199
responses.push(real_response.clone());
196200
} else {
197-
let fake_index = if i < w_index { i } else { i - 1 };
198-
challenges.push(f_challenges[fake_index]);
199-
responses.push(f_responses[fake_index].clone());
201+
let simulated_index = if i < w_index { i } else { i - 1 };
202+
challenges.push(simulated_challenges[simulated_index]);
203+
responses.push(simulated_responses[simulated_index].clone());
200204
}
201205
}
202206
Ok(ProtocolResponse::Or(challenges, responses))
@@ -364,26 +368,26 @@ impl<G: Group + GroupEncoding> SigmaProtocol for Protocol<G> {
364368
}
365369
}
366370

367-
fn get_commitment(
371+
fn simulate_commitment(
368372
&self,
369373
challenge: &Self::Challenge,
370374
response: &Self::Response,
371375
) -> Result<Self::Commitment, Error> {
372376
match (self, response) {
373-
(Protocol::Simple(p), ProtocolResponse::Simple(r)) => {
374-
Ok(ProtocolCommitment::Simple(p.get_commitment(challenge, r)?))
375-
}
377+
(Protocol::Simple(p), ProtocolResponse::Simple(r)) => Ok(ProtocolCommitment::Simple(
378+
p.simulate_commitment(challenge, r)?,
379+
)),
376380
(Protocol::And(ps), ProtocolResponse::And(rs)) => {
377381
let mut commitments = Vec::with_capacity(ps.len());
378382
for (i, p) in ps.iter().enumerate() {
379-
commitments.push(p.get_commitment(challenge, &rs[i])?);
383+
commitments.push(p.simulate_commitment(challenge, &rs[i])?);
380384
}
381385
Ok(ProtocolCommitment::And(commitments))
382386
}
383387
(Protocol::Or(ps), ProtocolResponse::Or(ch, rs)) => {
384388
let mut commitments = Vec::with_capacity(ps.len());
385389
for (i, p) in ps.iter().enumerate() {
386-
commitments.push(p.get_commitment(&ch[i], &rs[i])?);
390+
commitments.push(p.simulate_commitment(&ch[i], &rs[i])?);
387391
}
388392
Ok(ProtocolCommitment::Or(commitments))
389393
}

src/duplex_sponge/shake.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
55
use crate::duplex_sponge::DuplexSpongeInterface;
66
use sha3::{
7-
Shake128,
87
digest::{ExtendableOutput, Update},
8+
Shake128,
99
};
1010

1111
/// Duplex sponge construction using SHAKE128.

src/fiat_shamir.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,13 @@ where
9090
witness: &P::Witness,
9191
rng: &mut (impl RngCore + CryptoRng),
9292
) -> Result<Transcript<P>, Error> {
93-
let mut codec = self.hash_state.clone();
93+
let mut hash_state = self.hash_state.clone();
9494

9595
let (commitment, prover_state) = self.ip.prover_commit(witness, rng)?;
9696
// Fiat Shamir challenge
9797
let serialized_commitment = self.ip.serialize_commitment(&commitment);
98-
codec.prover_message(&serialized_commitment);
99-
let challenge = codec.verifier_challenge();
98+
hash_state.prover_message(&serialized_commitment);
99+
let challenge = hash_state.verifier_challenge();
100100
// Prover's response
101101
let response = self.ip.prover_response(prover_state, &challenge)?;
102102
// Local verification of the proof
@@ -125,12 +125,12 @@ where
125125
challenge: &P::Challenge,
126126
response: &P::Response,
127127
) -> Result<(), Error> {
128-
let mut codec = self.hash_state.clone();
128+
let mut hash_state = self.hash_state.clone();
129129

130130
// Recompute the challenge
131131
let serialized_commitment = self.ip.serialize_commitment(commitment);
132-
codec.prover_message(&serialized_commitment);
133-
let expected_challenge = codec.verifier_challenge();
132+
hash_state.prover_message(&serialized_commitment);
133+
let expected_challenge = hash_state.verifier_challenge();
134134
// Verification of the proof
135135
match *challenge == expected_challenge {
136136
true => self.ip.verifier(commitment, challenge, response),
@@ -178,12 +178,12 @@ where
178178
let commitment_size = self.ip.serialize_commitment(&commitment).len();
179179
let response = self.ip.deserialize_response(&proof[commitment_size..])?;
180180

181-
let mut codec = self.hash_state.clone();
181+
let mut hash_state = self.hash_state.clone();
182182

183183
// Recompute the challenge
184184
let serialized_commitment = self.ip.serialize_commitment(&commitment);
185-
codec.prover_message(&serialized_commitment);
186-
let challenge = codec.verifier_challenge();
185+
hash_state.prover_message(&serialized_commitment);
186+
let challenge = hash_state.verifier_challenge();
187187
// Verification of the proof
188188
self.ip.verifier(&commitment, &challenge, &response)
189189
}
@@ -241,7 +241,7 @@ where
241241
let response = self.ip.deserialize_response(&proof[challenge_size..])?;
242242

243243
// Compute the commitments
244-
let commitment = self.ip.get_commitment(&challenge, &response)?;
244+
let commitment = self.ip.simulate_commitment(&challenge, &response)?;
245245
// Verify the proof
246246
self.verify(&commitment, &challenge, &response)
247247
}

src/schnorr_protocol.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ where
262262
///
263263
/// # Errors
264264
/// - [`Error::ProofSizeMismatch`] if the response length does not match the expected number of scalars.
265-
fn get_commitment(
265+
fn simulate_commitment(
266266
&self,
267267
challenge: &Self::Challenge,
268268
response: &Self::Response,
@@ -299,10 +299,13 @@ where
299299
challenge: &Self::Challenge,
300300
mut rng: &mut (impl RngCore + CryptoRng),
301301
) -> (Self::Commitment, Self::Response) {
302-
let response = (0..self.scalars_nb())
302+
let response: Vec<G::Scalar> = (0..self.scalars_nb())
303303
.map(|_| G::Scalar::random(&mut rng))
304304
.collect();
305-
let commitment = self.get_commitment(challenge, &response).unwrap();
305+
306+
// Use simulate_commitment to compute the commitment
307+
let commitment = self.simulate_commitment(challenge, &response).unwrap();
308+
306309
(commitment, response)
307310
}
308311

src/tests/relations.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use bls12_381::{G1Projective as G, Scalar};
2-
use group::{Group, ff::Field};
2+
use group::{ff::Field, Group};
33
use rand::rngs::OsRng;
44

55
use crate::fiat_shamir::NISigmaProtocol;

src/tests/spec/custom_schnorr_protocol.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ where
159159
Ok(responses)
160160
}
161161

162-
fn get_commitment(
162+
fn simulate_commitment(
163163
&self,
164164
challenge: &Self::Challenge,
165165
response: &Self::Response,

0 commit comments

Comments
 (0)