use num_bigint::BigUint;
use sha1::Sha1;
use crate::server::Server;
use crate::tests::test_utils::*;
#[test]
fn test_compute_k() {
let server: Server<Sha1> = Server::<Sha1>::new(create_test_group_1024());
let expected_k = create_test_k();
assert_eq!(server.k, expected_k);
}
#[test]
fn test_generate_keypair_from_private_key() {
let server = Server::<Sha1>::new(create_test_group_1024());
let verifier = create_test_verifier();
let (private_key, expected_public_key) = create_test_server_keypair();
let (_, public_key) = server
.generate_keypair_from_private_key(&private_key.to_bytes_be(), &verifier)
.unwrap();
assert_eq!(public_key, expected_public_key);
}
#[test]
fn test_generate_keypair() {
let server = Server::<Sha1>::new(create_test_group_1024());
let verifier = create_test_verifier();
let result = server.generate_keypair(128, &verifier);
assert!(result.is_ok());
let (private, public) = result.unwrap();
assert!(private > BigUint::from(0u32));
assert!(public > BigUint::from(0u32));
assert!(public < server.group.n);
}
#[test]
fn test_generate_keypair_invalid_length() {
let server = Server::<Sha1>::new(create_test_group_1024());
let verifier = create_test_verifier();
let result = server.generate_keypair(0, &verifier);
assert!(matches!(
result,
Err(crate::server::ServerError::InvalidKeyLength(_))
));
let result = server.generate_keypair(127, &verifier);
assert!(matches!(
result,
Err(crate::server::ServerError::InvalidKeyLength(_))
));
let result = server.generate_keypair(2048, &verifier);
assert!(matches!(
result,
Err(crate::server::ServerError::InvalidKeyLength(_))
));
}
#[test]
fn test_compute_premaster_key() {
let server = Server::<Sha1>::new(create_test_group_1024());
let verifier = create_test_verifier();
let (_, public_client_key) = create_test_client_keypair();
let (private_server_key, public_server_key) = create_test_server_keypair();
let premaster_key = server
.compute_premaster_key(
&public_client_key,
&verifier,
&private_server_key,
&public_server_key,
)
.unwrap();
let expected_premaster_key = create_test_premaster_key();
assert_eq!(premaster_key, expected_premaster_key);
}