1 use der::{Sequence, ValueOrd}; 2 3 use super::DirectoryString; 4 5 /// EDIPartyName as defined in [RFC 5280 Section 4.2.1.6]. 6 /// 7 /// ```text 8 /// EDIPartyName ::= SEQUENCE { 9 /// nameAssigner [0] DirectoryString OPTIONAL, 10 /// partyName [1] DirectoryString 11 /// } 12 /// ``` 13 /// 14 /// Note that although the module uses `IMPLICIT` tagging, these tags are 15 /// `EXPLICIT` because of `X.680-2015 31.2.7 (c)`: 16 /// 17 /// ```text 18 /// c) the "Tag Type" alternative is used and the value of "TagDefault" for 19 /// the module is IMPLICIT TAGS or AUTOMATIC TAGS, but the type defined by 20 /// "Type" is an untagged choice type, an untagged open type, or an untagged 21 /// "DummyReference" (see Rec. ITU-T X.683 | ISO/IEC 8824-4, 8.3). 22 /// ``` 23 /// 24 /// See [this OpenSSL bug] for more details. 25 /// 26 /// [this OpenSSL bug]: https://github.com/openssl/openssl/issues/6859 27 /// [RFC 5280 Section 4.2.1.6]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.6 28 #[derive(Clone, Debug, Eq, PartialEq, Sequence, ValueOrd)] 29 #[allow(missing_docs)] 30 pub struct EdiPartyName { 31 #[asn1(context_specific = "0", tag_mode = "EXPLICIT", optional = "true")] 32 pub name_assigner: Option<DirectoryString>, 33 34 #[asn1(context_specific = "1", tag_mode = "EXPLICIT")] 35 pub party_name: DirectoryString, 36 } 37