a4ca734d0d
主要变更: - 新增 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/
23 lines
664 B
Rust
23 lines
664 B
Rust
//! Fuzz target: SM2 验签不 panic(接受任意字节输入)
|
|
//!
|
|
//! 对任意输入调用 sm2::verify 不应 panic,只能返回 Ok 或 Err。
|
|
//! 验证实现对格式错误输入的健壮性。
|
|
|
|
#![no_main]
|
|
|
|
use libfuzzer_sys::fuzz_target;
|
|
|
|
fuzz_target!(|data: &[u8]| {
|
|
// 需要至少 32 + 65 + 64 = 161 字节
|
|
if data.len() < 161 {
|
|
return;
|
|
}
|
|
|
|
let e: &[u8; 32] = data[..32].try_into().unwrap();
|
|
let pub_key: &[u8; 65] = data[32..97].try_into().unwrap();
|
|
let sig: &[u8; 64] = data[97..161].try_into().unwrap();
|
|
|
|
// 只要不 panic 即可;Ok 或 Err 都是合法结果
|
|
let _ = sm2::verify(e, pub_key, sig);
|
|
});
|