[package] name = "secp256k1" version = "0.26.0" authors = [ "Dawid Ciężarkiewicz ", "Andrew Poelstra " ] license = "CC0-1.0" homepage = "https://github.com/rust-bitcoin/rust-secp256k1/" repository = "https://github.com/rust-bitcoin/rust-secp256k1/" documentation = "https://docs.rs/secp256k1/" description = "Rust wrapper library for Pieter Wuille's `libsecp256k1`. Implements ECDSA and BIP 340 signatures for the SECG elliptic curve group secp256k1 and related utilities." keywords = [ "crypto", "ECDSA", "secp256k1", "libsecp256k1", "bitcoin" ] readme = "README.md" edition = "2018" # Should make docs.rs show all functions, even those behind non-default features [package.metadata.docs.rs] features = [ "rand", "rand-std", "serde", "bitcoin_hashes", "recovery", "global-context" ] rustdoc-args = ["--cfg", "docsrs"] [features] default = ["std"] std = ["alloc", "secp256k1-sys/std"] # allow use of Secp256k1::new and related API that requires an allocator alloc = ["secp256k1-sys/alloc"] bitcoin-hashes = ["bitcoin_hashes"] # Feature alias because of the underscore. bitcoin-hashes-std = ["std", "bitcoin_hashes/std"] rand-std = ["std", "rand/std", "rand/std_rng"] recovery = ["secp256k1-sys/recovery"] lowmemory = ["secp256k1-sys/lowmemory"] global-context = ["std"] # disable re-randomization of the global context, which provides some # defense-in-depth against sidechannel attacks. You should only use # this feature if you expect the `rand` crate's thread_rng to panic. # (If you are sure the `rand-std` feature will not be enabled, e.g. # if you are doing a no-std build, then this feature does nothing # and is not necessary.) global-context-less-secure = ["global-context"] [dependencies] secp256k1-sys = { version = "0.8.0", default-features = false, path = "./secp256k1-sys" } serde = { version = "1.0", default-features = false, optional = true } # You likely only want to enable these if you explicitly do not want to use "std", otherwise enable # the respective -std feature e.g., bitcoin-hashes-std bitcoin_hashes = { version = "0.11", default-features = false, optional = true } rand = { version = "0.8", default-features = false, optional = true } [dev-dependencies] rand_core = "0.6" serde_test = "1.0" bincode = "1.3.3" # cbor does not build on WASM, we use it in a single trivial test (an example of when # fixed-width-serde breaks down). Just run the test when on an x86_64 machine. [target.'cfg(target_arch = "x86_64")'.dev-dependencies] cbor = "0.4.1" [target.wasm32-unknown-unknown.dev-dependencies] wasm-bindgen-test = "0.3" getrandom = { version = "0.2", features = ["js"] } [[example]] name = "sign_verify_recovery" required-features = ["recovery", "bitcoin-hashes-std"] [[example]] name = "sign_verify" required-features = ["bitcoin-hashes-std"] [[example]] name = "generate_keys" required-features = ["rand-std"] [workspace] members = ["secp256k1-sys"] exclude = ["no_std_test"]