implement vc_and_disclose circuit in iOS app

This commit is contained in:
turnoffthiscomputer
2024-10-14 15:38:19 -07:00
parent be02dddda0
commit 8d4441e433
13 changed files with 1824671 additions and 41 deletions

View File

@@ -10,4 +10,5 @@
#include "witnesscalc_register_rsa_65537_sha256.h"
#include "witnesscalc_register_rsa_65537_sha1.h"
#include "witnesscalc_register_rsapss_65537_sha256.h"
#include "witnesscalc_vc_and_disclose.h"
#include "groth16_prover.h"

View File

@@ -19,6 +19,7 @@
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
163754792CBDD4BB008AE334 /* libwitnesscalc_vc_and_disclose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 163754782CBDD4AB008AE334 /* libwitnesscalc_vc_and_disclose.a */; };
165E76BD2B8DC4A00000FA90 /* MRZScannerModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165E76BC2B8DC4A00000FA90 /* MRZScannerModule.swift */; };
165E76BF2B8DC53A0000FA90 /* MRZScannerModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 165E76BE2B8DC53A0000FA90 /* MRZScannerModule.m */; };
165E76C32B8DC8370000FA90 /* ScannerHostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165E76C22B8DC8370000FA90 /* ScannerHostingController.swift */; };
@@ -97,6 +98,7 @@
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = OpenPassport/Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = OpenPassport/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = OpenPassport/main.m; sourceTree = "<group>"; };
163754782CBDD4AB008AE334 /* libwitnesscalc_vc_and_disclose.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libwitnesscalc_vc_and_disclose.a; sourceTree = "<group>"; };
165E76BC2B8DC4A00000FA90 /* MRZScannerModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MRZScannerModule.swift; sourceTree = "<group>"; };
165E76BE2B8DC53A0000FA90 /* MRZScannerModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MRZScannerModule.m; sourceTree = "<group>"; };
165E76C22B8DC8370000FA90 /* ScannerHostingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScannerHostingController.swift; sourceTree = "<group>"; };
@@ -127,6 +129,7 @@
files = (
0573C4F42C754600006C7386 /* libwitnesscalc_prove_rsa_65537_sha1.a in Frameworks */,
05D985F52BB331AB00F58EEA /* libgmp.a in Frameworks */,
163754792CBDD4BB008AE334 /* libwitnesscalc_vc_and_disclose.a in Frameworks */,
167D93492C91D2A300530E6B /* libwitnesscalc_register_rsa_65537_sha256.a in Frameworks */,
167D93472C91B1E100530E6B /* libwitnesscalc_register_rsapss_65537_sha256.a in Frameworks */,
0569F35F2BBC98D5006670BD /* libfq.a in Frameworks */,
@@ -208,6 +211,7 @@
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
isa = PBXGroup;
children = (
163754782CBDD4AB008AE334 /* libwitnesscalc_vc_and_disclose.a */,
167D93482C91D28500530E6B /* libwitnesscalc_register_rsa_65537_sha256.a */,
167D93422C91AE0F00530E6B /* libwitnesscalc_register_rsa_65537_sha1.a */,
167D93432C91AE0F00530E6B /* libwitnesscalc_register_rsapss_65537_sha256.a */,

View File

@@ -41,6 +41,10 @@ import witnesscalc_register_rsa_65537_sha1
import witnesscalc_register_rsapss_65537_sha256
#endif
#if canImport(witnesscalc_vc_and_disclose)
import witnesscalc_vc_and_disclose
#endif
#if canImport(groth16_prover)
import groth16_prover
#endif
@@ -183,9 +187,14 @@ private func _calcWtns(witness_calculator: String, dat: Data, jsonData: Data) th
wtnsBuffer, wtnsSize,
errorBuffer, errorSize
)
}
else {
} else if witness_calculator == "vc_and_disclose" {
result = witnesscalc_vc_and_disclose(
(dat as NSData).bytes, datSize,
(jsonData as NSData).bytes, jsonDataSize,
wtnsBuffer, wtnsSize,
errorBuffer, errorSize
)
} else {
fatalError("Invalid witness calculator name")
}

