mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
46 lines
1.1 KiB
Rust
46 lines
1.1 KiB
Rust
//! ## Crypto
|
|
//!
|
|
//! `crypto` is the module which provides utilities for crypting
|
|
|
|
// Ext
|
|
use magic_crypt::MagicCryptTrait;
|
|
|
|
/// ### aes128_b64_crypt
|
|
///
|
|
/// Crypt a string using AES128; output is returned as a BASE64 string
|
|
pub fn aes128_b64_crypt(key: &str, input: &str) -> String {
|
|
let crypter = new_magic_crypt!(key, 128);
|
|
crypter.encrypt_str_to_base64(input)
|
|
}
|
|
|
|
/// ### aes128_b64_decrypt
|
|
///
|
|
/// Decrypt a string using AES128
|
|
pub fn aes128_b64_decrypt(key: &str, secret: &str) -> Result<String, magic_crypt::MagicCryptError> {
|
|
let crypter = new_magic_crypt!(key, 128);
|
|
crypter.decrypt_base64_to_string(secret)
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
|
|
use super::*;
|
|
|
|
use pretty_assertions::assert_eq;
|
|
|
|
#[test]
|
|
fn test_utils_crypto_aes128() {
|
|
let key: &str = "MYSUPERSECRETKEY";
|
|
let input: &str = "Hello world!";
|
|
let secret: String = aes128_b64_crypt(&key, input);
|
|
assert_eq!(secret.as_str(), "z4Z6LpcpYqBW4+bkIok+5A==");
|
|
assert_eq!(
|
|
aes128_b64_decrypt(key, secret.as_str())
|
|
.ok()
|
|
.unwrap()
|
|
.as_str(),
|
|
input
|
|
);
|
|
}
|
|
}
|