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