Binary file not shown.

View File

@@ -1,5 +1,5 @@
#ifndef WITNESSCALC_disclose_H
#define WITNESSCALC_disclose_H
#ifndef WITNESSCALC_vc_and_disclose_H
#define WITNESSCALC_vc_and_disclose_H
#ifdef __cplusplus
@@ -25,7 +25,7 @@ extern "C" {
*/
int
witnesscalc_disclose(
witnesscalc_vc_and_disclose(
const char *circuit_buffer, unsigned long circuit_size,
const char *json_buffer, unsigned long json_size,
char *wtns_buffer, unsigned long *wtns_size,
@@ -36,4 +36,4 @@ witnesscalc_disclose(
#endif
#endif // WITNESSCALC_disclose_H
#endif // WITNESSCALC_vc_and_disclose_H

View File

@@ -11,12 +11,14 @@ const zkeyZipUrls = {
prove_rsapss_65537_sha256: "https://d8o9bercqupgk.cloudfront.net/staging/prove_rsapss_65537_sha256.zkey.zip",
// register_sha256WithRSAEncryption_65537: "https://d8o9bercqupgk.cloudfront.net/staging/register_sha256WithRSAEncryption_65537_csca2.zkey.zip",
// disclose: "https://d8o9bercqupgk.cloudfront.net/staging/disclose3.zkey.zip",
vc_and_disclose: "https://d8o9bercqupgk.cloudfront.net/staging/vc_and_disclose.zkey.zip",
};
const datZipUrls = {
prove_rsa_65537_sha256: "https://d8o9bercqupgk.cloudfront.net/staging/prove_rsa_65537_sha256.dat.zip",
prove_rsa_65537_sha1: "https://d8o9bercqupgk.cloudfront.net/staging/prove_rsa_65537_sha1.dat.zip",
prove_rsapss_65537_sha256: "https://d8o9bercqupgk.cloudfront.net/staging/prove_rsapss_65537_sha256.dat.zip",
vc_and_disclose: "https://d8o9bercqupgk.cloudfront.net/staging/vc_and_disclose.dat.zip",
};
export type CircuitName = keyof typeof zkeyZipUrls;

View File

@@ -57,9 +57,9 @@ install(TARGETS
witnesscalc_register_rsapss_65537_sha256
witnesscalc_register_rsapss_65537_sha256Static
# disclose
# witnesscalc_disclose
# witnesscalc_discloseStatic
# vc_and_disclose
witnesscalc_vc_and_disclose
witnesscalc_vc_and_discloseStatic
# register_sha256WithRSAEncryption_65537
# witnesscalc_register_sha256WithRSAEncryption_65537
@@ -77,7 +77,7 @@ install(FILES "${GMP_LIB_DIR}/${GMP_LIB_FILE}"
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(FILES
# src/disclose.dat
src/vc_and_disclose.dat
# src/register_sha256WithRSAEncryption_65537.dat
src/prove_rsa_65537_sha256.dat
src/prove_rsa_65537_sha1.dat
@@ -90,7 +90,7 @@ install(FILES
install(FILES
src/witnesscalc.h
# src/witnesscalc_disclose.h
src/witnesscalc_vc_and_disclose.h
# src/witnesscalc_register_sha256WithRSAEncryption_65537.h
src/witnesscalc_prove_rsa_65537_sha256.h
src/witnesscalc_prove_rsa_65537_sha1.h

View File

@@ -102,23 +102,23 @@ set(LIB_SOURCES
# target_compile_definitions(register_sha256WithRSAEncryption_65537 PUBLIC CIRCUIT_NAME=register_sha256WithRSAEncryption_65537)
# disclose
# set(disclose_SOURCES ${LIB_SOURCES}
# disclose.cpp
# witnesscalc_disclose.h
# witnesscalc_disclose.cpp
# )
# vc_and_disclose
set(vc_and_disclose_SOURCES ${LIB_SOURCES}
vc_and_disclose.cpp
witnesscalc_vc_and_disclose.h
witnesscalc_vc_and_disclose.cpp
)
# add_library(witnesscalc_disclose SHARED ${disclose_SOURCES})
# add_library(witnesscalc_discloseStatic STATIC ${disclose_SOURCES})
# set_target_properties(witnesscalc_discloseStatic PROPERTIES OUTPUT_NAME witnesscalc_disclose)
add_library(witnesscalc_vc_and_disclose SHARED ${vc_and_disclose_SOURCES})
add_library(witnesscalc_vc_and_discloseStatic STATIC ${vc_and_disclose_SOURCES})
set_target_properties(witnesscalc_vc_and_discloseStatic PROPERTIES OUTPUT_NAME witnesscalc_vc_and_disclose)
# add_executable(disclose main.cpp)
# target_link_libraries(disclose witnesscalc_discloseStatic)
add_executable(vc_and_disclose main.cpp)
target_link_libraries(vc_and_disclose witnesscalc_vc_and_discloseStatic)
# target_compile_definitions(witnesscalc_disclose PUBLIC CIRCUIT_NAME=disclose)
# target_compile_definitions(witnesscalc_discloseStatic PUBLIC CIRCUIT_NAME=disclose)
# target_compile_definitions(disclose PUBLIC CIRCUIT_NAME=disclose)
target_compile_definitions(witnesscalc_vc_and_disclose PUBLIC CIRCUIT_NAME=vc_and_disclose)
target_compile_definitions(witnesscalc_vc_and_discloseStatic PUBLIC CIRCUIT_NAME=vc_and_disclose)
target_compile_definitions(vc_and_disclose PUBLIC CIRCUIT_NAME=vc_and_disclose)

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,15 +0,0 @@
#include "witnesscalc_disclose.h"
#include "witnesscalc.h"
int
witnesscalc_disclose(
const char *circuit_buffer, unsigned long circuit_size,
const char *json_buffer, unsigned long json_size,
char *wtns_buffer, unsigned long *wtns_size,
char *error_msg, unsigned long error_msg_maxsize)
{
return CIRCUIT_NAME::witnesscalc(circuit_buffer, circuit_size,
json_buffer, json_size,
wtns_buffer, wtns_size,
error_msg, error_msg_maxsize);
}

View File

@@ -0,0 +1,14 @@
#include "witnesscalc_vc_and_disclose.h"
#include "witnesscalc.h"
int witnesscalc_vc_and_disclose(
const char *circuit_buffer, unsigned long circuit_size,
const char *json_buffer, unsigned long json_size,
char *wtns_buffer, unsigned long *wtns_size,
char *error_msg, unsigned long error_msg_maxsize)
{
return CIRCUIT_NAME::witnesscalc(circuit_buffer, circuit_size,
json_buffer, json_size,
wtns_buffer, wtns_size,
error_msg, error_msg_maxsize);
}

View File

@@ -0,0 +1,39 @@
#ifndef WITNESSCALC_vc_and_disclose_H
#define WITNESSCALC_vc_and_disclose_H
#ifdef __cplusplus
extern "C" {
#endif
#define WITNESSCALC_OK 0x0
#define WITNESSCALC_ERROR 0x1
#define WITNESSCALC_ERROR_SHORT_BUFFER 0x2
/**
*
* @return error code:
* WITNESSCALC_OK - in case of success.
* WITNESSCALC_ERROR - in case of an error.
*
* On success wtns_buffer is filled with witness data and
* wtns_size contains the number bytes copied to wtns_buffer.
*
* If wtns_buffer is too small then the function returns WITNESSCALC_ERROR_SHORT_BUFFER
* and the minimum size for wtns_buffer in wtns_size.
*
*/
int
witnesscalc_vc_and_disclose(
const char *circuit_buffer, unsigned long circuit_size,
const char *json_buffer, unsigned long json_size,
char *wtns_buffer, unsigned long *wtns_size,
char *error_msg, unsigned long error_msg_maxsize);
#ifdef __cplusplus
}
#endif
#endif // WITNESSCALC_vc_and_disclose_H