Skip to main content

passkey_server/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum PasskeyError {
5    #[error("Database error: {0}")]
6    DatabaseError(String),
7
8    #[error("Invalid challenge")]
9    InvalidChallenge,
10
11    #[error("Registration session expired or invalid")]
12    RegistrationSessionExpired,
13
14    #[error("Login session expired or invalid")]
15    LoginSessionExpired,
16
17    #[error("Origin mismatch: expected {expected}, got {got}")]
18    OriginMismatch { expected: String, got: String },
19
20    #[error("Invalid operation type")]
21    InvalidOperationType,
22
23    #[error("RP ID Hash mismatch")]
24    RpIdHashMismatch,
25
26    #[error("User Present flag not set")]
27    UserPresentFlagNotSet,
28
29    #[error("Invalid signature: {0}")]
30    InvalidSignature(String),
31
32    #[error("Passkey not found")]
33    PasskeyNotFound,
34
35    #[error("User Handle mismatch")]
36    UserHandleMismatch,
37
38    #[error("Signature counter regression")]
39    SignatureCounterRegression,
40
41    #[error("Serialization error: {0}")]
42    SerializationError(#[from] serde_json::Error),
43
44    #[error("Base64 decode error: {0}")]
45    Base64Error(#[from] base64::DecodeError),
46
47    #[error("Internal error: {0}")]
48    InternalError(String),
49}
50
51pub type Result<T> = std::result::Result<T, PasskeyError>;