use yasna::{ASN1Error, ASN1ErrorKind, ASN1Result, BERDecodable, BERReader, DERWriter, Tag};
use crate::{
types::{GeneralName, GeneralizedTime, OctetString, AlgorithmIdentifierOwned, DerAnyOwned},
DerWrite,
};
use super::gen::GeneralInfo;
derive_sequence! {
PkiHeader<'a> {
pvno: [_] UNTAGGED REQUIRED: Pvno,
sender: [_] UNTAGGED REQUIRED: GeneralName<'a>,
recipient: [_] UNTAGGED REQUIRED: GeneralName<'a>,
message_time: [0] EXPLICIT OPTIONAL: Option<GeneralizedTime>,
protection_alg: [1] EXPLICIT OPTIONAL: Option<AlgorithmIdentifierOwned>,
sender_kid: [2] EXPLICIT OPTIONAL: Option<OctetString>,
recip_kid: [3] EXPLICIT OPTIONAL: Option<OctetString>,
trans_id: [4] EXPLICIT OPTIONAL: Option<OctetString>,
sender_nonce: [5] EXPLICIT OPTIONAL: Option<OctetString>,
recip_nonce: [6] EXPLICIT OPTIONAL: Option<OctetString>,
free_text: [7] EXPLICIT OPTIONAL: Option<PkiFreeText>,
general_info: [8] EXPLICIT OPTIONAL: Option<GeneralInfo>,
}
}
define_version! {
Pvno {
Cmp1999 = 1,
Cmp2000 = 2,
}
}
pub type PkiFreeText = DerAnyOwned;