fencryption_lib/commands/
decrypt_text.rs

1//! Decrypt text.
2
3use base64::{engine::general_purpose, Engine};
4
5use crate::{
6    commands::{ErrorBuilder, Result},
7    crypto::Crypto,
8};
9
10/// Decrypts given text (from base64 encoded text).
11pub fn execute(key: &String, encrypted: &String) -> Result<String> {
12    let crypto = Crypto::new(key).map_err(|e| {
13        ErrorBuilder::new()
14            .message("Failed to initialize encryption utils")
15            .error(e)
16            .build()
17    })?;
18
19    let enc = general_purpose::STANDARD
20        .decode(encrypted.to_owned())
21        .map_err(|e| {
22            ErrorBuilder::new()
23                .message("Failed to decode base64")
24                .error(e)
25                .build()
26        })?;
27
28    let dec = crypto.decrypt(enc).map_err(|e| {
29        ErrorBuilder::new()
30            .message("Failed to encrypt text")
31            .error(e)
32            .build()
33    })?;
34
35    Ok(String::from_utf8(dec).map_err(|e| {
36        ErrorBuilder::new()
37            .message("Failed to decode decrypted bytes")
38            .error(e)
39            .build()
40    })?)
41}