Skip to content

Commit d85cf80

Browse files
authored
Bump ecdsa crate dependency to v0.13 (#467)
1 parent af25e19 commit d85cf80

File tree

10 files changed

+116
-97
lines changed

10 files changed

+116
-97
lines changed

.github/workflows/k256.yml

+34-35
Original file line numberDiff line numberDiff line change
@@ -100,38 +100,37 @@ jobs:
100100
- run: cargo test --release --target ${{ matrix.target }}
101101
- run: cargo test --release --target ${{ matrix.target }} --all-features
102102

103-
# TODO(tarcieri): re-enable when new `elliptic-curve` and `ecdsa` crates are released
104-
# cross:
105-
# strategy:
106-
# matrix:
107-
# include:
108-
# # ARM32
109-
# - target: armv7-unknown-linux-gnueabihf
110-
# rust: 1.56.0 # MSRV
111-
# - target: armv7-unknown-linux-gnueabihf
112-
# rust: stable
113-
#
114-
# # ARM64
115-
# - target: aarch64-unknown-linux-gnu
116-
# rust: 1.56.0 # MSRV
117-
# - target: aarch64-unknown-linux-gnu
118-
# rust: stable
119-
#
120-
# # PPC32
121-
# - target: powerpc-unknown-linux-gnu
122-
# rust: 1.56.0 # MSRV
123-
# - target: powerpc-unknown-linux-gnu
124-
# rust: stable
125-
#
126-
# runs-on: ubuntu-latest
127-
# steps:
128-
# - uses: actions/checkout@v2
129-
# - run: ${{ matrix.deps }}
130-
# - uses: actions-rs/toolchain@v1
131-
# with:
132-
# profile: minimal
133-
# toolchain: ${{ matrix.rust }}
134-
# target: ${{ matrix.target }}
135-
# override: true
136-
# - run: cargo install cross
137-
# - run: cross test --release --target ${{ matrix.target }} --all-features
103+
cross:
104+
strategy:
105+
matrix:
106+
include:
107+
# ARM32
108+
- target: armv7-unknown-linux-gnueabihf
109+
rust: 1.56.0 # MSRV
110+
- target: armv7-unknown-linux-gnueabihf
111+
rust: stable
112+
113+
# ARM64
114+
- target: aarch64-unknown-linux-gnu
115+
rust: 1.56.0 # MSRV
116+
- target: aarch64-unknown-linux-gnu
117+
rust: stable
118+
119+
# PPC32
120+
- target: powerpc-unknown-linux-gnu
121+
rust: 1.56.0 # MSRV
122+
- target: powerpc-unknown-linux-gnu
123+
rust: stable
124+
125+
runs-on: ubuntu-latest
126+
steps:
127+
- uses: actions/checkout@v2
128+
- run: ${{ matrix.deps }}
129+
- uses: actions-rs/toolchain@v1
130+
with:
131+
profile: minimal
132+
toolchain: ${{ matrix.rust }}
133+
target: ${{ matrix.target }}
134+
override: true
135+
- run: cargo install cross
136+
- run: cross test --release --target ${{ matrix.target }} --all-features

.github/workflows/p256.yml

+34-35
Original file line numberDiff line numberDiff line change
@@ -81,38 +81,37 @@ jobs:
8181
- run: cargo test --release --target ${{ matrix.target }}
8282
- run: cargo test --release --target ${{ matrix.target }} --all-features
8383

84-
# TODO(tarcieri): re-enable when new `elliptic-curve` and `ecdsa` crates are released
85-
# cross:
86-
# strategy:
87-
# matrix:
88-
# include:
89-
# # ARM32
90-
# - target: armv7-unknown-linux-gnueabihf
91-
# rust: 1.56.0 # MSRV
92-
# - target: armv7-unknown-linux-gnueabihf
93-
# rust: stable
94-
#
95-
# # ARM64
96-
# - target: aarch64-unknown-linux-gnu
97-
# rust: 1.56.0 # MSRV
98-
# - target: aarch64-unknown-linux-gnu
99-
# rust: stable
100-
#
101-
# # PPC32
102-
# - target: powerpc-unknown-linux-gnu
103-
# rust: 1.56.0 # MSRV
104-
# - target: powerpc-unknown-linux-gnu
105-
# rust: stable
106-
#
107-
# runs-on: ubuntu-latest
108-
# steps:
109-
# - uses: actions/checkout@v2
110-
# - run: ${{ matrix.deps }}
111-
# - uses: actions-rs/toolchain@v1
112-
# with:
113-
# profile: minimal
114-
# toolchain: ${{ matrix.rust }}
115-
# target: ${{ matrix.target }}
116-
# override: true
117-
# - run: cargo install cross
118-
# - run: cross test --release --target ${{ matrix.target }} --all-features
84+
cross:
85+
strategy:
86+
matrix:
87+
include:
88+
# ARM32
89+
- target: armv7-unknown-linux-gnueabihf
90+
rust: 1.56.0 # MSRV
91+
- target: armv7-unknown-linux-gnueabihf
92+
rust: stable
93+
94+
# ARM64
95+
- target: aarch64-unknown-linux-gnu
96+
rust: 1.56.0 # MSRV
97+
- target: aarch64-unknown-linux-gnu
98+
rust: stable
99+
100+
# PPC32
101+
- target: powerpc-unknown-linux-gnu
102+
rust: 1.56.0 # MSRV
103+
- target: powerpc-unknown-linux-gnu
104+
rust: stable
105+
106+
runs-on: ubuntu-latest
107+
steps:
108+
- uses: actions/checkout@v2
109+
- run: ${{ matrix.deps }}
110+
- uses: actions-rs/toolchain@v1
111+
with:
112+
profile: minimal
113+
toolchain: ${{ matrix.rust }}
114+
target: ${{ matrix.target }}
115+
override: true
116+
- run: cargo install cross
117+
- run: cross test --release --target ${{ matrix.target }} --all-features

Cargo.lock

+17-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,3 @@ members = [
77
"p256",
88
"p384",
99
]
10-
11-
[patch.crates-io]
12-
ecdsa = { git = "https://github.com/RustCrypto/signatures.git" }

bp256/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ elliptic-curve = { version = "0.11", default-features = false, features = ["hazm
1717
sec1 = { version = "0.2", default-features = false }
1818

1919
# optional dependencies
20-
ecdsa = { version = "=0.13.0-pre", optional = true, default-features = false, features = ["der"] }
20+
ecdsa = { version = "0.13", optional = true, default-features = false, features = ["der"] }
2121
sha2 = { version = "0.9", optional = true, default-features = false }
2222

2323
[features]

bp384/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ elliptic-curve = { version = "0.11", default-features = false, features = ["hazm
1717
sec1 = { version = "0.2", default-features = false }
1818

1919
# optional dependencies
20-
ecdsa = { version = "=0.13.0-pre", optional = true, default-features = false, features = ["der"] }
20+
ecdsa = { version = "0.13", optional = true, default-features = false, features = ["der"] }
2121
sha2 = { version = "0.9", optional = true, default-features = false }
2222

2323
[features]

k256/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ elliptic-curve = { version = "0.11", default-features = false, features = ["hazm
2323
sec1 = { version = "0.2", default-features = false }
2424

2525
# optional dependencies
26-
ecdsa-core = { version = "=0.13.0-pre", package = "ecdsa", optional = true, default-features = false, features = ["der"] }
26+
ecdsa-core = { version = "0.13", package = "ecdsa", optional = true, default-features = false, features = ["der"] }
2727
hex-literal = { version = "0.3", optional = true }
2828
sha2 = { version = "0.9", optional = true, default-features = false }
2929
sha3 = { version = "0.9", optional = true, default-features = false }
3030

3131
[dev-dependencies]
3232
blobby = "0.3"
3333
criterion = "0.3"
34-
ecdsa-core = { version = "=0.13.0-pre", package = "ecdsa", default-features = false, features = ["dev"] }
34+
ecdsa-core = { version = "0.13", package = "ecdsa", default-features = false, features = ["dev"] }
3535
hex-literal = "0.3"
3636
num-bigint = "0.4"
3737
num-traits = "0.2"

k256/src/ecdsa/sign.rs

+24-12
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ use elliptic_curve::{
1919
ops::{Invert, Reduce},
2020
rand_core::{CryptoRng, RngCore},
2121
subtle::{Choice, ConstantTimeEq},
22-
zeroize::Zeroize,
23-
IsHigh,
22+
zeroize::{Zeroize, Zeroizing},
23+
Curve, IsHigh, PrimeField, ScalarCore,
2424
};
2525

2626
#[cfg(any(feature = "keccak256", feature = "sha256"))]
@@ -107,12 +107,18 @@ where
107107
D: BlockInput + FixedOutput<OutputSize = U32> + Clone + Default + Reset + Update,
108108
{
109109
fn try_sign_digest(&self, msg_digest: D) -> Result<recoverable::Signature, Error> {
110-
let ephemeral_scalar = rfc6979::generate_k(&self.inner, msg_digest.clone(), &[]);
110+
let x = Zeroizing::new(ScalarCore::from(self.inner));
111111
let msg_scalar = Scalar::from_be_bytes_reduced(msg_digest.finalize_fixed());
112-
let (signature, recid) = self
113-
.inner
114-
.try_sign_prehashed(**ephemeral_scalar, msg_scalar)?;
115-
112+
let k = Zeroizing::new(
113+
NonZeroScalar::from_uint(*rfc6979::generate_k::<D, _>(
114+
x.as_uint(),
115+
&Secp256k1::ORDER,
116+
&msg_scalar.to_repr(),
117+
&[],
118+
))
119+
.unwrap(),
120+
);
121+
let (signature, recid) = self.inner.try_sign_prehashed(**k, msg_scalar)?;
116122
let recoverable_id = recid.ok_or_else(Error::new)?.try_into()?;
117123
recoverable::Signature::new(&signature, recoverable_id)
118124
}
@@ -144,12 +150,18 @@ where
144150
let mut added_entropy = FieldBytes::default();
145151
rng.fill_bytes(&mut added_entropy);
146152

147-
let ephemeral_scalar = rfc6979::generate_k(&self.inner, msg_digest.clone(), &added_entropy);
153+
let x = Zeroizing::new(ScalarCore::from(self.inner));
148154
let msg_scalar = Scalar::from_be_bytes_reduced(msg_digest.finalize_fixed());
149-
let (signature, recid) = self
150-
.inner
151-
.try_sign_prehashed(**ephemeral_scalar, msg_scalar)?;
152-
155+
let k = Zeroizing::new(
156+
NonZeroScalar::from_uint(*rfc6979::generate_k::<D, _>(
157+
x.as_uint(),
158+
&Secp256k1::ORDER,
159+
&msg_scalar.to_repr(),
160+
&added_entropy,
161+
))
162+
.unwrap(),
163+
);
164+
let (signature, recid) = self.inner.try_sign_prehashed(**k, msg_scalar)?;
153165
let recoverable_id = recid.ok_or_else(Error::new)?.try_into()?;
154166
recoverable::Signature::new(&signature, recoverable_id)
155167
}

p256/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ elliptic-curve = { version = "0.11", default-features = false, features = ["hazm
2121
sec1 = { version = "0.2", default-features = false }
2222

2323
# optional dependencies
24-
ecdsa-core = { version = "=0.13.0-pre", package = "ecdsa", optional = true, default-features = false, features = ["der"] }
24+
ecdsa-core = { version = "0.13", package = "ecdsa", optional = true, default-features = false, features = ["der"] }
2525
hex-literal = { version = "0.3", optional = true }
2626
sha2 = { version = "0.9", optional = true, default-features = false }
2727

2828
[dev-dependencies]
2929
blobby = "0.3"
30-
ecdsa-core = { version = "=0.13.0-pre", package = "ecdsa", default-features = false, features = ["dev"] }
30+
ecdsa-core = { version = "0.13", package = "ecdsa", default-features = false, features = ["dev"] }
3131
hex-literal = "0.3"
3232
proptest = "1.0"
3333
rand_core = { version = "0.6", features = ["getrandom"] }

p384/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ edition = "2021"
1313
rust-version = "1.56"
1414

1515
[dependencies]
16-
ecdsa = { version = "=0.13.0-pre", optional = true, default-features = false, features = ["der"] }
16+
ecdsa = { version = "0.13", optional = true, default-features = false, features = ["der"] }
1717
elliptic-curve = { version = "0.11", default-features = false, features = ["hazmat", "sec1"] }
1818
sec1 = { version = "0.2", default-features = false }
1919
sha2 = { version = "0.9", optional = true, default-features = false }

0 commit comments

Comments
 (0)