mod config;
mod errors;
mod main;
mod storage;
mod types;
pub use errors::PasskeyError;
pub use main::{
AuthenticationOptions, AuthenticatorInfo, AuthenticatorResponse, RegisterCredential,
RegistrationOptions, get_authenticator_info, get_authenticator_info_batch,
get_related_origin_json,
};
pub use types::{ChallengeId, ChallengeType, CredentialId, PasskeyCredential};
use crate::storage::CacheErrorConversion;
pub(crate) use main::{
commit_registration, finish_authentication, prepare_registration_storage, start_authentication,
start_registration, validate_registration_challenge, verify_session_then_finish_registration,
};
pub(crate) use storage::PasskeyStore;
#[cfg(test)]
pub(crate) use types::UserHandle;
pub(crate) use types::{CredentialSearchField, UserName};
pub(crate) async fn init() -> Result<(), PasskeyError> {
let _ = *config::PASSKEY_RP_ID;
let _ = *config::PASSKEY_RP_NAME;
let _ = *config::PASSKEY_TIMEOUT;
let _ = *config::PASSKEY_CHALLENGE_TIMEOUT;
let _ = *config::PASSKEY_ATTESTATION;
let _ = *config::PASSKEY_AUTHENTICATOR_ATTACHMENT;
let _ = *config::PASSKEY_RESIDENT_KEY;
let _ = *config::PASSKEY_REQUIRE_RESIDENT_KEY;
let _ = *config::PASSKEY_USER_VERIFICATION;
let _ = *config::PASSKEY_USER_HANDLE_UNIQUE_FOR_EVERY_CREDENTIAL;
self::main::store_aaguids().await?;
crate::storage::init()
.await
.map_err(PasskeyError::convert_storage_error)?;
PasskeyStore::init().await?;
Ok(())
}