7 releases (breaking)

Uses old Rust 2015

0.6.0 Mar 28, 2022
0.5.0 Dec 3, 2021
0.4.0 May 4, 2021
0.3.0 Apr 20, 2021
0.1.0 Jun 3, 2019

#90 in Cryptography

Download history 842/week @ 2022-06-07 868/week @ 2022-06-14 311/week @ 2022-06-21 986/week @ 2022-06-28 776/week @ 2022-07-05 1161/week @ 2022-07-12 1016/week @ 2022-07-19 798/week @ 2022-07-26 1412/week @ 2022-08-02 1158/week @ 2022-08-09 725/week @ 2022-08-16 979/week @ 2022-08-23 943/week @ 2022-08-30 1167/week @ 2022-09-06 835/week @ 2022-09-13 729/week @ 2022-09-20

3,890 downloads per month
Used in 8 crates (5 directly)

CC0 license

4.5MB
39K SLoC

C 35K SLoC // 0.0% comments Rust 2.5K SLoC // 0.0% comments GNU Style Assembly 741 SLoC // 0.1% comments Shell 256 SLoC // 0.1% comments Automake 188 SLoC // 0.1% comments

Continuous integration

rust-secp256k1-zkp

rust-secp256k1-zkp is a wrapper around libsecp256k1-zkp that also re-exports all bindings from rust-secp256k1. As such, all of its types - SecretKey, Context, etc - are interoperable with the ones defined in rust-secp256k1.

In addition to everything from rust-secp256k1, this library adds type-safe Rust bindings for the following modules:

  • generators
  • range proofs
  • pedersen commitments
  • adaptor signatures

Contributing

Contributions to this library are welcome. A few guidelines:

  • Any breaking changes must have an accompanied entry in CHANGELOG.md
  • No new dependencies, please.
  • No crypto should be implemented in Rust, with the possible exception of hash functions. Cryptographic contributions should be directed upstream to libsecp256k1.
  • This library should always compile with any combination of features on Rust 1.29.

A note on Rust 1.29 support

The build dependency cc might require a more recent version of the Rust compiler. To ensure compilation with Rust 1.29.0, pin its version in your Cargo.lock with cargo update -p cc --precise 1.0.41. If you're using secp256k1 in a library, to make sure it compiles in CI, you'll need to generate a lockfile first. Example for 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

Dependencies

~5MB
~48K SLoC