1个不稳定版本
0.1.0 | 2023年10月20日 |
---|
#1138 in 加密学
350KB
8K SLoC
ecsimple
rust椭圆曲线密码学实现
发布历史
- 2023年10月20日发布0.1.0版,用于首次测试案例
简单示例
use ecsimple::keys::*;
use ecsimple::group::*;
use ecsimple::signature::*;
use std::error::Error;
fn main() -> Result<(),Box<dyn Error>> {
let grp :ECGroup = ecc_get_curve_group("prime256v1")?;
let privkey :ECPrivateKey = ECPrivateKey::generate(&grp);
let pubkey :ECPublicKey = privkey.export_pubkey();
let signhash :Vec<u8> = vec![10,11,12,13,14];
let sig :ECSignature = privkey.sign_base(&signhash)?;
let retval :bool = pubkey.verify_base(&sig,&signhash)?;
assert!(retval == true);
Ok(())
}
从der到der
use ecsimple::keys::*;
use ecsimple::group::*;
use std::error::Error;
fn main() -> Result<(),Box<dyn Error>> {
let grp :ECGroup = ecc_get_curve_group("prime256v1")?;
let privkey :ECPrivateKey = ECPrivateKey::generate(&grp);
let pubkey :ECPublicKey = privkey.export_pubkey();
let privdata :Vec<u8> = privkey.to_der("compressed","")?;
let pubdata :Vec<u8> = pubkey.to_der("compressed","explicit")?;
let _nprivkey :ECPrivateKey = ECPrivateKey::from_der(&privdata)?;
let _npubkey :ECPublicKey = ECPublicKey::from_der(&pubdata)?;
Ok(())
}
现在支持的类型
SM2 brainpoolP160r1 brainpoolP160t1 brainpoolP192r1 brainpoolP192t1
brainpoolP224r1 brainpoolP224t1 brainpoolP256r1 brainpoolP256t1 brainpoolP320r1
brainpoolP320t1 brainpoolP384r1 brainpoolP384t1 brainpoolP512r1 brainpoolP512t1
c2pnb163v1 c2pnb163v2 c2pnb163v3 c2pnb176v1 c2pnb208w1
c2pnb272w1 c2pnb304w1 c2pnb368w1 c2tnb191v1 c2tnb191v2
c2tnb191v3 c2tnb239v1 c2tnb239v2 c2tnb239v3 c2tnb359v1
c2tnb431r1 prime192v1 prime192v2 prime192v3 prime239v1
prime239v2 prime239v3 prime256v1 secp112r1 secp112r2
secp128r1 secp128r2 secp160k1 secp160r1 secp160r2
secp192k1 secp224k1 secp224r1 secp256k1 secp384r1
secp521r1 sect113r1 sect113r2 sect131r1 sect131r2
sect163k1 sect163r1 sect163r2 sect193r1 sect193r2
sect233k1 sect233r1 sect239k1 sect283k1 sect283r1
sect409k1 sect409r1 sect571k1 sect571r1 wap-wsg-idm-ecid-wtls1
wap-wsg-idm-ecid-wtls12 wap-wsg-idm-ecid-wtls8 wap-wsg-idm-ecid-wtls9
依赖项
~6–8MB
~155K SLoC