zk-expo
Version:
Expo Module to create Zero-Knowledge Proofs for Groth16 & Noir on iOS and Android.
51 lines • 1.88 kB
JavaScript
import ZkExpoModule from "./ZkExpoModule";
/**
* Strips the `file://` scheme and URL-decodes the path so Rust's std::fs
* can open it. expo-asset returns URIs like
* `file:///var/mobile/Containers/.../Application%20Support/...`
* which the OS rejects if passed verbatim to fopen.
*/
function normalizePath(uri) {
return decodeURIComponent(uri.replace(/^file:\/\//, ""));
}
export async function groth16ProveV2(graph_path, zkey_path, inputs) {
try {
const res = await ZkExpoModule.groth16ProveV2(normalizePath(graph_path), normalizePath(zkey_path), inputs);
const { proof, public_signals } = JSON.parse(res);
return { proof, publicSignals: public_signals };
}
catch (e) {
console.error("ZkExpoModule Error", e);
throw new Error(`ZkExpoModule Error: ${e}`, { cause: e });
}
}
export async function groth16ProveV2Base64(graph_b64, zkey_b64, inputs) {
try {
const res = await ZkExpoModule.groth16ProveV2Base64(graph_b64, zkey_b64, inputs);
const { proof, public_signals } = JSON.parse(res);
return { proof, publicSignals: public_signals };
}
catch (e) {
console.error("ZkExpoModule Error", e);
throw new Error(`ZkExpoModule Error: ${e}`, { cause: e });
}
}
export async function addToCache(functionName = "groth16_prove_v2", path1, path2) {
try {
await ZkExpoModule.addToCache(functionName, normalizePath(path1), normalizePath(path2));
}
catch (e) {
console.error("ZkExpoModule Error", e);
throw new Error(`ZkExpoModule Error: ${e}`, { cause: e });
}
}
export async function clearCache() {
try {
await ZkExpoModule.clearCache();
}
catch (e) {
console.error("ZkExpoModule Error", e);
throw new Error(`ZkExpoModule Error: ${e}`, { cause: e });
}
}
//# sourceMappingURL=index.js.map