Skip to content

Commit 38bc626

Browse files
committed
ecdsa: use blanket impl from signature 3
1 parent 646fa34 commit 38bc626

File tree

10 files changed

+24
-139
lines changed

10 files changed

+24
-139
lines changed

Cargo.lock

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

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,4 @@ slh-dsa = { path = "./slh-dsa" }
3434
# https://github.com/RustCrypto/traits/pull/1774
3535
# https://github.com/RustCrypto/traits/pull/1822
3636
elliptic-curve = { git = "https://github.com/RustCrypto/traits.git" }
37+
signature = { git = "https://github.com/RustCrypto/traits.git", branch = "signature/blanket-signature-for-digestsignature-impl" }

ecdsa/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ rust-version = "1.85"
1818

1919
[dependencies]
2020
elliptic-curve = { version = "0.14.0-rc.1", default-features = false, features = ["sec1"] }
21-
signature = { version = "=2.3.0-pre.7", default-features = false, features = ["rand_core"] }
21+
signature = { version = "=3.0.0-pre", default-features = false, features = ["rand_core"] }
2222

2323
# optional dependencies
2424
der = { version = "0.8.0-rc.1", optional = true }

ecdsa/src/recovery.rs

+1-13
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use {
77
crate::{SigningKey, hazmat::sign_prehashed_rfc6979},
88
elliptic_curve::{FieldBytes, subtle::CtOption},
99
signature::{
10-
DigestSigner, RandomizedDigestSigner, Signer,
10+
DigestSigner, RandomizedDigestSigner,
1111
digest::FixedOutput,
1212
hazmat::{PrehashSigner, RandomizedPrehashSigner},
1313
rand_core::TryCryptoRng,
@@ -275,18 +275,6 @@ where
275275
}
276276
}
277277

278-
#[cfg(feature = "signing")]
279-
impl<C> Signer<(Signature<C>, RecoveryId)> for SigningKey<C>
280-
where
281-
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
282-
Scalar<C>: Invert<Output = CtOption<Scalar<C>>>,
283-
SignatureSize<C>: ArraySize,
284-
{
285-
fn try_sign(&self, msg: &[u8]) -> Result<(Signature<C>, RecoveryId)> {
286-
self.sign_recoverable(msg)
287-
}
288-
}
289-
290278
#[cfg(feature = "verifying")]
291279
impl<C> VerifyingKey<C>
292280
where

ecdsa/src/signing.rs

+1-84
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use elliptic_curve::{
1515
zeroize::{Zeroize, ZeroizeOnDrop},
1616
};
1717
use signature::{
18-
DigestSigner, RandomizedDigestSigner, RandomizedSigner, Signer,
18+
DigestSigner, RandomizedDigestSigner, Signer,
1919
hazmat::{PrehashSigner, RandomizedPrehashSigner},
2020
rand_core::{CryptoRng, TryCryptoRng},
2121
};
@@ -165,21 +165,6 @@ where
165165
}
166166
}
167167

168-
/// Sign message using a deterministic ephemeral scalar (`k`)
169-
/// computed using the algorithm described in [RFC6979 § 3.2].
170-
///
171-
/// [RFC6979 § 3.2]: https://tools.ietf.org/html/rfc6979#section-3
172-
impl<C> Signer<Signature<C>> for SigningKey<C>
173-
where
174-
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
175-
Scalar<C>: Invert<Output = CtOption<Scalar<C>>>,
176-
SignatureSize<C>: ArraySize,
177-
{
178-
fn try_sign(&self, msg: &[u8]) -> Result<Signature<C>> {
179-
self.try_sign_digest(C::Digest::new_with_prefix(msg))
180-
}
181-
}
182-
183168
impl<C, D> RandomizedDigestSigner<D, Signature<C>> for SigningKey<C>
184169
where
185170
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
@@ -214,22 +199,6 @@ where
214199
}
215200
}
216201

217-
impl<C> RandomizedSigner<Signature<C>> for SigningKey<C>
218-
where
219-
Self: RandomizedDigestSigner<C::Digest, Signature<C>>,
220-
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
221-
Scalar<C>: Invert<Output = CtOption<Scalar<C>>>,
222-
SignatureSize<C>: ArraySize,
223-
{
224-
fn try_sign_with_rng<R: TryCryptoRng + ?Sized>(
225-
&self,
226-
rng: &mut R,
227-
msg: &[u8],
228-
) -> Result<Signature<C>> {
229-
self.try_sign_digest_with_rng(rng, C::Digest::new_with_prefix(msg))
230-
}
231-
}
232-
233202
impl<C, D> DigestSigner<D, SignatureWithOid<C>> for SigningKey<C>
234203
where
235204
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
@@ -270,40 +239,6 @@ where
270239
}
271240
}
272241

