mod challenge;
mod cookies;
mod errors;
mod openapi;
mod options;
mod response;
mod routes;
mod schema;
mod session;
mod store;
mod webauthn;
pub use errors::PASSKEY_ERROR_CODES;
pub use options::{
AfterAuthenticationVerificationInput, AfterRegistrationVerificationInput,
AuthenticatorAttachment, AuthenticatorSelection, PasskeyAdvancedOptions,
PasskeyAuthenticationOptions, PasskeyOptions, PasskeyRegistrationOptions,
PasskeyRegistrationUser, RegistrationWebAuthnOptions, ResidentKeyRequirement,
ResolveRegistrationUserInput, UserVerificationRequirement,
};
pub use store::Passkey;
pub use webauthn::{
PasskeyAuthenticationStart, PasskeyRegistrationStart, PasskeyWebAuthnBackend,
VerifiedAuthentication, VerifiedPasskeyCredential, WebAuthnConfig,
};
use openauth_core::plugin::AuthPlugin;
pub const UPSTREAM_PLUGIN_ID: &str = "passkey";
pub fn passkey(options: PasskeyOptions) -> AuthPlugin {
let options = std::sync::Arc::new(options);
let mut plugin = AuthPlugin::new(UPSTREAM_PLUGIN_ID).with_version(env!("CARGO_PKG_VERSION"));
for contribution in schema::contributions(&options.passkey_table) {
plugin = plugin.with_schema(contribution);
}
for code in errors::plugin_error_codes() {
plugin = plugin.with_error_code(code);
}
for endpoint in routes::endpoints(options) {
plugin = plugin.with_endpoint(endpoint);
}
plugin
}