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}