#ecdsa #crypto #bitcoin #secp256k1 #no-std #public-key

no-std libsecp256k1-core

纯Rust实现的SECP256K1核心功能

5个不稳定版本

0.3.0 2021年9月17日
0.2.3 2021年9月17日
0.2.2 2021年7月20日
0.2.1 2021年6月18日
0.1.0 2020年3月25日

#40 in #ecdsa

Download history 100043/week @ 2024-03-14 104049/week @ 2024-03-21 108754/week @ 2024-03-28 160906/week @ 2024-04-04 121463/week @ 2024-04-11 118399/week @ 2024-04-18 106030/week @ 2024-04-25 102492/week @ 2024-05-02 102962/week @ 2024-05-09 97943/week @ 2024-05-16 116488/week @ 2024-05-23 113814/week @ 2024-05-30 97510/week @ 2024-06-06 108169/week @ 2024-06-13 103599/week @ 2024-06-20 78798/week @ 2024-06-27

407,123 个月下载量
用于 2,166 个crate(6个直接使用)

Apache-2.0

155KB
4K SLoC

纯Rust实现的SECP256K1

支持no_std的SECP256K1实现。目前我们有以下实现:

  • 将私钥转换为公钥。
  • 签名消息。
  • 签名验证。
  • 从签名消息中恢复公钥。
  • 共享密钥。

功能标志

  • std: 如果禁用,则在no_std环境中工作。默认启用。
  • hmac: 添加需要HMAC-DRBG的功能。这包括签名。默认启用。
  • static-context: 为了加快计算速度,该库使用预计算的表上下文来执行许多ecmult操作。此功能标志将上下文直接作为静态变量。如果禁用,则必须手动从堆中创建上下文。增加二进制文件大小,默认启用。
  • lazy-static-context: 不是将预计算的表上下文存储为静态变量,而是将其存储为通过lazy_static在堆中动态分配上下文的变量。它覆盖了static-context。影响引导性能,仅在std中可用,默认禁用。

开发工作流程

分支

此仓库使用develop分支进行开发。更改定期合并到master分支。

拉取请求

所有更改(除新版本外)都通过拉取请求处理。请将您的PR针对develop分支。

版本控制

libsecp256k1遵循语义版本控制。仓库中的未发布crate将在末尾带有-dev后缀,并且我们进行滚动发布。

当您向该存储库提交拉取请求时,请同时更新受影响的crate的版本,使用以下规则。请注意,这些规则应递归应用——如果更改修改了任何上层crate的依赖项(即使是Cargo.toml文件),则上层crate也需要应用这些规则。

此外,如果您的更改值得注意,则还应修改相应的CHANGELOG.md文件中的“未发布”部分。

如果受影响的crate已经有-dev后缀

  • 如果您的更改是补丁,则无需更新任何版本。
  • 如果您的更改引入了新功能,请检查本地版本是否已增加次要版本,如果没有,则增加。
  • 如果您的更改修改了当前接口,请检查本地版本是否已增加主版本,如果没有,则增加。

如果受影响的crate尚未有-dev后缀

  • 如果您的更改是补丁,则增加补丁版本,并添加-dev后缀。
  • 如果您的更改引入了新功能,则增加次要版本,并添加-dev后缀。
  • 如果您的更改修改了当前接口,则增加主版本,并添加-dev后缀。

如果您的拉取请求引入了新的crate,请将其版本设置为1.0.0-dev


lib.rs:

libsecp256k1的核心库。

依赖项

~365KB