tasign 0.1.2

TA ELF signing utilities with CMS/PKCS#7 support
Documentation
//! 统一错误类型。

use thiserror::Error;
#[cfg(not(feature = "std"))]
use alloc::string::{String, ToString};

#[derive(Debug, Error)]
pub enum Error {
    #[cfg(any(feature = "std", feature = "kernel-verify"))]
    #[error("ELF plain 构造失败: {0}")]
    Plain(#[from] crate::plain::PlainError),
    #[cfg(any(feature = "std", feature = "kernel-verify"))]
    #[error("{0}")]
    ResourceLimit(#[from] crate::limits::LimitsError),
    #[error("CMS 签名: {0}")]
    CmsSign(String),
    #[error("CMS 验签: {0}")]
    CmsVerify(String),
    #[error("私钥 PEM 解析失败: {0}")]
    KeyParse(String),
    #[error("DER 编解码失败: {0}")]
    RasnEncode(String),
    #[error("DER 解码失败: {0}")]
    RasnDecode(String),
    #[error("SM2 错误: {0}")]
    Sm2(String),
    #[error("ELF 写出: {0}")]
    ElfWrite(String),
    #[cfg(feature = "std")]
    #[error("IO: {0}")]
    Io(#[from] std::io::Error),
}

impl From<rasn::error::EncodeError> for Error {
    fn from(e: rasn::error::EncodeError) -> Self {
        Error::RasnEncode(e.to_string())
    }
}

impl From<rasn::error::DecodeError> for Error {
    fn from(e: rasn::error::DecodeError) -> Self {
        Error::RasnDecode(e.to_string())
    }
}

impl From<mbedtls::Error> for Error {
    fn from(e: mbedtls::Error) -> Self {
        Error::Sm2(e.to_string())
    }
}