mirror of
https://github.com/logos-blockchain/lssa.git
synced 2026-01-06 07:13:07 +00:00
add test_encryption_decryption_round_trip
This commit is contained in:
parent
b24ad55f31
commit
f48541444f
@ -238,6 +238,39 @@ mod tests {
|
|||||||
assert_ne!(result, plaintext);
|
assert_ne!(result, plaintext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_encryption_decryption_round_trip() {
|
||||||
|
let address_key_holder = AddressKeyHolder::new_os_random();
|
||||||
|
|
||||||
|
// Generate ephemeral key and shared secret
|
||||||
|
let scalar = Scalar::random(OsRng);
|
||||||
|
let ephemeral_public_key_sender = (ProjectivePoint::generator() * scalar).to_affine();
|
||||||
|
|
||||||
|
// Encrypt sample data
|
||||||
|
let plaintext = b"Round-trip test data";
|
||||||
|
let nonce = Nonce::from_slice(b"unique nonce");
|
||||||
|
|
||||||
|
let shared_secret = address_key_holder.calculate_shared_secret_receiver(ephemeral_public_key_sender);
|
||||||
|
// Prepare the encryption key from shared secret
|
||||||
|
let key_raw = shared_secret.to_bytes();
|
||||||
|
let key_raw_adjust_pre = &key_raw.as_slice()[..32];
|
||||||
|
let key_raw_adjust: [u8; 32] = key_raw_adjust_pre.try_into().unwrap();
|
||||||
|
let key: Key<Aes256Gcm> = key_raw_adjust.into();
|
||||||
|
let cipher = Aes256Gcm::new(&key);
|
||||||
|
|
||||||
|
let ciphertext = cipher.encrypt(nonce, plaintext.as_ref()).expect("encryption failure");
|
||||||
|
|
||||||
|
// Decrypt the data using the `AddressKeyHolder` instance
|
||||||
|
let decrypted_data = address_key_holder.decrypt_data(
|
||||||
|
ephemeral_public_key_sender,
|
||||||
|
CipherText::from(ciphertext),
|
||||||
|
nonce.clone(),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Verify the decrypted data matches the original plaintext
|
||||||
|
assert_eq!(decrypted_data, plaintext);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn key_generation_test() {
|
fn key_generation_test() {
|
||||||
let seed_holder = SeedHolder::new_os_random();
|
let seed_holder = SeedHolder::new_os_random();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user