pub struct AuthEnvelopedDataContent { /* private fields */ }Expand description
Main interaction point for the AuthEnvelopedData content
This struct is used to create, read and manipulate AuthEnvelopedData content
§Example
use quantcrypt::content::AuthEnvelopedDataContent;
use quantcrypt::content::ContentEncryptionAlgorithmAead;
use quantcrypt::certificates::Certificate;
use quantcrypt::keys::PrivateKey;
use quantcrypt::kdfs::KdfType;
use quantcrypt::wraps::WrapType;
use quantcrypt::content::UserKeyingMaterial;
use quantcrypt::content::ObjectIdentifier;
use quantcrypt::content::Attribute;
use quantcrypt::content::Tag;
use quantcrypt::content::AttributeValue;
use quantcrypt::content::SetOfVec;
let rc_filename = if quantcrypt::is_ipd_mode_enabled() {
"test/data_ipd/cms_cw/1.3.6.1.4.1.22554.5.6.1_ML-KEM-512-ipd_ee.der"
} else {
"test/data/cms/2.16.840.1.101.3.4.4.1_MlKem512_ee.der"
};
let recipient_cert = Certificate::from_file(
rc_filename,
).unwrap();
let sk_filename = if quantcrypt::is_ipd_mode_enabled() {
"test/data_ipd/cms_cw/1.3.6.1.4.1.22554.5.6.1_ML-KEM-512-ipd_priv.der"
} else {
"test/data/cms/2.16.840.1.101.3.4.4.1_MlKem512_priv.der"
};
let private_key = PrivateKey::from_file(
sk_filename
).unwrap();
let ukm = UserKeyingMaterial::new("test".as_bytes()).unwrap();
let data = b"abc";
let attribute_oid = ObjectIdentifier::new("1.3.6.1.4.1.22554.5.6").unwrap();
let mut attribute_vals: SetOfVec<AttributeValue> = SetOfVec::<AttributeValue>::new();
let attr_val = AttributeValue::new(Tag::OctetString, data.to_vec()).unwrap();
attribute_vals.insert(attr_val).unwrap();
let attribute = Attribute {
oid: attribute_oid,
values: attribute_vals,
};
let mut builder =
AuthEnvelopedDataContent::get_builder(ContentEncryptionAlgorithmAead::Aes256Gcm).unwrap();
builder
.kem_recipient(
&recipient_cert,
&KdfType::HkdfWithSha256,
&WrapType::Aes256,
Some(ukm),
)
.unwrap()
.content(data)
.unwrap()
.auth_attribute(&attribute)
.unwrap();
let content = builder.build().unwrap();
// Now use this content to create a new EnvelopedDataContent
let edc = AuthEnvelopedDataContent::from_bytes_for_kem_recipient(
&content,
&recipient_cert,
&private_key,
)
.unwrap();
assert_eq!(edc.get_content(), data);Implementations§
Source§impl AuthEnvelopedDataContent
impl AuthEnvelopedDataContent
Sourcepub fn from_file_for_kem_recipient(
file: &str,
recipient_cert: &Certificate,
recipient_private_key: &PrivateKey,
) -> Result<AuthEnvelopedDataContent, QuantCryptError>
pub fn from_file_for_kem_recipient( file: &str, recipient_cert: &Certificate, recipient_private_key: &PrivateKey, ) -> Result<AuthEnvelopedDataContent, QuantCryptError>
Load a AuthEnvelopedDataContent from a file. The content is wrapped in a ContentInfo object. The content is decrypted using the provided recipient certificate and private key.
§Arguments
file- The file to read the content fromrecipient_cert- The recipient certificaterecipient_private_key- The recipient private key
§Returns
The AuthEnvelopedDataContent object
Sourcepub fn from_bytes_for_kem_recipient(
data: &[u8],
recipient_cert: &Certificate,
recipient_private_key: &PrivateKey,
) -> Result<AuthEnvelopedDataContent, QuantCryptError>
pub fn from_bytes_for_kem_recipient( data: &[u8], recipient_cert: &Certificate, recipient_private_key: &PrivateKey, ) -> Result<AuthEnvelopedDataContent, QuantCryptError>
Load a AuthEnvelopedDataContent from a byte array. The content is wrapped in a ContentInfo object. The content is decrypted using the provided recipient certificate and private key.
§Arguments
data- The byte array to read the content fromrecipient_cert- The recipient certificaterecipient_private_key- The recipient private key
§Returns
The AuthEnvelopedDataContent object
Sourcepub fn get_version(&self) -> CmsVersion
pub fn get_version(&self) -> CmsVersion
Get the CmsVersion
Sourcepub fn get_originator_info(&self) -> Option<OriginatorInfo>
pub fn get_originator_info(&self) -> Option<OriginatorInfo>
Get the OriginatorInfo
Sourcepub fn get_content(&self) -> Vec<u8> ⓘ
pub fn get_content(&self) -> Vec<u8> ⓘ
Get the content
Sourcepub fn get_unprotected_attrs(&self) -> Option<Attributes>
pub fn get_unprotected_attrs(&self) -> Option<Attributes>
Get the unprotected attributes
Sourcepub fn get_auth_attrs(&self) -> Option<Attributes>
pub fn get_auth_attrs(&self) -> Option<Attributes>
Get the authenticated attributes
Sourcepub fn get_recipient_infos(&self) -> RecipientInfos
pub fn get_recipient_infos(&self) -> RecipientInfos
Get the RecipientInfos
Sourcepub fn get_builder(
content_encryption_alg: ContentEncryptionAlgorithmAead,
) -> Result<EnvelopedDataBuilder<'static>, QuantCryptError>
pub fn get_builder( content_encryption_alg: ContentEncryptionAlgorithmAead, ) -> Result<EnvelopedDataBuilder<'static>, QuantCryptError>
Auto Trait Implementations§
impl Freeze for AuthEnvelopedDataContent
impl RefUnwindSafe for AuthEnvelopedDataContent
impl Send for AuthEnvelopedDataContent
impl Sync for AuthEnvelopedDataContent
impl Unpin for AuthEnvelopedDataContent
impl UnsafeUnpin for AuthEnvelopedDataContent
impl UnwindSafe for AuthEnvelopedDataContent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more