meta_secret_core/errors/
mod.rs1use crate::shared_secret::data_block::common::DataBlockParserError;
2use shamirsecretsharing::SSSError;
3use std::io;
4use std::string::FromUtf8Error;
5use crate::models::{Base64EncodedText, CommunicationChannel};
6
7#[derive(thiserror::Error, Debug)]
8pub enum CoreError {
9 #[error(transparent)]
10 InvalidBase64Content {
11 #[from]
12 source: base64::DecodeError,
13 },
14
15 #[error(transparent)]
16 SignatureError {
17 #[from]
18 source: ed25519_dalek::SignatureError,
19 },
20
21 #[error(transparent)]
22 InvalidArraySize {
23 #[from]
24 source: std::array::TryFromSliceError,
25 },
26
27 #[error(transparent)]
28 StringConversionError {
29 #[from]
30 source: FromUtf8Error,
31 },
32
33 #[error(transparent)]
34 Utf8ConversionError {
35 #[from]
36 source: std::str::Utf8Error,
37 },
38
39 #[error(transparent)]
40 EncryptionError {
41 #[from]
42 source: crypto_box::aead::Error,
43 },
44
45 #[error("The key manager: {key_manager_pk:?} is not a component of the secure communication channel: {channel:?}")]
46 ThirdPartyEncryptionError {
47 key_manager_pk: Base64EncodedText,
48 channel: CommunicationChannel,
49 },
50
51 #[error(transparent)]
52 JsonParseError {
53 #[from]
54 source: serde_json::Error,
55 },
56
57 #[error(transparent)]
58 RecoveryError {
59 #[from]
60 source: RecoveryError,
61 },
62
63 #[error(transparent)]
64 DataBlockParserError {
65 #[from]
66 source: DataBlockParserError,
67 },
68
69 #[error(transparent)]
70 ShamirError {
71 #[from]
72 source: SSSError,
73 },
74
75 #[error(transparent)]
76 SplitOperationError {
77 #[from]
78 source: SplitError,
79 },
80
81 #[error(transparent)]
82 SharesLoaderError {
83 #[from]
84 source: SharesLoaderError,
85 },
86}
87
88#[derive(Debug, thiserror::Error)]
89pub enum RecoveryError {
90 #[error("Empty input")]
91 EmptyInput(String),
92 #[error("Invalid share")]
93 InvalidShare(String),
94
95 #[error(transparent)]
96 ShamirCombineSharesError {
97 #[from]
98 source: SSSError,
99 },
100 #[error(transparent)]
101 DeserializationError {
102 #[from]
103 source: FromUtf8Error,
104 },
105}
106
107#[derive(Debug, thiserror::Error)]
108pub enum SplitError {
109 #[error("Secrets directory can't be created")]
110 SecretsDirectoryError {
111 #[from]
112 source: io::Error,
113 },
114 #[error("User secret share: invalid format (can't be serialized into json)")]
115 UserShareJsonSerializationError {
116 #[from]
117 source: serde_json::Error,
118 },
119}
120
121#[derive(Debug, thiserror::Error)]
122pub enum SharesLoaderError {
123 #[error(transparent)]
124 FileSystemError(#[from] io::Error),
125 #[error(transparent)]
126 DeserializationError(#[from] serde_json::error::Error),
127}