1#![doc = include_str!("../README.md")]
2#![no_std]
3
4pub mod ess;
5pub mod skd;
6
7use rasn::prelude::*;
8
9#[doc(inline)]
10pub use rasn_cms::{IssuerAndSerialNumber, RecipientKeyIdentifier, SubjectKeyIdentifier};
11
12pub const CAPABILITIES: &Oid = Oid::ISO_MEMBER_BODY_US_RSADSI_PKCS9_CAPABILITIES;
16
17pub const ENCRYPTION_KEY_PREFERENCE: &Oid =
20    Oid::ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_ENCRYPTION_KEY_PREFERENCE;
21
22pub const PREFER_BINARY_INSIDE: &Oid =
25    Oid::ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CAPABILITY_PREFER_BINARY_INSIDE;
26
27pub type CapabilitiesParametersForRc2Cbc = Integer;
29pub type Capabilities = SequenceOf<Capability>;
30
31#[derive(AsnType, Clone, Debug, Decode, Encode, PartialEq, Eq, PartialOrd, Ord, Hash)]
32pub struct Capability {
33    pub capability_id: ObjectIdentifier,
34    pub parameters: Option<Any>,
35}
36
37#[derive(AsnType, Clone, Debug, Decode, Encode, PartialEq, Eq, Hash)]
38#[rasn(choice)]
39pub enum EncryptionKeyPreference {
40    #[rasn(tag(0))]
41    IssuerAndSerialNumber(IssuerAndSerialNumber),
42    #[rasn(tag(1))]
43    ReceipentKeyId(RecipientKeyIdentifier),
44    #[rasn(tag(2))]
45    SubjectAltKeyIdentifier(SubjectKeyIdentifier),
46}