verdict_parser/x509/
alg_param.rs1use super::*;
2use vstd::prelude::*;
3
4verus! {
5
6asn1! {
7 seq DSAParam {
13 p: ASN1<BigInt> = ASN1(BigInt),
14 q: ASN1<BigInt> = ASN1(BigInt),
15 g: ASN1<BigInt> = ASN1(BigInt),
16 }
17
18 seq RSAParam {
26 modulus: ASN1<BigInt> = ASN1(BigInt),
27 exponent: ASN1<BigInt> = ASN1(BigInt),
28 }
29}
30
31oid_match_continuation! {
33 continuation AlgorithmParam {
34 oid(RSA_SIGNATURE_SHA256) => RSASignatureWithSHA256(OrdChoice(ASN1(Null), End)): OrdChoice<ASN1<Null>, End>,
43 oid(RSA_SIGNATURE_SHA384) => RSASignatureWithSHA384(OrdChoice(ASN1(Null), End)): OrdChoice<ASN1<Null>, End>,
44 oid(RSA_SIGNATURE_SHA512) => RSASignatureWithSHA512(OrdChoice(ASN1(Null), End)): OrdChoice<ASN1<Null>, End>,
45 oid(RSA_SIGNATURE_SHA224) => RSASignatureWithSHA224(OrdChoice(ASN1(Null), End)): OrdChoice<ASN1<Null>, End>,
46
47 oid(DSA_SIGNATURE) => DSASignature(OrdChoice(ASN1(DSAParam), End)): OrdChoice<ASN1<DSAParam>, End>,
48
49 oid(ECDSA_SIGNATURE_SHA224) => ECDSASignatureWithSHA224(End): End,
50 oid(ECDSA_SIGNATURE_SHA256) => ECDSASignatureWithSHA256(End): End,
51 oid(ECDSA_SIGNATURE_SHA384) => ECDSASignatureWithSHA384(End): End,
52 oid(ECDSA_SIGNATURE_SHA512) => ECDSASignatureWithSHA512(End): End,
53
54 oid(RSA_ENCRYPTION) => RSAEncryption(OrdChoice(ASN1(Null), End)): OrdChoice<ASN1<Null>, End>,
56 oid(EC_PUBLIC_KEY) => ECPublicKey(ASN1(ObjectIdentifier)): ASN1<ObjectIdentifier>, _ => Other(Tail): Tail,
59 }
60}
61
62impl<'a> PolyfillEq for DSAParamValue<'a> {
63 fn polyfill_eq(&self, other: &Self) -> bool {
64 self.p.polyfill_eq(&other.p) && self.q.polyfill_eq(&other.q) && self.g.polyfill_eq(&other.g)
65 }
66}
67
68impl<'a> PolyfillEq for AlgorithmParamValue<'a> {
69 fn polyfill_eq(&self, other: &Self) -> bool {
70 match (self, other) {
71 (AlgorithmParamValue::RSASignatureWithSHA256(a), AlgorithmParamValue::RSASignatureWithSHA256(b)) => a.polyfill_eq(b),
75 (AlgorithmParamValue::RSASignatureWithSHA384(a), AlgorithmParamValue::RSASignatureWithSHA384(b)) => a.polyfill_eq(b),
76 (AlgorithmParamValue::RSASignatureWithSHA512(a), AlgorithmParamValue::RSASignatureWithSHA512(b)) => a.polyfill_eq(b),
77 (AlgorithmParamValue::RSASignatureWithSHA224(a), AlgorithmParamValue::RSASignatureWithSHA224(b)) => a.polyfill_eq(b),
78 (AlgorithmParamValue::DSASignature(a), AlgorithmParamValue::DSASignature(b)) => a.polyfill_eq(b),
79 (AlgorithmParamValue::ECDSASignatureWithSHA224(a), AlgorithmParamValue::ECDSASignatureWithSHA224(b)) => a.polyfill_eq(b),
80 (AlgorithmParamValue::ECDSASignatureWithSHA256(a), AlgorithmParamValue::ECDSASignatureWithSHA256(b)) => a.polyfill_eq(b),
81 (AlgorithmParamValue::ECDSASignatureWithSHA384(a), AlgorithmParamValue::ECDSASignatureWithSHA384(b)) => a.polyfill_eq(b),
82 (AlgorithmParamValue::ECDSASignatureWithSHA512(a), AlgorithmParamValue::ECDSASignatureWithSHA512(b)) => a.polyfill_eq(b),
83 (AlgorithmParamValue::RSAEncryption(a), AlgorithmParamValue::RSAEncryption(b)) => a.polyfill_eq(b),
84 (AlgorithmParamValue::ECPublicKey(a), AlgorithmParamValue::ECPublicKey(b)) => a.polyfill_eq(b),
85 (AlgorithmParamValue::Other(a), AlgorithmParamValue::Other(b)) => a.polyfill_eq(b),
86 (AlgorithmParamValue::Unreachable, AlgorithmParamValue::Unreachable) => true,
87 _ => false,
88 }
89 }
90}
91
92}