Files
libsmx/fuzz/fuzz_targets/fuzz_sm3_digest.rs
huangxt a4ca734d0d 重构:RustCrypto 兼容接口
主要变更:
- 新增 sm2/、sm3/、sm4/ 独立 crate,实现 RustCrypto traits
  - sm2:实现 signature、elliptic-curve traits
  - sm3:实现 digest、crypto-common traits
  - sm4:实现 cipher、aead traits
- 新增 fuzz/ 模糊测试目标
- 新增 tests/sm2_proptest.rs 属性测试
- 重构 src/sm4/ 使用 RustCrypto AEAD traits
- 更新 CI 工作流支持多 crate 测试
- 更新 .gitignore 忽略 fuzz/target/
2026-03-11 18:32:21 +08:00

23 lines
540 B
Rust

//! Fuzz target: SM3 一次性哈希与流式哈希必须一致
//!
//! 验证 Sm3::digest(data) == 逐字节 Sm3::update + finalize 的结果相同。
#![no_main]
use libfuzzer_sys::fuzz_target;
use sm3::Digest;
fuzz_target!(|data: &[u8]| {
// 一次性哈希
let hash1 = sm3::Sm3::digest(data);
// 流式哈希(逐字节)
let mut h = sm3::Sm3::new();
for byte in data {
h.update(&[*byte]);
}
let hash2 = h.finalize();
assert_eq!(hash1, hash2, "one-shot and streaming SM3 must agree");
});