7ec2580514
- SM2: 常量时间标量乘法、点验证和域运算 - SM3: 常量时间填充和长度处理 - SM4: bitslice S-box 实现,避免缓存时序攻击 - SM4 模式: 常量时间 CBC 填充和标签比较 - SM9: 常量时间 Fp12 求逆和哈希到标量 - 添加 zeroize 用于私钥清理 - 改进错误处理,使用常量时间比较
59 lines
1.6 KiB
Rust
59 lines
1.6 KiB
Rust
//! # libsmx
|
|
//!
|
|
//! Production-grade implementation of Chinese commercial cryptography standards:
|
|
//!
|
|
//! - **SM2** — Elliptic Curve Public Key Cryptography (GB/T 32918.1-5)
|
|
//! - **SM3** — Cryptographic Hash Algorithm (GB/T 32905)
|
|
//! - **SM4** — Block Cipher Algorithm (GB/T 32907)
|
|
//! - **SM9** — Identity-Based Cryptographic Algorithm (GB/T 38635.1-2)
|
|
//!
|
|
//! ## Features
|
|
//!
|
|
//! - `no_std` compatible (requires `alloc` feature for SM2/SM9 operations)
|
|
//! - Constant-time operations via [`subtle`](https://docs.rs/subtle)
|
|
//! - Automatic key zeroization via [`zeroize`](https://docs.rs/zeroize)
|
|
//! - All implementations validated against official GB/T test vectors
|
|
//!
|
|
//! ## Quick Start
|
|
//!
|
|
//! ```rust
|
|
//! use libsmx::sm3::Sm3Hasher;
|
|
//!
|
|
//! let mut h = Sm3Hasher::new();
|
|
//! h.update(b"hello world");
|
|
//! let digest = h.finalize();
|
|
//! assert_eq!(digest.len(), 32);
|
|
//! ```
|
|
//!
|
|
//! ## Security Notice
|
|
//!
|
|
//! This library uses constant-time operations throughout to prevent timing
|
|
//! side-channel attacks. Private keys are zeroized on drop. However, this
|
|
//! library has **not** been independently audited. Use in production at your
|
|
//! own risk.
|
|
//!
|
|
//! ## Standards Compliance
|
|
//!
|
|
//! | Algorithm | Standard |
|
|
//! |-----------|----------|
|
|
//! | SM2 | GB/T 32918.1-5-2016 |
|
|
//! | SM3 | GB/T 32905-2016 |
|
|
//! | SM4 | GB/T 32907-2016 |
|
|
//! | SM9 | GB/T 38635.1-2-2020 |
|
|
|
|
#![no_std]
|
|
#![forbid(unsafe_code)]
|
|
#![warn(missing_docs, rust_2018_idioms)]
|
|
|
|
#[cfg(feature = "alloc")]
|
|
extern crate alloc;
|
|
|
|
#[cfg(feature = "std")]
|
|
extern crate std;
|
|
|
|
pub mod error;
|
|
pub mod sm2;
|
|
pub mod sm3;
|
|
pub mod sm4;
|
|
pub mod sm9;
|