diff --git a/nkode-rs b/nkode-rs index a81a09a..15937e3 160000 --- a/nkode-rs +++ b/nkode-rs @@ -1 +1 @@ -Subproject commit a81a09ac8696ba2b8fabdc4296a8f11dbd89e38d +Subproject commit 15937e31a77b2ef58d575f6f3439b82759db0c53 diff --git a/src/client/client_auth_api.rs b/src/client/client_auth_api.rs index 664402a..b1392bb 100644 --- a/src/client/client_auth_api.rs +++ b/src/client/client_auth_api.rs @@ -53,7 +53,6 @@ where } async fn register_code(&self, email: &Email, passcode: &[u64], key_login_session: &KeyLoggedInSession, register_code_data: RegisterCodeData) -> Result<(), String> { - println!("register passcode: {:?}", passcode.to_vec()); let auth_data = OpaqueAuthData::from_code(email.as_str(), passcode); self.opaque_code_register.register(&auth_data).await.map_err(|e| format!("error: {}", e))?; let signed_session = SignedSessionData::new( @@ -71,7 +70,6 @@ where } async fn login_code(&self, email: &Email, passcode: &[u64], key_login_session: &KeyLoggedInSession, keypad: Keypad) -> Result { - println!("login passcode: {:?}", passcode.to_vec()); let auth_data = OpaqueAuthData::from_code(email.as_str(), passcode); let signed_session = SignedSessionData::new( key_login_session.0.session_id, diff --git a/src/client/states.rs b/src/client/states.rs index b7850e6..a9bce3b 100644 --- a/src/client/states.rs +++ b/src/client/states.rs @@ -82,7 +82,7 @@ impl UserStateKeyLoggedIn { let icons = self.get_icons(api, &login_data.icon_nonce).await?; let policy = api.get_policy().await?; let nkode_secret_key = self.user_secret_key.chacha20_secret_key(); - let cipher = NKodeCipher::from_nonce(policy, &nkode_secret_key, &login_data.icon_nonce)?; + let cipher = NKodeCipher::from_nonce(policy, &nkode_secret_key, &login_data.cipher_nonce)?; Ok( UserStateCodeLogin { email: self.email, @@ -154,12 +154,12 @@ pub struct UserStateCodeLogin { mask: Vec, icons: Vec, keypad: Keypad, - cipher: NKodeCipher, + pub cipher: NKodeCipher, key_login: KeyLoggedInSession, } impl UserStateCodeLogin { - pub fn sort_icons(&self) -> Vec { + fn sort_icons(&self) -> Vec { nkode_rs::tensor::reorder( &self.icons, self.keypad.indices() @@ -169,8 +169,7 @@ impl UserStateCodeLogin { pub async fn login(&mut self, api: &dyn AuthAPI, selected_keys: &Vec) -> Result { let passcode = self.cipher.decipher(selected_keys, self.keypad.indices(), &self.mask).map_err(|e| format!("invalid keys: {e}"))?; self.keypad.login_shuffle(); - api.login_code(&self.email, &passcode,&self.key_login ,self.keypad.clone()).await?; - todo!() + api.login_code(&self.email, &passcode,&self.key_login ,self.keypad.clone()).await } pub fn get_keypad(&self) -> DisplayKeypad { diff --git a/tests/in_memory_client_app_test.rs b/tests/in_memory_client_app_test.rs index 80c2d21..c550e2e 100644 --- a/tests/in_memory_client_app_test.rs +++ b/tests/in_memory_client_app_test.rs @@ -51,13 +51,11 @@ async fn in_memory_client_app() { let user_secret_key = UserSecretKey::new(); let register_code = new_user.new_user(user_email, user_secret_key).await.unwrap(); let icons: Vec = register_code.get_new_user_icons().await.unwrap(); + let passcode_idx = ..4; let icon_ids:Vec = icons.iter().map(|el| el.id.clone()).collect(); - let selected_icons = icon_ids[0..4].to_vec(); - let code_login = register_code.new_user_register_code(selected_icons.clone()).await.unwrap(); + let selected_icon_ids = icon_ids[passcode_idx].to_vec(); + let code_login = register_code.new_user_register_code(selected_icon_ids.clone()).await.unwrap(); let display_keypad = code_login.get_keypad().unwrap(); - let icon_idxs: Vec = selected_icons.iter().map(|x| { - display_keypad.sorted_icons.iter().position(|x1| {x1.id == *x}).unwrap() - }).collect(); - let selected_keys = display_keypad.keypad.select_keys(&icon_idxs).unwrap(); + let selected_keys = display_keypad.keypad.select_keys(&(0..passcode_idx.end).collect()).unwrap(); code_login.login(&selected_keys).await.unwrap(); }