webauthn_rp

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

error.rs (3110B)


      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 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
     15 pub enum DiscoverableCredentialRequestOptionsErr {
     16     /// Error when [`Extension::prf`] is [`Some`] but [`PublicKeyCredentialRequestOptions::user_verification`] is
     17     /// not [`UserVerificationRequirement::Required`].
     18     PrfWithoutUserVerification,
     19     /// Variant when [`PublicKeyCredentialRequestOptions::timeout`] could not be added to [`Instant::now`] or
     20     /// [`SystemTime::now`].
     21     InvalidTimeout,
     22 }
     23 impl Display for DiscoverableCredentialRequestOptionsErr {
     24     #[inline]
     25     fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
     26         f.write_str(match *self {
     27             Self::PrfWithoutUserVerification => {
     28                 "prf extension was requested without requiring user verification"
     29             }
     30             Self::InvalidTimeout => "the timeout could not be added to the current Instant",
     31         })
     32     }
     33 }
     34 impl Error for DiscoverableCredentialRequestOptionsErr {}
     35 /// Error returned by [`NonDiscoverableCredentialRequestOptions::start_ceremony`].
     36 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
     37 pub enum NonDiscoverableCredentialRequestOptionsErr {
     38     /// Variant when [`NonDiscoverableCredentialRequestOptions::allow_credentials`] is
     39     /// empty.
     40     EmptyAllowedCredentials,
     41     /// Variant when [`NonDiscoverableCredentialRequestOptions::mediation`] is
     42     /// [`CredentialMediationRequirement::Conditional`].
     43     ConditionalMediationRequested,
     44     /// Error when [`Extension::prf`] or [`CredentialSpecificExtension::prf`] is [`Some`] but
     45     /// [`PublicKeyCredentialRequestOptions::user_verification`] is not
     46     /// [`UserVerificationRequirement::Required`].
     47     PrfWithoutUserVerification,
     48     /// Variant when [`PublicKeyCredentialRequestOptions::timeout`] could not be added to [`Instant::now`] or
     49     /// [`SystemTime::now`].
     50     InvalidTimeout,
     51 }
     52 impl Display for NonDiscoverableCredentialRequestOptionsErr {
     53     #[inline]
     54     fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
     55         f.write_str(match *self {
     56             Self::EmptyAllowedCredentials => {
     57                 "non-discoverable requests require a non-empty collection of allowed credentials"
     58             }
     59             Self::ConditionalMediationRequested => {
     60                 "non-discoverable requests are not allowed to use conditional mediation"
     61             }
     62             Self::PrfWithoutUserVerification => {
     63                 "prf extension was requested without requiring user verification"
     64             }
     65             Self::InvalidTimeout => "the timeout could not be added to the current Instant",
     66         })
     67     }
     68 }
     69 impl Error for NonDiscoverableCredentialRequestOptionsErr {}