#libsecp256k1 #ffi #secp256k1

sys no-std cashweb-secp256k1-sys

FFI for Pieter Wuille’s libsecp256k1 library

2 unstable releases

Uses old Rust 2015

0.3.1 Dec 31, 2020
0.1.2 Jul 1, 2020

#1083 in Cryptography

Download history 8/week @ 2023-11-20 8/week @ 2023-11-27 4/week @ 2023-12-11 11/week @ 2023-12-18 15/week @ 2023-12-25 7/week @ 2024-01-08 4/week @ 2024-01-15 16/week @ 2024-02-05 13/week @ 2024-02-12 20/week @ 2024-02-19 36/week @ 2024-02-26 16/week @ 2024-03-04

86 downloads per month
Used in 8 crates (via cashweb-secp256k1)

CC0 license

465KB
9K SLoC

C 7K SLoC // 0.1% comments Rust 1K SLoC // 0.1% comments GNU Style Assembly 742 SLoC // 0.1% comments Automake 143 SLoC M4 134 SLoC // 0.3% comments Shell 111 SLoC // 0.1% comments

cashweb-secp256k1-sys

This crate provides Rust definitions for the FFI structures and methods.

Vendoring

The default build process is to build using the vendored libsecp256k1 sources in the depend folder. These sources are prefixed with a special cashweb-secp256k1-sys-specific prefix rustsecp256k1_v1_2_3_.

This prefix ensures that no symbol collision can happen:

  • when a Rust project has two different versions of cashweb-secp256k1 in its depepdency tree, or
  • when cashweb-secp256k1 is used for building a static library in a context where existing libsecp256k1 symbols are already linked.

To update the vendored sources, use the vendor-libsecp.sh script:

$ ./vendor-libsecp.sh depend <version-code> <rev>
  • Where <version-code> is the cashweb-secp256k1-sys version number underscored: 0_1_2.
  • Where <rev> is the git revision of libsecp256k1 to checkout.

Linking to external symbols

If you want to compile this library without using the bundled symbols (which may be required for integration into other build systems), you can do so by adding --cfg=rust_secp_no_symbol_renaming' to your RUSTFLAGS variable.

Dependencies