From 689dc0ab6af950b027b4bab96f73c427d2c42d6e Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Mon, 20 Dec 2021 18:46:23 -0700 Subject: 2021 edition bump + doc improvements; MSRV 1.56 (#80) - Bumps both `spake2` and `srp` to Rust 2021 edition - Uses the new `doc = include_str!(...)` attribute to include README.md files in the rustdoc - Improves the README.md files, adding an initial one for `srp` - clippy fixes for Rust 1.56 --- srp/tests/mod.rs | 63 -------------------------------------------------------- srp/tests/srp.rs | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 63 deletions(-) delete mode 100644 srp/tests/mod.rs create mode 100644 srp/tests/srp.rs (limited to 'srp/tests') diff --git a/srp/tests/mod.rs b/srp/tests/mod.rs deleted file mode 100644 index 58bfa0f..0000000 --- a/srp/tests/mod.rs +++ /dev/null @@ -1,63 +0,0 @@ -use rand; -use rand::RngCore; -use sha2::Sha256; - -use srp::client::{srp_private_key, SrpClient}; -use srp::groups::G_2048; -use srp::server::{SrpServer, UserRecord}; - -fn auth_test(reg_pwd: &[u8], auth_pwd: &[u8]) { - let mut rng = rand::rngs::OsRng::new().unwrap(); - let username = b"alice"; - - // Client instance creation - let mut a = [0u8; 64]; - rng.fill_bytes(&mut a); - let client = SrpClient::::new(&a, &G_2048); - - // Registration - let mut salt = [0u8; 16]; - rng.fill_bytes(&mut salt); - let reg_priv_key = srp_private_key::(username, reg_pwd, &salt); - let verif = client.get_password_verifier(®_priv_key); - - // User sends handshake - let a_pub = client.get_a_pub(); - - // Server retrieve user record from db and processes handshake - let user = UserRecord { - username, - salt: &salt, - verifier: &verif, - }; - let mut b = [0u8; 64]; - rng.fill_bytes(&mut b); - let server = SrpServer::::new(&user, &a_pub, &b, &G_2048).unwrap(); - let (salt, b_pub) = (&user.salt, server.get_b_pub()); - - // Client processes handshake reply - let auth_priv_key = srp_private_key::(username, auth_pwd, salt); - let client2 = client.process_reply(&auth_priv_key, &b_pub).unwrap(); - let proof = client2.get_proof(); - - // Server processes verification data - println!("Client verification"); - let proof2 = server.verify(&proof).unwrap(); - let server_key = server.get_key(); - - // Client verifies server - println!("Server verification"); - let user_key = client2.verify_server(&proof2).unwrap(); - assert_eq!(server_key, user_key, "server and client keys are not equal"); -} - -#[test] -fn good_password() { - auth_test(b"password", b"password"); -} - -#[test] -#[should_panic] -fn bad_password() { - auth_test(b"password", b"paSsword"); -} diff --git a/srp/tests/srp.rs b/srp/tests/srp.rs new file mode 100644 index 0000000..bf6c30f --- /dev/null +++ b/srp/tests/srp.rs @@ -0,0 +1,62 @@ +use rand::RngCore; +use sha2::Sha256; + +use srp::client::{srp_private_key, SrpClient}; +use srp::groups::G_2048; +use srp::server::{SrpServer, UserRecord}; + +fn auth_test(reg_pwd: &[u8], auth_pwd: &[u8]) { + let mut rng = rand::rngs::OsRng::new().unwrap(); + let username = b"alice"; + + // Client instance creation + let mut a = [0u8; 64]; + rng.fill_bytes(&mut a); + let client = SrpClient::::new(&a, &G_2048); + + // Registration + let mut salt = [0u8; 16]; + rng.fill_bytes(&mut salt); + let reg_priv_key = srp_private_key::(username, reg_pwd, &salt); + let verif = client.get_password_verifier(®_priv_key); + + // User sends handshake + let a_pub = client.get_a_pub(); + + // Server retrieve user record from db and processes handshake + let user = UserRecord { + username, + salt: &salt, + verifier: &verif, + }; + let mut b = [0u8; 64]; + rng.fill_bytes(&mut b); + let server = SrpServer::::new(&user, &a_pub, &b, &G_2048).unwrap(); + let (salt, b_pub) = (&user.salt, server.get_b_pub()); + + // Client processes handshake reply + let auth_priv_key = srp_private_key::(username, auth_pwd, salt); + let client2 = client.process_reply(&auth_priv_key, &b_pub).unwrap(); + let proof = client2.get_proof(); + + // Server processes verification data + println!("Client verification"); + let proof2 = server.verify(&proof).unwrap(); + let server_key = server.get_key(); + + // Client verifies server + println!("Server verification"); + let user_key = client2.verify_server(&proof2).unwrap(); + assert_eq!(server_key, user_key, "server and client keys are not equal"); +} + +#[test] +fn good_password() { + auth_test(b"password", b"password"); +} + +#[test] +#[should_panic] +fn bad_password() { + auth_test(b"password", b"paSsword"); +} -- cgit v1.2.3