summaryrefslogtreecommitdiff
path: root/src/rust
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2023-05-05 16:19:29 -0400
committerGitHub <noreply@github.com>2023-05-05 15:19:29 -0500
commit10688d1ba27e0899812f2eb12be0d8a2a352ba85 (patch)
treeadde3d1b8af876c31b01a3c6ecaa8bcbf86763b6 /src/rust
parent141bcc588098773690c04917da654f1d475c4939 (diff)
downloadcryptography-10688d1ba27e0899812f2eb12be0d8a2a352ba85.tar.gz
Use defined_by for (EC)DSA signature AlgorithmIdentifiers (#8875)
Also fix a test that had an incorrect parameters for an OID. The test had deliberately been constructed to be invalid, but in a _different_ respect.
Diffstat (limited to 'src/rust')
-rw-r--r--src/rust/cryptography-x509/src/common.rs27
-rw-r--r--src/rust/src/x509/sign.rs36
2 files changed, 39 insertions, 24 deletions
diff --git a/src/rust/cryptography-x509/src/common.rs b/src/rust/cryptography-x509/src/common.rs
index 2a878db23..4dd83d926 100644
--- a/src/rust/cryptography-x509/src/common.rs
+++ b/src/rust/cryptography-x509/src/common.rs
@@ -26,6 +26,24 @@ pub enum AlgorithmParameters<'a> {
#[defined_by(oid::ED448_OID)]
Ed448,
+ #[defined_by(oid::ECDSA_WITH_SHA224_OID)]
+ EcDsaWithSha224,
+ #[defined_by(oid::ECDSA_WITH_SHA256_OID)]
+ EcDsaWithSha256,
+ #[defined_by(oid::ECDSA_WITH_SHA384_OID)]
+ EcDsaWithSha384,
+ #[defined_by(oid::ECDSA_WITH_SHA512_OID)]
+ EcDsaWithSha512,
+
+ #[defined_by(oid::ECDSA_WITH_SHA3_224_OID)]
+ EcDsaWithSha3_224,
+ #[defined_by(oid::ECDSA_WITH_SHA3_256_OID)]
+ EcDsaWithSha3_256,
+ #[defined_by(oid::ECDSA_WITH_SHA3_384_OID)]
+ EcDsaWithSha3_384,
+ #[defined_by(oid::ECDSA_WITH_SHA3_512_OID)]
+ EcDsaWithSha3_512,
+
#[defined_by(oid::RSA_WITH_SHA224_OID)]
RsaWithSha224(Option<asn1::Null>),
#[defined_by(oid::RSA_WITH_SHA256_OID)]
@@ -44,6 +62,15 @@ pub enum AlgorithmParameters<'a> {
#[defined_by(oid::RSA_WITH_SHA3_512_OID)]
RsaWithSha3_512(Option<asn1::Null>),
+ #[defined_by(oid::DSA_WITH_SHA224_OID)]
+ DsaWithSha224,
+ #[defined_by(oid::DSA_WITH_SHA256_OID)]
+ DsaWithSha256,
+ #[defined_by(oid::DSA_WITH_SHA384_OID)]
+ DsaWithSha384,
+ #[defined_by(oid::DSA_WITH_SHA512_OID)]
+ DsaWithSha512,
+
#[default]
Other(asn1::ObjectIdentifier, Option<asn1::Tlv<'a>>),
}
diff --git a/src/rust/src/x509/sign.rs b/src/rust/src/x509/sign.rs
index 07668621f..d30a27064 100644
--- a/src/rust/src/x509/sign.rs
+++ b/src/rust/src/x509/sign.rs
@@ -151,47 +151,35 @@ pub(crate) fn compute_signature_algorithm<'p>(
(KeyType::Ec, HashType::Sha224) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other((oid::ECDSA_WITH_SHA224_OID).clone(), None),
+ params: common::AlgorithmParameters::EcDsaWithSha224,
}),
(KeyType::Ec, HashType::Sha256) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other((oid::ECDSA_WITH_SHA256_OID).clone(), None),
+ params: common::AlgorithmParameters::EcDsaWithSha256,
}),
(KeyType::Ec, HashType::Sha384) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other((oid::ECDSA_WITH_SHA384_OID).clone(), None),
+ params: common::AlgorithmParameters::EcDsaWithSha384,
}),
(KeyType::Ec, HashType::Sha512) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other((oid::ECDSA_WITH_SHA512_OID).clone(), None),
+ params: common::AlgorithmParameters::EcDsaWithSha512,
}),
(KeyType::Ec, HashType::Sha3_224) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other(
- (oid::ECDSA_WITH_SHA3_224_OID).clone(),
- None,
- ),
+ params: common::AlgorithmParameters::EcDsaWithSha3_224,
}),
(KeyType::Ec, HashType::Sha3_256) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other(
- (oid::ECDSA_WITH_SHA3_256_OID).clone(),
- None,
- ),
+ params: common::AlgorithmParameters::EcDsaWithSha3_256,
}),
(KeyType::Ec, HashType::Sha3_384) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other(
- (oid::ECDSA_WITH_SHA3_384_OID).clone(),
- None,
- ),
+ params: common::AlgorithmParameters::EcDsaWithSha3_384,
}),
(KeyType::Ec, HashType::Sha3_512) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other(
- (oid::ECDSA_WITH_SHA3_512_OID).clone(),
- None,
- ),
+ params: common::AlgorithmParameters::EcDsaWithSha3_512,
}),
(KeyType::Rsa, HashType::Sha224) => Ok(common::AlgorithmIdentifier {
@@ -229,19 +217,19 @@ pub(crate) fn compute_signature_algorithm<'p>(
(KeyType::Dsa, HashType::Sha224) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other((oid::DSA_WITH_SHA224_OID).clone(), None),
+ params: common::AlgorithmParameters::DsaWithSha224,
}),
(KeyType::Dsa, HashType::Sha256) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other((oid::DSA_WITH_SHA256_OID).clone(), None),
+ params: common::AlgorithmParameters::DsaWithSha256,
}),
(KeyType::Dsa, HashType::Sha384) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other((oid::DSA_WITH_SHA384_OID).clone(), None),
+ params: common::AlgorithmParameters::DsaWithSha384,
}),
(KeyType::Dsa, HashType::Sha512) => Ok(common::AlgorithmIdentifier {
oid: asn1::DefinedByMarker::marker(),
- params: common::AlgorithmParameters::Other((oid::DSA_WITH_SHA512_OID).clone(), None),
+ params: common::AlgorithmParameters::DsaWithSha512,
}),
(
KeyType::Dsa,