pub fn decrypt(
    key_id: Id,
    alg: AsymmetricEncryption,
    encrypted_message: &[u8],
    salt: Option<&[u8]>,
    plaintext: &mut [u8]
) -> Result<usize>
Expand description

Decrypt a short message with a key pair or private key

The decrypted message is written in plaintext. The function returns the number of bytes written.

Example

psa_crypto::init().unwrap();

let key_id = generate(attributes, None).unwrap();
let mut pub_key = vec![0; attributes.export_public_key_output_size().unwrap()];
let pub_key_length = export_public(key_id.clone(), &mut pub_key).unwrap();
pub_key.truncate(pub_key_length);
let rsa_pub_key = RsaPublicKey::from_pkcs1_der(&pub_key).unwrap();
let ciphertext = rsa_pub_key.encrypt(&mut OsRng, PaddingScheme::new_pkcs1v15_encrypt(), &MESSAGE).unwrap();

let alg = AsymmetricEncryption::RsaPkcs1v15Crypt;
let buffer_size = attributes.asymmetric_decrypt_output_size(alg).unwrap();
let mut decrypted_message = vec![0; buffer_size];
let size = decrypt(key_id,
                     alg,
                     &ciphertext,
                     None,
                     &mut decrypted_message).unwrap();
decrypted_message.resize(size, 0);