Files
libsmx/CHANGELOG.md
T
huangxt 8ad52ecac0 准备发布 v0.1.0
- 添加 Apache-2.0 许可证
- 添加 CHANGELOG.md 变更日志
- 添加 SECURITY.md 安全策略
- 添加 README.zh-CN.md 中文文档
- 添加 rustfmt.toml 代码格式配置
- 添加 scripts/pre_publish_check.sh 发布检查脚本
- 更新 Cargo.toml 元数据(分类、关键词、文档链接)
- 完善 README.md 示例代码
- 优化 SM2/SM9 性能和测试覆盖率
2026-03-07 19:27:41 +08:00

2.4 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.1.0 - 2025-03-07

Added

  • SM2 elliptic curve cryptography (GB/T 32918.1-5-2016)
    • Key generation, digital signature (with Z-value), public key encryption/decryption
    • Complete addition formulas for constant-time point operations
    • Fixed-window (w=4) base point scalar multiplication with precomputed table
    • Mixed Jacobian-Affine addition for optimized verification (Shamir's trick)
    • Point compression/decompression (GB/T 32918.1 section 4.2.10)
  • SM3 cryptographic hash (GB/T 32905-2016)
    • Streaming and one-shot hashing API
    • HMAC-SM3 with automatic key material zeroization
  • SM4 block cipher (GB/T 32907-2016)
    • Boolean circuit bitslice S-box (cache-timing resistant)
    • 8 modes of operation: ECB, CBC, OFB, CFB, CTR, GCM, CCM, XTS
    • GCM/CCM authenticated encryption with constant-time tag verification
  • SM9 identity-based cryptography (GB/T 38635.1-2-2020)
    • BN256 pairing (optimal Ate with Miller loop + final exponentiation)
    • Fp12 tower extension: Fp -> Fp2(u^2+2) -> Fp6(v^3-u) -> Fp12(w^2-v)
    • Identity-based signing and verification
    • Identity-based encryption and decryption
  • Unified Error enum with Display and conditional std::error::Error impl
  • no_std support with optional alloc and std features
  • #![forbid(unsafe_code)] enforced at crate level
  • Automatic private key zeroization via zeroize::ZeroizeOnDrop
  • GB/T standard test vectors for all algorithms

Security

  • GCM gf128_mul: replaced secret-dependent if branches with mask arithmetic
  • SM2 is_infinity: replaced short-circuit Iterator::all with ConstantTimeEq
  • SM2 add: replaced 3 conditional branches with complete addition formulas + conditional_select
  • SM2 double: replaced if is_infinity() with conditional_select
  • HMAC-SM3: added zeroize for k_pad/ipad/opad key material on stack
  • CCM: reject AAD > 510 bytes instead of silently skipping
  • XTS: reject non-16-byte-aligned input instead of silently truncating
  • SM9 hash_to_range: replaced variable-iteration while loop with constant-time conditional select