1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#![warn(missing_docs)]
use sp_core::crypto::KeyTypeId;
use sp_keystore::Error as TraitError;
use std::io;
mod local;
pub use local::LocalKeystore;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error(transparent)]
Io(#[from] io::Error),
#[error(transparent)]
Json(#[from] serde_json::Error),
#[error(
"Requested public key and public key of the loaded private key do not match. \n
This means either that the keystore password is incorrect or that the private key was stored under a wrong public key."
)]
PublicKeyMismatch,
#[error("Invalid recovery phrase (BIP39) data")]
InvalidPhrase,
#[error("Invalid seed")]
InvalidSeed,
#[error("Key crypto type is not supported")]
KeyNotSupported(KeyTypeId),
#[error("Keystore unavailable")]
Unavailable,
}
pub type Result<T> = std::result::Result<T, Error>;
impl From<Error> for TraitError {
fn from(error: Error) -> Self {
match error {
Error::KeyNotSupported(id) => TraitError::KeyNotSupported(id),
Error::InvalidSeed | Error::InvalidPhrase | Error::PublicKeyMismatch =>
TraitError::ValidationError(error.to_string()),
Error::Unavailable => TraitError::Unavailable,
Error::Io(e) => TraitError::Other(e.to_string()),
Error::Json(e) => TraitError::Other(e.to_string()),
}
}
}