Skip to content

Commit 7ab5c37

Browse files
committed
Convert signature to rsa signatures
Signed-off-by: Arthur Gautier <[email protected]>
1 parent 3996b36 commit 7ab5c37

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

tss-esapi/src/abstraction/signatures.rs

+34-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ use elliptic_curve::{
1111
FieldBytes, FieldBytesSize, PrimeCurve,
1212
};
1313

14+
#[cfg(all(feature = "rustcrypto", feature = "rsa"))]
15+
use crate::structures::Signature;
16+
1417
impl<C> TryFrom<EccSignature> for ecdsa::Signature<C>
1518
where
1619
C: PrimeCurve,
@@ -38,5 +41,34 @@ where
3841
}
3942
}
4043

41-
// TODO(baloo): impl TryFrom<RsaSignature> for rsa::pkcs1v15::Signature
42-
// TODO(baloo): impl TryFrom<RsaSignature> for rsa::pss::Signature
44+
// Note: this does not implement `TryFrom<RsaSignature>` because `RsaSignature` does not carry the
45+
// information whether the signatures was generated using PKCS#1v1.5 or PSS.
46+
#[cfg(all(feature = "rustcrypto", feature = "rsa"))]
47+
impl TryFrom<Signature> for rsa::pkcs1v15::Signature {
48+
type Error = Error;
49+
50+
fn try_from(signature: Signature) -> Result<Self> {
51+
let Signature::RsaSsa(signature) = signature else {
52+
return Err(Error::local_error(WrapperErrorKind::InvalidParam));
53+
};
54+
55+
Self::try_from(signature.signature().as_bytes())
56+
.map_err(|_| Error::local_error(WrapperErrorKind::InvalidParam))
57+
}
58+
}
59+
60+
// Note: this does not implement `TryFrom<RsaSignature>` because `RsaSignature` does not carry the
61+
// information whether the signatures was generated using PKCS#1v1.5 or PSS.
62+
#[cfg(all(feature = "rustcrypto", feature = "rsa"))]
63+
impl TryFrom<Signature> for rsa::pss::Signature {
64+
type Error = Error;
65+
66+
fn try_from(signature: Signature) -> Result<Self> {
67+
let Signature::RsaPss(signature) = signature else {
68+
return Err(Error::local_error(WrapperErrorKind::InvalidParam));
69+
};
70+
71+
Self::try_from(signature.signature().as_bytes())
72+
.map_err(|_| Error::local_error(WrapperErrorKind::InvalidParam))
73+
}
74+
}

0 commit comments

Comments
 (0)