Expand description
TA ELF 签名与验签库。
提供两种使用模式:
std(默认):完整签名工具链,包括 ELF 写入(objcopy)、CMS 签名(mbedtls)、 GmSSL 兼容模式等。供tasign-toolCLI 使用。kernel-verify(no_std+alloc):仅验签路径,供 Rust 内核直接调用verify_elf_signature对已嵌入.ta_signature的 ELF 做证书验签。
密码学运算统一由 mbedtls-smx 完成(SM2/SM3、RSA/SHA256、ECDSA/SHA256)。
GmSSL 可执行文件仅在脚本层面用于证书生成与 cms-compat=gmssl 兼容验证。
§日志(log 门面)
本 crate 使用 log 的 info! / 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、默认 ID1234567812345678一致: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§
- Tasign
Error - 兼容旧错误类型名。