refactor files

This commit is contained in:
2025-12-17 08:37:25 -06:00
parent 16c8f2d6aa
commit 467f4feadd
22 changed files with 41 additions and 41 deletions

View File

@@ -1,2 +0,0 @@
mod client;
mod server;

View File

@@ -1,15 +1,15 @@
use std::marker::PhantomData; use std::marker::PhantomData;
use nkode_rs::nkode_core::keypad::Keypad; use nkode_rs::nkode_core::keypad::Keypad;
use crate::models::app::{OpaqueAPI, AuthAPI, CodeLoginData, CodeLoginSession, Icon, IconID, KeyLoginSession, ICON_ID_SIZE, LoginSession}; use crate::shared::models::app::{OpaqueAPI, AuthAPI, CodeLoginData, CodeLoginSession, Icon, IconID, KeyLoginSession, ICON_ID_SIZE, LoginSession};
use crate::models::email::Email; use crate::shared::models::email::Email;
use crate::models::opaque::{OpaqueLoginSession, UserSecretKey}; use crate::shared::models::opaque::{OpaqueLoginSession, UserSecretKey};
use anyhow::Result; use anyhow::Result;
use nkode_rs::nkode_core::nkode_cipher::NKodeCipher; use nkode_rs::nkode_core::nkode_cipher::NKodeCipher;
use nkode_rs::from_bytes::FromBytes; use nkode_rs::from_bytes::FromBytes;
use nkode_rs::nkode_core::chacha20prng::Nonce; use nkode_rs::nkode_core::chacha20prng::Nonce;
use async_trait::async_trait; use async_trait::async_trait;
use nkode_rs::nkode_core::policy::{NKodePolicy, DEFAULT_POLICY}; use nkode_rs::nkode_core::policy::{NKodePolicy, DEFAULT_POLICY};
use crate::opaque::client::{AuthenticationData, OpaqueAuthLogin, OpaqueAuthRegister, ServerConnectionLogin, ServerConnectionRegister}; use crate::client::opaque::{AuthenticationData, OpaqueAuthLogin, OpaqueAuthRegister, ServerConnectionLogin, ServerConnectionRegister};
pub struct Login; pub struct Login;
pub struct Register; pub struct Register;

2
src/client/mod.rs Normal file
View File

@@ -0,0 +1,2 @@
mod app;
pub mod opaque;

View File

