Crates.io | secret-toolkit-crypto |
lib.rs | secret-toolkit-crypto |
version | 0.10.0 |
source | src |
created_at | 2022-01-16 23:27:39.49253 |
updated_at | 2023-10-18 16:32:51.88353 |
description | Cryptographic tools for writing Secret Contracts |
homepage | |
repository | https://github.com/scrtlabs/secret-toolkit |
max_upload_size | |
id | 515200 |
size | 48,012 |
⚠️ 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:
[dependencies]
secret-toolkit = { version = "0.10.0", features = ["crypto"] }
secret-toolkit-crypto = { version = "0.10.0", features = ["hash", "rand", "ecc-secp256k1"] }
# extern crate secret_toolkit_crypto;
# use secret_toolkit_crypto::{sha_256, ContractPrng, secp256k1::{PrivateKey, PublicKey, Signature}};
# use base64;
# use cosmwasm_std::{StdError, testing::mock_dependencies};
# fn main() -> Result<(), StdError> {
let deps = mock_dependencies();
let entropy: String = "secret".to_owned();
let prng_seed: Vec<u8> = sha_256(base64::encode(&entropy.clone()).as_bytes()).to_vec();
let mut rng = ContractPrng::new(&prng_seed, entropy.as_bytes());
let private_key: PrivateKey = PrivateKey::parse(&rng.rand_bytes())?;
let public_key: PublicKey = private_key.pubkey();
let message: &[u8] = b"message";
let signature: Signature = private_key.sign(message, deps.api);
# Ok(())
# }
["hash"]
- Provides an easy-to-use sha256
function. Uses sha2.["rand"]
- Used to generate pseudo-random numbers. Uses [rand_chacha] and [rand_core].["ecc-secp256k1"]
- Contains types and methods for working with secp256k1 keys and signatures,
as well as standard constants for key sizes. Uses secp256k1.