66 lines
1.6 KiB
Rust
66 lines
1.6 KiB
Rust
extern crate dilithium;
|
|
extern crate rng256;
|
|
|
|
use dilithium::sign::{PubKey, SecKey};
|
|
use rng256::Rng256;
|
|
|
|
const ITERATIONS: u32 = 500;
|
|
|
|
#[test]
|
|
fn test_sk_with_pk() {
|
|
let mut rng = rng256::ThreadRng256 {};
|
|
for _ in 0..ITERATIONS {
|
|
let (sk, pk) = SecKey::gensk_with_pk(&mut rng);
|
|
let pk_from_sk = sk.genpk();
|
|
assert_eq!(pk, pk_from_sk);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_sign() {
|
|
let mut rng = rng256::ThreadRng256 {};
|
|
for _ in 0..ITERATIONS {
|
|
let sk = SecKey::gensk(&mut rng);
|
|
|
|
let mut message = [0; 59];
|
|
rng.fill_bytes(&mut message);
|
|
let sig = sk.sign(&message);
|
|
|
|
let pk = sk.genpk();
|
|
|
|
let mut bytes = [0; dilithium::params::PK_SIZE_PACKED];
|
|
pk.to_bytes(&mut bytes);
|
|
assert!(pk.verify(&message, &sig));
|
|
|
|
message[2] ^= 42;
|
|
assert!(!pk.verify(&message, &sig));
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_seckey_to_bytes_from_bytes() {
|
|
let mut rng = rng256::ThreadRng256 {};
|
|
|
|
for _ in 0..ITERATIONS {
|
|
let sk = SecKey::gensk(&mut rng);
|
|
let mut bytes = [0; dilithium::params::SK_SIZE_PACKED];
|
|
sk.to_bytes(&mut bytes);
|
|
let decoded_sk = SecKey::from_bytes(&bytes);
|
|
assert_eq!(decoded_sk, sk);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_pubkey_to_bytes_from_bytes() {
|
|
let mut rng = rng256::ThreadRng256 {};
|
|
|
|
for _ in 0..ITERATIONS {
|
|
let sk = SecKey::gensk(&mut rng);
|
|
let pk = sk.genpk();
|
|
let mut bytes = [0; dilithium::params::PK_SIZE_PACKED];
|
|
pk.to_bytes(&mut bytes);
|
|
let decoded_pk = PubKey::from_bytes(&bytes);
|
|
assert_eq!(decoded_pk, pk);
|
|
}
|
|
}
|