Skip to content

Commit 0dd5dbc

Browse files
authored
chore(deps): bump crypto-bigint to 0.7.0-pre.2 (#953)
1 parent 6cce028 commit 0dd5dbc

File tree

9 files changed

+36
-39
lines changed

9 files changed

+36
-39
lines changed

Cargo.lock

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,4 @@ slh-dsa = { path = "./slh-dsa" }
3333
elliptic-curve = { git = "https://github.com/RustCrypto/traits.git" }
3434
signature = { git = "https://github.com/RustCrypto/traits.git" }
3535

36-
# https://github.com/RustCrypto/crypto-bigint/pull/762
37-
# https://github.com/RustCrypto/crypto-bigint/pull/765
38-
crypto-bigint = { git = "https://github.com/RustCrypto/crypto-bigint.git" }
39-
4036
crypto-primes = { git = "https://github.com/entropyxyz/crypto-primes.git" }

dsa/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ rust-version = "1.85"
1717

1818
[dependencies]
1919
digest = "=0.11.0-pre.10"
20-
crypto-bigint = { version = "=0.7.0-pre.1", default-features = false, features = ["alloc", "zeroize"] }
20+
crypto-bigint = { version = "=0.7.0-pre.2", default-features = false, features = ["alloc", "zeroize"] }
2121
crypto-primes = { version = "=0.7.0-dev", default-features = false }
2222
pkcs8 = { version = "0.11.0-rc.1", default-features = false, features = ["alloc"] }
2323
rfc6979 = { version = "=0.5.0-pre.4" }

dsa/src/generate.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crypto_bigint::{BoxedUint, NonZero};
1+
use crypto_bigint::{BoxedUint, NonZero, Resize};
22
use crypto_primes::{Flavor, random_prime};
33
use signature::rand_core::CryptoRng;
44

@@ -15,8 +15,8 @@ pub use self::keypair::keypair;
1515
/// Calculate the upper and lower bounds for generating values like p or q
1616
#[inline]
1717
fn calculate_bounds(size: u32) -> (NonZero<BoxedUint>, NonZero<BoxedUint>) {
18-
let lower = BoxedUint::one().widen(size + 1).shl(size - 1);
19-
let upper = BoxedUint::one().widen(size + 1).shl(size);
18+
let lower = BoxedUint::one().resize(size + 1).shl(size - 1);
19+
let upper = BoxedUint::one().resize(size + 1).shl(size);
2020

2121
let lower = NonZero::new(lower).expect("[bug] shl can't go backward");
2222
let upper = NonZero::new(upper).expect("[bug] shl can't go backward");

dsa/src/generate/components.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::{
99
two,
1010
};
1111
use crypto_bigint::{
12-
BoxedUint, NonZero, Odd, RandomBits,
12+
BoxedUint, NonZero, Odd, RandomBits, Resize,
1313
modular::{BoxedMontyForm, BoxedMontyParams},
1414
subtle::CtOption,
1515
};
@@ -46,7 +46,7 @@ pub fn common<R: CryptoRng + ?Sized>(
4646
break 'gen_m m;
4747
}
4848
};
49-
let rem = NonZero::new((two() * &*q).widen(m.bits_precision()))
49+
let rem = NonZero::new((two() * &*q).resize(m.bits_precision()))
5050
.expect("[bug] 2 * NonZero can't be zero");
5151

5252
let mr = &m % &rem;
@@ -60,11 +60,11 @@ pub fn common<R: CryptoRng + ?Sized>(
6060
};
6161

6262
// Q needs to be the same precision as P for the operations below.
63-
let q = q.widen(l);
63+
let q = q.resize(l);
6464

6565
// Generate g using the unverifiable method as defined by Appendix A.2.1
6666
let e = (&*p - &BoxedUint::one()) / &q;
67-
let mut h = BoxedUint::one().widen(l);
67+
let mut h = BoxedUint::one().resize(l);
6868
let g = loop {
6969
let params = BoxedMontyParams::new_vartime(p.clone());
7070
let form = BoxedMontyForm::new(h.clone(), params);
@@ -79,7 +79,7 @@ pub fn common<R: CryptoRng + ?Sized>(
7979
h += BoxedUint::one();
8080
};
8181

82-
let q = NonZero::new(q.shorten(n)).expect("[bug] q_min(2^N-1) < q < q_max(2^N), Q is non zero");
82+
let q = q.resize(n);
8383

8484
(p, q, g)
8585
}

dsa/src/generate/secret_number.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use crate::{Components, signing_key::SigningKey};
66
use alloc::vec;
77
use core::cmp::min;
8-
use crypto_bigint::{BoxedUint, NonZero, RandomBits};
8+
use crypto_bigint::{BoxedUint, NonZero, RandomBits, Resize};
99
use digest::{Digest, FixedOutputReset, core_api::BlockSizeUser};
1010
use signature::rand_core::TryCryptoRng;
1111
use zeroize::Zeroizing;
@@ -68,14 +68,14 @@ pub fn secret_number<R: TryCryptoRng + ?Sized>(
6868
) -> Result<Option<(BoxedUint, BoxedUint)>, signature::Error> {
6969
let q = components.q();
7070
let n = q.bits();
71-
let q = q.widen(n + 64);
71+
let q = q.resize(n + 64);
7272
let q = &q;
7373

7474
// Attempt to try a fitting secret number
7575
// Give up after 4096 tries
7676
for _ in 0..4096 {
7777
let c = BoxedUint::try_random_bits(rng, n + 64).map_err(|_| signature::Error::new())?;
78-
let rem = NonZero::new((&**q - &BoxedUint::one()).widen(c.bits_precision()))
78+
let rem = NonZero::new((&**q - &BoxedUint::one()).resize(c.bits_precision()))
7979
.expect("[bug] minimum size for q is to 2^(160 - 1)");
8080
let k = (c % rem) + BoxedUint::one();
8181

dsa/src/signing_key.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use core::{
88
fmt::{self, Debug},
99
};
1010
use crypto_bigint::{
11-
BoxedUint, NonZero,
11+
BoxedUint, NonZero, Resize,
1212
modular::{BoxedMontyForm, BoxedMontyParams},
1313
};
1414
use digest::{Digest, FixedOutputReset, core_api::BlockSizeUser};
@@ -104,18 +104,18 @@ impl SigningKey {
104104

105105
debug_assert_eq!(key_size.n_aligned(), q.bits_precision());
106106

107-
let x = x.widen(p.bits_precision());
107+
let x = x.resize(p.bits_precision());
108108
let x = &x;
109109

110-
let k = k.widen(p.bits_precision());
111-
let inv_k = inv_k.widen(p.bits_precision());
110+
let k = k.resize(p.bits_precision());
111+
let inv_k = inv_k.resize(p.bits_precision());
112112

113113
let params = BoxedMontyParams::new(p.clone());
114114
let form = BoxedMontyForm::new((**g).clone(), params);
115-
let r = form.pow(&k).retrieve() % q.widen(p.bits_precision());
115+
let r = form.pow(&k).retrieve() % q.resize(p.bits_precision());
116116
debug_assert_eq!(key_size.l_aligned(), r.bits_precision());
117117

118-
let r_short = r.shorten(key_size.n_aligned());
118+
let r_short = r.clone().resize(key_size.n_aligned());
119119
let r_short = NonZero::new(r_short)
120120
.expect("[bug] invalid value of k used here, the secret number computed was invalid");
121121
let r = NonZero::new(r)
@@ -128,8 +128,8 @@ impl SigningKey {
128128
let z = BoxedUint::from_be_slice(&hash[..z_len], z_len as u32 * 8)
129129
.expect("invariant violation");
130130

131-
let s = inv_k.mul_mod(&(z + &**x * &*r), &q.widen(key_size.l_aligned()));
132-
let s = s.shorten(key_size.n_aligned());
131+
let s = inv_k.mul_mod(&(z + &**x * &*r), &q.resize(key_size.l_aligned()));
132+
let s = s.resize(key_size.n_aligned());
133133
let s = NonZero::new(s)
134134
.expect("[bug] invalid value of k used here, the secret number computed was invalid");
135135

dsa/src/verifying_key.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use crate::{Components, OID, Signature, two};
66
use core::cmp::min;
77
use crypto_bigint::{
8-
BoxedUint, NonZero,
8+
BoxedUint, NonZero, Resize,
99
modular::{BoxedMontyForm, BoxedMontyParams},
1010
};
1111
use digest::Digest;
@@ -69,9 +69,9 @@ impl VerifyingKey {
6969
return Some(false);
7070
}
7171

72-
let q = &q.widen(p.bits_precision());
73-
let r = &r.widen(p.bits_precision());
74-
let s = &s.widen(p.bits_precision());
72+
let q = &q.resize(p.bits_precision());
73+
let r = &r.resize(p.bits_precision());
74+
let s = &s.resize(p.bits_precision());
7575

7676
let w: BoxedUint = Option::from(s.inv_mod(q))?;
7777

@@ -82,10 +82,10 @@ impl VerifyingKey {
8282
let z = BoxedUint::from_be_slice(&hash[..z_len], z_len as u32 * 8)
8383
.expect("invariant violation");
8484

85-
let z = z.widen(p.bits_precision());
86-
let w = w.widen(q.bits_precision());
85+
let z = z.resize(p.bits_precision());
86+
let w = w.resize(q.bits_precision());
8787

88-
let u1 = (&z * &w) % q.widen(p.bits_precision());
88+
let u1 = (&z * &w) % q.resize(p.bits_precision());
8989
let u2 = r.mul_mod(&w, q);
9090

9191
let p1_params = BoxedMontyParams::new(p.clone());
@@ -97,9 +97,9 @@ impl VerifyingKey {
9797
let v1 = g_form.pow(&u1).retrieve();
9898
let v2 = y_form.pow(&u2).retrieve();
9999
let v3 = v1 * v2;
100-
let p = p.widen(v3.bits_precision());
101-
let q = q.widen(v3.bits_precision());
102-
let v4 = v3 % NonZero::new(p).expect("[bug] p is an odd number and can't be zero");
100+
let p = p.resize(v3.bits_precision());
101+
let q = q.resize(v3.bits_precision());
102+
let v4 = v3 % p.as_nz_ref();
103103
let v = v4 % q;
104104

105105
Some(v == **r)

lms/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ rand = "0.9.0"
1818
sha2 = "=0.11.0-pre.5"
1919
static_assertions = "1.1.0"
2020
rand_core = "0.9.0"
21-
signature = { version = "=3.0.0-pre", features = ["digest", "std", "rand_core"] }
21+
signature = { version = "=3.0.0-pre", features = ["alloc", "digest", "rand_core"] }
2222
typenum = { version = "1.17.0", features = ["const-generics"] }
2323
zeroize = "1.8.1"
2424

0 commit comments

Comments
 (0)