Secret Contract Development Toolkit - Crypto Tools

⚠️ This package is a sub-package of the secret-toolkit package. Please see its crate page for more context.

This crate contains common cryptography tools used in the development of Secret Contracts running on the Secret Network.

Note: It has a deep dependency tree and increases compilation times significantly.

Add the following to your cargo.toml file:

toml [dependencies] secret-toolkit = { version = "0.9.0", features = ["crypto"] } secret-toolkit-crypto = { version = "0.9.0", features = ["hash", "rand", "ecc-secp256k1"] }

Example usage

```rust

extern crate secrettoolkitcrypto;

use secrettoolkitcrypto::{sha_256, ContractPrng, secp256k1::{PrivateKey, PublicKey, Signature}};

use base64;

use cosmwasmstd::{StdError, testing::mockdependencies};

fn main() -> Result<(), StdError> {

let deps = mockdependencies(); let entropy: String = "secret".toowned(); let prngseed: Vec = sha256(base64::encode(&entropy.clone()).asbytes()).tovec();

let mut rng = ContractPrng::new(&prngseed, entropy.asbytes());

let privatekey: PrivateKey = PrivateKey::parse(&rng.randbytes())?; let publickey: PublicKey = privatekey.pubkey();

let message: &[u8] = b"message"; let signature: Signature = private_key.sign(message, deps.api);

Ok(())

}

```

Cargo Features