From 43cb632c4a4b08c4480c9a0e8dc7d8360cffe0c7 Mon Sep 17 00:00:00 2001 From: dark64 Date: Tue, 27 Dec 2022 19:11:44 +0100 Subject: [PATCH] move rng function to proof systems crate --- Cargo.lock | 5 ++--- zokrates_cli/src/bin.rs | 1 - zokrates_cli/src/ops/generate_proof.rs | 4 ++-- zokrates_cli/src/ops/mpc/contribute.rs | 4 ++-- zokrates_cli/src/ops/setup.rs | 4 ++-- zokrates_cli/src/ops/universal_setup.rs | 4 ++-- zokrates_js/Cargo.toml | 2 -- zokrates_js/src/lib.rs | 9 ++++---- zokrates_js/src/util.rs | 22 ------------------- zokrates_proof_systems/Cargo.toml | 3 ++- zokrates_proof_systems/src/lib.rs | 1 + .../src/rng.rs | 5 ++--- 12 files changed, 20 insertions(+), 44 deletions(-) rename zokrates_cli/src/common.rs => zokrates_proof_systems/src/rng.rs (76%) diff --git a/Cargo.lock b/Cargo.lock index 25c59edb..dcb6f2df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3211,8 +3211,6 @@ dependencies = [ name = "zokrates_js" version = "1.1.4" dependencies = [ - "blake2 0.8.1", - "byteorder", "console_error_panic_hook", "indexmap", "js-sys", @@ -3262,9 +3260,10 @@ dependencies = [ name = "zokrates_proof_systems" version = "0.1.0" dependencies = [ + "blake2 0.8.1", + "byteorder", "cfg-if 0.1.10", "ethabi", - "getrandom", "hex 0.4.3", "primitive-types", "rand 0.8.5", diff --git a/zokrates_cli/src/bin.rs b/zokrates_cli/src/bin.rs index 62b0c1db..99a1b083 100644 --- a/zokrates_cli/src/bin.rs +++ b/zokrates_cli/src/bin.rs @@ -10,7 +10,6 @@ extern crate lazy_static; mod cli_constants; -mod common; mod ops; use clap::{App, AppSettings, Arg}; diff --git a/zokrates_cli/src/ops/generate_proof.rs b/zokrates_cli/src/ops/generate_proof.rs index 65204a6e..82624ffe 100644 --- a/zokrates_cli/src/ops/generate_proof.rs +++ b/zokrates_cli/src/ops/generate_proof.rs @@ -1,5 +1,4 @@ use crate::cli_constants; -use crate::common::get_seeded_rng; use clap::{App, Arg, ArgMatches, SubCommand}; use rand_0_8::rngs::StdRng; use rand_0_8::SeedableRng; @@ -15,6 +14,7 @@ use zokrates_bellman::Bellman; use zokrates_common::constants; use zokrates_common::helpers::*; use zokrates_field::Field; +use zokrates_proof_systems::rng::get_rng_from_entropy; #[cfg(any(feature = "bellman", feature = "ark"))] use zokrates_proof_systems::*; @@ -179,7 +179,7 @@ fn cli_generate_proof< let mut rng = sub_matches .value_of("entropy") - .map(get_seeded_rng) + .map(get_rng_from_entropy) .unwrap_or_else(StdRng::from_entropy); let proof = B::generate_proof(program, witness, pk, &mut rng); diff --git a/zokrates_cli/src/ops/mpc/contribute.rs b/zokrates_cli/src/ops/mpc/contribute.rs index ff21acd1..fcb7e546 100644 --- a/zokrates_cli/src/ops/mpc/contribute.rs +++ b/zokrates_cli/src/ops/mpc/contribute.rs @@ -1,5 +1,4 @@ use crate::cli_constants::MPC_DEFAULT_PATH; -use crate::common::get_seeded_rng; use clap::{App, Arg, ArgMatches, SubCommand}; use rand_0_8::{rngs::StdRng, SeedableRng}; use std::fs::File; @@ -8,6 +7,7 @@ use std::path::Path; use zokrates_bellman::Bellman; use zokrates_common::constants::{BLS12_381, BN128}; use zokrates_field::{BellmanFieldExtensions, Bls12_381Field, Bn128Field, Field}; +use zokrates_proof_systems::rng::get_rng_from_entropy; use zokrates_proof_systems::{MpcBackend, MpcScheme, G16}; pub fn subcommand() -> App<'static, 'static> { @@ -84,7 +84,7 @@ pub fn cli_mpc_contribute< let mut rng = sub_matches .value_of("entropy") - .map(get_seeded_rng) + .map(get_rng_from_entropy) .unwrap_or_else(StdRng::from_entropy); let hash = B::contribute(&mut reader, &mut rng, &mut writer) diff --git a/zokrates_cli/src/ops/setup.rs b/zokrates_cli/src/ops/setup.rs index de7639fb..49f29181 100644 --- a/zokrates_cli/src/ops/setup.rs +++ b/zokrates_cli/src/ops/setup.rs @@ -1,5 +1,4 @@ use crate::cli_constants; -use crate::common::get_seeded_rng; use clap::{App, Arg, ArgMatches, SubCommand}; use rand_0_8::rngs::StdRng; use rand_0_8::SeedableRng; @@ -15,6 +14,7 @@ use zokrates_bellman::Bellman; use zokrates_common::constants; use zokrates_common::helpers::*; use zokrates_field::Field; +use zokrates_proof_systems::rng::get_rng_from_entropy; #[cfg(any(feature = "bellman", feature = "ark"))] use zokrates_proof_systems::*; @@ -194,7 +194,7 @@ fn cli_setup_non_universal< let mut rng = sub_matches .value_of("entropy") - .map(get_seeded_rng) + .map(get_rng_from_entropy) .unwrap_or_else(StdRng::from_entropy); // run setup phase diff --git a/zokrates_cli/src/ops/universal_setup.rs b/zokrates_cli/src/ops/universal_setup.rs index d2cf031f..b3831b65 100644 --- a/zokrates_cli/src/ops/universal_setup.rs +++ b/zokrates_cli/src/ops/universal_setup.rs @@ -1,5 +1,4 @@ use crate::cli_constants; -use crate::common::get_seeded_rng; use clap::{App, Arg, ArgMatches, SubCommand}; use rand_0_8::rngs::StdRng; use rand_0_8::SeedableRng; @@ -12,6 +11,7 @@ use zokrates_ark::Ark; use zokrates_common::constants; use zokrates_common::helpers::*; use zokrates_field::{Bls12_377Field, Bls12_381Field, Bn128Field, Bw6_761Field, Field}; +use zokrates_proof_systems::rng::get_rng_from_entropy; #[cfg(any(feature = "bellman", feature = "ark"))] use zokrates_proof_systems::*; @@ -111,7 +111,7 @@ fn cli_universal_setup, B: UniversalBackend Result Result PathBuf { @@ -28,23 +26,3 @@ pub fn normalize_path(path: PathBuf) -> PathBuf { } ret } - -pub fn get_seeded_rng(entropy: &str) -> StdRng { - use blake2::{Blake2b, Digest}; - use byteorder::ReadBytesExt; - - let h = { - let mut h = Blake2b::default(); - h.input(&entropy.as_bytes()); - h.result() - }; - - let mut digest = &h[..]; - let mut seed = [0u8; 32]; - - for e in &mut seed { - *e = digest.read_u8().unwrap(); - } - - StdRng::from_seed(seed) -} diff --git a/zokrates_proof_systems/Cargo.toml b/zokrates_proof_systems/Cargo.toml index bbc76f8e..a1c0deb5 100644 --- a/zokrates_proof_systems/Cargo.toml +++ b/zokrates_proof_systems/Cargo.toml @@ -13,4 +13,5 @@ cfg-if = "0.1" ethabi = "17.0.0" primitive-types = { version = "0.11", features = ["rlp"] } rand_0_8 = { version = "0.8", package = "rand" } -getrandom = { version = "0.2", features = ["js"] } \ No newline at end of file +blake2 = "0.8.1" +byteorder = "1" \ No newline at end of file diff --git a/zokrates_proof_systems/src/lib.rs b/zokrates_proof_systems/src/lib.rs index da705bce..18b28c2b 100644 --- a/zokrates_proof_systems/src/lib.rs +++ b/zokrates_proof_systems/src/lib.rs @@ -1,3 +1,4 @@ +pub mod rng; pub mod to_token; mod scheme; diff --git a/zokrates_cli/src/common.rs b/zokrates_proof_systems/src/rng.rs similarity index 76% rename from zokrates_cli/src/common.rs rename to zokrates_proof_systems/src/rng.rs index f5f1e3cc..9e2d51df 100644 --- a/zokrates_cli/src/common.rs +++ b/zokrates_proof_systems/src/rng.rs @@ -1,9 +1,8 @@ use blake2::{Blake2b, Digest}; use byteorder::ReadBytesExt; -use rand_0_8::rngs::StdRng; -use rand_0_8::SeedableRng; +use rand_0_8::{rngs::StdRng, SeedableRng}; -pub fn get_seeded_rng(entropy: &str) -> StdRng { +pub fn get_rng_from_entropy(entropy: &str) -> StdRng { let h = { let mut h = Blake2b::default(); h.input(&entropy.as_bytes());