diff --git a/native/cpp/CommonCpp/grpc/grpc_client/src/lib.rs b/native/cpp/CommonCpp/grpc/grpc_client/src/lib.rs --- a/native/cpp/CommonCpp/grpc/grpc_client/src/lib.rs +++ b/native/cpp/CommonCpp/grpc/grpc_client/src/lib.rs @@ -2,8 +2,8 @@ use opaque_ke::{ ClientLogin, ClientLoginFinishParameters, ClientLoginStartParameters, ClientRegistration, ClientRegistrationFinishParameters, - CredentialFinalization, CredentialResponse, RegistrationResponse, - RegistrationUpload, + CredentialFinalization, CredentialRequest, CredentialResponse, + RegistrationResponse, RegistrationUpload, }; use rand::{rngs::OsRng, CryptoRng, Rng}; use std::sync::Arc; @@ -122,6 +122,25 @@ .map(|res| res.message) } +fn pake_login_start( + rng: &mut (impl Rng + CryptoRng), + password: &str, +) -> Result<(CredentialRequest, Option>), Status> { + let client_login_start_result = ClientLogin::::start( + rng, + password.as_bytes(), + ClientLoginStartParameters::default(), + ) + .map_err(|e| { + error!("Failed to start PAKE login: {}", e); + Status::failed_precondition("PAKE failure") + })?; + Ok(( + client_login_start_result.message, + Some(client_login_start_result.state), + )) +} + fn pake_login_finish( credential_response_bytes: &[u8], client_login: Option>,