Update encryption.rs

~ moved key derivation to separate function
+ added function to test transformer functions
This commit is contained in:
michael-bailey 2021-08-06 21:07:19 +01:00
parent 8f7fd76817
commit 9f63f8c2f1
1 changed files with 28 additions and 11 deletions

View File

@ -47,9 +47,9 @@ mod test {
Mode
};
#[test]
pub fn test_aes() {
use super::create_encryption_transformers;
fn create_shared() -> Vec<u8> {
let ec_group1 = EcGroup::from_curve_name(Nid::SECP256K1).unwrap();
let ec_group2 = EcGroup::from_curve_name(Nid::SECP256K1).unwrap();
@ -71,29 +71,46 @@ mod test {
deriver1.set_peer(pub2.as_ref()).unwrap();
deriver2.set_peer(pub1.as_ref()).unwrap();
let shared1 = deriver1.derive_to_vec().unwrap();
let shared2 = deriver2.derive_to_vec().unwrap();
deriver1.derive_to_vec().unwrap()
}
println!("shared1: {:?}", &shared1);
println!("shared2: {:?}", &shared2);
#[test]
pub fn test_transformer_functions() {
let shared = create_shared();
assert_eq!(shared1, shared2);
let (en, de) = create_encryption_transformers(shared, b"12345678901234561234561234567765");
let message = b"Hello world";
let cipher_text = (*en)(message);
let decrypted_text = (*de)(&cipher_text);
assert_eq!(&decrypted_text[0..message.len()], message);
}
#[test]
pub fn test_aes() {
let shared = create_shared();
let plaintext = b"This is a message";
let key = sha256(&shared1);
let key = sha256(&shared);
let iv = b"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
let encrypter = Crypter::new(Cipher::aes_256_gcm(), Mode::Encrypt, &key, Some(iv));
let mut ciphertext = vec![0u8; 1024];
let cipherlen = encrypter.unwrap().update(plaintext, ciphertext.as_mut_slice()).unwrap();
let cipherlen = encrypter.unwrap().update(plaintext, &mut ciphertext).unwrap();
let decrypter = Crypter::new(Cipher::aes_256_gcm(), Mode::Decrypt, &key, Some(iv));
let mut decrypted = vec![0u8; 1024];
decrypter.unwrap().update(&ciphertext[..cipherlen], decrypted.as_mut_slice()).unwrap();
decrypter.unwrap().update(&ciphertext[..cipherlen], &mut decrypted).unwrap();
println!("plaintext: {:?}", plaintext);
println!("ciphertext: {:?}", &ciphertext[0..plaintext.len()]);
println!("decryptedtext: {:?}", &decrypted[0..plaintext.len()]);
}
let test: &[u8] = &decrypted;
assert_eq!(&test[0..plaintext.len()], plaintext);
}
}