use super::name::GeneralName; use alloc::vec::Vec; use const_oid::{ db::rfc5280::{ID_PE_AUTHORITY_INFO_ACCESS, ID_PE_SUBJECT_INFO_ACCESS}, AssociatedOid, }; use der::{asn1::ObjectIdentifier, Sequence, ValueOrd}; /// AuthorityInfoAccessSyntax as defined in [RFC 5280 Section 4.2.2.1]. /// /// ```text /// AuthorityInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription /// ``` /// /// [RFC 5280 Section 4.2.2.1]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.1 #[derive(Clone, Debug, Default, PartialEq, Eq)] pub struct AuthorityInfoAccessSyntax(pub Vec); impl AssociatedOid for AuthorityInfoAccessSyntax { const OID: ObjectIdentifier = ID_PE_AUTHORITY_INFO_ACCESS; } impl_newtype!(AuthorityInfoAccessSyntax, Vec); impl_extension!(AuthorityInfoAccessSyntax, critical = false); /// SubjectInfoAccessSyntax as defined in [RFC 5280 Section 4.2.2.2]. /// /// ```text /// SubjectInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription /// ``` /// /// [RFC 5280 Section 4.2.2.2]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.2 #[derive(Clone, Debug, Default, PartialEq, Eq)] pub struct SubjectInfoAccessSyntax(pub Vec); impl AssociatedOid for SubjectInfoAccessSyntax { const OID: ObjectIdentifier = ID_PE_SUBJECT_INFO_ACCESS; } impl_newtype!(SubjectInfoAccessSyntax, Vec); impl_extension!(SubjectInfoAccessSyntax, critical = false); /// AccessDescription as defined in [RFC 5280 Section 4.2.2.1]. /// /// ```text /// AccessDescription ::= SEQUENCE { /// accessMethod OBJECT IDENTIFIER, /// accessLocation GeneralName /// } /// ``` /// /// [RFC 5280 Section 4.2.2.1]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.1 #[derive(Clone, Debug, Eq, PartialEq, Sequence, ValueOrd)] #[allow(missing_docs)] pub struct AccessDescription { pub access_method: ObjectIdentifier, pub access_location: GeneralName, }