FFI: Remove circuit parameter hashes from librustzcash_init_zksnark_params
These were hard-coded into the underlying zcash_proofs::load_parameters function. Closes zcash/zcash#4519.
This commit is contained in:
parent
c10ba7da41
commit
3fd409433b
|
@ -34,13 +34,10 @@ main(int argc, char** argv)
|
|||
librustzcash_init_zksnark_params(
|
||||
reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()),
|
||||
sapling_spend_str.length(),
|
||||
"8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c",
|
||||
reinterpret_cast<const codeunit*>(sapling_output_str.c_str()),
|
||||
sapling_output_str.length(),
|
||||
"657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028",
|
||||
reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()),
|
||||
sprout_groth16_str.length(),
|
||||
"e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a"
|
||||
sprout_groth16_str.length()
|
||||
);
|
||||
|
||||
benchmark::BenchRunner::RunAll();
|
||||
|
|
|
@ -31,13 +31,10 @@ int main(int argc, char **argv) {
|
|||
librustzcash_init_zksnark_params(
|
||||
reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()),
|
||||
sapling_spend_str.length(),
|
||||
"8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c",
|
||||
reinterpret_cast<const codeunit*>(sapling_output_str.c_str()),
|
||||
sapling_output_str.length(),
|
||||
"657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028",
|
||||
reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()),
|
||||
sprout_groth16_str.length(),
|
||||
"e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a"
|
||||
sprout_groth16_str.length()
|
||||
);
|
||||
|
||||
testing::InitGoogleMock(&argc, argv);
|
||||
|
|
|
@ -714,13 +714,10 @@ static void ZC_LoadParams(
|
|||
librustzcash_init_zksnark_params(
|
||||
reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()),
|
||||
sapling_spend_str.length(),
|
||||
"8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c",
|
||||
reinterpret_cast<const codeunit*>(sapling_output_str.c_str()),
|
||||
sapling_output_str.length(),
|
||||
"657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028",
|
||||
reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()),
|
||||
sprout_groth16_str.length(),
|
||||
"e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a"
|
||||
sprout_groth16_str.length()
|
||||
);
|
||||
|
||||
gettimeofday(&tv_end, 0);
|
||||
|
|
|
@ -51,13 +51,10 @@ extern "C" {
|
|||
void librustzcash_init_zksnark_params(
|
||||
const codeunit* spend_path,
|
||||
size_t spend_path_len,
|
||||
const char* spend_hash,
|
||||
const codeunit* output_path,
|
||||
size_t output_path_len,
|
||||
const char* output_hash,
|
||||
const codeunit* sprout_path,
|
||||
size_t sprout_path_len,
|
||||
const char* sprout_hash
|
||||
size_t sprout_path_len
|
||||
);
|
||||
|
||||
/// Validates the provided Equihash solution against
|
||||
|
|
|
@ -23,10 +23,9 @@ use bellman::groth16::{Parameters, PreparedVerifyingKey, Proof};
|
|||
use blake2s_simd::Params as Blake2sParams;
|
||||
use ff::{PrimeField, PrimeFieldRepr};
|
||||
use lazy_static;
|
||||
use libc::{c_char, c_uchar, size_t};
|
||||
use libc::{c_uchar, size_t};
|
||||
use pairing::bls12_381::{Bls12, Fr, FrRepr};
|
||||
use rand_core::{OsRng, RngCore};
|
||||
use std::ffi::CStr;
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
@ -110,13 +109,10 @@ fn fixed_scalar_mult(from: &[u8; 32], p_g: FixedGenerators) -> edwards::Point<Bl
|
|||
pub extern "C" fn librustzcash_init_zksnark_params(
|
||||
spend_path: *const u8,
|
||||
spend_path_len: usize,
|
||||
spend_hash: *const c_char,
|
||||
output_path: *const u8,
|
||||
output_path_len: usize,
|
||||
output_hash: *const c_char,
|
||||
sprout_path: *const u8,
|
||||
sprout_path_len: usize,
|
||||
sprout_hash: *const c_char,
|
||||
) {
|
||||
let spend_path = Path::new(OsStr::from_bytes(unsafe {
|
||||
slice::from_raw_parts(spend_path, spend_path_len)
|
||||
|
@ -132,14 +128,7 @@ pub extern "C" fn librustzcash_init_zksnark_params(
|
|||
})))
|
||||
};
|
||||
|
||||
init_zksnark_params(
|
||||
spend_path,
|
||||
spend_hash,
|
||||
output_path,
|
||||
output_hash,
|
||||
sprout_path,
|
||||
sprout_hash,
|
||||
)
|
||||
init_zksnark_params(spend_path, output_path, sprout_path)
|
||||
}
|
||||
|
||||
/// Loads the zk-SNARK parameters into memory and saves paths as necessary.
|
||||
|
@ -149,13 +138,10 @@ pub extern "C" fn librustzcash_init_zksnark_params(
|
|||
pub extern "C" fn librustzcash_init_zksnark_params(
|
||||
spend_path: *const u16,
|
||||
spend_path_len: usize,
|
||||
spend_hash: *const c_char,
|
||||
output_path: *const u16,
|
||||
output_path_len: usize,
|
||||
output_hash: *const c_char,
|
||||
sprout_path: *const u16,
|
||||
sprout_path_len: usize,
|
||||
sprout_hash: *const c_char,
|
||||
) {
|
||||
let spend_path =
|
||||
OsString::from_wide(unsafe { slice::from_raw_parts(spend_path, spend_path_len) });
|
||||
|
@ -171,52 +157,15 @@ pub extern "C" fn librustzcash_init_zksnark_params(
|
|||
|
||||
init_zksnark_params(
|
||||
Path::new(&spend_path),
|
||||
spend_hash,
|
||||
Path::new(&output_path),
|
||||
output_hash,
|
||||
sprout_path.as_ref().map(|p| Path::new(p)),
|
||||
sprout_hash,
|
||||
)
|
||||
}
|
||||
|
||||
fn init_zksnark_params(
|
||||
spend_path: &Path,
|
||||
spend_hash: *const c_char,
|
||||
output_path: &Path,
|
||||
output_hash: *const c_char,
|
||||
sprout_path: Option<&Path>,
|
||||
sprout_hash: *const c_char,
|
||||
) {
|
||||
// Initialize jubjub parameters here
|
||||
lazy_static::initialize(&JUBJUB);
|
||||
|
||||
let spend_hash = unsafe { CStr::from_ptr(spend_hash) }
|
||||
.to_str()
|
||||
.expect("hash should be a valid string");
|
||||
|
||||
let output_hash = unsafe { CStr::from_ptr(output_hash) }
|
||||
.to_str()
|
||||
.expect("hash should be a valid string");
|
||||
|
||||
let sprout_hash = if sprout_path.is_none() {
|
||||
None
|
||||
} else {
|
||||
Some(
|
||||
unsafe { CStr::from_ptr(sprout_hash) }
|
||||
.to_str()
|
||||
.expect("hash should be a valid string"),
|
||||
)
|
||||
};
|
||||
|
||||
fn init_zksnark_params(spend_path: &Path, output_path: &Path, sprout_path: Option<&Path>) {
|
||||
// Load params
|
||||
let (spend_params, spend_vk, output_params, output_vk, sprout_vk) = load_parameters(
|
||||
spend_path,
|
||||
spend_hash,
|
||||
output_path,
|
||||
output_hash,
|
||||
sprout_path,
|
||||
sprout_hash,
|
||||
);
|
||||
let (spend_params, spend_vk, output_params, output_vk, sprout_vk) =
|
||||
load_parameters(spend_path, output_path, sprout_path);
|
||||
|
||||
// Caller is responsible for calling this function once, so
|
||||
// these global mutations are safe.
|
||||
|
|
|
@ -55,13 +55,10 @@ JoinSplitTestingSetup::JoinSplitTestingSetup(const std::string& chainName) : Bas
|
|||
librustzcash_init_zksnark_params(
|
||||
reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()),
|
||||
sapling_spend_str.length(),
|
||||
"8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c",
|
||||
reinterpret_cast<const codeunit*>(sapling_output_str.c_str()),
|
||||
sapling_output_str.length(),
|
||||
"657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028",
|
||||
reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()),
|
||||
sprout_groth16_str.length(),
|
||||
"e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a"
|
||||
sprout_groth16_str.length()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue