26 个版本

0.7.1 2022 年 7 月 14 日
0.7.0 2021 年 9 月 17 日
0.6.0 2021 年 7 月 20 日
0.3.5 2020 年 2 月 7 日
0.1.10 2017 年 11 月 17 日

#1419 in 魔法豆

Download history 105685/week @ 2024-03-14 109992/week @ 2024-03-21 114887/week @ 2024-03-28 165272/week @ 2024-04-04 126714/week @ 2024-04-11 123742/week @ 2024-04-18 112505/week @ 2024-04-25 106609/week @ 2024-05-02 109187/week @ 2024-05-09 103453/week @ 2024-05-16 121295/week @ 2024-05-23 117789/week @ 2024-05-30 101719/week @ 2024-06-06 112039/week @ 2024-06-13 107610/week @ 2024-06-20 82466/week @ 2024-06-27

423,543 次每月下载
用于 2,518 个 crate(直接使用 161 个)

Apache-2.0

205KB
4.5K 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

依赖项

~1.2–2.1MB
~44K SLoC