x509_cert/ext/pkix/constraints/
policy.rs

1use const_oid::{db::rfc5280::ID_CE_POLICY_CONSTRAINTS, AssociatedOid, ObjectIdentifier};
2use 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)]
16pub 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
24impl AssociatedOid for PolicyConstraints {
25    const OID: ObjectIdentifier = ID_CE_POLICY_CONSTRAINTS;
26}
27
28impl_extension!(PolicyConstraints, critical = true);