diff --git a/.travis.yml b/.travis.yml index 23321e9..a6c6fb2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,6 +36,7 @@ script: - cargo test --verbose - cargo build --verbose --release - cargo test --verbose --release + - cargo run --example generate_keys --features=rand - if [ ${TRAVIS_RUST_VERSION} == "stable" ]; then cargo doc --verbose --features="rand,serde,recovery,endomorphism"; fi - if [ ${TRAVIS_RUST_VERSION} == "nightly" ]; then cargo test --verbose --benches --features=unstable; fi - if [ ${TRAVIS_RUST_VERSION} == "stable" -a "$TRAVIS_OS_NAME" = "linux" ]; then diff --git a/Cargo.toml b/Cargo.toml index 9808c9d..aaf3797 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ keywords = [ "crypto", "ECDSA", "secp256k1", "libsecp256k1", "bitcoin" ] readme = "README.md" build = "build.rs" links = "secp256k1" +autoexamples = false # Remove when edition 2018 https://github.com/rust-lang/cargo/issues/5330 # Should make docs.rs show all functions, even those behind non-default features [package.metadata.docs.rs] @@ -38,6 +39,7 @@ lowmemory = [] rand = "0.6" rand_core = "0.4" serde_test = "1.0" +bitcoin_hashes = "0.7" [dependencies.rand] version = "0.6" @@ -48,3 +50,7 @@ default-features = false version = "1.0" optional = true default-features = false + +[[example]] +name = "generate_keys" +required-features = ["rand"] \ No newline at end of file diff --git a/examples/generate_keys.rs b/examples/generate_keys.rs new file mode 100644 index 0000000..ae1ec2b --- /dev/null +++ b/examples/generate_keys.rs @@ -0,0 +1,17 @@ +extern crate secp256k1; + +use secp256k1::rand::rngs::OsRng; +use secp256k1::{PublicKey, Secp256k1, SecretKey}; + +fn main() { + let secp = Secp256k1::new(); + let mut rng = OsRng::new().unwrap(); + // First option: + let (seckey, pubkey) = secp.generate_keypair(&mut rng); + + assert_eq!(pubkey, PublicKey::from_secret_key(&secp, &seckey)); + + // Second option: + let seckey = SecretKey::new(&mut rng); + let _pubkey = PublicKey::from_secret_key(&secp, &seckey); +}