#libsecp256k1 #ffi #secp256k1

sys no-std sapio-secp256k1-sys

皮埃特·武莱(Pieter Wuille)的 libsecp256k1 库的 FFI

3 个不稳定版本

0.22.3 2022年5月22日
0.21.4 2022年2月21日
0.9.2 2024年1月16日
0.5.3 2022年5月22日
0.5.2 2022年5月21日

700开发工具

Download history 24/week @ 2024-03-11 16/week @ 2024-03-18 30/week @ 2024-03-25 57/week @ 2024-04-01 22/week @ 2024-04-08 39/week @ 2024-04-15 34/week @ 2024-04-22 30/week @ 2024-04-29 11/week @ 2024-05-06 28/week @ 2024-05-13 38/week @ 2024-05-20 51/week @ 2024-05-27 39/week @ 2024-06-03 38/week @ 2024-06-10 31/week @ 2024-06-17 57/week @ 2024-06-24

每月下载量 170
18 个包中使用(通过 sapio-secp256k1

CC0 许可证

4.5MB
38K SLoC

C 35K SLoC // 0.0% comments Rust 1.5K SLoC // 0.0% comments GNU Style Assembly 753 SLoC // 0.1% comments Automake 226 SLoC // 0.1% comments Shell 188 SLoC // 0.2% comments Python 75 SLoC // 0.2% comments M4 61 SLoC // 0.1% comments

包含 (难以理解的 autoconf 代码,20KB) depend/secp256k1/configure.ac

Rust secp256k1-sys

Crate Info CC0 1.0 Universal Licensed API Docs Rustc Version 1.48.0+

提供对由 libsecp256k1 提供的 C FFI 的低级绑定。

供应商

默认构建过程是使用位于 depend 目录中的供应商 libsecp256k1 源文件进行构建。这些源文件以特殊的 rust-secp256k1-sys 特定的前缀 rustsecp256k1_v1_2_3_ 开头。

该前缀确保不会发生符号冲突

  • 当 Rust 项目在依赖树中有两个不同版本的 rust-secp256k1 时,或者
  • 当在已经链接现有 libsecp256k1 符号的环境中构建静态库时,使用 rust-secp256k1

要更新供应商源,请使用 vendor-libsecp.sh 脚本: ./vendor-libsecp.sh <rev>

  • 其中 <rev> 是要签出的 libsecp256k1 的 git 修订版本。如果您不指定修订版本,脚本将简单地克隆仓库并使用默认分支指向的任何修订版本。

链接到外部符号

危险:这样做不正确可能会产生灾难性的后果!

本功能主要用于包含多种编程语言的软件,旨在将相同的库链接在一起以节省空间,或者将来自同一来源的多个二进制文件捆绑在一起。请勿将此用于链接到您在操作系统中找到的任何随机secp256k1库!如果您正在打包依赖于rust-secp256k1的软件,使用此标志链接到另一个包,请确保您仍然在那个包的二进制兼容性保证范围内。例如,在Debian中,如果您需要libsecp256k1 1.2.3,请确保您的包需要严格>= 1.2.3 << 1.2.4。请注意,除非您为官方仓库打包库,否则您应该使用您自己的特定字符串来前缀您的包和库。例如,如果您有一组名为my-awesome-packages的包,您应该将libsecp256k1打包为libmy-awesome-packages-secp256k1,并从您的应用程序中依赖该库/包名称。

如果您想在不使用捆绑的符号的情况下编译此库(这可能对于集成到其他构建系统是必需的),您可以通过将--cfg=rust_secp_no_symbol_renaming'添加到您的RUSTFLAGS变量中来做到这一点。

最低支持的Rust版本

此库应始终与Rust 1.48.0中的任何功能组合一起编译。

依赖项