x509_cert/ext/pkix/
authkeyid.rs1use super::name::GeneralNames;
2use crate::serial_number::SerialNumber;
3
4use const_oid::db::rfc5280::ID_CE_AUTHORITY_KEY_IDENTIFIER;
5use const_oid::{AssociatedOid, ObjectIdentifier};
6use der::asn1::OctetString;
7use der::Sequence;
8
9#[derive(Clone, Debug, Eq, PartialEq, Sequence, Default)]
23#[allow(missing_docs)]
24pub struct AuthorityKeyIdentifier {
25 #[asn1(context_specific = "0", tag_mode = "IMPLICIT", optional = "true")]
26 pub key_identifier: Option<OctetString>,
27
28 #[asn1(context_specific = "1", tag_mode = "IMPLICIT", optional = "true")]
29 pub authority_cert_issuer: Option<GeneralNames>,
30
31 #[asn1(context_specific = "2", tag_mode = "IMPLICIT", optional = "true")]
32 pub authority_cert_serial_number: Option<SerialNumber>,
33}
34
35impl AssociatedOid for AuthorityKeyIdentifier {
36 const OID: ObjectIdentifier = ID_CE_AUTHORITY_KEY_IDENTIFIER;
37}
38
39impl_extension!(AuthorityKeyIdentifier, critical = false);
40impl_key_identifier!(
41 AuthorityKeyIdentifier,
42 (|result: &[u8]| Ok(Self {
43 key_identifier: Some(OctetString::new(result)?),
44 ..Default::default()
45 }))
46);