Skip to content

Commit eaaea51

Browse files
committed
chore(deps): bump signature to 3.0.0-pre
1 parent cba7806 commit eaaea51

10 files changed

+247
-158
lines changed

Cargo.lock

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

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ subtle = { version = "2.6.1", default-features = false }
1919
digest = { version = "=0.11.0-pre.10", default-features = false, features = ["alloc", "oid"] }
2020
pkcs1 = { version = "0.8.0-rc.1", default-features = false, features = ["alloc", "pkcs8"] }
2121
pkcs8 = { version = "0.11.0-rc.2", default-features = false, features = ["alloc"] }
22-
signature = { version = "=2.3.0-pre.6", default-features = false, features = ["alloc", "digest", "rand_core"] }
22+
signature = { version = "=3.0.0-pre", default-features = false, features = ["alloc", "digest", "rand_core"] }
2323
spki = { version = "0.8.0-rc.1", default-features = false, features = ["alloc"] }
2424
zeroize = { version = "1.5", features = ["alloc"] }
2525
crypto-bigint = { version = "0.7.0-pre", default-features = false, features = ["zeroize", "alloc"] }
@@ -57,7 +57,7 @@ os_rng = ["rand_core/os_rng", "crypto-bigint/rand_core"]
5757
serde = ["dep:serde", "dep:serdect", "crypto-bigint/serde"]
5858
pem = ["pkcs1/pem", "pkcs8/pem"]
5959
pkcs5 = ["pkcs8/encryption"]
60-
std = ["digest/std", "pkcs1/std", "pkcs8/std", "rand_core/std", "signature/std", "crypto-bigint/rand"]
60+
std = ["digest/std", "pkcs1/std", "pkcs8/std", "rand_core/std", "crypto-bigint/rand"]
6161

6262

6363
[package.metadata.docs.rs]

src/pkcs1v15/signature.rs

+54-14
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22
33
use ::signature::SignatureEncoding;
44
use alloc::boxed::Box;
5-
use core::fmt::{Debug, Display, Formatter, LowerHex, UpperHex};
5+
use core::{
6+
fmt::{self, Debug, Display, Formatter, LowerHex, UpperHex},
7+
marker::PhantomData,
8+
};
69
use crypto_bigint::BoxedUint;
710