273-
#[cfg(feature = "der")]
274-
impl<C> Signer<der::Signature<C>> for SigningKey<C>
275-
where
276-
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
277-
Scalar<C>: Invert<Output = CtOption<Scalar<C>>>,
278-
SignatureSize<C>: ArraySize,
279-
der::MaxSize<C>: ArraySize,
280-
<FieldBytesSize<C> as Add>::Output: Add<der::MaxOverhead> + ArraySize,
281-
{
282-
fn try_sign(&self, msg: &[u8]) -> Result<der::Signature<C>> {
283-
Signer::<Signature<C>>::try_sign(self, msg).map(Into::into)
284-
}
285-
}
286-
287-
#[cfg(feature = "der")]
288-
impl<C, D> RandomizedDigestSigner<D, der::Signature<C>> for SigningKey<C>
289-
where
290-
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
291-
D: Digest + FixedOutput,
292-
Scalar<C>: Invert<Output = CtOption<Scalar<C>>>,
293-
SignatureSize<C>: ArraySize,
294-
der::MaxSize<C>: ArraySize,
295-
<FieldBytesSize<C> as Add>::Output: Add<der::MaxOverhead> + ArraySize,
296-
{
297-
fn try_sign_digest_with_rng<R: TryCryptoRng + ?Sized>(
298-
&self,
299-
rng: &mut R,
300-
msg_digest: D,
301-
) -> Result<der::Signature<C>> {
302-
RandomizedDigestSigner::<D, Signature<C>>::try_sign_digest_with_rng(self, rng, msg_digest)
303-
.map(Into::into)
304-
}
305-
}
306-
307242
#[cfg(feature = "der")]
308243
impl<C> RandomizedPrehashSigner<der::Signature<C>> for SigningKey<C>
309244
where
@@ -323,24 +258,6 @@ where
323258
}
324259
}
325260

326-
#[cfg(feature = "der")]
327-
impl<C> RandomizedSigner<der::Signature<C>> for SigningKey<C>
328-
where
329-
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
330-
Scalar<C>: Invert<Output = CtOption<Scalar<C>>>,
331-
SignatureSize<C>: ArraySize,
332-
der::MaxSize<C>: ArraySize,
333-
<FieldBytesSize<C> as Add>::Output: Add<der::MaxOverhead> + ArraySize,
334-
{
335-
fn try_sign_with_rng<R: TryCryptoRng + ?Sized>(
336-
&self,
337-
rng: &mut R,
338-
msg: &[u8],
339-
) -> Result<der::Signature<C>> {
340-
RandomizedSigner::<Signature<C>>::try_sign_with_rng(self, rng, msg).map(Into::into)
341-
}
342-
}
343-
344261
//
345262
// Other trait impls
346263
//

ecdsa/src/verifying.rs

-24
Original file line numberDiff line numberDiff line change
@@ -172,16 +172,6 @@ where
172172
}
173173
}
174174

175-
impl<C> Verifier<Signature<C>> for VerifyingKey<C>
176-
where
177-
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
178-
SignatureSize<C>: ArraySize,
179-
{
180-
fn verify(&self, msg: &[u8], signature: &Signature<C>) -> Result<()> {
181-
self.verify_digest(C::Digest::new_with_prefix(msg), signature)
182-
}
183-
}
184-
185175
#[cfg(feature = "sha2")]
186176
impl<C> Verifier<SignatureWithOid<C>> for VerifyingKey<C>
187177
where
@@ -228,20 +218,6 @@ where
228218
}
229219
}
230220

231-
#[cfg(feature = "der")]
232-
impl<C> Verifier<der::Signature<C>> for VerifyingKey<C>
233-
where
234-
C: EcdsaCurve + CurveArithmetic + DigestPrimitive,
235-
SignatureSize<C>: ArraySize,
236-
der::MaxSize<C>: ArraySize,
237-
<FieldBytesSize<C> as Add>::Output: Add<der::MaxOverhead> + ArraySize,
238-
{
239-
fn verify(&self, msg: &[u8], signature: &der::Signature<C>) -> Result<()> {
240-
let signature = Signature::<C>::try_from(signature.clone())?;
241-
Verifier::<Signature<C>>::verify(self, msg, &signature)
242-
}
243-
}
244-
245221
//
246222
// Other trait impls
247223
//

ed25519/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ edition = "2024"
1818
rust-version = "1.85"
1919

2020
[dependencies]
21-
# TODO(tarcieri): relax requirement back to `2` before next release
22-
signature = { version = "=2.3.0-pre.7", default-features = false }
21+
# TODO(tarcieri): relax requirement back to `3` before next release
22+
signature = { version = "=3.0.0-pre", default-features = false }
2323

2424
# optional dependencies
2525
pkcs8 = { version = "0.11.0-rc.2", optional = true }

ed448/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ keywords = ["crypto", "curve448", "ecc", "signature", "signing"]
1818
rust-version = "1.85"
1919

2020
[dependencies]
21-
# TODO(tarcieri): relax requirement back to `2` before next release
22-
signature = { version = "=2.3.0-pre.7", default-features = false }
21+
# TODO(tarcieri): relax requirement back to `3` before next release
22+
signature = { version = "=3.0.0-pre", default-features = false }
2323

2424
# optional dependencies
2525
pkcs8 = { version = "0.11.0-rc.1", optional = true }

lms/Cargo.toml

+1-1
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 = "=2.3.0-pre.7", features = ["digest", "std", "rand_core"] }
21+
signature = { version = "=3.0.0-pre", features = ["digest", "std", "rand_core"] }
2222
typenum = { version = "1.17.0", features = ["const-generics"] }
2323
zeroize = "1.8.1"
2424

slh-dsa/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ typenum = { version = "1.17.0", features = ["const-generics"] }
2121
sha3 = { version = "=0.11.0-pre.5", default-features = false }
2222
zerocopy = { version = "0.7.34", features = ["derive"] }
2323
rand_core = { version = "0.9.2" }
24-
signature = { version = "=2.3.0-pre.7", features = ["rand_core"] }
24+
signature = { version = "=3.0.0-pre", features = ["rand_core"] }
2525
hmac = "=0.13.0-pre.5"
2626
sha2 = { version = "=0.11.0-pre.5", default-features = false }
2727
digest = "=0.11.0-pre.10"

0 commit comments

Comments
 (0)