From 03656b41f613bce44c091f2edb6456ad52cb1644 Mon Sep 17 00:00:00 2001 From: WingZer0o Date: Thu, 24 Jul 2025 20:41:30 -0400 Subject: [PATCH 1/3] hybrid encryption tests --- tests/hybrid.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/hybrid.rs diff --git a/tests/hybrid.rs b/tests/hybrid.rs new file mode 100644 index 0000000..b153ce0 --- /dev/null +++ b/tests/hybrid.rs @@ -0,0 +1,38 @@ +#[cfg(test)] +mod hybrid { + use std::{os::windows::fs::FileExt, path::Path}; + + use cas_lib::hybrid::{cas_hybrid::CASHybrid, hpke::CASHPKE}; + + + #[test] + pub fn test_generate_key_pair() { + let (private_key, public_key, info_str) = CASHPKE::generate_key_pair(); + assert!(!private_key.is_empty()); + assert!(!public_key.is_empty()); + assert!(!info_str.is_empty()); + } + + #[test] + pub fn encrypt_hpke() { + let path = Path::new("tests/test.docx"); + let file_bytes: Vec = std::fs::read(path).unwrap(); + + let (private_key, public_key, info_str) = CASHPKE::generate_key_pair(); + let (encapped_key, ciphertext, tag) = CASHPKE::encrypt(file_bytes.clone(), public_key, info_str); + assert!(!encapped_key.is_empty()); + assert!(!ciphertext.is_empty()); + assert!(!tag.is_empty()); + assert_ne!(file_bytes, ciphertext); + } + + #[test] + pub fn decrypt_hpke() { + let path = Path::new("tests/test.docx"); + let file_bytes: Vec = std::fs::read(path).unwrap(); + let (private_key, public_key, info_str) = CASHPKE::generate_key_pair(); + let (encapped_key, ciphertext, tag) = CASHPKE::encrypt(file_bytes.clone(), public_key, info_str.clone()); + let decrypted_bytes = CASHPKE::decrypt(ciphertext, private_key, encapped_key, tag, info_str); + assert_eq!(file_bytes, decrypted_bytes); + } +} \ No newline at end of file From e2c2ccdee3bac80befc512b01c55ae6368bc8463 Mon Sep 17 00:00:00 2001 From: WingZer0o Date: Thu, 24 Jul 2025 20:48:27 -0400 Subject: [PATCH 2/3] clippy warnings and adding hmac signing --- tests/compression.rs | 2 +- tests/digital_signatures.rs | 2 +- tests/hybrid.rs | 2 +- tests/message.rs | 22 ++++++++++++++++++++++ 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 tests/message.rs diff --git a/tests/compression.rs b/tests/compression.rs index 933e86d..9d74495 100644 --- a/tests/compression.rs +++ b/tests/compression.rs @@ -1,6 +1,6 @@ #[cfg(test)] mod compression { - use cas_lib::compression::zstd::{self, compress, decompress}; + use cas_lib::compression::zstd::{compress, decompress}; #[test] pub fn test_compression() { diff --git a/tests/digital_signatures.rs b/tests/digital_signatures.rs index 212f290..6616dc3 100644 --- a/tests/digital_signatures.rs +++ b/tests/digital_signatures.rs @@ -1,6 +1,6 @@ #[cfg(test)] mod digital_signatures { - use cas_lib::{asymmetric::cas_rsa::CASRSA, digital_signature::{cas_digital_signature_rsa::{ED25519DigitalSignature, RSADigitalSignature, RSADigitalSignatureResult, SHAED25519DalekDigitalSignatureResult}, sha_256_ed25519::SHA256ED25519DigitalSignature, sha_256_rsa::SHA256RSADigitalSignature, sha_512_ed25519::SHA512ED25519DigitalSignature, sha_512_rsa::SHA512RSADigitalSignature}}; + use cas_lib::digital_signature::{cas_digital_signature_rsa::{ED25519DigitalSignature, RSADigitalSignature, RSADigitalSignatureResult, SHAED25519DalekDigitalSignatureResult}, sha_256_ed25519::SHA256ED25519DigitalSignature, sha_256_rsa::SHA256RSADigitalSignature, sha_512_ed25519::SHA512ED25519DigitalSignature, sha_512_rsa::SHA512RSADigitalSignature}; #[test] pub fn ed25519_sha_512_digital_signature_verify() { diff --git a/tests/hybrid.rs b/tests/hybrid.rs index b153ce0..7df2ae8 100644 --- a/tests/hybrid.rs +++ b/tests/hybrid.rs @@ -18,7 +18,7 @@ mod hybrid { let path = Path::new("tests/test.docx"); let file_bytes: Vec = std::fs::read(path).unwrap(); - let (private_key, public_key, info_str) = CASHPKE::generate_key_pair(); + let (_private_key, public_key, info_str) = CASHPKE::generate_key_pair(); let (encapped_key, ciphertext, tag) = CASHPKE::encrypt(file_bytes.clone(), public_key, info_str); assert!(!encapped_key.is_empty()); assert!(!ciphertext.is_empty()); diff --git a/tests/message.rs b/tests/message.rs new file mode 100644 index 0000000..3107df1 --- /dev/null +++ b/tests/message.rs @@ -0,0 +1,22 @@ +#[cfg(test)] +mod message { + use cas_lib::message::{cas_hmac::CASHMAC, hmac::HMAC}; + + #[test] + pub fn hmac_sign() { + let key = vec![1, 2, 3, 4, 5]; + let message = vec![6, 7, 8, 9, 10]; + // Replace `ConcreteHmacType` with the actual struct that implements CASHMAC + let signature = HMAC::sign(key.clone(), message.clone()); + assert!(!signature.is_empty()); + } + + #[test] + pub fn hmac_verify() { + let key = vec![1, 2, 3, 4, 5]; + let message = vec![6, 7, 8, 9, 10]; + let signature = HMAC::sign(key.clone(), message.clone()); + let is_valid = HMAC::verify(key, message, signature); + assert!(is_valid); + } +} \ No newline at end of file From 63751ef0c86c403d777aee7733cb405734ebd5f4 Mon Sep 17 00:00:00 2001 From: WingZer0o Date: Thu, 24 Jul 2025 20:53:23 -0400 Subject: [PATCH 3/3] fix --- tests/hybrid.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/hybrid.rs b/tests/hybrid.rs index 7df2ae8..0c56fd3 100644 --- a/tests/hybrid.rs +++ b/tests/hybrid.rs @@ -1,6 +1,6 @@ #[cfg(test)] mod hybrid { - use std::{os::windows::fs::FileExt, path::Path}; + use std::path::Path; use cas_lib::hybrid::{cas_hybrid::CASHybrid, hpke::CASHPKE};