diff --git a/src/circom/builder.rs b/src/circom/builder.rs index 9dc0e8c..533aaa3 100644 --- a/src/circom/builder.rs +++ b/src/circom/builder.rs @@ -1,6 +1,6 @@ use ark_ff::PrimeField; use num_bigint::BigInt; -use std::{collections::HashMap, fs::File, io::BufReader, path::Path}; +use std::{collections::HashMap, fs::File, io::{BufReader, Cursor}, path::Path}; use wasmer::Store; use super::{CircomCircuit, R1CS}; @@ -53,12 +53,14 @@ impl CircomConfig { }) } - pub fn from_bytes(wtns: &[u8], r1cs: &[u8]) -> Result { - let wtns = WitnessCalculator::from_bytes(wtns).unwrap(); + pub fn new_from_bytes(wtns: &[u8], r1cs: &[u8]) -> Result { + let mut store = Store::default(); + let wtns = WitnessCalculator::from_bytes(&mut store, wtns).unwrap(); let r1cs = R1CSFile::new(Cursor::new(r1cs))?.into(); Ok(Self { wtns, r1cs, + store, sanity_check: false, }) } diff --git a/src/witness/witness_calculator.rs b/src/witness/witness_calculator.rs index c9e1888..f058031 100644 --- a/src/witness/witness_calculator.rs +++ b/src/witness/witness_calculator.rs @@ -55,6 +55,11 @@ impl WitnessCalculator { Self::from_module(store, module) } + pub fn from_file(store: &mut Store, path: impl AsRef) -> Result { + let module = Module::new(&store, bytes)?; + Self::from_module(store, module) + } + pub fn from_file(store: &mut Store, path: impl AsRef) -> Result { let module = Module::from_file(&store, path)?; Self::from_module(store, module)