11+
use digest::Digest;
812
#[cfg(feature = "serde")]
913
use serdect::serde::{de, Deserialize, Serialize};
14+
use signature::PrehashSignature;
1015
use spki::{
1116
der::{asn1::BitString, Result as DerResult},
1217
SignatureBitStringEncoding,
@@ -15,22 +20,46 @@ use spki::{
1520
/// `RSASSA-PKCS1-v1_5` signatures as described in [RFC8017 § 8.2].
1621
///
1722
/// [RFC8017 § 8.2]: https://datatracker.ietf.org/doc/html/rfc8017#section-8.2
18-
#[derive(Debug, Clone, PartialEq, Eq)]
19-
pub struct Signature {
23+
#[derive(Eq)]
24+
pub struct Signature<D> {
2025
pub(super) inner: BoxedUint,
26+
_digest: PhantomData<D>,
27+
}
28+
29+
impl<D> Debug for Signature<D> {
30+
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
31+
f.debug_struct("Signature")
32+
.field("inner", &self.inner)
33+
.finish()
34+
}
2135
}
2236

23-
impl SignatureEncoding for Signature {
37+
impl<D> Clone for Signature<D> {
38+
fn clone(&self) -> Self {
39+
Self {
40+
inner: self.inner.clone(),
41+
_digest: PhantomData,
42+
}
43+
}
44+
}
45+
46+
impl<D> PartialEq for Signature<D> {
47+
fn eq(&self, other: &Self) -> bool {
48+
self.inner.eq(&other.inner)
49+
}
50+
}
51+
52+
impl<D> SignatureEncoding for Signature<D> {
2453
type Repr = Box<[u8]>;
2554
}
2655

27-
impl SignatureBitStringEncoding for Signature {
56+
impl<D> SignatureBitStringEncoding for Signature<D> {
2857
fn to_bitstring(&self) -> DerResult<BitString> {
2958
BitString::new(0, self.to_vec())
3059
}
3160
}
3261

33-
impl TryFrom<&[u8]> for Signature {
62+
impl<D> TryFrom<&[u8]> for Signature<D> {
3463
type Error = signature::Error;
3564

3665
fn try_from(bytes: &[u8]) -> signature::Result<Self> {
@@ -42,17 +71,20 @@ impl TryFrom<&[u8]> for Signature {
4271
#[cfg(not(feature = "std"))]
4372
let inner = inner.map_err(|_| signature::Error::new())?;
4473

45-
Ok(Self { inner })
74+
Ok(Self {
75+
inner,
76+
_digest: PhantomData,
77+
})
4678
}
4779
}
4880

49-
impl From<Signature> for Box<[u8]> {
50-
fn from(signature: Signature) -> Box<[u8]> {
81+
impl<D> From<Signature<D>> for Box<[u8]> {
82+
fn from(signature: Signature<D>) -> Box<[u8]> {
5183
signature.inner.to_be_bytes()
5284
}
5385
}
5486

55-
impl LowerHex for Signature {
87+
impl<D> LowerHex for Signature<D> {
5688
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
5789
for byte in self.to_bytes().iter() {
5890
write!(f, "{:02x}", byte)?;
@@ -61,7 +93,7 @@ impl LowerHex for Signature {
6193
}
6294
}
6395

64-
impl UpperHex for Signature {
96+
impl<D> UpperHex for Signature<D> {
6597
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
6698
for byte in self.to_bytes().iter() {
6799
write!(f, "{:02X}", byte)?;
@@ -70,14 +102,14 @@ impl UpperHex for Signature {
70102
}
71103
}
72104

73-
impl Display for Signature {
105+
impl<D> Display for Signature<D> {
74106
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
75107
write!(f, "{:X}", self)
76108
}
77109
}
78110

79111
#[cfg(feature = "serde")]
80-
impl Serialize for Signature {
112+
impl<D> Serialize for Signature<D> {
81113
fn serialize<S>(&self, serializer: S) -> core::result::Result<S::Ok, S::Error>
82114
where
83115
S: serdect::serde::Serializer,
@@ -87,7 +119,7 @@ impl Serialize for Signature {
87119
}
88120

89121
#[cfg(feature = "serde")]
90-
impl<'de> Deserialize<'de> for Signature {
122+
impl<'de, Di> Deserialize<'de> for Signature<Di> {
91123
fn deserialize<D>(deserializer: D) -> core::result::Result<Self, D::Error>
92124
where
93125
D: serdect::serde::Deserializer<'de>,
@@ -99,6 +131,13 @@ impl<'de> Deserialize<'de> for Signature {
99131
}
100132
}
101133

134+
impl<D> PrehashSignature for Signature<D>
135+
where
136+
D: Digest,
137+
{
138+
type Digest = D;
139+
}
140+
102141
#[cfg(test)]
103142
mod tests {
104143
#[test]
@@ -108,6 +147,7 @@ mod tests {
108147
use serde_test::{assert_tokens, Configure, Token};
109148
let signature = Signature {
110149
inner: BoxedUint::from(42u32),
150+
_digest: PhantomData::<()>,
111151
};
112152

113153
let tokens = [Token::Str("000000000000002a")];

src/pkcs1v15/signing_key.rs

+32-32
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use {
1818
};
1919

2020
use signature::{
21-
hazmat::PrehashSigner, DigestSigner, Keypair, RandomizedDigestSigner, RandomizedSigner, Signer,
21+
hazmat::PrehashSigner, DigestSigner, Keypair, RandomizedDigestSigner,
2222
};
2323
use zeroize::ZeroizeOnDrop;
2424

@@ -101,68 +101,68 @@ where
101101
// `*Signer` trait impls
102102
//
103103

104-
impl<D> DigestSigner<D, Signature> for SigningKey<D>
104+
impl<D> DigestSigner<D, Signature<D>> for SigningKey<D>
105105
where
106106
D: Digest,
107107
{
108-
fn try_sign_digest(&self, digest: D) -> signature::Result<Signature> {
108+
fn try_sign_digest(&self, digest: D) -> signature::Result<Signature<D>> {
109109
sign::<DummyRng>(None, &self.inner, &self.prefix, &digest.finalize())?
110110
.as_slice()
111111
.try_into()
112112
}
113113
}
114114

115-
impl<D> PrehashSigner<Signature> for SigningKey<D>
115+
impl<D> PrehashSigner<Signature<D>> for SigningKey<D>
116116
where
117117
D: Digest,
118118
{
119-
fn sign_prehash(&self, prehash: &[u8]) -> signature::Result<Signature> {
119+
fn sign_prehash(&self, prehash: &[u8]) -> signature::Result<Signature<D>> {
120120
sign::<DummyRng>(None, &self.inner, &self.prefix, prehash)?
121121
.as_slice()
122122
.try_into()
123123
}
124124
}
125125

126-
impl<D> RandomizedDigestSigner<D, Signature> for SigningKey<D>
126+
impl<D> RandomizedDigestSigner<D, Signature<D>> for SigningKey<D>
127127
where
128128
D: Digest,
129129
{
130130
fn try_sign_digest_with_rng<R: TryCryptoRng + ?Sized>(
131131
&self,
132132
rng: &mut R,
133133
digest: D,
134-
) -> signature::Result<Signature> {
134+
) -> signature::Result<Signature<D>> {
135135
sign(Some(rng), &self.inner, &self.prefix, &digest.finalize())?
136136
.as_slice()
137137
.try_into()
138138
}
139139
}
140140

141-
impl<D> RandomizedSigner<Signature> for SigningKey<D>
142-
where
143-
D: Digest,
144-
{
145-
fn try_sign_with_rng<R: TryCryptoRng + ?Sized>(
146-
&self,
147-
rng: &mut R,
148-
msg: &[u8],
149-
) -> signature::Result<Signature> {
150-
sign(Some(rng), &self.inner, &self.prefix, &D::digest(msg))?
151-
.as_slice()
152-
.try_into()
153-
}
154-
}
155-
156-
impl<D> Signer<Signature> for SigningKey<D>
157-
where
158-
D: Digest,
159-
{
160-
fn try_sign(&self, msg: &[u8]) -> signature::Result<Signature> {
161-
sign::<DummyRng>(None, &self.inner, &self.prefix, &D::digest(msg))?
162-
.as_slice()
163-
.try_into()
164-
}
165-
}
141+
//impl<D> RandomizedSigner<Signature<D>> for SigningKey<D>
142+
//where
143+
// D: Digest,
144+
//{
145+
// fn try_sign_with_rng<R: TryCryptoRng + ?Sized>(
146+
// &self,
147+
// rng: &mut R,
148+
// msg: &[u8],
149+
// ) -> signature::Result<Signature<D>> {
150+
// sign(Some(rng), &self.inner, &self.prefix, &D::digest(msg))?
151+
// .as_slice()
152+
// .try_into()
153+
// }
154+
//}
155+
156+
//impl<D> Signer<Signature> for SigningKey<D>
157+
//where
158+
// D: Digest,
159+
//{
160+
// fn try_sign(&self, msg: &[u8]) -> signature::Result<Signature> {
161+
// sign::<DummyRng>(None, &self.inner, &self.prefix, &D::digest(msg))?
162+
// .as_slice()
163+
// .try_into()
164+
// }
165+
//}
166166

167167
//
168168
// Other trait impls

src/pkcs1v15/verifying_key.rs

+19-19
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use {
1717
spki::DecodePublicKey,
1818
};
1919

20-
use signature::{hazmat::PrehashVerifier, DigestVerifier, Verifier};
20+
use signature::{hazmat::PrehashVerifier, DigestVerifier};
2121
use spki::{Document, EncodePublicKey};
2222

2323
/// Verifying key for `RSASSA-PKCS1-v1_5` signatures as described in [RFC8017 § 8.2].
@@ -75,11 +75,11 @@ where
7575
// `*Verifier` trait impls
7676
//
7777

78-
impl<D> DigestVerifier<D, Signature> for VerifyingKey<D>
78+
impl<D> DigestVerifier<D, Signature<D>> for VerifyingKey<D>
7979
where
8080
D: Digest,
8181
{
82-
fn verify_digest(&self, digest: D, signature: &Signature) -> signature::Result<()> {
82+
fn verify_digest(&self, digest: D, signature: &Signature<D>) -> signature::Result<()> {
8383
verify(
8484
&self.inner,
8585
&self.prefix,
@@ -90,29 +90,29 @@ where
9090
}
9191
}
9292

93-
impl<D> PrehashVerifier<Signature> for VerifyingKey<D>
93+
impl<D> PrehashVerifier<Signature<D>> for VerifyingKey<D>
9494
where
9595
D: Digest,
9696
{
97-
fn verify_prehash(&self, prehash: &[u8], signature: &Signature) -> signature::Result<()> {
97+
fn verify_prehash(&self, prehash: &[u8], signature: &Signature<D>) -> signature::Result<()> {
9898
verify(&self.inner, &self.prefix, prehash, &signature.inner).map_err(|e| e.into())
9999
}
100100
}
101101

102-
impl<D> Verifier<Signature> for VerifyingKey<D>
103-
where
104-
D: Digest,
105-
{
106-
fn verify(&self, msg: &[u8], signature: &Signature) -> signature::Result<()> {
107-
verify(
108-
&self.inner,
109-
&self.prefix.clone(),
110-
&D::digest(msg),
111-
&signature.inner,
112-
)
113-
.map_err(|e| e.into())
114-
}
115-
}
102+
//impl<D> Verifier<Signature<D>> for VerifyingKey<D>
103+
//where
104+
// D: Digest,
105+
//{
106+
// fn verify(&self, msg: &[u8], signature: &Signature<D>) -> signature::Result<()> {
107+
// verify(
108+
// &self.inner,
109+
// &self.prefix.clone(),
110+
// &D::digest(msg),
111+
// &signature.inner,
112+
// )
113+
// .map_err(|e| e.into())
114+
// }
115+
//}
116116

117117
//
118118
// Other trait impls

0 commit comments

Comments
 (0)