Custom fork of rust-secp256k1 with unsafe modifications for higher speed. Unsuitable for production.
Go to file
Andronik Ordian b22b9e5709
Merge remote-tracking branch 'rust-bitcoin/master'
* rust-bitcoin/master:
  Fix no-std raw test, after removal of lang items
  Fix broken benchmarks
  Disable emscripten tests until they work again https://github.com/rust-lang/rust/issues/66916 https://github.com/rustwasm/team/issues/291
  Add constant of the prime of the curve field.
  Simplify callback logic to returning raw coordinates
  Removed no longer used dont_replace_c_symbols feature
  Fix wrong feature name external-symbols
  Fix missing return c_int in NonceFn
2020-04-09 15:13:43 +02:00
examples Aded an example for recoverable signatures and recovering the pubkey 2019-10-28 22:23:56 +02:00
no_std_test Merge pull request #201 from elichai/2020-03-ecdh 2020-04-06 14:48:57 +00:00
secp256k1-sys Merge remote-tracking branch 'rust-bitcoin/master' 2020-04-09 15:13:43 +02:00
src Merge pull request #201 from elichai/2020-03-ecdh 2020-04-06 14:48:57 +00:00
.gitignore Added ECMULT window size 2019-07-03 17:48:35 -04:00
.travis.yml Merge remote-tracking branch 'rust-bitcoin/master' 2020-04-09 15:13:43 +02:00
CHANGELOG.md Bump version to 0.17.2 2020-01-09 17:08:39 +02:00
Cargo.toml Fix broken benchmarks 2020-04-05 11:08:29 +03:00
LICENSE Remove the MIT/CC0 license in favor of just CC0 2015-03-25 18:36:30 -05:00
Makefile Initial (failing) implementation. 2014-07-06 22:41:22 -07:00
README.md readme: add an example for travis 2020-03-17 22:33:29 +01:00

README.md

Build Status

Full documentation

rust-secp256k1

rust-secp256k1 is a wrapper around libsecp256k1, a C library by Pieter Wuille for producing ECDSA signatures using the SECG curve secp256k1. This library

  • exposes type-safe Rust bindings for all libsecp256k1 functions
  • implements key generation
  • implements deterministic nonce generation via RFC6979
  • implements many unit tests, adding to those already present in libsecp256k1
  • makes no allocations (except in unit tests) for efficiency and use in freestanding implementations

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.22.

A note on Rust 1.22 support

The build dependency cc might require a more recent version of the Rust compiler. To ensure compilation with Rust 1.22.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.22.0" ]; then
    cargo generate-lockfile --verbose && cargo update -p cc --precise "1.0.41" --verbose;
    fi