1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, CryptoError>;
7
8#[derive(Debug, Error)]
12pub enum CryptoError {
13 #[error("invalid key length: expected {expected}, got {got}")]
15 InvalidKeyLength {
16 expected: usize,
18 got: usize,
20 },
21
22 #[error("invalid signature")]
24 InvalidSignature,
25
26 #[error("decryption failed: authentication tag mismatch")]
28 DecryptionFailed,
29
30 #[error("encryption failed: {0}")]
32 EncryptionFailed(&'static str),
33
34 #[error("invalid nonce length")]
36 InvalidNonceLength,
37
38 #[error("key derivation failed: {0}")]
40 KeyDerivationFailed(&'static str),
41
42 #[error("certificate error: {0}")]
44 CertificateError(String),
45
46 #[error("invalid PEM format: {0}")]
48 InvalidPem(String),
49
50 #[error("HMAC verification failed")]
52 HmacVerificationFailed,
53
54 #[error("replay attack detected: packet ID already seen")]
56 ReplayDetected,
57
58 #[error("key has expired")]
60 KeyExpired,
61
62 #[error("random number generation failed")]
64 RngFailed,
65}