#libsecp256k1 #ffi #secp256k1

sys no-std secp256k1-sys

由 Pieter Wuille 的 libsecp256k1 库提供的 FFI

18 个版本 (9 个破坏性更新)

0.10.0 2024年4月2日
0.9.2 2024年1月3日
0.9.1 2023年12月6日
0.9.0 2023年10月9日
0.1.1 2019年12月11日

#359 in 密码学

Download history 178959/week @ 2024-04-15 180933/week @ 2024-04-22 148795/week @ 2024-04-29 161109/week @ 2024-05-06 178797/week @ 2024-05-13 165359/week @ 2024-05-20 173321/week @ 2024-05-27 177157/week @ 2024-06-03 162673/week @ 2024-06-10 160881/week @ 2024-06-17 164661/week @ 2024-06-24 147864/week @ 2024-07-01 165439/week @ 2024-07-08 173529/week @ 2024-07-15 172502/week @ 2024-07-22 176393/week @ 2024-07-29

每月下载量 694,876
用于 1,734 个 crate (4 个直接使用)

CC0 许可证

4.5MB
38K SLoC

C 35K SLoC // 0.0% comments Rust 1.5K SLoC // 0.0% comments GNU Style Assembly 754 SLoC // 0.1% comments Shell 254 SLoC // 0.1% comments Automake 226 SLoC // 0.1% 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.56.1+

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

捆绑

默认构建过程是使用 depend 目录中捆绑的 libsecp256k1 源文件构建。这些源文件以特殊的前缀 rustsecp256k1_v1_2_3_ 开头。

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

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

要更新捆绑的源文件,使用 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.56.1的任何功能组合一起编译。

依赖项