Skip to content

Commit 1703a79

Browse files
authored
Merge pull request #127 from dalek-cryptography/update-dalek-0.19
Update to dalek 0.19
2 parents f1f5e83 + 322e2bd commit 1703a79

File tree

7 files changed

+66
-80
lines changed

7 files changed

+66
-80
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ keywords = ["cryptography", "ristretto", "zero-knowledge", "bulletproofs"]
1212
description = "A pure-Rust implementation of Bulletproofs using Ristretto"
1313

1414
[dependencies]
15-
curve25519-dalek = { version = "0.18", features = ["serde"] }
16-
subtle = "0.6"
15+
curve25519-dalek = { version = "0.19", features = ["serde"] }
16+
subtle = "0.7"
1717
sha2 = "^0.7"
1818
rand = "0.5.0-pre.2"
1919
byteorder = "1.2.1"

benches/bulletproofs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ fn verify_aggregated_rangeproof_helper(n: usize, c: &mut Criterion) {
9191
let value_commitments: Vec<_> = values
9292
.iter()
9393
.zip(blindings.iter())
94-
.map(|(&v, &v_blinding)| pg.commit(Scalar::from_u64(v), v_blinding))
94+
.map(|(&v, &v_blinding)| pg.commit(Scalar::from(v), v_blinding))
9595
.collect();
9696

9797
b.iter(|| {

src/inner_product_proof.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -417,17 +417,17 @@ mod tests {
417417
#[test]
418418
fn test_inner_product() {
419419
let a = vec![
420-
Scalar::from_u64(1),
421-
Scalar::from_u64(2),
422-
Scalar::from_u64(3),
423-
Scalar::from_u64(4),
420+
Scalar::from(1u64),
421+
Scalar::from(2u64),
422+
Scalar::from(3u64),
423+
Scalar::from(4u64),
424424
];
425425
let b = vec![
426-
Scalar::from_u64(2),
427-
Scalar::from_u64(3),
428-
Scalar::from_u64(4),
429-
Scalar::from_u64(5),
426+
Scalar::from(2u64),
427+
Scalar::from(3u64),
428+
Scalar::from(4u64),
429+
Scalar::from(5u64),
430430
];
431-
assert_eq!(Scalar::from_u64(40), inner_product(&a, &b));
431+
assert_eq!(Scalar::from(40u64), inner_product(&a, &b));
432432
}
433433
}

src/range_proof/messages.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ impl ProofShare {
8383
let h = self
8484
.r_vec
8585
.iter()
86-
.zip(util::exp_iter(Scalar::from_u64(2)))
86+
.zip(util::exp_iter(Scalar::from(2u64)))
8787
.zip(util::exp_iter(y_inv))
8888
.map(|((r_i, exp_2), exp_y_inv)| {
8989
z + exp_y_inv * y_jn_inv * (-r_i) + exp_y_inv * y_jn_inv * (zz * z_j * exp_2)
@@ -106,7 +106,7 @@ impl ProofShare {
106106
}
107107

108108
let sum_of_powers_y = util::sum_of_powers(&y, n);
109-
let sum_of_powers_2 = util::sum_of_powers(&Scalar::from_u64(2), n);
109+
let sum_of_powers_2 = util::sum_of_powers(&Scalar::from(2u64), n);
110110
let delta = (z - zz) * sum_of_powers_y * y_jn - z * zz * sum_of_powers_2 * z_j;
111111
let t_check = RistrettoPoint::vartime_multiscalar_mul(
112112
iter::once(zz * z_j)

src/range_proof/mod.rs

Lines changed: 24 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -186,63 +186,45 @@ impl RangeProof {
186186

187187
// Construct concat_z_and_2, an iterator of the values of
188188
// z^0 * \vec(2)^n || z^1 * \vec(2)^n || ... || z^(m-1) * \vec(2)^n
189-
let powers_of_2: Vec<Scalar> = util::exp_iter(Scalar::from_u64(2)).take(n).collect();
190-
let powers_of_z = util::exp_iter(z).take(m);
191-
let concat_z_and_2 =
192-
powers_of_z.flat_map(|exp_z| powers_of_2.iter().map(move |exp_2| exp_2 * exp_z));
189+
let powers_of_2: Vec<Scalar> = util::exp_iter(Scalar::from(2u64)).take(n).collect();
190+
let concat_z_and_2: Vec<Scalar> = util::exp_iter(z)
191+
.take(m)
192+
.flat_map(|exp_z| powers_of_2.iter().map(move |exp_2| exp_2 * exp_z))
193+
.collect();
193194

194195
let g = s.iter().map(|s_i| minus_z - a * s_i);
195196
let h = s_inv
196197
.zip(util::exp_iter(y.invert()))
197-
.zip(concat_z_and_2)
198+
.zip(concat_z_and_2.iter())
198199
.map(|((s_i_inv, exp_y_inv), z_and_2)| z + exp_y_inv * (zz * z_and_2 - b * s_i_inv));
199200

200201
let value_commitment_scalars = util::exp_iter(z).take(m).map(|z_exp| c * zz * z_exp);
201202
let basepoint_scalar = w * (self.t_x - a * b) + c * (delta(n, m, &y, &z) - self.t_x);
202203

203-
let Ls = self
204-
.ipp_proof
205-
.L_vec
206-
.iter()
207-
.map(|p| p.decompress().ok_or(ProofError::VerificationError))
208-
.collect::<Result<Vec<_>, _>>()?;
209-
210-
let Rs = self
211-
.ipp_proof
212-
.R_vec
213-
.iter()
214-
.map(|p| p.decompress().ok_or(ProofError::VerificationError))
215-
.collect::<Result<Vec<_>, _>>()?;
216-
217-
let A = self.A.decompress().ok_or(ProofError::VerificationError)?;
218-
let S = self.S.decompress().ok_or(ProofError::VerificationError)?;
219-
let T_1 = self.T_1.decompress().ok_or(ProofError::VerificationError)?;
220-
let T_2 = self.T_2.decompress().ok_or(ProofError::VerificationError)?;
221-
222-
let mega_check = RistrettoPoint::vartime_multiscalar_mul(
204+
let mega_check = RistrettoPoint::optional_multiscalar_mul(
223205
iter::once(Scalar::one())
224206
.chain(iter::once(x))
225-
.chain(value_commitment_scalars)
226207
.chain(iter::once(c * x))
227208
.chain(iter::once(c * x * x))
209+
.chain(x_sq.iter().cloned())
210+
.chain(x_inv_sq.iter().cloned())
228211
.chain(iter::once(-self.e_blinding - c * self.t_x_blinding))
229212
.chain(iter::once(basepoint_scalar))
230213
.chain(g)
231214
.chain(h)
232-
.chain(x_sq.iter().cloned())
233-
.chain(x_inv_sq.iter().cloned()),
234-
iter::once(&A)
235-
.chain(iter::once(&S))
236-
.chain(value_commitments.iter())
237-
.chain(iter::once(&T_1))
238-
.chain(iter::once(&T_2))
239-
.chain(iter::once(&gens.pedersen_generators.B_blinding))
240-
.chain(iter::once(&gens.pedersen_generators.B))
241-
.chain(gens.G.iter())
242-
.chain(gens.H.iter())
243-
.chain(Ls.iter())
244-
.chain(Rs.iter()),
245-
);
215+
.chain(value_commitment_scalars),
216+
iter::once(self.A.decompress())
217+
.chain(iter::once(self.S.decompress()))
218+
.chain(iter::once(self.T_1.decompress()))
219+
.chain(iter::once(self.T_2.decompress()))
220+
.chain(self.ipp_proof.L_vec.iter().map(|L| L.decompress()))
221+
.chain(self.ipp_proof.R_vec.iter().map(|R| R.decompress()))
222+
.chain(iter::once(Some(gens.pedersen_generators.B_blinding)))
223+
.chain(iter::once(Some(gens.pedersen_generators.B)))
224+
.chain(gens.G.iter().map(|&x| Some(x)))
225+
.chain(gens.H.iter().map(|&x| Some(x)))
226+
.chain(value_commitments.iter().map(|&x| Some(x))),
227+
).ok_or_else(|| ProofError::VerificationError)?;
246228

247229
if mega_check.is_identity() {
248230
Ok(())
@@ -358,7 +340,7 @@ impl<'de> Deserialize<'de> for RangeProof {
358340
/// \\]
359341
fn delta(n: usize, m: usize, y: &Scalar, z: &Scalar) -> Scalar {
360342
let sum_y = util::sum_of_powers(y, n * m);
361-
let sum_2 = util::sum_of_powers(&Scalar::from_u64(2), n);
343+
let sum_2 = util::sum_of_powers(&Scalar::from(2u64), n);
362344
let sum_z = util::sum_of_powers(z, m);
363345

364346
(z - z * z) * sum_y - z * z * z * sum_2 * sum_z
@@ -446,7 +428,7 @@ mod tests {
446428
value_commitments = values
447429
.iter()
448430
.zip(blindings.iter())
449-
.map(|(&v, &v_blinding)| pg.commit(Scalar::from_u64(v), v_blinding))
431+
.map(|(&v, &v_blinding)| pg.commit(Scalar::from(v), v_blinding))
450432
.collect();
451433
}
452434

src/range_proof/party.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ impl Party {
3232

3333
let V = generators
3434
.pedersen_generators
35-
.commit(Scalar::from_u64(v), v_blinding);
35+
.commit(Scalar::from(v), v_blinding);
3636

3737
Ok(PartyAwaitingPosition {
3838
generators,
@@ -144,7 +144,7 @@ impl<'a> PartyAwaitingValueChallenge<'a> {
144144
let mut exp_y = offset_y; // start at y^j
145145
let mut exp_2 = Scalar::one(); // start at 2^0 = 1
146146
for i in 0..n {
147-
let a_L_i = Scalar::from_u64((self.v >> i) & 1);
147+
let a_L_i = Scalar::from((self.v >> i) & 1);
148148
let a_R_i = a_L_i - Scalar::one();
149149

150150
l_poly.0[i] = a_L_i - vc.z;

src/util.rs

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ impl Iterator for ScalarExp {
2626
self.next_exp_x *= self.x;
2727
Some(exp_x)
2828
}
29+
30+
fn size_hint(&self) -> (usize, Option<usize>) {
31+
(usize::max_value(), None)
32+
}
2933
}
3034

3135
/// Return an iterator of the powers of `x`.
@@ -109,7 +113,7 @@ pub fn sum_of_powers(x: &Scalar, n: usize) -> Scalar {
109113
return sum_of_powers_slow(x, n);
110114
}
111115
if n == 0 || n == 1 {
112-
return Scalar::from_u64(n as u64);
116+
return Scalar::from(n as u64);
113117
}
114118
let mut m = n;
115119
let mut result = Scalar::one() + x;
@@ -140,29 +144,29 @@ mod tests {
140144

141145
#[test]
142146
fn exp_2_is_powers_of_2() {
143-
let exp_2: Vec<_> = exp_iter(Scalar::from_u64(2)).take(4).collect();
147+
let exp_2: Vec<_> = exp_iter(Scalar::from(2u64)).take(4).collect();
144148

145-
assert_eq!(exp_2[0], Scalar::from_u64(1));
146-
assert_eq!(exp_2[1], Scalar::from_u64(2));
147-
assert_eq!(exp_2[2], Scalar::from_u64(4));
148-
assert_eq!(exp_2[3], Scalar::from_u64(8));
149+
assert_eq!(exp_2[0], Scalar::from(1u64));
150+
assert_eq!(exp_2[1], Scalar::from(2u64));
151+
assert_eq!(exp_2[2], Scalar::from(4u64));
152+
assert_eq!(exp_2[3], Scalar::from(8u64));
149153
}
150154

151155
#[test]
152156
fn test_inner_product() {
153157
let a = vec![
154-
Scalar::from_u64(1),
155-
Scalar::from_u64(2),
156-
Scalar::from_u64(3),
157-
Scalar::from_u64(4),
158+
Scalar::from(1u64),
159+
Scalar::from(2u64),
160+
Scalar::from(3u64),
161+
Scalar::from(4u64),
158162
];
159163
let b = vec![
160-
Scalar::from_u64(2),
161-
Scalar::from_u64(3),
162-
Scalar::from_u64(4),
163-
Scalar::from_u64(5),
164+
Scalar::from(2u64),
165+
Scalar::from(3u64),
166+
Scalar::from(4u64),
167+
Scalar::from(5u64),
164168
];
165-
assert_eq!(Scalar::from_u64(40), inner_product(&a, &b));
169+
assert_eq!(Scalar::from(40u64), inner_product(&a, &b));
166170
}
167171

168172
/// Raises `x` to the power `n`.
@@ -194,7 +198,7 @@ mod tests {
194198

195199
#[test]
196200
fn test_sum_of_powers() {
197-
let x = Scalar::from_u64(10);
201+
let x = Scalar::from(10u64);
198202
assert_eq!(sum_of_powers_slow(&x, 0), sum_of_powers(&x, 0));
199203
assert_eq!(sum_of_powers_slow(&x, 1), sum_of_powers(&x, 1));
200204
assert_eq!(sum_of_powers_slow(&x, 2), sum_of_powers(&x, 2));
@@ -207,13 +211,13 @@ mod tests {
207211

208212
#[test]
209213
fn test_sum_of_powers_slow() {
210-
let x = Scalar::from_u64(10);
214+
let x = Scalar::from(10u64);
211215
assert_eq!(sum_of_powers_slow(&x, 0), Scalar::zero());
212216
assert_eq!(sum_of_powers_slow(&x, 1), Scalar::one());
213-
assert_eq!(sum_of_powers_slow(&x, 2), Scalar::from_u64(11));
214-
assert_eq!(sum_of_powers_slow(&x, 3), Scalar::from_u64(111));
215-
assert_eq!(sum_of_powers_slow(&x, 4), Scalar::from_u64(1111));
216-
assert_eq!(sum_of_powers_slow(&x, 5), Scalar::from_u64(11111));
217-
assert_eq!(sum_of_powers_slow(&x, 6), Scalar::from_u64(111111));
217+
assert_eq!(sum_of_powers_slow(&x, 2), Scalar::from(11u64));
218+
assert_eq!(sum_of_powers_slow(&x, 3), Scalar::from(111u64));
219+
assert_eq!(sum_of_powers_slow(&x, 4), Scalar::from(1111u64));
220+
assert_eq!(sum_of_powers_slow(&x, 5), Scalar::from(11111u64));
221+
assert_eq!(sum_of_powers_slow(&x, 6), Scalar::from(111111u64));
218222
}
219223
}

0 commit comments

Comments
 (0)