Skip to main content

age_crypto/apis/
decrypt.rs

1use crate::apis::parse_identity::parse_identity;
2use crate::errors::Result;
3use crate::errors::decrypt::DecryptError;
4use std::io::Read;
5pub fn decrypt(ciphertext: &[u8], secret_key: &str) -> Result<Vec<u8>> {
6    let identity = parse_identity(secret_key)?;
7    let decryptor = age::Decryptor::new(ciphertext)
8        .map_err(|e| DecryptError::InvalidCiphertext(e.to_string()))?;
9    let mut decrypted = Vec::new();
10    decryptor
11        .decrypt(std::iter::once(&identity as &dyn age::Identity))
12        .map_err(|e| DecryptError::Failed(e.to_string()))?
13        .read_to_end(&mut decrypted)
14        .map_err(|e| DecryptError::Failed(e.to_string()))?;
15    Ok(decrypted)
16}