emerald_vault/crypto/
error.rs

1use std::fmt::Display;
2
3#[derive(Debug, Clone, Eq, PartialEq, Display)]
4pub enum CryptoError {
5    CryptoFailed(String),
6    InvalidParams(String),
7    InvalidKey,
8    WrongKey,
9    UnsupportedSource(String),
10    NoEntropy,
11    GlobalKeyRequired,
12    PasswordRequired,
13}
14
15impl From<scrypt::errors::InvalidParams> for CryptoError {
16    fn from(e: scrypt::errors::InvalidParams) -> Self {
17        CryptoError::InvalidParams(e.to_string())
18    }
19}
20
21impl From<scrypt::errors::InvalidOutputLen> for CryptoError {
22    fn from(e: scrypt::errors::InvalidOutputLen) -> Self {
23        CryptoError::InvalidParams(e.to_string())
24    }
25}
26
27impl From<argon2::Error> for CryptoError {
28    fn from(e: argon2::Error) -> Self {
29        CryptoError::InvalidParams(e.to_string())
30    }
31}
32
33impl From<secp256k1::Error> for CryptoError {
34    fn from(err: secp256k1::Error) -> Self {
35        match err {
36            secp256k1::Error::InvalidSecretKey => CryptoError::InvalidKey,
37            secp256k1::Error::InvalidTweak => CryptoError::InvalidParams(format!("{}", err)),
38            _ => CryptoError::CryptoFailed(format!("{}", err))
39        }
40    }
41}