跳到正文
- v1.11.0
- 2026-08-01 — SM4-GCM / SM4-CCM 的 RustCrypto
aead 0.6 trait 适配(增量、可选)。新增 sm4::Sm4Gcm 与 sm4::Sm4Ccm<M, N>,是一层盖在固有 AEAD 路径上的薄壳,放在 aead-traits = ["sm4-aead", "dep:aead"] 后面——这是自 v0.11 起就搁置的待办(backlog),因为上游当时还停在 0.6.0-rc;现在 aead 0.6.1 已稳定,MSRV 正好是 1.85。实现了 KeySizeUser / KeyInit / AeadCore / AeadInOut(返回 Vec 的 Aead 由 blanket impl 自动给出)。不新增 dudect 目标(薄壳不加密码学;涉密路径就是原来那套代码);新增差分模糊测试 fuzz_sm4_aead_traits(模糊测试 census 32 → 33)。默认构建逐字节不变;C ABI 仍是 104 个入口。
- v1.10.0
- 未单独发版。保障性轮次:把 GmSSL 互操作测试迁到 GmSSL 3.2.0 的子命令,并在 CI 里加
interop-gmssl 任务、钉住 oracle 标签(关闭审计项 F16——原先套件在 CI 里其实整段自跳过);合并重复的常量时间 PKCS#7 去填充;把四个 DER 模糊测试加强到字节幂等;模糊测试 census 30 → 32。已发布 crate 的运行时输出没有变化,所以 crates.io 跳过 1.10.0(沿用 v0.14 / v0.17–v0.23 的先例)。改动随 1.11.0 一起发出。
- v1.9.0
- 2026-06-16 — TLCP 工具集的 C FFI,这一轮收束了整条 TLCP 弧线。把攒下来的工具集——v1.6 的密钥派生与免密钥确认 SM2-KX、v1.7 的记录层保护、v1.8 的链 / 证书对验证——通过
gmcrypto-c ABI 暴露出去,于是 C 调用方可以自己驱动一次完整的 TLCP 握手(KX → 密钥派生 → 记录层 → 证书验证)。新增 19 个符号、2 个不透明句柄、7 个常量:FFI 入口从 85 个扩到 104 个。设计上是一层薄壳——所有失败都归一个 GMCRYPTO_ERR,deprotect 不加任何逻辑(Lucky13 那部分留在核心里),而「这不是身份认证」的免责声明在 gmcrypto.h 里写得很显眼。c_smoke 从 84 条扩到 97 条,其中包括「填充错 ≡ MAC 错、只回一个 ERR」的预言机测试;不新增 dudect 目标;census 仍是 30。默认构建逐字节不变。
- v1.8.0
- 2026-06-14 — TLCP 证书对 / 证书链验证(最后一个核心轮次):
x509::verify_chain 按调用方给定的顺序线性走一遍链——逐边的 SM2 签名与原始 Name(名称)衔接、中间 CA 资格、终止于调用方信任的锚点、拒绝任何未知的关键扩展(RFC 5280 §4.2)、可选的有效期窗口,以及深度上限;外加针对双证书 profile 的 tlcp::chain::verify_pair(角色 keyUsage、叶子非 CA、以及把两张叶子证书绑定到同一个实际 CA)。这是签名与链结构验证,不是路径构建与信任判定,也不是服务端身份认证:端点身份绑定永远留给调用方。不新增 dudect 目标(只处理公开输入);模糊测试 census 29 → 30。纯核心 / no_std;默认构建逐字节不变。
- v1.7.0
- 2026-06-14 — TLCP 记录层保护(第二个代码轮次):
tlcp::record,为四个 SM2 系列套件提供字节流进、字节流出的保护 / 解保护。SM4-CBC 记录层做了 Lucky13 加固——在内层哈希 SM3 压缩次数上保持常量时间、固定 256 字节的填充合法性扫描、以及与数据无关的 MAC 提取;填充非法时照样跑完整个 MAC,只返回一个 None。记录层字节与 OpenSSL EVP SM4-CBC + GmSSL sm3hmac、以及 GmSSL sm4 -gcm 逐字节交叉验证过。新增带门禁的 dudect 目标 ct_tlcp_cbc_deprotect;模糊测试 census 27 → 29。增量式小版本,无新依赖;默认构建逐字节不变。(key, seq) 的唯一性由调用方保证——这些无状态原语无法自己检测重用。
- v1.6.0
- 2026-06-13 — TLCP(GB/T 38636)的第一个代码轮次:
tlcp::key_schedule(基于 HMAC-SM3 的 TLS-1.2 式 PRF——主密钥、密钥块、Finished 校验数据),外加在现有 sm2-key-exchange typestate 上的免密钥确认完结步骤。新增可选 tlcp 特性(纯核心、no_std);密钥派生的 KAT 取自 OpenSSL 3.x 的 TLS1-PRF(digest:SM3)。不新增 dudect 目标;带密钥确认的交换流程不变,仍是默认。默认构建逐字节不变。
- v1.5.0
- 未单独发版。TLCP 的分解设计轮次——只做范围划定和缺口梳理,输出无变化。crates.io 跳过;它的方案随
1.6.0 一起落地。
- v1.4.0
- 2026-06-12 — X.509 与 SM2 结合的 C ABI,照旧走「核心在 vN、FFI 在 vN+1」的节奏(FFI 入口从 72 个扩到 85 个):一个不透明的证书句柄、签名验证,以及若干原始拷出访问器。「不做信任判定」这条约束完整跨过 ABI。核心构建与 1.3.0 一致。
- v1.3.0
- 2026-06-11 — X.509 与 SM2 结合:按 GM/T 0015 profile 严格 DER 解析 v3 叶子证书,并在精确的
tbsCertificate 原始字节上做 SM2-with-SM3 签名验证。不做任何信任判定——不构建证书链、不看时钟、不解释扩展、不查吊销。新增可选 x509 特性(纯核心,无新依赖);新增一个模糊测试目标(fuzz_x509,census 26 → 27),不新增 dudect 目标——证书验证只处理公开输入。默认构建逐字节不变;三个 crate 锁步升到 1.3.0。
- v1.2.0
- 2026-06-11 — SM2 密钥交换的 C ABI,照旧走「核心在 vN、FFI 在 vN+1」的节奏(FFI 入口从 63 个扩到 72 个)。GM/T 0003.5 推荐曲线的 KAT 测试向量穿过 C ABI 也能逐字节复现,FFI 与 Rust 两侧还做了双向交叉握手验证。核心构建与 1.1.0 完全一致——至此,SM2 算法族在 Rust 和 C 两侧都齐了。
- v1.1.0
- 2026-06-10 — SM2 密钥交换(GM/T 0003.3),带密钥确认——SM2 算法族里缺的第三块,签名和加密此前都已发布。可选
sm2-key-exchange 特性;新增一个带门禁的 dudect 目标(ct_sm2_key_exchange)和模糊测试目标(fuzz_sm2_kx)。默认特性构建与 1.0.1 逐字节一致;cargo-semver-checks 判定为非破坏性。
- v1.0.1
- 2026-06-03 — 补丁版:1.0 的收尾清理。API / ABI / 输出字节均无变化(
cargo-public-api 与 cargo-semver-checks 全程绿;1.0.0 的使用者可直接升级)。修正了 C ABI 的 gmcrypto_version()(之前误返回旧的 0.4.0),并补上文档与 CI 加固——x86_64 的 SIMD 测试任务、对裸单块 API 的 ECB 误用警告、以及依赖耦合的披露说明。
- v1.0.0
- 2026-06-01 — 首个稳定版:三个 crate 以
=1.0.0 锁步发布。唯一一次已发布的迁移就是 0.16 → 1.0;运行时实际输出的字节(SM2 签名 / 密文、SM4 各模式字节)与 0.16.0 逐字节一致(KAT + GmSSL 3.1.1 互操作 11/11),所以破坏性变更只动了 API 的形状。从 1.0 起,cargo-semver-checks 把关后续的破坏性变更。
- 0.17 – 0.23
- 未单独发版。都是保障与 API 收尾的轮次——用
cargo-public-api 漂移检查冻结公开 API、把 crypto-bigint 从常开接口解耦、再做一轮多模型对抗式的 1.0 前复审。crates.io 全部跳过;这些改动一起并进 1.0.0 发布。
- v0.16.0
- 2026-05-29 — 多扇区 SM4-XTS 的 C FFI;现在每个密码模式都能从 C / C++ / Go / Zig / Python 调到。
- v0.15.0
- 2026-05-28 — 面向磁盘的原地多扇区 SM4-XTS 辅助;纯核心,可选
sm4-xts 特性。
- v0.14.0
- 未单独发版。合入了一轮
cargo-fuzz 解析器模糊测试(16 个目标,零崩溃),作为保障性工作;输出无变化,不升版本号。
更早的版本(v0.6.0 – v0.13.0)
- v0.13.0
- 2026-05-24 — 单次 SM4-XTS 的 C ABI(v0.12 延后的 FFI 部分);默认构建逐字节不变。
- v0.12.0
- 2026-05-23 — SM4-XTS 核心(GB/T 17964-2021):单次、完整密文窃取,和 OpenSSL SM4-XTS(
xts_standard=GB)逐字节一致;可选 sm4-xts 特性。
- v0.11.0
- 2026-05-23 — RustCrypto trait 适配迁到
digest 0.11 / cipher 0.5;输出逐字节一致(KAT + GmSSL 3.1.1)。
- v0.10.0
- 2026-05-21 — 流式 SM4-GCM AEAD FFI(C / C++ / Go / Zig / Python)。
- v0.9.0
- 2026-05-17 — GCM 认证标签长度参数化、增量输入缓冲式 GCM、单次 AEAD C FFI。
- v0.8.0
- 2026-05-15 — AEAD 核心:单次 SM4-GCM + SM4-CCM、常量时间 GHASH。
- v0.7.0
- 2026-05-14 — 用户可直接调用的密码模式:公开批量分组 API、单次和流式 SM4-CTR。
- v0.6.0
- 2026-05-14 — AVX2
sbox_x32、NEON sbox_x16、CBC 解密扇出。