use crate::{
AlgorithmIdentifier, Version,
certificate::{Profile, Rfc5280},
ext::Extensions,
name::Name,
serial_number::SerialNumber,
time::Time,
};
use alloc::vec::Vec;
use der::asn1::BitString;
use der::{Sequence, ValueOrd};
#[cfg(feature = "pem")]
use der::pem::PemLabel;
#[derive(Clone, Debug, Eq, PartialEq, Sequence, ValueOrd)]
#[allow(missing_docs)]
pub struct CertificateList<P: Profile = Rfc5280> {
pub tbs_cert_list: TbsCertList<P>,
pub signature_algorithm: AlgorithmIdentifier,
pub signature: BitString,
}
#[cfg(feature = "pem")]
impl<P: Profile> PemLabel for CertificateList<P> {
const PEM_LABEL: &'static str = "X509 CRL";
}
#[derive(Clone, Debug, Eq, PartialEq, Sequence, ValueOrd)]
#[allow(missing_docs)]
pub struct RevokedCert<P: Profile = Rfc5280> {
pub serial_number: SerialNumber<P>,
pub revocation_date: Time,
pub crl_entry_extensions: Option<Extensions>,
}
#[derive(Clone, Debug, Eq, PartialEq, Sequence, ValueOrd)]
#[allow(missing_docs)]
pub struct TbsCertList<P: Profile = Rfc5280> {
pub version: Version,
pub signature: AlgorithmIdentifier,
pub issuer: Name,
pub this_update: Time,
pub next_update: Option<Time>,
pub revoked_certificates: Option<Vec<RevokedCert<P>>>,
#[asn1(context_specific = "0", tag_mode = "EXPLICIT", optional = "true")]
pub crl_extensions: Option<Extensions>,
}