[][src]Function psa_crypto::operations::aead::encrypt

pub fn encrypt(
    key_id: Id,
    aead_alg: Aead,
    nonce: &[u8],
    additional_data: &[u8],
    plaintext: &[u8],
    ciphertext: &mut [u8]
) -> Result<usize>

Process an authenticated encryption operation.

Example

use psa_crypto::types::algorithm::{Aead, AeadWithDefaultLengthTag};
use psa_crypto::types::key::{Attributes, Type, Lifetime, Policy, UsageFlags};
use psa_crypto::operations::{key_management, aead};
let alg = Aead::AeadWithDefaultLengthTag(AeadWithDefaultLengthTag::Ccm);
let attributes = Attributes {
key_type: Type::Aes,
     bits: 0,
     lifetime: Lifetime::Volatile,
     policy: Policy {
         usage_flags: UsageFlags {
             encrypt: true,
             ..Default::default()
         },
         permitted_algorithms: alg.into(),
     },
};
psa_crypto::init().unwrap();
let my_key = key_management::import(attributes, None, &KEY_DATA).unwrap();
let output_buffer_size = attributes.aead_encrypt_output_size(alg.into(), INPUT_DATA.len()).unwrap();
let mut output_buffer = vec![0; output_buffer_size];
let length = aead::encrypt(my_key, alg, &NONCE, &ADDITIONAL_DATA, &INPUT_DATA, &mut output_buffer).unwrap();
output_buffer.resize(length, 0);