use der::asn1::Null;
use der::Choice;
use crmf::request::CertReqMessages;
use x509_cert::request::CertReq;
use crate::ann::{CaKeyUpdAnnContent, CertAnnContent, CrlAnnContent, RevAnnContent};
use crate::certified_key_pair::KeyRecRepContent;
use crate::gen::{GenMsgContent, GenRepContent};
use crate::message::PkiMessages;
use crate::poll::PollRepContent;
use crate::pop::{PopoDecKeyChallContent, PopoDecKeyRespContent};
use crate::response::CertRepMessage;
use crate::rev::{RevRepContent, RevReqContent};
use crate::status::{CertConfirmContent, ErrorMsgContent};
#[derive(Clone, Debug, Eq, PartialEq, Choice)]
#[allow(missing_docs)]
pub enum PkiBody<'a> {
#[asn1(context_specific = "0", tag_mode = "EXPLICIT", constructed = "true")]
Ir(CertReqMessages),
#[asn1(context_specific = "1", tag_mode = "EXPLICIT", constructed = "true")]
Ip(CertRepMessage<'a>),
#[asn1(context_specific = "2", tag_mode = "EXPLICIT", constructed = "true")]
Cr(CertReqMessages),
#[asn1(context_specific = "3", tag_mode = "EXPLICIT", constructed = "true")]
Cp(CertRepMessage<'a>),
#[asn1(context_specific = "4", tag_mode = "EXPLICIT", constructed = "true")]
P10cr(CertReq),
#[asn1(context_specific = "5", tag_mode = "EXPLICIT", constructed = "true")]
Popdecc(PopoDecKeyChallContent),
#[asn1(context_specific = "6", tag_mode = "EXPLICIT", constructed = "true")]
Popdecr(PopoDecKeyRespContent<'a>),
#[asn1(context_specific = "7", tag_mode = "EXPLICIT", constructed = "true")]
KUr(CertReqMessages),
#[asn1(context_specific = "8", tag_mode = "EXPLICIT", constructed = "true")]
Kup(CertRepMessage<'a>),
#[asn1(context_specific = "9", tag_mode = "EXPLICIT", constructed = "true")]
Krr(CertReqMessages),
#[asn1(context_specific = "10", tag_mode = "EXPLICIT", constructed = "true")]
Krp(KeyRecRepContent<'a>),
#[asn1(context_specific = "11", tag_mode = "EXPLICIT", constructed = "true")]
Rr(RevReqContent),
#[asn1(context_specific = "12", tag_mode = "EXPLICIT", constructed = "true")]
Rp(RevRepContent<'a>),
#[asn1(context_specific = "13", tag_mode = "EXPLICIT", constructed = "true")]
Ccr(CertReqMessages),
#[asn1(context_specific = "14", tag_mode = "EXPLICIT", constructed = "true")]
Ccp(CertRepMessage<'a>),
#[asn1(context_specific = "15", tag_mode = "EXPLICIT", constructed = "true")]
Ckuann(CaKeyUpdAnnContent),
#[asn1(context_specific = "16", tag_mode = "EXPLICIT", constructed = "true")]
Cann(CertAnnContent),
#[asn1(context_specific = "17", tag_mode = "EXPLICIT", constructed = "true")]
Rann(RevAnnContent),
#[asn1(context_specific = "18", tag_mode = "EXPLICIT", constructed = "true")]
CrlAnn(CrlAnnContent),
#[asn1(context_specific = "19", tag_mode = "EXPLICIT", constructed = "true")]
PkiConf(PkiConfirmContent),
#[asn1(context_specific = "21", tag_mode = "EXPLICIT", constructed = "true")]
GenM(GenMsgContent),
#[asn1(context_specific = "22", tag_mode = "EXPLICIT", constructed = "true")]
GenP(GenRepContent),
#[asn1(context_specific = "23", tag_mode = "EXPLICIT", constructed = "true")]
Error(ErrorMsgContent<'a>),
#[asn1(context_specific = "24", tag_mode = "EXPLICIT", constructed = "true")]
CertConf(CertConfirmContent<'a>),
#[asn1(context_specific = "25", tag_mode = "EXPLICIT", constructed = "true")]
PollReq(PollRepContent<'a>),
#[asn1(context_specific = "26", tag_mode = "EXPLICIT", constructed = "true")]
PollRep(PollRepContent<'a>),
}
pub type PkiConfirmContent = Null;
pub type NestedMessageContent<'a> = PkiMessages<'a>;