13 unstable releases (5 breaking)

0.6.1 Oct 12, 2022
0.6.0 Jun 22, 2022
0.5.2 May 10, 2022
0.5.0 Mar 9, 2022
0.1.1 Dec 11, 2019

#903 in Magic Beans

Download history 59346/week @ 2022-08-18 59349/week @ 2022-08-25 68016/week @ 2022-09-01 67644/week @ 2022-09-08 65156/week @ 2022-09-15 63996/week @ 2022-09-22 67438/week @ 2022-09-29 69311/week @ 2022-10-06 67564/week @ 2022-10-13 76648/week @ 2022-10-20 70842/week @ 2022-10-27 82956/week @ 2022-11-03 73980/week @ 2022-11-10 74787/week @ 2022-11-17 69762/week @ 2022-11-24 73488/week @ 2022-12-01

307,870 downloads per month
Used in 555 crates (3 directly)

CC0 license

4.5MB
36K SLoC

C 34K SLoC // 0.0% comments Rust 1K SLoC // 0.1% comments GNU Style Assembly 742 SLoC // 0.1% comments Automake 158 SLoC // 0.1% comments Shell 96 SLoC // 0.2% comments

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 rust-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 rust-secp256k1 in its depepdency tree, or
  • when rust-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 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