diff options
Diffstat (limited to 'zkvms/zkm/sdk/src/local/snark.rs')
| -rw-r--r-- | zkvms/zkm/sdk/src/local/snark.rs | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/zkvms/zkm/sdk/src/local/snark.rs b/zkvms/zkm/sdk/src/local/snark.rs deleted file mode 100644 index de6460f..0000000 --- a/zkvms/zkm/sdk/src/local/snark.rs +++ /dev/null @@ -1,82 +0,0 @@ -extern crate libc; -use anyhow::bail; -use libc::c_int; -use std::os::raw::c_char; -use std::path::Path; - -extern "C" { - fn Stark2Snark( - keypath: *const c_char, - inputdir: *const c_char, - outputdir: *const c_char, - result: *mut *mut libc::c_char, - ) -> c_int; - fn SetupAndGenerateSolVerifier( - inputdir: *const c_char, - result: *mut *mut libc::c_char, - ) -> c_int; -} - -#[cfg(feature = "snark")] -pub fn prove_snark(keypath: &str, inputdir: &str, outputdir: &str) -> anyhow::Result<()> { - let path = Path::new(keypath); - let pk_file = path.join("proving.key"); - let vk_file = path.join("verifying.key"); - - if !pk_file.exists() || !vk_file.exists() { - panic!( - "The vk or pk doesn't exist in the path: {}. Please first set the SETUP_FLAG=true to run setup_and_generate_sol_verifier.",inputdir - ); - } - - let keypath = std::ffi::CString::new(keypath).unwrap(); - let inputdir = std::ffi::CString::new(inputdir).unwrap(); - let outputdir = std::ffi::CString::new(outputdir).unwrap(); - - let mut result: *mut libc::c_char = std::ptr::null_mut(); - - let ret = unsafe { - Stark2Snark( - keypath.as_ptr(), - inputdir.as_ptr(), - outputdir.as_ptr(), - &mut result, - ) - }; - if ret == 0 { - Ok(()) - } else { - let error_str = unsafe { std::ffi::CStr::from_ptr(result).to_string_lossy() }; - // Free the allocated C string - unsafe { libc::free(result as *mut libc::c_void) }; - //Ok(false) - bail!("prove_snark error: {}", error_str) - } -} - -#[cfg(not(feature = "snark"))] -pub fn prove_snark(keypath: &str, inputdir: &str, outputdir: &str) -> anyhow::Result<()> { - panic!("not support snark"); -} - -#[cfg(feature = "snark")] -pub fn setup_and_generate_sol_verifier(inputdir: &str) -> anyhow::Result<()> { - let inputdir = std::ffi::CString::new(inputdir).unwrap(); - let mut result: *mut libc::c_char = std::ptr::null_mut(); - - let ret = unsafe { SetupAndGenerateSolVerifier(inputdir.as_ptr(), &mut result) }; - if ret == 0 { - Ok(()) - } else { - let error_str = unsafe { std::ffi::CStr::from_ptr(result).to_string_lossy() }; - // Free the allocated C string - unsafe { libc::free(result as *mut libc::c_void) }; - - bail!("prove_snark error: {}", error_str) - } -} - -#[cfg(not(feature = "snark"))] -pub fn setup_and_generate_sol_verifier(inputdir: &str) -> anyhow::Result<()> { - panic!("not support setup_and_generate_sol_verifier"); -} |
