1 use super::name::GeneralName; 2 3 use alloc::vec::Vec; 4 5 use const_oid::{ 6 db::rfc5280::{ID_PE_AUTHORITY_INFO_ACCESS, ID_PE_SUBJECT_INFO_ACCESS}, 7 AssociatedOid, 8 }; 9 use der::{asn1::ObjectIdentifier, Sequence, ValueOrd}; 10 11 /// AuthorityInfoAccessSyntax as defined in [RFC 5280 Section 4.2.2.1]. 12 /// 13 /// ```text 14 /// AuthorityInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription 15 /// ``` 16 /// 17 /// [RFC 5280 Section 4.2.2.1]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.1 18 #[derive(Clone, Debug, Default, PartialEq, Eq)] 19 pub struct AuthorityInfoAccessSyntax(pub Vec<AccessDescription>); 20 21 impl AssociatedOid for AuthorityInfoAccessSyntax { 22 const OID: ObjectIdentifier = ID_PE_AUTHORITY_INFO_ACCESS; 23 } 24 25 impl_newtype!(AuthorityInfoAccessSyntax, Vec<AccessDescription>); 26 impl_extension!(AuthorityInfoAccessSyntax, critical = false); 27 28 /// SubjectInfoAccessSyntax as defined in [RFC 5280 Section 4.2.2.2]. 29 /// 30 /// ```text 31 /// SubjectInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription 32 /// ``` 33 /// 34 /// [RFC 5280 Section 4.2.2.2]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.2 35 #[derive(Clone, Debug, Default, PartialEq, Eq)] 36 pub struct SubjectInfoAccessSyntax(pub Vec<AccessDescription>); 37 38 impl AssociatedOid for SubjectInfoAccessSyntax { 39 const OID: ObjectIdentifier = ID_PE_SUBJECT_INFO_ACCESS; 40 } 41 42 impl_newtype!(SubjectInfoAccessSyntax, Vec<AccessDescription>); 43 impl_extension!(SubjectInfoAccessSyntax, critical = false); 44 45 /// AccessDescription as defined in [RFC 5280 Section 4.2.2.1]. 46 /// 47 /// ```text 48 /// AccessDescription ::= SEQUENCE { 49 /// accessMethod OBJECT IDENTIFIER, 50 /// accessLocation GeneralName 51 /// } 52 /// ``` 53 /// 54 /// [RFC 5280 Section 4.2.2.1]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.1 55 #[derive(Clone, Debug, Eq, PartialEq, Sequence, ValueOrd)] 56 #[allow(missing_docs)] 57 pub struct AccessDescription { 58 pub access_method: ObjectIdentifier, 59 pub access_location: GeneralName, 60 } 61