sos_vault/
error.rs

1use sos_core::SecretId;
2use thiserror::Error;
3
4/// Errors generated by the vault library.
5#[derive(Debug, Error)]
6pub enum Error {
7    /// Error generated when a vault has not
8    /// been initialized (no encrypted meta data).
9    #[error("vault is not initialized")]
10    VaultNotInit,
11
12    /// Error generated when a vault is locked.
13    #[error("vault must be unlocked")]
14    VaultLocked,
15
16    /// Permission denied.
17    ///
18    /// If a shared vault is set to private shared access and
19    /// somebody other than the owner attempts to write to encrypt
20    /// a shared entry this error is generated.
21    #[error("permission denied")]
22    PermissionDenied,
23
24    /// Error generated attempting to a initialize a vault when it has already been initialized.
25    #[error("vault is already initialized")]
26    VaultAlreadyInit,
27
28    /// Error generated when an ECDSA signing key is expected.
29    #[error("not ECDSA signing key")]
30    NotEcdsaKey,
31
32    /// Error generated when an Ed25519 signing key is expected.
33    #[error("not Ed25519 signing key")]
34    NotEd25519Key,
35
36    /// Error generated when the kind of an identification
37    /// secret is unknown.
38    #[error("unknown identity kind {0}")]
39    UnknownIdentityKind(u8),
40
41    /// Error generated when the kind of a secret is unknown.
42    #[error("unknown secret kind {0}")]
43    UnknownSecretKind(u8),
44
45    /// Error generated when the kind of a shared access variant is unknown.
46    #[error("unknown shared access kind {0}")]
47    UnknownSharedAccessKind(u8),
48
49    /// Error generated when a value is expected to be all digits.
50    #[error("expected only digit characters")]
51    NotDigit,
52
53    /// Error generated when decoding vault flags has invalid bits.
54    #[error("bits for vault flags are invalid")]
55    InvalidVaultFlags,
56
57    /// Error generated when decoding secret flags has invalid bits.
58    #[error("bits for secret flags are invalid")]
59    InvalidSecretFlags,
60
61    /// Error generated when attempting to parse a key/value pair.
62    #[error(r#"invalid key value "{0}""#)]
63    InvalidKeyValue(String),
64
65    /// Error generated when an attachment could not be found.
66    #[error(r#"attachment "{0}" not found"#)]
67    FieldNotFound(SecretId),
68
69    /// Error generated when attempting to parse an AGE identity.
70    #[error(r#"invalid x25519 identity "{0}""#)]
71    InvalidX25519Identity(String),
72
73    /// Error generated converting to fixed length slice.
74    #[error(transparent)]
75    TryFromSlice(#[from] std::array::TryFromSliceError),
76
77    /// Errors generated by the core library.
78    #[error(transparent)]
79    Core(#[from] sos_core::Error),
80
81    /// Authentication errors.
82    #[error(transparent)]
83    Authentication(#[from] sos_core::AuthenticationError),
84
85    /// Errors generated by the signer library.
86    #[error(transparent)]
87    Signer(#[from] sos_signer::Error),
88
89    /// Errors generated by the IO module.
90    #[error(transparent)]
91    Io(#[from] std::io::Error),
92
93    /// Error generated by the URN library.
94    #[error(transparent)]
95    Urn(#[from] urn::Error),
96}