implement most of client app
This commit is contained in:
@@ -3,6 +3,7 @@ use crate::shared::email::Email;
|
||||
use crate::shared::opaque::UserSecretKey;
|
||||
use anyhow::Result;
|
||||
use async_trait::async_trait;
|
||||
use nkode_rs::nkode_core::keypad::Keypad;
|
||||
use nkode_rs::nkode_core::policy::{NKodePolicy, DEFAULT_POLICY};
|
||||
use crate::client::opaque::{OpaqueAuthData, OpaqueAuth, ServerConnectionLogin, ServerConnectionRegister};
|
||||
use crate::shared::signed_session_data::SignedSessionData;
|
||||
@@ -48,8 +49,14 @@ where
|
||||
Ok(KeyLoggedInSession(session))
|
||||
}
|
||||
|
||||
async fn login_code(&self, email: &Email, passcode: &[u64]) -> Result<CodeLoggedInSession, String> {
|
||||
async fn login_code(&self, email: &Email, passcode: &[u64], key_login_session: &KeyLoggedInSession, keypad: Keypad) -> Result<CodeLoggedInSession, String> {
|
||||
let auth_data = OpaqueAuthData::from_code(email.as_str(), passcode);
|
||||
let signed_session = SignedSessionData::new(
|
||||
key_login_session.0.session_id,
|
||||
keypad,
|
||||
&key_login_session.0.session_key
|
||||
).map_err(|e| format!("error: {e:?}"))?;
|
||||
self.user_api.update_keypad(signed_session).await?;
|
||||
let session = self.opaque_code_login.login(&auth_data).await.map_err(|e| format!("error: {}", e))?;
|
||||
Ok(CodeLoggedInSession(session))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user