1 use const_oid::{db::rfc5280::ID_CE_POLICY_CONSTRAINTS, AssociatedOid, ObjectIdentifier};
2 use der::Sequence;
3 
4 /// Policy constraints extension as defined in [RFC 5280 Section 4.2.1.11].
5 ///
6 /// ```text
7 /// PolicyConstraints ::= SEQUENCE {
8 ///      requireExplicitPolicy   [0]     SkipCerts OPTIONAL,
9 ///      inhibitPolicyMapping    [1]     SkipCerts OPTIONAL
10 /// }
11 /// ```
12 ///
13 /// [RFC 5280 Section 4.2.1.11]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.11
14 #[derive(Clone, Debug, Eq, PartialEq, Sequence)]
15 #[allow(missing_docs)]
16 pub struct PolicyConstraints {
17     #[asn1(context_specific = "0", optional = "true", tag_mode = "IMPLICIT")]
18     pub require_explicit_policy: Option<u32>,
19 
20     #[asn1(context_specific = "1", optional = "true", tag_mode = "IMPLICIT")]
21     pub inhibit_policy_mapping: Option<u32>,
22 }
23 
24 impl AssociatedOid for PolicyConstraints {
25     const OID: ObjectIdentifier = ID_CE_POLICY_CONSTRAINTS;
26 }
27 
28 impl_extension!(PolicyConstraints, critical = true);
29