Skip to main content

Crate tasign

Crate tasign 

Source
Expand description

TA ELF 签名与验签库。

提供两种使用模式:

  • std(默认):完整签名工具链,包括 ELF 写入(objcopy)、CMS 签名(mbedtls)、 GmSSL 兼容模式等。供 tasign-tool CLI 使用。
  • kernel-verifyno_std + alloc:仅验签路径,供 Rust 内核直接调用 verify_elf_signature 对已嵌入 .ta_signature 的 ELF 做证书验签。

密码学运算统一由 mbedtls-smx 完成(SM2/SM3、RSA/SHA256、ECDSA/SHA256)。 GmSSL 可执行文件仅在脚本层面用于证书生成与 cms-compat=gmssl 兼容验证。

§日志(log 门面)

本 crate 使用 loginfo! / warn! / debug! 等宏,依赖具体实现:

  • x-kernel 中,由入口/内核侧已注册的 logger(例如 klogger,实现 log::Log)输出。
  • 独立使用(含 tasign-tool):在进程入口初始化 env_logger(或其它 log 后端); 单元测试可使用 env_logger::Builder::...::try_init()

Re-exports§

pub use cms::verify_cms_signature_with_ca_opt;
pub use cms::verify_cms_signature_with_ca_opt_and_limits;
pub use cms::verify_sm2_cms;
pub use cms::verify_sm2_cms_with_ca_opt;
pub use cms::verify_sm2_cms_with_ca_pem;
pub use cms::extract_cms_detached_parts;
pub use cms::sign_gmssl_cms_attached_native;
pub use cms::sign_sm2_cms;
pub use cms::CmsSignAlgorithm;
pub use cms::SignInputs;
pub use error::Error;
pub use elf::append_ta_signature;
pub use elf::append_ta_signature_bytes;
pub use elf::append_ta_signature_objcopy;
pub use elf::append_ta_signature_object;
pub use elf::normalize_relocatable_elf_bytes;
pub use elf::strip_ta_signature_relocatable_bytes;
pub use elf::write_outputs;
pub use gmssl_cli::find_gmssl_in_path;
pub use gmssl_cli::resolve_gmssl_path;
pub use gmssl_cli::DEFAULT_GMSSL;
pub use limits::LimitsError;
pub use limits::VerifyLimits;
pub use plain::build_plain_bin;
pub use plain::build_plain_bin_with_limits;
pub use plain::has_ta_signature_section;
pub use plain::plain_bytes_from_signed_elf;
pub use plain::plain_bytes_from_signed_elf_with_limits;
pub use plain::ta_signature_section_bytes;
pub use plain::ta_signature_section_bytes_with_limits;
pub use plain::PlainError;
pub use plain::TA_SIGNATURE_SECTION;

Modules§

cms
PKCS#7 CMS SignedData 的解析与验签。
elf
ELF 与 .ta_signature 节相关的用户态工具(std)。
error
统一错误类型。
gmssl_cli
GmSSL 可执行路径解析;SM2 签名/验签由 mbedtls-smx 实现(与 gmssl sm2sign / sm2verify、默认 ID 1234567812345678 一致:pk_md_sm2 + 签名)。
key
SM2 PKCS#8 PEM 私钥解析(OpenSSL/GmSSL 生成的 BEGIN PRIVATE KEY)。
limits
验签路径上的资源上限(缓解对不可信 ELF/CMS 输入的内存型 DoS)。
plain
plain.bin:ELF 签名原数据。

Functions§

verify_elf_signature
对已嵌入 .ta_signature 的整颗 ELF 验签。
verify_elf_signature_from_parts
分离式验签:调用方自行提供 plain 与 PKCS#7 DER。
verify_elf_signature_from_parts_with_limits
分离式验签,并套用资源上限(分别约束 plain 与 PKCS#7 DER 长度)。
verify_elf_signature_with_limits
verify_elf_signature 相同,但使用调用方提供的资源上限。

Type Aliases§

TasignError
兼容旧错误类型名。