@@ -9,8 +9,7 @@ use opaque_ke::{
CredentialFinalization, CredentialRequest, CredentialFinalization, CredentialRequest,
RegistrationRequest, RegistrationRequest,
}; };
use crate::models::app::KeyLoginSession; use crate::shared::models::opaque::{OpaqueRegisterSession, OpaqueLoginSession, NKodeCipherSuite, PasswordFile, OpaqueSessionKey};
use crate::models::opaque::{OpaqueRegisterSession, OpaqueLoginSession, NKodeCipherSuite, PasswordFile, OpaqueSessionKey};
#[derive(Debug)] #[derive(Debug)]
pub enum ClientAuthError { pub enum ClientAuthError {

View File

@@ -1,4 +1,3 @@
pub mod opaque; pub mod client;
pub mod app; pub mod server;
pub mod repository; pub mod shared;
pub mod models;

View File

@@ -1,2 +0,0 @@
pub mod server;
pub mod client;

3
src/server/mod.rs Normal file
View File

@@ -0,0 +1,3 @@
pub mod app;
pub mod repository;
pub mod opaque;

View File

@@ -5,8 +5,8 @@ use opaque_ke::{
ServerRegistration, ServerRegistration,
}; };
use uuid::Uuid; use uuid::Uuid;
use crate::models::opaque::{OpaqueLoginSession, NKodeCipherSuite, NKodeServerSetup, OpaqueSessionKey, PasswordFile, OpaqueRegisterSession}; use crate::shared::models::opaque::{OpaqueLoginSession, NKodeCipherSuite, NKodeServerSetup, OpaqueSessionKey, PasswordFile, OpaqueRegisterSession};
use crate::repository::opaque::repos::{OpaqueDatabaseRepo, AuthRepoError, OpaqueSessionRepo}; use crate::server::repository::opaque::repos::{OpaqueDatabaseRepo, AuthRepoError, OpaqueSessionRepo};
pub struct RegCache { pub struct RegCache {
pub session_id: Uuid, pub session_id: Uuid,
@@ -21,8 +21,8 @@ pub struct LoginCache {
pub trait CredKind { pub trait CredKind {
fn has<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> bool; fn has<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> bool;
fn get_pf<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> Result<PasswordFile, AuthRepoError>; fn get_password_file<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> Result<PasswordFile, AuthRepoError>;
fn put_pf<R: OpaqueDatabaseRepo>(repo: &mut R, id: &[u8], pf: PasswordFile) -> Result<(), AuthRepoError>; fn set_password_file<R: OpaqueDatabaseRepo>(repo: &mut R, id: &[u8], pf: PasswordFile) -> Result<(), AuthRepoError>;
fn prereq_for_register<R: OpaqueDatabaseRepo>(_repo: &R, _id: &[u8]) -> Result<(), AuthRepoError> { fn prereq_for_register<R: OpaqueDatabaseRepo>(_repo: &R, _id: &[u8]) -> Result<(), AuthRepoError> {
Ok(()) Ok(())
} }
@@ -37,10 +37,10 @@ impl CredKind for Key {
fn has<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> bool { fn has<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> bool {
repo.has_key(id) repo.has_key(id)
} }
fn get_pf<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> Result<PasswordFile, AuthRepoError> { fn get_password_file<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> Result<PasswordFile, AuthRepoError> {
repo.get_key_passcode_file(id) repo.get_key_passcode_file(id)
} }
fn put_pf<R: OpaqueDatabaseRepo>(repo: &mut R, id: &[u8], pf: PasswordFile) -> Result<(), AuthRepoError> { fn set_password_file<R: OpaqueDatabaseRepo>(repo: &mut R, id: &[u8], pf: PasswordFile) -> Result<(), AuthRepoError> {
repo.new_key(id, pf) repo.new_key(id, pf)
} }
} }
@@ -49,10 +49,10 @@ impl CredKind for Code {
fn has<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> bool { fn has<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> bool {
repo.has_code(id) repo.has_code(id)
} }
fn get_pf<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> Result<PasswordFile, AuthRepoError> { fn get_password_file<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> Result<PasswordFile, AuthRepoError> {
repo.get_code_passcode_file(id) repo.get_code_passcode_file(id)
} }
fn put_pf<R: OpaqueDatabaseRepo>(repo: &mut R, id: &[u8], pf: PasswordFile) -> Result<(), AuthRepoError> { fn set_password_file<R: OpaqueDatabaseRepo>(repo: &mut R, id: &[u8], pf: PasswordFile) -> Result<(), AuthRepoError> {
repo.new_code(id, pf) repo.new_code(id, pf)
} }
fn prereq_for_register<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> Result<(), AuthRepoError> { fn prereq_for_register<R: OpaqueDatabaseRepo>(repo: &R, id: &[u8]) -> Result<(), AuthRepoError> {
@@ -104,7 +104,7 @@ impl<R: OpaqueDatabaseRepo, S: OpaqueSessionRepo> OpaqueAuth<R, S> {
.map_err(|e| format!("get reg session: {e}"))?; .map_err(|e| format!("get reg session: {e}"))?;
K::prereq_for_register(&self.user_repo, sess.identifier.as_slice()) K::prereq_for_register(&self.user_repo, sess.identifier.as_slice())
.map_err(|e| format!("registration prereq failed: {e:?}"))?; .map_err(|e| format!("registration prereq failed: {e:?}"))?;
K::put_pf(&mut self.user_repo, sess.identifier.as_slice(), password_file) K::set_password_file(&mut self.user_repo, sess.identifier.as_slice(), password_file)
.map_err(|e| format!("repo write: {e:?}"))?; .map_err(|e| format!("repo write: {e:?}"))?;
self.session self.session
.clear_reg_session(session_id) .clear_reg_session(session_id)
@@ -116,7 +116,7 @@ impl<R: OpaqueDatabaseRepo, S: OpaqueSessionRepo> OpaqueAuth<R, S> {
identifier: &[u8], identifier: &[u8],
request: CredentialRequest<NKodeCipherSuite>, request: CredentialRequest<NKodeCipherSuite>,
) -> Result<OpaqueLoginSession, String> { ) -> Result<OpaqueLoginSession, String> {
let password_file = K::get_pf(&self.user_repo, identifier) let password_file = K::get_password_file(&self.user_repo, identifier)
.map_err(|e| format!("repo read: {e:?}"))?; .map_err(|e| format!("repo read: {e:?}"))?;
let password_file = let password_file =

View File

@@ -1,6 +1,6 @@
use std::collections::HashMap; use std::collections::HashMap;
use crate::models::opaque::PasswordFile; use crate::shared::models::opaque::PasswordFile;
use crate::repository::opaque::repos::{OpaqueDatabaseRepo, AuthRepoError}; use crate::server::repository::opaque::repos::{OpaqueDatabaseRepo, AuthRepoError};
#[derive(Debug, Default)] #[derive(Debug, Default)]
pub struct InMemoryAuthRepo { pub struct InMemoryAuthRepo {

View File

@@ -1,9 +1,9 @@
use std::collections::HashMap; use std::collections::HashMap;
use crate::opaque::server::{LoginCache, RegCache}; use crate::server::opaque::{LoginCache, RegCache};
use opaque_ke::ServerLogin; use opaque_ke::ServerLogin;
use uuid::Uuid; use uuid::Uuid;
use crate::models::opaque::NKodeCipherSuite; use crate::shared::models::opaque::NKodeCipherSuite;
use crate::repository::opaque::repos::OpaqueSessionRepo; use crate::server::repository::opaque::repos::OpaqueSessionRepo;
#[derive(Default)] #[derive(Default)]
pub struct InMemoryAuthSession { pub struct InMemoryAuthSession {

View File

@@ -4,11 +4,11 @@ use tokio::sync::Mutex;
use std::sync::Arc; use std::sync::Arc;
use uuid::Uuid; use uuid::Uuid;
use opaque_ke::{CredentialFinalization, CredentialRequest, RegistrationRequest}; use opaque_ke::{CredentialFinalization, CredentialRequest, RegistrationRequest};
use crate::models::opaque::{OpaqueLoginSession, NKodeCipherSuite, NKodeServerSetup, OpaqueSessionKey, PasswordFile, OpaqueRegisterSession}; use crate::shared::models::opaque::{OpaqueLoginSession, NKodeCipherSuite, NKodeServerSetup, OpaqueSessionKey, PasswordFile, OpaqueRegisterSession};
use crate::opaque::client::{ClientAuthError, ServerConnectionLogin, ServerConnectionRegister}; use crate::client::opaque::{ClientAuthError, ServerConnectionLogin, ServerConnectionRegister};
use crate::opaque::server::{OpaqueAuth, CredKind, Key, Code}; use crate::server::opaque::{OpaqueAuth, CredKind, Key, Code};
use crate::repository::opaque::in_memory::in_memory_auth_repo::InMemoryAuthRepo; use crate::server::repository::opaque::in_memory::in_memory_auth_repo::InMemoryAuthRepo;
use crate::repository::opaque::in_memory::in_memory_auth_session::InMemoryAuthSession; use crate::server::repository::opaque::in_memory::in_memory_auth_session::InMemoryAuthSession;
#[derive(Clone)] #[derive(Clone)]
pub struct InMemoryServer<K: CredKind> { pub struct InMemoryServer<K: CredKind> {

View File

@@ -1,7 +1,7 @@
use uuid::Uuid; use uuid::Uuid;
use opaque_ke::ServerLogin; use opaque_ke::ServerLogin;
use crate::models::opaque::{NKodeCipherSuite, PasswordFile}; use crate::shared::models::opaque::{NKodeCipherSuite, PasswordFile};
use crate::opaque::server::{LoginCache, RegCache}; use crate::server::opaque::{LoginCache, RegCache};
#[derive(Debug)] #[derive(Debug)]
pub enum AuthRepoError { pub enum AuthRepoError {

1
src/shared/mod.rs Normal file
View File

@@ -0,0 +1 @@
pub mod models;

View File

@@ -4,8 +4,8 @@ use serde::{Deserialize, Serialize};
use getset::Getters; use getset::Getters;
use nkode_rs::from_bytes::FromBytes; use nkode_rs::from_bytes::FromBytes;
use nkode_rs::nkode_core::policy::NKodePolicy; use nkode_rs::nkode_core::policy::NKodePolicy;
use crate::models::email::Email; use crate::shared::models::email::Email;
use crate::models::opaque::{OpaqueSessionKey, UserSecretKey}; use crate::shared::models::opaque::{OpaqueSessionKey, UserSecretKey};
pub struct LoginSession { pub struct LoginSession {
pub(crate) email: Email, pub(crate) email: Email,
pub(crate) session_key: OpaqueSessionKey, pub(crate) session_key: OpaqueSessionKey,

View File

@@ -1,7 +1,7 @@
use opaque_ke::rand::rngs::OsRng; use opaque_ke::rand::rngs::OsRng;
use nkode_protocol::opaque::client::{AuthenticationData, ClientAuthError, OpaqueAuthLogin, OpaqueAuthRegister}; use nkode_protocol::client::opaque::{AuthenticationData, ClientAuthError, OpaqueAuthLogin, OpaqueAuthRegister};
use nkode_protocol::models::opaque::NKodeServerSetup; use nkode_protocol::shared::models::opaque::NKodeServerSetup;
use nkode_protocol::repository::opaque::in_memory::in_memory_transport::{InMemoryCodeServer, InMemoryKeyServer}; use nkode_protocol::server::repository::opaque::in_memory::in_memory_transport::{InMemoryCodeServer, InMemoryKeyServer};
#[tokio::test] #[tokio::test]
async fn opaque_key_registration_and_login_roundtrip() { async fn opaque_key_registration_and_login_roundtrip() {