#![allow(unused_assignments)]
#[cfg(not(feature = "std"))]
extern crate alloc;
#[cfg(not(feature = "std"))]
use alloc::{string::String, vec::Vec};
pub use crate::cms::compressed_data::CompressedData;
pub use crate::cms::content_info::ContentInfo;
pub use crate::cms::enveloped_data::EncryptedContentInfo;
pub use crate::cms::signed_data::{EncapsulatedContentInfo, SignerInfo};
pub use crate::der::asn1::OctetString;
pub use crate::der::asn1::*;
pub use crate::der::{Choice, Enumerated, Sequence};
pub use crate::pkcs12::digest_info::DigestInfo;
pub use crate::spki::{AlgorithmIdentifier, AlgorithmIdentifierOwned};
pub use crate::x509::ext::pkix::HashAlgorithm;
pub use crate::x509::ext::pkix::SignatureAlgorithm;
#[repr(u8)]
#[derive(Enumerated, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum Version {
V0 = 0,
V1 = 1,
V2 = 2,
V3 = 3,
}
#[repr(u8)]
#[derive(Enumerated, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum MessagePriority {
Critical = 0,
Top = 1,
High = 2,
Normal = 3,
Low = 4,
Bulk = 5,
Heartbeat = 6,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "zeroize", derive(zeroize::ZeroizeOnDrop))]
pub struct Asn1Matrix {
pub n: u8,
pub data: Vec<u8>,
}
#[derive(der::Sequence, Default, Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "zeroize", derive(zeroize::ZeroizeOnDrop))]
pub struct Metadata {
pub id: Vec<u8>,
pub order: u64,
#[asn1(optional = "true")]
#[cfg_attr(feature = "zeroize", zeroize(skip))]
pub compactness: Option<CompressedData>,
#[asn1(context_specific = "0", optional = "true")]
#[cfg_attr(feature = "zeroize", zeroize(skip))]
pub integrity: Option<DigestInfo>,
#[asn1(context_specific = "1", optional = "true")]
#[cfg_attr(feature = "zeroize", zeroize(skip))]
pub confidentiality: Option<EncryptedContentInfo>,
#[asn1(context_specific = "2", optional = "true")]
#[cfg_attr(feature = "zeroize", zeroize(skip))]
pub priority: Option<MessagePriority>,
#[asn1(context_specific = "3", optional = "true")]
pub lifetime: Option<u64>,
#[asn1(context_specific = "4", optional = "true")]
#[cfg_attr(feature = "zeroize", zeroize(skip))]
pub previous_frame: Option<DigestInfo>,
#[asn1(context_specific = "5", optional = "true")]
pub matrix: Option<Asn1Matrix>,
}
#[derive(der::Sequence, Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "zeroize", derive(zeroize::ZeroizeOnDrop))]
pub struct Frame {
#[cfg_attr(feature = "zeroize", zeroize(skip))]
pub version: Version,
pub metadata: Metadata,
pub message: Vec<u8>,
#[asn1(context_specific = "0", optional = "true")]
#[cfg_attr(feature = "zeroize", zeroize(skip))]
pub integrity: Option<DigestInfo>,
#[asn1(context_specific = "1", optional = "true")]
#[cfg_attr(feature = "zeroize", zeroize(skip))]
pub nonrepudiation: Option<SignerInfo>,
}