#schnorr-signature #bitcoin #ethereum

no-std k256

使用纯Rust编写的secp256k1椭圆曲线库,支持ECDSA签名/验证/公钥恢复、Taproot Schnorr签名(BIP340)、椭圆曲线Diffie-Hellman(ECDH)以及通用secp256k1椭圆曲线群操作,可用于实现任意协议

52次发布

0.14.0-pre.02024年6月5日
0.13.3 2024年1月8日
0.13.2 2023年11月15日
0.13.1 2023年4月10日
0.0.0 2019年12月5日

221加密学

Download history 201346/week @ 2024-05-03 219962/week @ 2024-05-10 225108/week @ 2024-05-17 226109/week @ 2024-05-24 236020/week @ 2024-05-31 235900/week @ 2024-06-07 234484/week @ 2024-06-14 253359/week @ 2024-06-21 216250/week @ 2024-06-28 220797/week @ 2024-07-05 211190/week @ 2024-07-12 210805/week @ 2024-07-19 227109/week @ 2024-07-26 225676/week @ 2024-08-02 233543/week @ 2024-08-09 220809/week @ 2024-08-16

945,362每月下载次数
用于2,338个crate(200直接)

Apache-2.0 OR MIT

320KB
6.5K SLoC

RustCrypto: secp256k1 (K-256)椭圆曲线

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

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微控制器)。

自行承担风险!

支持的算法

关于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