webauthn_rp

WebAuthn Level 3 RP library.
git clone https://git.philomathiclife.com/repos/webauthn_rp
Log | Files | Refs | README

commit b0158fd3be5217e52ba3221d7f9771e779b481f3
parent 7b98598bba8ee7bf187f80f99d3b415365f63517
Author: Zack Newman <zack@philomathiclife.com>
Date:   Sat,  8 Mar 2025 21:08:07 -0700

do not elide lifetimes for ClientState::options

Diffstat:
MCargo.toml | 6+++---
Msrc/request/auth.rs | 19+++++++++----------
Msrc/request/register.rs | 23++++++++++++++---------
3 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml @@ -10,7 +10,7 @@ name = "webauthn_rp" readme = "README.md" repository = "https://git.philomathiclife.com/repos/webauthn_rp/" rust-version = "1.85.0" -version = "0.2.4" +version = "0.2.5" [package.metadata.docs.rs] all-features = true @@ -25,7 +25,7 @@ precis-profiles = { version = "0.1.11", default-features = false } rand = { version = "0.9.0", default-features = false, features = ["thread_rng"] } rsa = { version = "0.9.7", default-features = false, features = ["sha2"] } serde = { version = "1.0.218", default-features = false, features = ["alloc"], optional = true } -serde_json = { version = "1.0.139", default-features = false, features = ["alloc"], optional = true } +serde_json = { version = "1.0.140", default-features = false, features = ["alloc"], optional = true } url = { version = "2.5.4", default-features = false } [dev-dependencies] @@ -33,7 +33,7 @@ data-encoding = { version = "2.8.0", default-features = false, features = ["allo ed25519-dalek = { version = "2.1.1", default-features = false, features = ["alloc", "pkcs8"] } p256 = { version = "0.13.2", default-features = false, features = ["pem"] } p384 = { version = "0.13.1", default-features = false, features = ["pkcs8"] } -serde_json = { version = "1.0.139", default-features = false, features = ["preserve_order"] } +serde_json = { version = "1.0.140", default-features = false, features = ["preserve_order"] } ### FEATURES ################################################################# diff --git a/src/request/auth.rs b/src/request/auth.rs @@ -1,29 +1,29 @@ #[cfg(doc)] use super::{ super::response::{ + Backup, CollectedClientData, Flag, auth::AuthenticatorData, register::{DynamicState, StaticState}, - Backup, CollectedClientData, Flag, }, - register::{self, PublicKeyCredentialCreationOptions}, AsciiDomain, DomainOrigin, Url, + register::{self, PublicKeyCredentialCreationOptions}, }; use super::{ super::{ + AuthenticatedCredential, response::{ + AuthenticatorAttachment, auth::{ - error::{AuthCeremonyErr, ExtensionErr, OneOrTwo}, Authentication, AuthenticatorExtensionOutput, HmacSecret, + error::{AuthCeremonyErr, ExtensionErr, OneOrTwo}, }, register::CompressedPubKey, - AuthenticatorAttachment, }, - AuthenticatedCredential, }, - auth::error::{RequestOptionsErr, SecondFactorErr}, BackupReq, Ceremony, CeremonyOptions, Challenge, CredentialId, Credentials, ExtensionReq, Hint, Origin, PublicKeyCredentialDescriptor, RpId, SentChallenge, ServerState, - UserVerificationRequirement, THREE_HUNDRED_THOUSAND, + THREE_HUNDRED_THOUSAND, UserVerificationRequirement, + auth::error::{RequestOptionsErr, SecondFactorErr}, }; use core::{ borrow::Borrow, @@ -185,7 +185,6 @@ impl Credentials for AllowedCredentials { /// assert!(AllowedCredentials::with_capacity(1).as_ref().is_empty()); /// ``` #[inline] - #[must_use] fn with_capacity(capacity: usize) -> Self { Self { creds: Vec::with_capacity(capacity), @@ -503,7 +502,7 @@ impl<'rp_id, 'prf> PublicKeyCredentialRequestOptions<'rp_id, 'prf> { /// This gets sent to the client ASAP. #[derive(Debug)] pub struct AuthenticationClientState<'rp_id, 'prf>(PublicKeyCredentialRequestOptions<'rp_id, 'prf>); -impl AuthenticationClientState<'_, '_> { +impl<'rp_id, 'prf> AuthenticationClientState<'rp_id, 'prf> { /// Returns the `PublicKeyCredentialRequestOptions` that was used to start an authentication ceremony. /// /// # Examples @@ -523,7 +522,7 @@ impl AuthenticationClientState<'_, '_> { /// ``` #[inline] #[must_use] - pub const fn options(&self) -> &PublicKeyCredentialRequestOptions<'_, '_> { + pub const fn options(&self) -> &PublicKeyCredentialRequestOptions<'rp_id, 'prf> { &self.0 } } diff --git a/src/request/register.rs b/src/request/register.rs @@ -1,25 +1,25 @@ extern crate alloc; use super::{ super::{ + DynamicState, Metadata, RegisteredCredential, StaticState, response::{ + AuthenticatorAttachment, register::{ - error::{ExtensionErr, RegCeremonyErr}, Attestation, AttestationFormat, AuthenticatorExtensionOutput, AuthenticatorExtensionOutputStaticState, ClientExtensionsOutputs, CredentialProtectionPolicy, Registration, UncompressedPubKey, + error::{ExtensionErr, RegCeremonyErr}, }, - AuthenticatorAttachment, }, - DynamicState, Metadata, RegisteredCredential, StaticState, }, - register::error::{CreationOptionsErr, NicknameErr, UserHandleErr, UsernameErr}, BackupReq, Ceremony, Challenge, CredentialMediationRequirement, ExtensionInfo, ExtensionReq, Hint, Origin, PublicKeyCredentialDescriptor, RpId, SentChallenge, ServerState, - UserVerificationRequirement, THREE_HUNDRED_THOUSAND, + THREE_HUNDRED_THOUSAND, UserVerificationRequirement, + register::error::{CreationOptionsErr, NicknameErr, UserHandleErr, UsernameErr}, }; #[cfg(doc)] use crate::{ - request::{auth::PublicKeyCredentialRequestOptions, AsciiDomain, DomainOrigin, Url}, + request::{AsciiDomain, DomainOrigin, Url, auth::PublicKeyCredentialRequestOptions}, response::{AuthTransports, AuthenticatorTransport, Backup, CollectedClientData}, }; use alloc::borrow::Cow; @@ -31,7 +31,7 @@ use core::{ num::{NonZeroU32, NonZeroU64}, time::Duration, }; -use precis_profiles::{precis_core::profile::Profile as _, UsernameCasePreserved}; +use precis_profiles::{UsernameCasePreserved, precis_core::profile::Profile as _}; #[cfg(any(doc, not(feature = "serializable_server_state")))] use std::time::Instant; #[cfg(any(doc, feature = "serializable_server_state"))] @@ -1401,7 +1401,9 @@ impl<'rp_id, 'user_name, 'user_display_name, 'user_handle> pub struct RegistrationClientState<'rp_id, 'user_name, 'user_display_name, 'user_handle>( PublicKeyCredentialCreationOptions<'rp_id, 'user_name, 'user_display_name, 'user_handle>, ); -impl RegistrationClientState<'_, '_, '_, '_> { +impl<'rp_id, 'user_name, 'user_display_name, 'user_handle> + RegistrationClientState<'rp_id, 'user_name, 'user_display_name, 'user_handle> +{ /// Returns the `PublicKeyCredentialCreationOptions` that was used to start a registration ceremony. /// /// # Examples @@ -1431,7 +1433,10 @@ impl RegistrationClientState<'_, '_, '_, '_> { /// ``` #[inline] #[must_use] - pub const fn options(&self) -> &PublicKeyCredentialCreationOptions<'_, '_, '_, '_> { + pub const fn options( + &self, + ) -> &PublicKeyCredentialCreationOptions<'rp_id, 'user_name, 'user_display_name, 'user_handle> + { &self.0 } }