commit 385433ad3d5255e8a8efdb90b2ccbb8befec3b2f
parent bb3d74891d8acff41a64501a29fd9e94ebf8a14b
Author: Zack Newman <zack@philomathiclife.com>
Date:   Thu,  3 Apr 2025 12:17:53 -0600
msrv
Diffstat:
4 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
@@ -9,7 +9,7 @@ license = "MIT OR Apache-2.0"
 name = "webauthn_rp"
 readme = "README.md"
 repository = "https://git.philomathiclife.com/repos/webauthn_rp/"
-rust-version = "1.85.0"
+rust-version = "1.86.0"
 version = "0.3.0"
 
 [package.metadata.docs.rs]
diff --git a/README.md b/README.md
@@ -140,6 +140,7 @@ fn finish_account_creation(
     insert_account(
         &account,
         reg_ceremonies
+            // `Registration::challenge_relaxed` is available iff `serde_relaxed` is enabled.
             .take(&account.registration.challenge_relaxed()?)
             .ok_or(AppErr::MissingWebAuthnCeremony)?
             .verify(
@@ -194,9 +195,11 @@ fn finish_cred_registration(
     reg_ceremonies: &mut FixedCapHashSet<RegistrationServerState<USER_HANDLE_MAX_LEN>>,
     client_data: Vec<u8>,
 ) -> Result<(), AppErr> {
+    // `Registration::from_json_custom` is available iff `serde_relaxed` is enabled.
     let registration = Registration::from_json_custom(client_data.as_slice())?;
     insert_credential(
         reg_ceremonies
+            // `Registration::challenge_relaxed` is available iff `serde_relaxed` is enabled.
             .take(®istration.challenge_relaxed()?)
             .ok_or(AppErr::MissingWebAuthnCeremony)?
             .verify(
@@ -238,6 +241,7 @@ fn finish_auth(
     auth_ceremonies: &mut FixedCapHashSet<DiscoverableAuthenticationServerState>,
     client_data: Vec<u8>,
 ) -> Result<(), AppErr> {
+    // `Authentication::from_json_custom` is available iff `serde_relaxed` is enabled.
     let authentication =
         DiscoverableAuthentication64::from_json_custom(client_data.as_slice())?;
     let mut cred = select_credential(
@@ -246,6 +250,7 @@ fn finish_auth(
     )?
     .ok_or_else(|| AppErr::NoCredential)?;
     if auth_ceremonies
+        // `Authentication::challenge_relaxed` is available iff `serde_relaxed` is enabled.
         .take(&authentication.challenge_relaxed()?)
         .ok_or(AppErr::MissingWebAuthnCeremony)?
         .verify(
diff --git a/src/lib.rs b/src/lib.rs
@@ -149,6 +149,7 @@
 //!     insert_account(
 //!         &account,
 //!         reg_ceremonies
+//!             // `Registration::challenge_relaxed` is available iff `serde_relaxed` is enabled.
 //!             .take(&account.registration.challenge_relaxed()?)
 //!             .ok_or(AppErr::MissingWebAuthnCeremony)?
 //!             .verify(
@@ -205,9 +206,11 @@
 //!     reg_ceremonies: &mut FixedCapHashSet<RegistrationServerState<USER_HANDLE_MAX_LEN>>,
 //!     client_data: Vec<u8>,
 //! ) -> Result<(), AppErr> {
+//!     // `Registration::from_json_custom` is available iff `serde_relaxed` is enabled.
 //!     let registration = Registration::from_json_custom(client_data.as_slice())?;
 //!     insert_credential(
 //!         reg_ceremonies
+//!             // `Registration::challenge_relaxed` is available iff `serde_relaxed` is enabled.
 //!             .take(®istration.challenge_relaxed()?)
 //!             .ok_or(AppErr::MissingWebAuthnCeremony)?
 //!             .verify(
@@ -251,6 +254,7 @@
 //!     auth_ceremonies: &mut FixedCapHashSet<DiscoverableAuthenticationServerState>,
 //!     client_data: Vec<u8>,
 //! ) -> Result<(), AppErr> {
+//!     // `Authentication::from_json_custom` is available iff `serde_relaxed` is enabled.
 //!     let authentication =
 //!         DiscoverableAuthentication64::from_json_custom(client_data.as_slice())?;
 //!     let mut cred = select_credential(
@@ -259,6 +263,7 @@
 //!     )?
 //!     .ok_or_else(|| AppErr::NoCredential)?;
 //!     if auth_ceremonies
+//!         // `Authentication::challenge_relaxed` is available iff `serde_relaxed` is enabled.
 //!         .take(&authentication.challenge_relaxed()?)
 //!         .ok_or(AppErr::MissingWebAuthnCeremony)?
 //!         .verify(
@@ -550,6 +555,7 @@
     clippy::pub_with_shorthand,
     clippy::pub_use,
     clippy::ref_patterns,
+    clippy::return_and_then,
     clippy::self_named_module_files,
     clippy::single_call_fn,
     clippy::single_char_lifetime_names,
diff --git a/src/request/auth.rs b/src/request/auth.rs
@@ -1140,7 +1140,7 @@ impl NonDiscoverableAuthenticationServerState {
             .and_then(|()| {
                 self.allow_credentials
                     .iter()
-                    // Step 6 item 1.
+                    // Step 5.
                     .find(|c| c.id == response.raw_id)
                     .ok_or(AuthCeremonyErr::NoMatchingAllowedCredential)
                     .and_then(|c| {
@@ -1232,8 +1232,8 @@ impl AuthenticationServerState {
         // 2. Client code and the construction of `resp` (hopefully via [`Authentication::deserialize`]).
         // 3. Client code and the construction of `resp` (hopefully via [`AuthenticatorAssertion::deserialize`]).
         // 4. Client code and the construction of `resp` (hopefully via [`ClientExtensionsOutputs::deserialize`]).
-        // 5. Below.
-        // 6. Below.
+        // 5. [`NonDiscoverableAuthenticationServerState::verify`].
+        // 6. [`DiscoverableAuthenticationServerState::verify`] and [`NonDiscoverableAuthenticationServerState::verify`].
         // 7. Informative only in that it defines variables.
         // 8. [`Self::partial_validate`].
         // 9. [`Self::partial_validate`].