Skip to main content

near_crypto/
errors.rs

1use near_account_id::AccountId;
2
3#[derive(Debug, Clone, thiserror::Error)]
4#[error("expected the input of {expected} bytes, but {received} was given")]
5pub struct InvalidLength {
6    pub expected: usize,
7    pub received: usize,
8}
9
10#[derive(Debug, Clone, thiserror::Error)]
11pub enum ParseKeyTypeError {
12    #[error("unknown key type '{unknown_key_type}'")]
13    UnknownKeyType { unknown_key_type: String },
14}
15
16#[derive(Debug, Clone, thiserror::Error)]
17pub enum ParseKeyError {
18    #[error("unknown key type '{unknown_key_type}'")]
19    UnknownKeyType { unknown_key_type: String },
20    #[error("invalid key length: {0}")]
21    InvalidLength(#[from] InvalidLength),
22    #[error("invalid key data: {error_message}")]
23    InvalidData { error_message: String },
24}
25
26impl From<ParseKeyTypeError> for ParseKeyError {
27    fn from(err: ParseKeyTypeError) -> Self {
28        match err {
29            ParseKeyTypeError::UnknownKeyType { unknown_key_type } => {
30                Self::UnknownKeyType { unknown_key_type }
31            }
32        }
33    }
34}
35
36#[derive(Debug, Clone, thiserror::Error)]
37pub enum ParseSignatureError {
38    #[error("unknown key type '{unknown_key_type}'")]
39    UnknownKeyType { unknown_key_type: String },
40    #[error("invalid signature length: {0}")]
41    InvalidLength(#[from] InvalidLength),
42    #[error("invalid signature data: {error_message}")]
43    InvalidData { error_message: String },
44}
45
46impl From<ParseKeyTypeError> for ParseSignatureError {
47    fn from(err: ParseKeyTypeError) -> Self {
48        match err {
49            ParseKeyTypeError::UnknownKeyType { unknown_key_type } => {
50                Self::UnknownKeyType { unknown_key_type }
51            }
52        }
53    }
54}
55
56#[derive(Debug, Clone, thiserror::Error)]
57pub enum ImplicitPublicKeyError {
58    #[error("'{account_id}' is not a NEAR-implicit account")]
59    AccountIsNotNearImplicit { account_id: AccountId },
60}