diff --git a/src/opaque.rs b/src/opaque.rs index 77d8f56..b52635e 100644 --- a/src/opaque.rs +++ b/src/opaque.rs @@ -278,6 +278,9 @@ pub struct ClientRegistrationFinishResult { /// Instance of the ClientRegistration, only used in tests for checking zeroize #[cfg(test)] pub state: ClientRegistration, + /// Password derived key, only used in tests + #[cfg(test)] + pub randomized_pwd: Vec, } // Cannot be derived because it would require for CS to be Clone. @@ -289,6 +292,8 @@ impl Clone for ClientRegistrationFinishResult { server_s_pk: self.server_s_pk.clone(), #[cfg(test)] state: self.state.clone(), + #[cfg(test)] + randomized_pwd: self.randomized_pwd.clone(), } } } @@ -333,6 +338,8 @@ impl ClientRegistration { server_s_pk: r2.server_s_pk, #[cfg(test)] state: self, + #[cfg(test)] + randomized_pwd: password_derived_key }) } } diff --git a/src/tests/opaque_test_vectors.rs b/src/tests/opaque_test_vectors.rs index 22b16a9..139d445 100644 --- a/src/tests/opaque_test_vectors.rs +++ b/src/tests/opaque_test_vectors.rs @@ -63,6 +63,7 @@ pub struct TestVectorParameters { pub KE3: Vec, pub export_key: Vec, pub session_key: Vec, + pub randomized_pwd: Vec, } // Pulled from "OPAQUE-3DH Test Vector 1" and "OPAQUE-3DH Test Vector 6" @@ -482,6 +483,7 @@ fn populate_test_vectors(values: &Value) -> TestVectorParameters { blind_login: parse!(values, "blind_login"), export_key: parse!(values, "export_key"), session_key: parse!(values, "session_key"), + randomized_pwd: parse!(values, "randomized_pwd"), } } @@ -567,6 +569,10 @@ fn test_registration_upload() -> Result<(), ProtocolError> { }, )?; + assert_eq!( + hex::encode(parameters.randomized_pwd), + hex::encode(result.randomized_pwd) + ); assert_eq!( hex::encode(parameters.registration_upload), hex::encode(result.message.serialize())