Skip to main content

kipuka_hsm/
error.rs

1//! Error types for HSM operations.
2
3use thiserror::Error;
4
5/// Result type for HSM operations.
6pub type HsmResult<T> = Result<T, HsmError>;
7
8/// HSM operation errors.
9#[derive(Debug, Error)]
10pub enum HsmError {
11    /// Failed to load PKCS#11 library.
12    #[error("Failed to load PKCS#11 library: {0}")]
13    LibraryLoad(String),
14
15    /// Slot access error.
16    #[error("Slot access error: {0}")]
17    SlotAccess(String),
18
19    /// Session creation failed.
20    #[error("Session creation failed: {0}")]
21    SessionCreate(String),
22
23    /// Login failed.
24    #[error("Login failed: {0}")]
25    Login(String),
26
27    /// Key generation failed.
28    #[error("Key generation failed: {0}")]
29    KeyGeneration(String),
30
31    /// Signing operation failed.
32    #[error("Signing operation failed: {0}")]
33    SigningFailure(String),
34
35    /// Key not found.
36    #[error("Key not found: {0}")]
37    KeyNotFound(String),
38
39    /// Unsupported mechanism.
40    #[error("Unsupported mechanism: {0}")]
41    UnsupportedMechanism(String),
42
43    /// Post-quantum cryptography not supported by HSM.
44    #[error("PQC not supported: {0}")]
45    PqcNotSupported(String),
46
47    /// Key wrapping failed.
48    #[error("Key wrapping failed: {0}")]
49    KeyWrap(String),
50
51    /// URI parsing error.
52    #[error("PKCS#11 URI parse error: {0}")]
53    UriParse(String),
54
55    /// Cryptoki library error.
56    #[error("Cryptoki error: {0}")]
57    Cryptoki(#[from] cryptoki::error::Error),
58
59    /// I/O error.
60    #[error("I/O error: {0}")]
61    Io(#[from] std::io::Error),
62
63    /// UTF-8 conversion error.
64    #[error("UTF-8 error: {0}")]
65    Utf8(#[from] std::str::Utf8Error),
66
67    /// URL parsing error.
68    #[error("URL error: {0}")]
69    UrlParse(#[from] url::ParseError),
70
71    /// Hex decoding error.
72    #[error("Hex decode error: {0}")]
73    HexDecode(#[from] hex::FromHexError),
74}