diff options
| author | Alex Gaynor <alex.gaynor@gmail.com> | 2023-05-05 16:19:29 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-05 15:19:29 -0500 |
| commit | 10688d1ba27e0899812f2eb12be0d8a2a352ba85 (patch) | |
| tree | adde3d1b8af876c31b01a3c6ecaa8bcbf86763b6 /src/rust | |
| parent | 141bcc588098773690c04917da654f1d475c4939 (diff) | |
| download | cryptography-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.rs | 27 | ||||
| -rw-r--r-- | src/rust/src/x509/sign.rs | 36 |
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, |
