signer-core 0.3.2

Signer core package.
Documentation
use thiserror::Error;

/// 本 crate 公共错误类型
#[derive(Debug, Error)]
pub enum SignerError {
    /// 通用带字符串信息的错误
    #[error("{0}")]
    Msg(String),

    /// IO 错误
    #[error(transparent)]
    Io(#[from] std::io::Error),

    /// JSON 序列化 / 反序列化错误
    #[error(transparent)]
    SerdeJson(#[from] serde_json::Error),

    /// Base64 解码错误
    #[error(transparent)]
    Base64(#[from] base64::DecodeError),

    /// ChaCha20Poly1305 加解密错误
    #[error("crypto error: {0}")]
    Crypto(String),

    /// UTF8 转换错误
    #[error(transparent)]
    Utf8(#[from] std::string::FromUtf8Error),

    /// Schnorrkel 签名相关错误
    #[error("signature error: {0}")]
    Signature(String),
}

/// 统一结果类型
pub type Result<T> = std::result::Result<T, SignerError>;

impl From<chacha20poly1305::aead::Error> for SignerError {
    fn from(err: chacha20poly1305::aead::Error) -> Self {
        SignerError::Crypto(err.to_string())
    }
}

impl From<schnorrkel::SignatureError> for SignerError {
    fn from(err: schnorrkel::SignatureError) -> Self {
        SignerError::Signature(err.to_string())
    }
}