emerald-vault 0.36.0

Emerald Vault - Key Storage for Emerald Wallet
Documentation
use std::fmt::Display;

#[derive(Debug, Clone, Eq, PartialEq, Display)]
pub enum CryptoError {
    CryptoFailed(String),
    InvalidParams(String),
    InvalidKey,
    WrongKey,
    UnsupportedSource(String),
    NoEntropy,
    GlobalKeyRequired,
    PasswordRequired,
}

impl From<scrypt::errors::InvalidParams> for CryptoError {
    fn from(e: scrypt::errors::InvalidParams) -> Self {
        CryptoError::InvalidParams(e.to_string())
    }
}

impl From<scrypt::errors::InvalidOutputLen> for CryptoError {
    fn from(e: scrypt::errors::InvalidOutputLen) -> Self {
        CryptoError::InvalidParams(e.to_string())
    }
}

impl From<argon2::Error> for CryptoError {
    fn from(e: argon2::Error) -> Self {
        CryptoError::InvalidParams(e.to_string())
    }
}

impl From<secp256k1::Error> for CryptoError {
    fn from(err: secp256k1::Error) -> Self {
        match err {
            secp256k1::Error::InvalidSecretKey => CryptoError::InvalidKey,
            secp256k1::Error::InvalidTweak => CryptoError::InvalidParams(format!("{}", err)),
            _ => CryptoError::CryptoFailed(format!("{}", err))
        }
    }
}