webauthn_rp

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

error.rs (2212B)


      1 #[cfg(doc)]
      2 use super::{
      3     AllowedCredentials, CredentialMediationRequirement, CredentialSpecificExtension,
      4     DiscoverableCredentialRequestOptions, Extension, NonDiscoverableCredentialRequestOptions,
      5     PublicKeyCredentialRequestOptions, UserVerificationRequirement,
      6 };
      7 use core::{
      8     error::Error,
      9     fmt::{self, Display, Formatter},
     10 };
     11 #[cfg(doc)]
     12 use std::time::{Instant, SystemTime};
     13 /// Error returned by [`DiscoverableCredentialRequestOptions::start_ceremony`].
     14 ///
     15 /// This happens when [`PublicKeyCredentialRequestOptions::timeout`] could not be added to [`Instant::now`] or
     16 /// [`SystemTime::now`].
     17 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
     18 pub struct InvalidTimeout;
     19 impl Display for InvalidTimeout {
     20     #[inline]
     21     fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
     22         f.write_str("the timeout could not be added to the current Instant")
     23     }
     24 }
     25 impl Error for InvalidTimeout {}
     26 /// Error returned by [`NonDiscoverableCredentialRequestOptions::start_ceremony`].
     27 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
     28 pub enum NonDiscoverableCredentialRequestOptionsErr {
     29     /// Variant when [`NonDiscoverableCredentialRequestOptions::allow_credentials`] is
     30     /// empty.
     31     EmptyAllowedCredentials,
     32     /// Variant when [`NonDiscoverableCredentialRequestOptions::mediation`] is
     33     /// [`CredentialMediationRequirement::Conditional`].
     34     ConditionalMediationRequested,
     35     /// Variant when [`PublicKeyCredentialRequestOptions::timeout`] could not be added to [`Instant::now`] or
     36     /// [`SystemTime::now`].
     37     InvalidTimeout,
     38 }
     39 impl Display for NonDiscoverableCredentialRequestOptionsErr {
     40     #[inline]
     41     fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
     42         f.write_str(match *self {
     43             Self::EmptyAllowedCredentials => {
     44                 "non-discoverable requests require a non-empty collection of allowed credentials"
     45             }
     46             Self::ConditionalMediationRequested => {
     47                 "non-discoverable requests are not allowed to use conditional mediation"
     48             }
     49             Self::InvalidTimeout => "the timeout could not be added to the current Instant",
     50         })
     51     }
     52 }
     53 impl Error for NonDiscoverableCredentialRequestOptionsErr {}