diff options
Diffstat (limited to 'src/anchor.rs')
-rw-r--r-- | src/anchor.rs | 48 |
1 files changed, 22 insertions, 26 deletions
diff --git a/src/anchor.rs b/src/anchor.rs index ad7ef08..bc3a2fb 100644 --- a/src/anchor.rs +++ b/src/anchor.rs @@ -4,26 +4,22 @@ use crate::ext::pkix::{certpolicy::CertificatePolicies, NameConstraints}; use crate::{ext::Extensions, name::Name}; use crate::{Certificate, TbsCertificate}; -use der::asn1::{OctetStringRef, Utf8StringRef}; +use alloc::string::String; +use der::asn1::OctetString; +use der::flagset::{flags, FlagSet}; use der::{Choice, Enumerated, Sequence}; -use flagset::{flags, FlagSet}; -use spki::SubjectPublicKeyInfo; +use spki::SubjectPublicKeyInfoOwned; /// Version identifier for TrustAnchorInfo -#[derive(Clone, Debug, Copy, PartialEq, Eq, Enumerated)] +#[derive(Clone, Debug, Default, Copy, PartialEq, Eq, Enumerated)] #[asn1(type = "INTEGER")] #[repr(u8)] pub enum Version { /// Version 1 (default) + #[default] V1 = 0, } -impl Default for Version { - fn default() -> Self { - Version::V1 - } -} - /// ```text /// TrustAnchorInfo ::= SEQUENCE { /// version TrustAnchorInfoVersion DEFAULT v1, @@ -41,25 +37,25 @@ impl Default for Version { /// ``` #[derive(Clone, Debug, PartialEq, Eq, Sequence)] #[allow(missing_docs)] -pub struct TrustAnchorInfo<'a> { +pub struct TrustAnchorInfo { #[asn1(default = "Default::default")] pub version: Version, - pub pub_key: SubjectPublicKeyInfo<'a>, + pub pub_key: SubjectPublicKeyInfoOwned, - pub key_id: OctetStringRef<'a>, + pub key_id: OctetString, #[asn1(optional = "true")] - pub ta_title: Option<Utf8StringRef<'a>>, + pub ta_title: Option<String>, #[asn1(optional = "true")] - pub cert_path: Option<CertPathControls<'a>>, + pub cert_path: Option<CertPathControls>, #[asn1(context_specific = "1", tag_mode = "EXPLICIT", optional = "true")] - pub extensions: Option<Extensions<'a>>, + pub extensions: Option<Extensions>, #[asn1(context_specific = "2", tag_mode = "IMPLICIT", optional = "true")] - pub ta_title_lang_tag: Option<Utf8StringRef<'a>>, + pub ta_title_lang_tag: Option<String>, } /// ```text @@ -74,20 +70,20 @@ pub struct TrustAnchorInfo<'a> { /// ``` #[derive(Clone, Debug, Eq, PartialEq, Sequence)] #[allow(missing_docs)] -pub struct CertPathControls<'a> { - pub ta_name: Name<'a>, +pub struct CertPathControls { + pub ta_name: Name, #[asn1(context_specific = "0", tag_mode = "IMPLICIT", optional = "true")] - pub certificate: Option<Certificate<'a>>, + pub certificate: Option<Certificate>, #[asn1(context_specific = "1", tag_mode = "IMPLICIT", optional = "true")] - pub policy_set: Option<CertificatePolicies<'a>>, + pub policy_set: Option<CertificatePolicies>, #[asn1(context_specific = "2", tag_mode = "IMPLICIT", optional = "true")] pub policy_flags: Option<CertPolicyFlags>, #[asn1(context_specific = "3", tag_mode = "IMPLICIT", optional = "true")] - pub name_constr: Option<NameConstraints<'a>>, + pub name_constr: Option<NameConstraints>, #[asn1(context_specific = "4", tag_mode = "IMPLICIT", optional = "true")] pub path_len_constraint: Option<u32>, @@ -128,12 +124,12 @@ pub type CertPolicyFlags = FlagSet<CertPolicies>; #[derive(Clone, Debug, PartialEq, Eq, Choice)] #[allow(clippy::large_enum_variant)] #[allow(missing_docs)] -pub enum TrustAnchorChoice<'a> { - Certificate(Certificate<'a>), +pub enum TrustAnchorChoice { + Certificate(Certificate), #[asn1(context_specific = "1", tag_mode = "EXPLICIT", constructed = "true")] - TbsCertificate(TbsCertificate<'a>), + TbsCertificate(TbsCertificate), #[asn1(context_specific = "2", tag_mode = "EXPLICIT", constructed = "true")] - TaInfo(TrustAnchorInfo<'a>), + TaInfo(TrustAnchorInfo), } |