52次发布
0.14.0-pre.0 | 2024年6月5日 |
---|---|
0.13.3 | 2024年1月8日 |
0.13.2 | 2023年11月15日 |
0.13.1 | 2023年4月10日 |
0.0.0 |
|
221在加密学中
945,362每月下载次数
用于2,338个crate(200直接)
320KB
6.5K SLoC
RustCrypto: secp256k1 (K-256)椭圆曲线
secp256k1 (也称为K-256)椭圆曲线库,使用纯Rust编写,支持ECDSA签名/验证/公钥恢复、按照BIP340定义的Taproot Schnorr签名、椭圆曲线Diffie-Hellman(ECDH)以及通用secp256k1椭圆曲线群操作,可用于实现任意基于群的协议。
使用来自elliptic-curve
crate的特性和基本类型。
可选地包含一个提供标量和点类型(射影/仿射)的secp256k1 arithmetic
功能,支持恒等时间标量乘法。此外,实现了来自group
crate的特性和,可用于泛型构建基于群的协议。
安全提示
此crate已由NCC Group审计,发现ECDSA/secp256k1实现中存在一个严重问题,Schnorr/secp256k1签名实现中存在另一个严重问题,这两个问题都已得到纠正。我们感谢Entropy资助审计。
此crate旨在确保秘密相关的secp256k1操作在恒等时间内执行(使用subtle
crate和恒等时间公式)。然而,它不适用于具有可变时间乘法操作的处理器(例如,在乘以零/乘以一时短路,如某些32位PowerPC CPU和一些非ARM微控制器)。
自行承担风险!
支持的算法
- 椭圆曲线Diffie-Hellman (ECDH):受
ecdh
功能的限制。注意,这实际上是临时的secp256k1 Diffie-Hellman(也称为ECDHE) - 椭圆曲线数字签名算法(ECDSA):受
ecdsa
功能的控制。支持ECDSA/secp256k1签名和验证,应用低S规范化(BIP 0062),用于共识关键应用程序,并且还支持从ECDSA签名中恢复secp256k1公钥(例如Ethereum所使用) - Taproot Schnorr签名(如BIP0340中定义):基于群操作的新一代签名算法,支持优雅的多签等高级构造。
关于secp256k1(K-256)
secp256k1是一种在加密货币应用中常用的Koblitz曲线。"K-256"名称遵循NIST标记法,其中P =素域,B =二元域,K = Koblitz曲线。
曲线由Certicom的SECG在"SEC 2:推荐的椭圆曲线域参数"中指定为secp256k1
https://www.secg.org/sec2-v2.pdf
secp256k1主要因其被用于比特币和其他加密货币而闻名,尤其是与椭圆曲线数字签名算法(ECDSA)结合使用。由于在这些应用中的广泛应用,secp256k1是流行和常用椭圆曲线之一。
支持的最小Rust版本
Rust 1.73或更高版本。
支持的最小Rust版本可能会在未来更改,但将以小版本号升级的方式实现。
SemVer策略
- 此库中所有默认启用的功能均受SemVer保护
- MSRV被认为符合上述SemVer规定
许可协议
所有受Apache License,Version 2.0或MIT许可协议许可的crate
任选其一。
贡献
除非您明确声明,否则您提交的任何旨在包含在作品中的贡献,根据Apache-2.0许可协议定义,均将根据上述方式双重许可,没有任何额外的条款或条件。
依赖项
~2–3MB
~62K SLoC