30 lines
1.4 KiB
Rust
30 lines
1.4 KiB
Rust
pub use encryptor::Sm4GcmStreamEncryptor;
|
|
|
|
pub use crate::encryptor::sm4_gcm_aad_encrypt;
|
|
pub use crate::encryptor::sm4_gcm_encrypt;
|
|
|
|
mod util;
|
|
mod encryptor;
|
|
mod decryptor;
|
|
|
|
// Test vectors are all from BC
|
|
#[test]
|
|
fn test_encrypt() {
|
|
let data = vec![
|
|
([0u8; 16], [0u8; 12], &[][..], &b"A"[..], "3c0a0922976fa15e835bc96750e730d967"),
|
|
([0u8; 16], [0u8; 12], &[][..], &b"hello world"[..], "1587c6137e306fed6a6a5f49539b6dd6fe2b7872c3279636db07c2"),
|
|
([0u8; 16], [0xffu8; 12], &[][..], &b"Hello World!"[..], "cba3523bdf74096f3de1f9160a5adb7bf385dea4d50c910e663ec75a"),
|
|
([0xffu8; 16], [0xffu8; 12], &[][..], &b"Hello World!"[..], "99eb1206b5b2a9f9c7d7ec4a81de507f5d79938a10ccd91da68d2fb1"),
|
|
([0xffu8; 16], [0xffu8; 12], &[0xaau8, 0xbbu8, 0xccu8][..], &b"Hello World!"[..], "99eb1206b5b2a9f9c7d7ec4a7be091388b3049363189e64a47d20c19"),
|
|
([0u8; 16], [0u8; 12], &[][..],
|
|
&b"Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!"[..],
|
|
"3587c6137e304fed6a6a5fc0f78e01e5ea4b604843929848601d4b1600e35c1\
|
|
987a30fd521f6b8f66e950cfb735ca19ab45bd8d050a06b2d560a5927a5611f76\
|
|
82cd8c6db56ab52dae82a6db190c54ff8299ac7d339f92db"),
|
|
];
|
|
|
|
for (key, nonce, aad, message, expected) in data {
|
|
let encrypted = hex::encode(sm4_gcm_aad_encrypt(key, &nonce, aad, message));
|
|
assert_eq!(expected, &encrypted);
|
|
}
|
|
} |