4个版本 (稳定)
2.0.1 | 2022年9月5日 |
---|---|
2.0.0 | 2022年1月12日 |
1.0.0 | 2021年11月11日 |
0.9.6 | 2021年11月10日 |
#24 in #secp256k1
245KB
5K SLoC
RustCrypto: secp256k1 (K-256) 椭圆曲线
secp256k1 (又称K-256) 是一个纯Rust编写的椭圆曲线库,支持 ECDSA 签名/验证(包括带公钥恢复的Ethereum风格签名),椭圆曲线Diffie-Hellman (ECDH),以及通用算术,可用于实现任意协议。
使用来自 elliptic-curve
包的特性和基本类型。
可选地包含一个提供标量和点类型(射影/仿射)的secp256k1 arithmetic
功能,支持常数时间标量乘法。此外,实现了来自 group
包的特性和函数,可用于通用地构建基于群的协议。
⚠️ 安全警告
此crate中包含的secp256k1椭圆曲线算术从未经过独立审计!
此crate的设计目标是确保secret-dependent secp256k1操作在常数时间内执行(使用subtle
crate和常数时间公式)。但是,它尚未经过彻底的评估,以确保在常见的CPU架构上生成的汇编是常数时间的。
自行承担风险!
支持的算法
- 椭圆曲线Diffie-Hellman (ECDH):受
ecdh
功能的限制。注意,这实际上是临时的secp256k1 Diffie-Hellman(也称为ECDHE) - 椭圆曲线数字签名算法 (ECDSA):受
ecdsa
功能的限制。支持ECDSA/secp256k1签名和验证,使用在共识关键应用中使用的低S规范化(BIP 0062),此外还支持从ECDSA签名中恢复secp256k1公钥(如Ethereum所使用)
关于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.51 或更高版本。
最低支持的Rust版本可能会在未来改变,但将只通过小版本号的增加来完成。
SemVer策略
- 此库中所有默认启用的功能都受到SemVer的保护
- 如上所述,MSRV被视为免除SemVer
许可证
所有根据以下任一许可证授权的crate:
任选其一。
贡献
除非你明确声明,否则根据Apache-2.0许可证定义的,你有意提交以包含在本作品中的任何贡献,将按照上述方式双许可,不附加任何额外的条款或条件。
依赖关系
~280KB