e52faee98f
Rather than have global initialization functions, which required expensive synchronization on the part of the Rust library, libsecp256k1 now carries its context in thread-local data which must be passed to every function. What this means for the rust-secp256k1 API is: - Most functions on `PublicKey` and `SecretKey` now require a `Secp256k1` to be given to them. - `Secp256k1::verify` and `::verify_raw` now take a `&self` - `SecretKey::new` now takes a `Secp256k1` rather than a Rng; a future commit will allow specifying the Rng in the `Secp256k1` so that functionality is not lost. - The FFI functions have all changed to take a context argument - `secp256k1::init()` is gone, as is the dependency on std::sync - There is a `ffi::Context` type which must be handled carefully by anyone using it directly (hopefully nobody :)) |
||
---|---|---|
src | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
LICENSE | ||
Makefile | ||
README.md |
README.md
rust-secp256k1
rust-secp256k1
is a wrapper around ,
a C library by Peter 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