1use sos_core::{SecretId, VaultId};
2use thiserror::Error;
3use urn::Urn;
4
5#[derive(Debug, Error)]
7pub enum Error {
8 #[error("account not found '{0}'")]
10 NoAccount(String),
11
12 #[error("folder password not found for '{0}'")]
14 NoFolderPassword(VaultId),
15
16 #[error("vault is not an identity vault")]
19 NotIdentityFolder,
20
21 #[error("failed to parse AGE identity: '{0}'")]
23 AgeIdentityParse(String),
24
25 #[error("identity vault does not contain a valid account identity key")]
28 NoIdentityKey,
29
30 #[error("vault entry for {0} is of an unexpected type")]
33 VaultEntryKind(String),
34
35 #[error(r#"invalid x25519 identity '{0}'"#)]
37 InvalidX25519Identity(String),
38
39 #[error("vault {0} does not contain {1}")]
41 NoSecretUrn(VaultId, Urn),
42
43 #[error("vault {0} does not contain {1}")]
45 NoSecretId(VaultId, SecretId),
46
47 #[error("could not find file encryption password in identity folder")]
49 NoFileEncryptionPassword,
50
51 #[error(transparent)]
53 TryFromSlice(#[from] std::array::TryFromSliceError),
54
55 #[error(transparent)]
57 Io(#[from] std::io::Error),
58
59 #[error(transparent)]
61 Core(#[from] sos_core::Error),
62
63 #[error(transparent)]
65 Authentication(#[from] sos_core::AuthenticationError),
66
67 #[error(transparent)]
69 Backend(#[from] sos_backend::Error),
70
71 #[error(transparent)]
73 Database(#[from] sos_backend::database::Error),
74
75 #[error(transparent)]
77 AsyncSqlite(#[from] sos_backend::database::async_sqlite::Error),
78
79 #[error(transparent)]
81 Sqlite(#[from] sos_backend::database::async_sqlite::rusqlite::Error),
82
83 #[error(transparent)]
85 Password(#[from] sos_password::Error),
86
87 #[error(transparent)]
89 Signer(#[from] sos_signer::Error),
90
91 #[error(transparent)]
93 Vault(#[from] sos_vault::Error),
94
95 #[error(transparent)]
97 Ed25519(#[from] ed25519_dalek::ed25519::Error),
98
99 #[error(transparent)]
101 Urn(#[from] urn::Error),
102}