use crate::{
algorithm_identifier_types::DigestAlgorithmIdentifiers,
certificate_choices::CertificateChoices, cms_version::CmsVersion,
encapsulated_content_info::EncapsulatedContentInfo,
revocation_info_choices::RevocationInfoChoices, signer_info::SignerInfos,
};
use der::{asn1::SetOfVec, Sequence};
pub type CertificateSet<'a> = SetOfVec<CertificateChoices<'a>>;
#[derive(Clone, Debug, Eq, PartialEq, Sequence)]
pub struct SignedDataContent<'a> {
pub version: CmsVersion,
pub digest_algorithms: DigestAlgorithmIdentifiers<'a>,
pub encap_content_info: EncapsulatedContentInfo<'a>,
#[asn1(context_specific = "0", optional = "true", tag_mode = "IMPLICIT")]
pub certificates: Option<CertificateSet<'a>>,
#[asn1(context_specific = "1", optional = "true", tag_mode = "IMPLICIT")]
pub crls: Option<RevocationInfoChoices<'a>>,
pub signer_infos: SignerInfos<'a>,
}