3 个不稳定版本
使用旧的 Rust 2015
0.20.0 |
|
---|---|
0.19.1 | 2021 年 1 月 2 日 |
0.19.0 |
|
0.17.3 | 2020 年 7 月 1 日 |
0.17.2 | 2020 年 7 月 1 日 |
在 #libsecp256k1 中排名 6
每月下载量 66
用于 7 个crate(6 个直接使用)
160KB
3.5K SLoC
cashweb-rust-secp256k1
cashweb-secp256k1
是围绕 Pieter Wuille 的 libsecp256k1 C 库的一个包装,该库用于使用 SECG 曲线 secp256k1
生成 ECDSA 签名。此库
- 公开了所有
libsecp256k1
函数的类型安全 Rust 绑定 - 实现密钥生成
- 通过 RFC6979 实现确定性随机数生成
- 实现许多单元测试,增加了
libsecp256k1
中已有的单元测试 - 为了效率和用于独立实现,不进行任何分配(除了单元测试)
贡献
欢迎对这个库的贡献。以下是一些指南
- 任何重大更改都必须在 CHANGELOG.md 中伴随一条记录
- 请不要添加新的依赖项。
- 请勿在 Rust 中实现任何加密,除可能为哈希函数外。加密贡献应直接向上游 libsecp256k1 指导。
- 此库应始终在 Rust 1.29 上编译。
关于 Rust 1.29 支持的说明
构建依赖项 cc
可能需要 Rust 编译器的更新版本。为确保使用 Rust 1.29.0 编译,请使用以下命令将版本锁定在 Cargo.lock
中:cargo update -p cc --precise 1.0.41
。如果您在一个库中使用 secp256k1
,为了确保 CI 中可以编译,您需要首先生成一个 lockfile。例如,对于 Travis CI
before_script:
- if [ "$TRAVIS_RUST_VERSION" == "1.29.0" ]; then
cargo generate-lockfile --verbose && cargo update -p cc --precise "1.0.41" --verbose;
fi
模糊测试
如果您想对该库进行模糊测试,或者对其进行依赖的任何库进行模糊测试,您可能需要禁用实际加密功能,因为模糊测试工具无法伪造签名,因此不会测试许多有趣的代码路径。为了使用一个简单损坏但模糊测试工具可访问的签名方案,请在您的 RUSTFLAGS
变量中使用 --cfg=rust_secp_fuzz
进行编译。
依赖项
~0.5–1.2MB
~21K SLoC