Skip to main content

shield_core/
error.rs

1//! Error types for Shield operations.
2
3use thiserror::Error;
4
5/// Result type for Shield operations.
6pub type Result<T> = std::result::Result<T, ShieldError>;
7
8/// Errors that can occur during Shield operations.
9#[derive(Error, Debug)]
10pub enum ShieldError {
11    /// Ciphertext is too short to contain required components.
12    #[error("ciphertext too short: expected at least {expected} bytes, got {actual}")]
13    CiphertextTooShort { expected: usize, actual: usize },
14
15    /// MAC verification failed - data may be tampered or wrong key.
16    #[error("authentication failed: MAC verification failed")]
17    AuthenticationFailed,
18
19    /// Key derivation failed.
20    #[error("key derivation failed: {0}")]
21    KeyDerivationFailed(String),
22
23    /// Invalid key length.
24    #[error("invalid key length: expected {expected} bytes, got {actual}")]
25    InvalidKeyLength { expected: usize, actual: usize },
26
27    /// Random number generation failed.
28    #[error("random generation failed")]
29    RandomFailed,
30
31    /// Stream cipher error.
32    #[error("stream cipher error: {0}")]
33    StreamError(String),
34
35    /// Ratchet session error.
36    #[error("ratchet error: {0}")]
37    RatchetError(String),
38
39    /// Invalid format.
40    #[error("invalid format")]
41    InvalidFormat,
42
43    /// Invalid share count.
44    #[error("invalid share count: need at least 2 shares")]
45    InvalidShareCount,
46
47    /// Key version already exists.
48    #[error("key version {0} already exists")]
49    VersionExists(u32),
50
51    /// Invalid key version.
52    #[error("new version must be greater than current")]
53    InvalidVersion,
54
55    /// Unknown key version.
56    #[error("unknown key version: {0}")]
57    UnknownVersion(u32),
58
59    /// Lamport key already used.
60    #[error("Lamport key already used - generate new key pair")]
61    LamportKeyUsed,
62
63    /// User already exists.
64    #[error("user {0} already exists")]
65    UserExists(String),
66
67    /// Member not found.
68    #[error("member not found in group")]
69    MemberNotFound,
70
71    /// Channel/transport error.
72    #[error("channel error: {0}")]
73    ChannelError(String),
74
75    /// Connection closed.
76    #[error("connection closed")]
77    ConnectionClosed,
78
79    /// Hardware fingerprint unavailable.
80    #[error("hardware fingerprint unavailable (VM or restricted access)")]
81    FingerprintUnavailable,
82}