Merge pull request #177 from zk-passport/new-ux-refactor-circuits
refactor repo · new ux · prove circuits · new sdk
7
.github/workflows/action.yml
vendored
@@ -4,12 +4,19 @@ on:
|
||||
branches:
|
||||
- dev
|
||||
- main
|
||||
paths:
|
||||
- 'circuits/**'
|
||||
- 'common/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
- main
|
||||
paths:
|
||||
- 'circuits/**'
|
||||
- 'common/**'
|
||||
jobs:
|
||||
run_circuit_tests:
|
||||
if: github.event.pull_request.draft == false
|
||||
runs-on: ubuntu-latest
|
||||
environment: development
|
||||
steps:
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
module.exports = {
|
||||
arrowParens: 'avoid',
|
||||
bracketSameLine: true,
|
||||
bracketSameLine: false,
|
||||
bracketSpacing: false,
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
bracketSpacing: true,
|
||||
};
|
||||
|
||||
@@ -25,18 +25,17 @@ function App(): JSX.Element {
|
||||
useEffect(() => {
|
||||
setToast(toast);
|
||||
}, [toast, setToast]);
|
||||
|
||||
useEffect(() => {
|
||||
setSelectedTab('splash');
|
||||
}, [setSelectedTab]);
|
||||
|
||||
useEffect(() => {
|
||||
if (AMPLITUDE_KEY) {
|
||||
amplitude.init(AMPLITUDE_KEY);
|
||||
}
|
||||
//initUserStore();
|
||||
}, []);
|
||||
|
||||
// TODO: when passportData already stored, retrieve and jump to main screen
|
||||
|
||||
return (
|
||||
<YStack f={1} bc={bgWhite} h="100%" w="100%">
|
||||
<YStack h="100%" w="100%">
|
||||
|
||||
@@ -10,15 +10,29 @@ link_directories(lib)
|
||||
add_library(rapidsnark SHARED IMPORTED)
|
||||
set_target_properties(rapidsnark PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/librapidsnark.so)
|
||||
|
||||
# add_library(register_sha256WithRSAEncryption_65537 SHARED IMPORTED)
|
||||
# set_target_properties(register_sha256WithRSAEncryption_65537 PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libwitnesscalc_register_sha256WithRSAEncryption_65537.so)
|
||||
|
||||
add_library(register_sha256WithRSAEncryption_65537 SHARED IMPORTED)
|
||||
set_target_properties(register_sha256WithRSAEncryption_65537 PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libwitnesscalc_register_sha256WithRSAEncryption_65537.so)
|
||||
# add_library(disclose SHARED IMPORTED)
|
||||
# set_target_properties(disclose PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libwitnesscalc_disclose.so)
|
||||
|
||||
add_library(disclose SHARED IMPORTED)
|
||||
set_target_properties(disclose PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libwitnesscalc_disclose.so)
|
||||
add_library(prove_rsa_65537_sha256 SHARED IMPORTED)
|
||||
set_target_properties(prove_rsa_65537_sha256 PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libwitnesscalc_prove_rsa_65537_sha256.so)
|
||||
|
||||
add_library(prove_rsa_65537_sha1 SHARED IMPORTED)
|
||||
set_target_properties(prove_rsa_65537_sha1 PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libwitnesscalc_prove_rsa_65537_sha1.so)
|
||||
|
||||
add_library(prove_rsapss_65537_sha256 SHARED IMPORTED)
|
||||
set_target_properties(prove_rsapss_65537_sha256 PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libwitnesscalc_prove_rsapss_65537_sha256.so)
|
||||
|
||||
add_library(${CMAKE_PROJECT_NAME} SHARED
|
||||
proofofpassportapp.cpp)
|
||||
|
||||
target_link_libraries(${CMAKE_PROJECT_NAME}
|
||||
rapidsnark register_sha256WithRSAEncryption_65537 disclose)
|
||||
rapidsnark
|
||||
# register_sha256WithRSAEncryption_65537
|
||||
# disclose
|
||||
prove_rsa_65537_sha256
|
||||
prove_rsa_65537_sha1
|
||||
prove_rsapss_65537_sha256
|
||||
)
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef WITNESSCALC_prove_rsa_65537_sha1_H
|
||||
#define WITNESSCALC_prove_rsa_65537_sha1_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_prove_rsa_65537_sha1(
|
||||
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_prove_rsa_65537_sha1_H
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef WITNESSCALC_prove_rsa_65537_sha256_H
|
||||
#define WITNESSCALC_prove_rsa_65537_sha256_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_prove_rsa_65537_sha256(
|
||||
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_prove_rsa_65537_sha256_H
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef WITNESSCALC_prove_rsapss_65537_sha256_H
|
||||
#define WITNESSCALC_prove_rsapss_65537_sha256_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_prove_rsapss_65537_sha256(
|
||||
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_prove_rsapss_65537_sha256_H
|
||||
BIN
app/android/app/src/main/cpp/lib/libwitnesscalc_prove_rsa_65537_sha1.so
Executable file
BIN
app/android/app/src/main/cpp/lib/libwitnesscalc_prove_rsa_65537_sha256.so
Executable file
BIN
app/android/app/src/main/cpp/lib/libwitnesscalc_prove_rsapss_65537_sha256.so
Executable file
@@ -1,6 +1,9 @@
|
||||
#include "include/prover.h"
|
||||
#include "include/witnesscalc_register_sha256WithRSAEncryption_65537.h"
|
||||
#include "include/witnesscalc_disclose.h"
|
||||
// #include "include/witnesscalc_register_sha256WithRSAEncryption_65537.h"
|
||||
// #include "include/witnesscalc_disclose.h"
|
||||
#include "include/witnesscalc_prove_rsa_65537_sha256.h"
|
||||
#include "include/witnesscalc_prove_rsa_65537_sha1.h"
|
||||
#include "include/witnesscalc_prove_rsapss_65537_sha256.h"
|
||||
|
||||
#include <jni.h>
|
||||
#include <iostream>
|
||||
@@ -47,9 +50,83 @@ Java_com_proofofpassportapp_prover_ZKPTools_groth16_1prover(JNIEnv *env, jobject
|
||||
return result;
|
||||
}
|
||||
|
||||
// extern "C"
|
||||
// JNIEXPORT jint JNICALL
|
||||
// Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1register_1sha256WithRSAEncryption_165537(JNIEnv *env, jobject thiz,
|
||||
// jbyteArray circuit_buffer,
|
||||
// jlong circuit_size, jbyteArray json_buffer,
|
||||
// jlong json_size, jbyteArray wtns_buffer,
|
||||
// jlongArray wtns_size, jbyteArray error_msg,
|
||||
// jlong error_msg_max_size) {
|
||||
// const char *circuitBuffer = reinterpret_cast<const char *>(env->GetByteArrayElements(
|
||||
// circuit_buffer, nullptr));
|
||||
// const char *jsonBuffer = reinterpret_cast<const char *>(env->GetByteArrayElements(json_buffer,
|
||||
// nullptr));
|
||||
// char *wtnsBuffer = reinterpret_cast<char *>(env->GetByteArrayElements(wtns_buffer, nullptr));
|
||||
// char *errorMsg = reinterpret_cast<char *>(env->GetByteArrayElements(error_msg, nullptr));
|
||||
|
||||
// unsigned long wtnsSize = env->GetLongArrayElements(wtns_size, nullptr)[0];
|
||||
|
||||
|
||||
// int result = witnesscalc_register_sha256WithRSAEncryption_65537(
|
||||
// circuitBuffer, static_cast<unsigned long>(circuit_size),
|
||||
// jsonBuffer, static_cast<unsigned long>(json_size),
|
||||
// wtnsBuffer, &wtnsSize,
|
||||
// errorMsg, static_cast<unsigned long>(error_msg_max_size));
|
||||
|
||||
// // Set the result and release the resources
|
||||
// env->SetLongArrayRegion(wtns_size, 0, 1, reinterpret_cast<jlong *>(&wtnsSize));
|
||||
|
||||
// env->ReleaseByteArrayElements(circuit_buffer,
|
||||
// reinterpret_cast<jbyte *>(const_cast<char *>(circuitBuffer)), 0);
|
||||
// env->ReleaseByteArrayElements(json_buffer,
|
||||
// reinterpret_cast<jbyte *>(const_cast<char *>(jsonBuffer)), 0);
|
||||
// env->ReleaseByteArrayElements(wtns_buffer, reinterpret_cast<jbyte *>(wtnsBuffer), 0);
|
||||
// env->ReleaseByteArrayElements(error_msg, reinterpret_cast<jbyte *>(errorMsg), 0);
|
||||
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// extern "C"
|
||||
// JNIEXPORT jint JNICALL
|
||||
// Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1disclose(JNIEnv *env, jobject thiz,
|
||||
// jbyteArray circuit_buffer,
|
||||
// jlong circuit_size, jbyteArray json_buffer,
|
||||
// jlong json_size, jbyteArray wtns_buffer,
|
||||
// jlongArray wtns_size, jbyteArray error_msg,
|
||||
// jlong error_msg_max_size) {
|
||||
// const char *circuitBuffer = reinterpret_cast<const char *>(env->GetByteArrayElements(
|
||||
// circuit_buffer, nullptr));
|
||||
// const char *jsonBuffer = reinterpret_cast<const char *>(env->GetByteArrayElements(json_buffer,
|
||||
// nullptr));
|
||||
// char *wtnsBuffer = reinterpret_cast<char *>(env->GetByteArrayElements(wtns_buffer, nullptr));
|
||||
// char *errorMsg = reinterpret_cast<char *>(env->GetByteArrayElements(error_msg, nullptr));
|
||||
|
||||
// unsigned long wtnsSize = env->GetLongArrayElements(wtns_size, nullptr)[0];
|
||||
|
||||
|
||||
// int result = witnesscalc_disclose(
|
||||
// circuitBuffer, static_cast<unsigned long>(circuit_size),
|
||||
// jsonBuffer, static_cast<unsigned long>(json_size),
|
||||
// wtnsBuffer, &wtnsSize,
|
||||
// errorMsg, static_cast<unsigned long>(error_msg_max_size));
|
||||
|
||||
// // Set the result and release the resources
|
||||
// env->SetLongArrayRegion(wtns_size, 0, 1, reinterpret_cast<jlong *>(&wtnsSize));
|
||||
|
||||
// env->ReleaseByteArrayElements(circuit_buffer,
|
||||
// reinterpret_cast<jbyte *>(const_cast<char *>(circuitBuffer)), 0);
|
||||
// env->ReleaseByteArrayElements(json_buffer,
|
||||
// reinterpret_cast<jbyte *>(const_cast<char *>(jsonBuffer)), 0);
|
||||
// env->ReleaseByteArrayElements(wtns_buffer, reinterpret_cast<jbyte *>(wtnsBuffer), 0);
|
||||
// env->ReleaseByteArrayElements(error_msg, reinterpret_cast<jbyte *>(errorMsg), 0);
|
||||
|
||||
// return result;
|
||||
// }
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1register_1sha256WithRSAEncryption_165537(JNIEnv *env, jobject thiz,
|
||||
Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1prove_1rsa_165537_1sha256(JNIEnv *env, jobject thiz,
|
||||
jbyteArray circuit_buffer,
|
||||
jlong circuit_size, jbyteArray json_buffer,
|
||||
jlong json_size, jbyteArray wtns_buffer,
|
||||
@@ -65,7 +142,7 @@ Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1register_1sha256WithRSA
|
||||
unsigned long wtnsSize = env->GetLongArrayElements(wtns_size, nullptr)[0];
|
||||
|
||||
|
||||
int result = witnesscalc_register_sha256WithRSAEncryption_65537(
|
||||
int result = witnesscalc_prove_rsa_65537_sha256(
|
||||
circuitBuffer, static_cast<unsigned long>(circuit_size),
|
||||
jsonBuffer, static_cast<unsigned long>(json_size),
|
||||
wtnsBuffer, &wtnsSize,
|
||||
@@ -86,7 +163,7 @@ Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1register_1sha256WithRSA
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1disclose(JNIEnv *env, jobject thiz,
|
||||
Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1prove_1rsa_165537_1sha1(JNIEnv *env, jobject thiz,
|
||||
jbyteArray circuit_buffer,
|
||||
jlong circuit_size, jbyteArray json_buffer,
|
||||
jlong json_size, jbyteArray wtns_buffer,
|
||||
@@ -102,7 +179,44 @@ Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1disclose(JNIEnv *env, j
|
||||
unsigned long wtnsSize = env->GetLongArrayElements(wtns_size, nullptr)[0];
|
||||
|
||||
|
||||
int result = witnesscalc_disclose(
|
||||
int result = witnesscalc_prove_rsa_65537_sha1(
|
||||
circuitBuffer, static_cast<unsigned long>(circuit_size),
|
||||
jsonBuffer, static_cast<unsigned long>(json_size),
|
||||
wtnsBuffer, &wtnsSize,
|
||||
errorMsg, static_cast<unsigned long>(error_msg_max_size));
|
||||
|
||||
// Set the result and release the resources
|
||||
env->SetLongArrayRegion(wtns_size, 0, 1, reinterpret_cast<jlong *>(&wtnsSize));
|
||||
|
||||
env->ReleaseByteArrayElements(circuit_buffer,
|
||||
reinterpret_cast<jbyte *>(const_cast<char *>(circuitBuffer)), 0);
|
||||
env->ReleaseByteArrayElements(json_buffer,
|
||||
reinterpret_cast<jbyte *>(const_cast<char *>(jsonBuffer)), 0);
|
||||
env->ReleaseByteArrayElements(wtns_buffer, reinterpret_cast<jbyte *>(wtnsBuffer), 0);
|
||||
env->ReleaseByteArrayElements(error_msg, reinterpret_cast<jbyte *>(errorMsg), 0);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_proofofpassportapp_prover_ZKPTools_witnesscalc_1prove_1rsapss_165537_1sha256(JNIEnv *env, jobject thiz,
|
||||
jbyteArray circuit_buffer,
|
||||
jlong circuit_size, jbyteArray json_buffer,
|
||||
jlong json_size, jbyteArray wtns_buffer,
|
||||
jlongArray wtns_size, jbyteArray error_msg,
|
||||
jlong error_msg_max_size) {
|
||||
const char *circuitBuffer = reinterpret_cast<const char *>(env->GetByteArrayElements(
|
||||
circuit_buffer, nullptr));
|
||||
const char *jsonBuffer = reinterpret_cast<const char *>(env->GetByteArrayElements(json_buffer,
|
||||
nullptr));
|
||||
char *wtnsBuffer = reinterpret_cast<char *>(env->GetByteArrayElements(wtns_buffer, nullptr));
|
||||
char *errorMsg = reinterpret_cast<char *>(env->GetByteArrayElements(error_msg, nullptr));
|
||||
|
||||
unsigned long wtnsSize = env->GetLongArrayElements(wtns_size, nullptr)[0];
|
||||
|
||||
|
||||
int result = witnesscalc_prove_rsapss_65537_sha256(
|
||||
circuitBuffer, static_cast<unsigned long>(circuit_size),
|
||||
jsonBuffer, static_cast<unsigned long>(json_size),
|
||||
wtnsBuffer, &wtnsSize,
|
||||
|
||||
@@ -67,8 +67,11 @@ class ProverModule(reactContext: ReactApplicationContext) : ReactContextBaseJava
|
||||
val zkpTools = ZKPTools(reactApplicationContext)
|
||||
|
||||
val witnessCalcFunction = when (witness_calculator) {
|
||||
"register_sha256WithRSAEncryption_65537" -> zkpTools::witnesscalc_register_sha256WithRSAEncryption_65537
|
||||
"disclose" -> zkpTools::witnesscalc_disclose
|
||||
// "register_sha256WithRSAEncryption_65537" -> zkpTools::witnesscalc_register_sha256WithRSAEncryption_65537
|
||||
// "disclose" -> zkpTools::witnesscalc_disclose
|
||||
"prove_rsa_65537_sha256" -> zkpTools::witnesscalc_prove_rsa_65537_sha256
|
||||
"prove_rsa_65537_sha1" -> zkpTools::witnesscalc_prove_rsa_65537_sha1
|
||||
"prove_rsapss_65537_sha256" -> zkpTools::witnesscalc_prove_rsapss_65537_sha256
|
||||
else -> throw IllegalArgumentException("Invalid witness calculator name")
|
||||
}
|
||||
|
||||
@@ -119,7 +122,23 @@ data class ZkProof(
|
||||
)
|
||||
|
||||
class ZKPTools(val context: Context) {
|
||||
external fun witnesscalc_register_sha256WithRSAEncryption_65537(circuitBuffer: ByteArray,
|
||||
// external fun witnesscalc_register_sha256WithRSAEncryption_65537(circuitBuffer: ByteArray,
|
||||
// circuitSize: Long,
|
||||
// jsonBuffer: ByteArray,
|
||||
// jsonSize: Long,
|
||||
// wtnsBuffer: ByteArray,
|
||||
// wtnsSize: LongArray,
|
||||
// errorMsg: ByteArray,
|
||||
// errorMsgMaxSize: Long): Int
|
||||
// external fun witnesscalc_disclose(circuitBuffer: ByteArray,
|
||||
// circuitSize: Long,
|
||||
// jsonBuffer: ByteArray,
|
||||
// jsonSize: Long,
|
||||
// wtnsBuffer: ByteArray,
|
||||
// wtnsSize: LongArray,
|
||||
// errorMsg: ByteArray,
|
||||
// errorMsgMaxSize: Long): Int
|
||||
external fun witnesscalc_prove_rsa_65537_sha256(circuitBuffer: ByteArray,
|
||||
circuitSize: Long,
|
||||
jsonBuffer: ByteArray,
|
||||
jsonSize: Long,
|
||||
@@ -127,7 +146,7 @@ class ZKPTools(val context: Context) {
|
||||
wtnsSize: LongArray,
|
||||
errorMsg: ByteArray,
|
||||
errorMsgMaxSize: Long): Int
|
||||
external fun witnesscalc_disclose(circuitBuffer: ByteArray,
|
||||
external fun witnesscalc_prove_rsa_65537_sha1(circuitBuffer: ByteArray,
|
||||
circuitSize: Long,
|
||||
jsonBuffer: ByteArray,
|
||||
jsonSize: Long,
|
||||
@@ -135,6 +154,15 @@ class ZKPTools(val context: Context) {
|
||||
wtnsSize: LongArray,
|
||||
errorMsg: ByteArray,
|
||||
errorMsgMaxSize: Long): Int
|
||||
external fun witnesscalc_prove_rsapss_65537_sha256(circuitBuffer: ByteArray,
|
||||
circuitSize: Long,
|
||||
jsonBuffer: ByteArray,
|
||||
jsonSize: Long,
|
||||
wtnsBuffer: ByteArray,
|
||||
wtnsSize: LongArray,
|
||||
errorMsg: ByteArray,
|
||||
errorMsgMaxSize: Long): Int
|
||||
|
||||
external fun groth16_prover(
|
||||
zkeyBuffer: ByteArray, zkeySize: Long,
|
||||
wtnsBuffer: ByteArray, wtnsSize: Long,
|
||||
|
||||
BIN
app/android/app/src/main/res/raw/prove_rsa_65537_sha1.dat
Normal file
BIN
app/android/app/src/main/res/raw/prove_rsa_65537_sha256.dat
Normal file
BIN
app/android/app/src/main/res/raw/prove_rsapss_65537_sha256.dat
Normal file
28
app/index.clip.js
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* @format
|
||||
*/
|
||||
|
||||
import { AppRegistry, LogBox } from 'react-native';
|
||||
import App from './App';
|
||||
import { name as appName } from './app.json';
|
||||
import { TamaguiProvider, createTamagui } from 'tamagui';
|
||||
import { config } from '@tamagui/config/v2-native'
|
||||
import { ToastProvider } from '@tamagui/toast';
|
||||
const tamaguiConfig = createTamagui(config)
|
||||
|
||||
LogBox.ignoreLogs([
|
||||
/bad setState/,
|
||||
'Warning, duplicate ID for input',
|
||||
/Warning, duplicate ID for input/
|
||||
])
|
||||
|
||||
const Root = () => (
|
||||
<TamaguiProvider config={tamaguiConfig}>
|
||||
<ToastProvider swipeDirection="up">
|
||||
<App />
|
||||
</ToastProvider>
|
||||
</TamaguiProvider>
|
||||
|
||||
);
|
||||
|
||||
AppRegistry.registerComponent(appName, () => Root);
|
||||
22
app/ios/OpenPassport App Clip/AppDelegate.h
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// OpenPassport App Clip
|
||||
//
|
||||
// Created by turboblitz on 17/08/2024.
|
||||
//
|
||||
|
||||
#import <React/RCTBridgeDelegate.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
|
||||
|
||||
@property (nonatomic, strong) UIWindow *window;
|
||||
|
||||
@property (readonly, strong) NSPersistentContainer *persistentContainer;
|
||||
|
||||
- (void)saveContext;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
85
app/ios/OpenPassport App Clip/AppDelegate.m
Normal file
@@ -0,0 +1,85 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// OpenPassport App Clip
|
||||
//
|
||||
// Created by turboblitz on 17/08/2024.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@interface AppDelegate ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
// Override point for customization after application launch.
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - UISceneSession lifecycle
|
||||
|
||||
|
||||
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
|
||||
// Called when a new scene session is being created.
|
||||
// Use this method to select a configuration to create the new scene with.
|
||||
return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
|
||||
}
|
||||
|
||||
|
||||
- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
|
||||
// Called when the user discards a scene session.
|
||||
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
|
||||
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Core Data stack
|
||||
|
||||
@synthesize persistentContainer = _persistentContainer;
|
||||
|
||||
- (NSPersistentContainer *)persistentContainer {
|
||||
// The persistent container for the application. This implementation creates and returns a container, having loaded the store for the application to it.
|
||||
@synchronized (self) {
|
||||
if (_persistentContainer == nil) {
|
||||
_persistentContainer = [[NSPersistentContainer alloc] initWithName:@"OpenPassport_App_Clip"];
|
||||
[_persistentContainer loadPersistentStoresWithCompletionHandler:^(NSPersistentStoreDescription *storeDescription, NSError *error) {
|
||||
if (error != nil) {
|
||||
// Replace this implementation with code to handle the error appropriately.
|
||||
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
|
||||
|
||||
/*
|
||||
Typical reasons for an error here include:
|
||||
* The parent directory does not exist, cannot be created, or disallows writing.
|
||||
* The persistent store is not accessible, due to permissions or data protection when the device is locked.
|
||||
* The device is out of space.
|
||||
* The store could not be migrated to the current model version.
|
||||
Check the error message to determine what the actual problem was.
|
||||
*/
|
||||
NSLog(@"Unresolved error %@, %@", error, error.userInfo);
|
||||
abort();
|
||||
}
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
return _persistentContainer;
|
||||
}
|
||||
|
||||
#pragma mark - Core Data Saving support
|
||||
|
||||
- (void)saveContext {
|
||||
NSManagedObjectContext *context = self.persistentContainer.viewContext;
|
||||
NSError *error = nil;
|
||||
if ([context hasChanges] && ![context save:&error]) {
|
||||
// Replace this implementation with code to handle the error appropriately.
|
||||
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
|
||||
NSLog(@"Unresolved error %@, %@", error, error.userInfo);
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"data" : [
|
||||
{
|
||||
"filename" : "disclose.dat",
|
||||
"idiom" : "universal",
|
||||
"universal-type-identifier" : "dyn.ah62d4rv4ge80k2py"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"data" : [
|
||||
{
|
||||
"filename" : "prove_rsa_65537_sha1.dat",
|
||||
"idiom" : "universal",
|
||||
"universal-type-identifier" : "dyn.ah62d4rv4ge80k2py"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"data" : [
|
||||
{
|
||||
"filename" : "prove_rsa_65537_sha256.dat",
|
||||
"idiom" : "universal",
|
||||
"universal-type-identifier" : "dyn.ah62d4rv4ge80k2py"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"data" : [
|
||||
{
|
||||
"filename" : "prove_rsapss_65537_sha256.dat",
|
||||
"idiom" : "universal",
|
||||
"universal-type-identifier" : "dyn.ah62d4rv4ge80k2py"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"data" : [
|
||||
{
|
||||
"filename" : "register_sha256WithRSAEncryption_65537.dat",
|
||||
"idiom" : "universal",
|
||||
"universal-type-identifier" : "dyn.ah62d4rv4ge80k2py"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
|
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
24
app/ios/OpenPassport App Clip/Base.lproj/Main.storyboard
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
|
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 422 B |
|
After Width: | Height: | Size: 582 B |
|
After Width: | Height: | Size: 873 B |
|
After Width: | Height: | Size: 1007 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,204 @@
|
||||
{
|
||||
"images": [
|
||||
{
|
||||
"size": "60x60",
|
||||
"expected-size": "180",
|
||||
"filename": "180.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"expected-size": "80",
|
||||
"filename": "80.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"expected-size": "120",
|
||||
"filename": "120.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"expected-size": "120",
|
||||
"filename": "120.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "57x57",
|
||||
"expected-size": "57",
|
||||
"filename": "57.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"expected-size": "58",
|
||||
"filename": "58.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"expected-size": "29",
|
||||
"filename": "29.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"expected-size": "87",
|
||||
"filename": "87.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "57x57",
|
||||
"expected-size": "114",
|
||||
"filename": "114.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"expected-size": "40",
|
||||
"filename": "40.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"expected-size": "60",
|
||||
"filename": "60.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "iphone",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "1024x1024",
|
||||
"filename": "1024.png",
|
||||
"expected-size": "1024",
|
||||
"idiom": "ios-marketing",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"expected-size": "80",
|
||||
"filename": "80.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "72x72",
|
||||
"expected-size": "72",
|
||||
"filename": "72.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"expected-size": "152",
|
||||
"filename": "152.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "50x50",
|
||||
"expected-size": "100",
|
||||
"filename": "100.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"expected-size": "58",
|
||||
"filename": "58.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"expected-size": "76",
|
||||
"filename": "76.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"expected-size": "29",
|
||||
"filename": "29.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "50x50",
|
||||
"expected-size": "50",
|
||||
"filename": "50.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "72x72",
|
||||
"expected-size": "144",
|
||||
"filename": "144.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"expected-size": "40",
|
||||
"filename": "40.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "83.5x83.5",
|
||||
"expected-size": "167",
|
||||
"filename": "167.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"expected-size": "20",
|
||||
"filename": "20.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"expected-size": "40",
|
||||
"filename": "40.png",
|
||||
"folder": "Assets.xcassets/AppIcon.appiconset/",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
123
app/ios/OpenPassport App Clip/Info.plist
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>OpenPassport</string>
|
||||
<key>CFBundleIconName</key>
|
||||
<string>AppIcon</string>
|
||||
<key>NSAppClip</key>
|
||||
<dict>
|
||||
<key>NSAppClipRequestEphemeralUserNotification</key>
|
||||
<false/>
|
||||
<key>NSAppClipRequestLocationConfirmation</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>UIApplicationSceneManifest</key>
|
||||
<dict>
|
||||
<key>UIApplicationSupportsMultipleScenes</key>
|
||||
<false/>
|
||||
<key>UISceneConfigurations</key>
|
||||
<dict>
|
||||
<key>UIWindowSceneSessionRoleApplication</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>UISceneConfigurationName</key>
|
||||
<string>Default Configuration</string>
|
||||
<key>UISceneDelegateClassName</key>
|
||||
<string>SceneDelegate</string>
|
||||
<key>UISceneStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NFCReaderUsageDescription</key>
|
||||
<string>Need NFC to read Passport</string>
|
||||
<key>NSFaceIDUsageDescription</key>
|
||||
<string>Needed to secure the secret</string>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string></string>
|
||||
<key>NSPhotoLibraryUsageDescription</key>
|
||||
<string>We need access to your photo library to allow you to choose passport photos or save generated QR codes.</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<false/>
|
||||
<key>NSExceptionDomains</key>
|
||||
<dict>
|
||||
<key>localhost</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
<key>NSIncludesSubdomains</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>openpassport.app</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
<key>NSIncludesSubdomains</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>Needed to scan the passport MRZ.</string>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>Inter-Black.otf</string>
|
||||
<string>Inter-BlackItalic.otf</string>
|
||||
<string>Inter-BoldItalic.otf</string>
|
||||
<string>Inter-ExtraBold.otf</string>
|
||||
<string>Inter-ExtraBoldItalic.otf</string>
|
||||
<string>Inter-ExtraLight.otf</string>
|
||||
<string>Inter-ExtraLightItalic.otf</string>
|
||||
<string>Inter-Italic.otf</string>
|
||||
<string>Inter-Light.otf</string>
|
||||
<string>Inter-LightItalic.otf</string>
|
||||
<string>Inter-Medium.otf</string>
|
||||
<string>Inter-MediumItalic.otf</string>
|
||||
<string>Inter-Regular.otf</string>
|
||||
<string>Inter-SemiBold.otf</string>
|
||||
<string>Inter-SemiBoldItalic.otf</string>
|
||||
<string>Inter-Thin.otf</string>
|
||||
<string>Inter-ThinItalic.otf</string>
|
||||
<string>Luciole-Bold-Italic.ttf</string>
|
||||
<string>Luciole-Bold.ttf</string>
|
||||
<string>Luciole-Regular-Italic.ttf</string>
|
||||
<string>Luciole-Regular.ttf</string>
|
||||
<string>slkscr.ttf</string>
|
||||
<string>slkscrb.ttf</string>
|
||||
<string>Inter-Bold.otf</string>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
|
||||
<array>
|
||||
<string>A0000002471001</string>
|
||||
<string>A0000002472001</string>
|
||||
<string>00000000000000</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.device.camera</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.nfc.readersession.formats</key>
|
||||
<array>
|
||||
<string>TAG</string>
|
||||
</array>
|
||||
<key>com.apple.developer.parent-application-identifiers</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)com.warroom.proofofpassport</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>_XCCurrentVersionName</key>
|
||||
<string>OpenPassport_App_Clip.xcdatamodel</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="11A491" minimumToolsVersion="Automatic" sourceLanguage="Objective-C" usedWithCloudKit="false" userDefinedModelVersionIdentifier="">
|
||||
<elements/>
|
||||
</model>
|
||||
15
app/ios/OpenPassport App Clip/SceneDelegate.h
Normal file
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// SceneDelegate.h
|
||||
// OpenPassport App Clip
|
||||
//
|
||||
// Created by turboblitz on 17/08/2024.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface SceneDelegate : UIResponder <UIWindowSceneDelegate>
|
||||
|
||||
@property (strong, nonatomic) UIWindow * window;
|
||||
|
||||
@end
|
||||
|
||||
61
app/ios/OpenPassport App Clip/SceneDelegate.m
Normal file
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// SceneDelegate.m
|
||||
// OpenPassport App Clip
|
||||
//
|
||||
// Created by turboblitz on 17/08/2024.
|
||||
//
|
||||
|
||||
#import "SceneDelegate.h"
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@interface SceneDelegate ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation SceneDelegate
|
||||
|
||||
|
||||
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
|
||||
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
|
||||
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
|
||||
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
|
||||
}
|
||||
|
||||
|
||||
- (void)sceneDidDisconnect:(UIScene *)scene {
|
||||
// Called as the scene is being released by the system.
|
||||
// This occurs shortly after the scene enters the background, or when its session is discarded.
|
||||
// Release any resources associated with this scene that can be re-created the next time the scene connects.
|
||||
// The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
|
||||
}
|
||||
|
||||
|
||||
- (void)sceneDidBecomeActive:(UIScene *)scene {
|
||||
// Called when the scene has moved from an inactive state to an active state.
|
||||
// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
|
||||
}
|
||||
|
||||
|
||||
- (void)sceneWillResignActive:(UIScene *)scene {
|
||||
// Called when the scene will move from an active state to an inactive state.
|
||||
// This may occur due to temporary interruptions (ex. an incoming phone call).
|
||||
}
|
||||
|
||||
|
||||
- (void)sceneWillEnterForeground:(UIScene *)scene {
|
||||
// Called as the scene transitions from the background to the foreground.
|
||||
// Use this method to undo the changes made on entering the background.
|
||||
}
|
||||
|
||||
|
||||
- (void)sceneDidEnterBackground:(UIScene *)scene {
|
||||
// Called as the scene transitions from the foreground to the background.
|
||||
// Use this method to save data, release shared resources, and store enough scene-specific state information
|
||||
// to restore the scene back to its current state.
|
||||
|
||||
// Save changes in the application's managed object context when the application transitions to the background.
|
||||
[(AppDelegate *)UIApplication.sharedApplication.delegate saveContext];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
14
app/ios/OpenPassport App Clip/ViewController.h
Normal file
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// ViewController.h
|
||||
// OpenPassport App Clip
|
||||
//
|
||||
// Created by turboblitz on 17/08/2024.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface ViewController : UIViewController
|
||||
|
||||
|
||||
@end
|
||||
|
||||
42
app/ios/OpenPassport App Clip/ViewController.m
Normal file
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// ViewController.m
|
||||
// OpenPassport App Clip
|
||||
//
|
||||
// Created by turboblitz on 17/08/2024.
|
||||
//
|
||||
|
||||
#import "ViewController.h"
|
||||
#import <React/RCTBundleURLProvider.h>
|
||||
#import <React/RCTRootView.h>
|
||||
|
||||
@interface ViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation ViewController
|
||||
|
||||
- (void)loadView {
|
||||
#if DEBUG
|
||||
// For DEBUG configuration, javascript will be loaded from index file
|
||||
NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.clip"];
|
||||
#else
|
||||
// For RELEASE configuration, js code is bundled and main.jsbundle file is created
|
||||
NSURL *jsCodeLocation = [[NSBundle mainBundle]
|
||||
URLForResource:@"main" withExtension:@"jsbundle"];
|
||||
#endif
|
||||
|
||||
// Value of moduleName should be equal to appName value set in index file
|
||||
RCTRootView *rootView = [[RCTRootView alloc]
|
||||
initWithBundleURL:jsCodeLocation moduleName:@"OpenPassport"
|
||||
initialProperties:nil launchOptions:nil];
|
||||
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f
|
||||
green:1.0f blue:1.0f alpha:1];
|
||||
self.view = rootView;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
18
app/ios/OpenPassport App Clip/main.m
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// main.m
|
||||
// OpenPassport App Clip
|
||||
//
|
||||
// Created by turboblitz on 17/08/2024.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
NSString * appDelegateClassName;
|
||||
@autoreleasepool {
|
||||
// Setup code that might create autoreleased objects goes here.
|
||||
appDelegateClassName = NSStringFromClass([AppDelegate class]);
|
||||
}
|
||||
return UIApplicationMain(argc, argv, nil, appDelegateClassName);
|
||||
}
|
||||
@@ -2,6 +2,9 @@
|
||||
// Use this file to import your target's public headers that you would like to expose to Swift.
|
||||
//
|
||||
|
||||
#include "witnesscalc_register_sha256WithRSAEncryption_65537.h"
|
||||
#include "witnesscalc_disclose.h"
|
||||
// #include "witnesscalc_register_sha256WithRSAEncryption_65537.h"
|
||||
// #include "witnesscalc_disclose.h"
|
||||
#include "witnesscalc_prove_rsa_65537_sha256.h"
|
||||
#include "witnesscalc_prove_rsa_65537_sha1.h"
|
||||
#include "witnesscalc_prove_rsapss_65537_sha256.h"
|
||||
#include "groth16_prover.h"
|
||||
|
||||
@@ -7,10 +7,46 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
054340B82C71B2960014B445 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 054340B72C71B2960014B445 /* AppDelegate.m */; };
|
||||
054340BB2C71B2960014B445 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 054340BA2C71B2960014B445 /* SceneDelegate.m */; };
|
||||
054340BE2C71B2960014B445 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 054340BD2C71B2960014B445 /* ViewController.m */; };
|
||||
054340C12C71B2960014B445 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 054340BF2C71B2960014B445 /* Main.storyboard */; };
|
||||
054340C42C71B2960014B445 /* OpenPassport_App_Clip.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 054340C22C71B2960014B445 /* OpenPassport_App_Clip.xcdatamodeld */; };
|
||||
054340C62C71B2980014B445 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 054340C52C71B2980014B445 /* Assets.xcassets */; };
|
||||
054340C92C71B2980014B445 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 054340C72C71B2980014B445 /* LaunchScreen.storyboard */; };
|
||||
054340CC2C71B2980014B445 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 054340CB2C71B2980014B445 /* main.m */; };
|
||||
054340D02C71B2980014B445 /* OpenPassport App Clip.app in Embed App Clips */ = {isa = PBXBuildFile; fileRef = 054340B42C71B2960014B445 /* OpenPassport App Clip.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
05527D5C2C7743010077C942 /* libwitnesscalc_prove_rsa_65537_sha1.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0573C4F12C7545F6006C7386 /* libwitnesscalc_prove_rsa_65537_sha1.a */; };
|
||||
05527D5D2C7743010077C942 /* libwitnesscalc_prove_rsa_65537_sha256.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0573C4F32C7545F7006C7386 /* libwitnesscalc_prove_rsa_65537_sha256.a */; };
|
||||
05527D5E2C7743010077C942 /* libwitnesscalc_prove_rsapss_65537_sha256.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0573C4F22C7545F7006C7386 /* libwitnesscalc_prove_rsapss_65537_sha256.a */; };
|
||||
0569F35B2BBC9015006670BD /* librapidsnark.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0569F35A2BBC900D006670BD /* librapidsnark.a */; };
|
||||
0569F35F2BBC98D5006670BD /* libfq.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0569F35E2BBC98C9006670BD /* libfq.a */; };
|
||||
0573C4D72C72E6D0006C7386 /* PassportReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4CA2C72E6D0006C7386 /* PassportReader.swift */; };
|
||||
0573C4D82C72E6D0006C7386 /* PassportReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4CC2C72E6D0006C7386 /* PassportReader.m */; };
|
||||
0573C4D92C72E6D0006C7386 /* QKMRZScannerViewRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4CD2C72E6D0006C7386 /* QKMRZScannerViewRepresentable.swift */; };
|
||||
0573C4DA2C72E6D0006C7386 /* QRScannerBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4CE2C72E6D0006C7386 /* QRScannerBridge.m */; };
|
||||
0573C4DB2C72E6D0006C7386 /* Prover.m in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4CF2C72E6D0006C7386 /* Prover.m */; };
|
||||
0573C4DC2C72E6D0006C7386 /* MRZScannerModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4D02C72E6D0006C7386 /* MRZScannerModule.swift */; };
|
||||
0573C4DD2C72E6D0006C7386 /* QRScannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4D12C72E6D0006C7386 /* QRScannerViewController.swift */; };
|
||||
0573C4DE2C72E6D0006C7386 /* MRZScannerModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4D22C72E6D0006C7386 /* MRZScannerModule.m */; };
|
||||
0573C4DF2C72E6D0006C7386 /* LottieView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4D32C72E6D0006C7386 /* LottieView.swift */; };
|
||||
0573C4E02C72E6D0006C7386 /* ScannerHostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4D42C72E6D0006C7386 /* ScannerHostingController.swift */; };
|
||||
0573C4E12C72E6D0006C7386 /* Prover.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4D52C72E6D0006C7386 /* Prover.swift */; };
|
||||
0573C4E22C72E6D0006C7386 /* QRScannerBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0573C4D62C72E6D0006C7386 /* QRScannerBridge.swift */; };
|
||||
0573C4E42C72E7F6006C7386 /* libfq.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0569F35E2BBC98C9006670BD /* libfq.a */; };
|
||||
0573C4E52C72E7F6006C7386 /* libfr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 05D985F32BB331AB00F58EEA /* libfr.a */; };
|
||||
0573C4E62C72E7F6006C7386 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 05D985F22BB331AB00F58EEA /* libgmp.a */; };
|
||||
0573C4E72C72E7F6006C7386 /* librapidsnark.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0569F35A2BBC900D006670BD /* librapidsnark.a */; };
|
||||
0573C4E82C72E7F6006C7386 /* libwitnesscalc_disclose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 058516D32BF49B91006A14DA /* libwitnesscalc_disclose.a */; };
|
||||
0573C4E92C72E7F6006C7386 /* libwitnesscalc_register_sha256WithRSAEncryption_65537.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 058516D22BF49B91006A14DA /* libwitnesscalc_register_sha256WithRSAEncryption_65537.a */; };
|
||||
0573C4EE2C72E857006C7386 /* passport.json in Resources */ = {isa = PBXBuildFile; fileRef = 0573C4ED2C72E857006C7386 /* passport.json */; };
|
||||
0573C4F02C742FA6006C7386 /* masterList.pem in Resources */ = {isa = PBXBuildFile; fileRef = 0573C4EF2C742FA6006C7386 /* masterList.pem */; };
|
||||
0573C4F42C754600006C7386 /* libwitnesscalc_prove_rsa_65537_sha1.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0573C4F12C7545F6006C7386 /* libwitnesscalc_prove_rsa_65537_sha1.a */; };
|
||||
0573C4F52C754600006C7386 /* libwitnesscalc_prove_rsa_65537_sha256.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0573C4F32C7545F7006C7386 /* libwitnesscalc_prove_rsa_65537_sha256.a */; };
|
||||
0573C4F62C754600006C7386 /* libwitnesscalc_prove_rsapss_65537_sha256.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0573C4F22C7545F7006C7386 /* libwitnesscalc_prove_rsapss_65537_sha256.a */; };
|
||||
058516D42BF49B98006A14DA /* libwitnesscalc_disclose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 058516D32BF49B91006A14DA /* libwitnesscalc_disclose.a */; };
|
||||
058516D52BF49B98006A14DA /* libwitnesscalc_register_sha256WithRSAEncryption_65537.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 058516D22BF49B91006A14DA /* libwitnesscalc_register_sha256WithRSAEncryption_65537.a */; };
|
||||
05B4DDF72C7850A90067519E /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 05B4DDF62C7850A80067519E /* Images.xcassets */; };
|
||||
05D985F52BB331AB00F58EEA /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 05D985F22BB331AB00F58EEA /* libgmp.a */; };
|
||||
05D985F62BB331AB00F58EEA /* libfr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 05D985F32BB331AB00F58EEA /* libfr.a */; };
|
||||
05D985FB2BB3344600F58EEA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 05D985FA2BB3344600F58EEA /* Assets.xcassets */; };
|
||||
@@ -46,6 +82,7 @@
|
||||
905B70052A72767900AFA232 /* PassportReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 905B70042A72767900AFA232 /* PassportReader.swift */; };
|
||||
905B70072A72774000AFA232 /* PassportReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 905B70062A72774000AFA232 /* PassportReader.m */; };
|
||||
905B700B2A72A5E900AFA232 /* masterList.pem in Resources */ = {isa = PBXBuildFile; fileRef = 905B700A2A72A5E900AFA232 /* masterList.pem */; };
|
||||
926E45294BCCFD19D5CD4AEF /* Pods_OpenPassport_OpenPassport_App_Clip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F28D0EC9A537B138EDEDC422 /* Pods_OpenPassport_OpenPassport_App_Clip.framework */; };
|
||||
9713779CBED04A308A0B2DF2 /* Inter-LightItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 38DEC0D33CBA43429A48B8E3 /* Inter-LightItalic.otf */; };
|
||||
98D6CE33FC02453794D8DB08 /* slkscr.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 110D16BAD3FA4513BEA89A3A /* slkscr.ttf */; };
|
||||
B7C1F08B40CC4C1985152F72 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = C03CCA67A92F47D59CDA16E5 /* Inter-SemiBoldItalic.otf */; };
|
||||
@@ -69,14 +106,70 @@
|
||||
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
|
||||
remoteInfo = OpenPassport;
|
||||
};
|
||||
054340CE2C71B2980014B445 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 054340B32C71B2960014B445;
|
||||
remoteInfo = "OpenPassport App Clip";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
054340D12C71B2980014B445 /* Embed App Clips */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "$(CONTENTS_FOLDER_PATH)/AppClips";
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
054340D02C71B2980014B445 /* OpenPassport App Clip.app in Embed App Clips */,
|
||||
);
|
||||
name = "Embed App Clips";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
00E356EE1AD99517003FC87E /* OpenPassportTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OpenPassportTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
03D7F2F0EF44EF6300A9E4CD /* Pods-OpenPassport-OpenPassport App Clip.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport-OpenPassport App Clip.release.xcconfig"; path = "Target Support Files/Pods-OpenPassport-OpenPassport App Clip/Pods-OpenPassport-OpenPassport App Clip.release.xcconfig"; sourceTree = "<group>"; };
|
||||
054340B42C71B2960014B445 /* OpenPassport App Clip.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "OpenPassport App Clip.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
054340B62C71B2960014B445 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
054340B72C71B2960014B445 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
054340B92C71B2960014B445 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = "<group>"; };
|
||||
054340BA2C71B2960014B445 /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = "<group>"; };
|
||||
054340BC2C71B2960014B445 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
054340BD2C71B2960014B445 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
054340C02C71B2960014B445 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
054340C32C71B2960014B445 /* OpenPassport_App_Clip.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = OpenPassport_App_Clip.xcdatamodel; sourceTree = "<group>"; };
|
||||
054340C52C71B2980014B445 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
054340C82C71B2980014B445 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
054340CA2C71B2980014B445 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
054340CB2C71B2980014B445 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
054340CD2C71B2980014B445 /* OpenPassport_App_Clip.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = OpenPassport_App_Clip.entitlements; sourceTree = "<group>"; };
|
||||
0569F35A2BBC900D006670BD /* librapidsnark.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = librapidsnark.a; sourceTree = "<group>"; };
|
||||
0569F35E2BBC98C9006670BD /* libfq.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libfq.a; sourceTree = "<group>"; };
|
||||
0573C4CA2C72E6D0006C7386 /* PassportReader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PassportReader.swift; sourceTree = SOURCE_ROOT; };
|
||||
0573C4CB2C72E6D0006C7386 /* OpenPassport-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OpenPassport-Bridging-Header.h"; sourceTree = SOURCE_ROOT; };
|
||||
0573C4CC2C72E6D0006C7386 /* PassportReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PassportReader.m; sourceTree = SOURCE_ROOT; };
|
||||
0573C4CD2C72E6D0006C7386 /* QKMRZScannerViewRepresentable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QKMRZScannerViewRepresentable.swift; sourceTree = SOURCE_ROOT; };
|
||||
0573C4CE2C72E6D0006C7386 /* QRScannerBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QRScannerBridge.m; sourceTree = SOURCE_ROOT; };
|
||||
0573C4CF2C72E6D0006C7386 /* Prover.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Prover.m; sourceTree = SOURCE_ROOT; };
|
||||
0573C4D02C72E6D0006C7386 /* MRZScannerModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MRZScannerModule.swift; sourceTree = SOURCE_ROOT; };
|
||||
0573C4D12C72E6D0006C7386 /* QRScannerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRScannerViewController.swift; sourceTree = SOURCE_ROOT; };
|
||||
0573C4D22C72E6D0006C7386 /* MRZScannerModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MRZScannerModule.m; sourceTree = SOURCE_ROOT; };
|
||||
0573C4D32C72E6D0006C7386 /* LottieView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LottieView.swift; sourceTree = SOURCE_ROOT; };
|
||||
0573C4D42C72E6D0006C7386 /* ScannerHostingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScannerHostingController.swift; sourceTree = SOURCE_ROOT; };
|
||||
0573C4D52C72E6D0006C7386 /* Prover.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Prover.swift; sourceTree = SOURCE_ROOT; };
|
||||
0573C4D62C72E6D0006C7386 /* QRScannerBridge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRScannerBridge.swift; sourceTree = SOURCE_ROOT; };
|
||||
0573C4EA2C72E7F6006C7386 /* groth16_prover.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = groth16_prover.h; sourceTree = "<group>"; };
|
||||
0573C4ED2C72E857006C7386 /* passport.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = passport.json; sourceTree = SOURCE_ROOT; };
|
||||
0573C4EF2C742FA6006C7386 /* masterList.pem */ = {isa = PBXFileReference; lastKnownFileType = text; name = masterList.pem; path = OpenPassport/masterList.pem; sourceTree = SOURCE_ROOT; };
|
||||
0573C4F12C7545F6006C7386 /* libwitnesscalc_prove_rsa_65537_sha1.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libwitnesscalc_prove_rsa_65537_sha1.a; sourceTree = "<group>"; };
|
||||
0573C4F22C7545F7006C7386 /* libwitnesscalc_prove_rsapss_65537_sha256.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libwitnesscalc_prove_rsapss_65537_sha256.a; sourceTree = "<group>"; };
|
||||
0573C4F32C7545F7006C7386 /* libwitnesscalc_prove_rsa_65537_sha256.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libwitnesscalc_prove_rsa_65537_sha256.a; sourceTree = "<group>"; };
|
||||
058516D22BF49B91006A14DA /* libwitnesscalc_register_sha256WithRSAEncryption_65537.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libwitnesscalc_register_sha256WithRSAEncryption_65537.a; sourceTree = "<group>"; };
|
||||
058516D32BF49B91006A14DA /* libwitnesscalc_disclose.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libwitnesscalc_disclose.a; sourceTree = "<group>"; };
|
||||
05B4DDF62C7850A80067519E /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "OpenPassport App Clip/Images.xcassets"; sourceTree = "<group>"; };
|
||||
05D985F22BB331AB00F58EEA /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
|
||||
05D985F32BB331AB00F58EEA /* libfr.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libfr.a; sourceTree = "<group>"; };
|
||||
05D985FA2BB3344600F58EEA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = OpenPassport/Assets.xcassets; sourceTree = "<group>"; };
|
||||
@@ -84,6 +177,7 @@
|
||||
05EDEDC52B52D25D00AA51AD /* Prover.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Prover.swift; sourceTree = "<group>"; };
|
||||
066DD67BD55B4E90941F2B97 /* Inter-Black.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Black.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Black.otf"; sourceTree = "<group>"; };
|
||||
0AD24C885D29461481982641 /* slkscrb.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = slkscrb.ttf; path = "../node_modules/@tamagui/font-silkscreen/files/slkscrb.ttf"; sourceTree = "<group>"; };
|
||||
0B18C6F4404CC83576C2F36A /* Pods-OpenPassport-OpenPassport App Clip.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport-OpenPassport App Clip.debug.xcconfig"; path = "Target Support Files/Pods-OpenPassport-OpenPassport App Clip/Pods-OpenPassport-OpenPassport App Clip.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
0C76A5D3C00C4D19B7624F46 /* Inter-BlackItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-BlackItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-BlackItalic.otf"; sourceTree = "<group>"; };
|
||||
110D16BAD3FA4513BEA89A3A /* slkscr.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = slkscr.ttf; path = "../node_modules/@tamagui/font-silkscreen/files/slkscr.ttf"; sourceTree = "<group>"; };
|
||||
13B07F961A680F5B00A75B9A /* OpenPassport.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenPassport.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -105,6 +199,7 @@
|
||||
38DEC0D33CBA43429A48B8E3 /* Inter-LightItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-LightItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-LightItalic.otf"; sourceTree = "<group>"; };
|
||||
449D98322BFA406CBB9E2648 /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Bold.otf"; sourceTree = "<group>"; };
|
||||
453D60E43CC0F08D884424E7 /* Pods-OpenPassport.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport.debug.xcconfig"; path = "Target Support Files/Pods-OpenPassport/Pods-OpenPassport.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
4B084D2A6DF9460DCA9EE4BE /* Pods-OpenPassport App Clip.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport App Clip.debug.xcconfig"; path = "Target Support Files/Pods-OpenPassport App Clip/Pods-OpenPassport App Clip.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
53AEBBB143534D68B7792C46 /* Inter-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Medium.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Medium.otf"; sourceTree = "<group>"; };
|
||||
568162F4DC4B4CDC8B341853 /* Inter-ExtraLight.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-ExtraLight.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraLight.otf"; sourceTree = "<group>"; };
|
||||
5686BD657D224A089EAFB825 /* Inter-ExtraBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-ExtraBoldItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraBoldItalic.otf"; sourceTree = "<group>"; };
|
||||
@@ -128,12 +223,14 @@
|
||||
AC752CDC19F5CA03C154E950 /* Pods_OpenPassport_OpenPassportTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OpenPassport_OpenPassportTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B3521C927F0DD22505739205 /* Pods_OpenPassport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OpenPassport.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B68457923C3F444388AB85F2 /* Inter-Thin.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Thin.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Thin.otf"; sourceTree = "<group>"; };
|
||||
BAD0889E49DD94940404B318 /* Pods-OpenPassport App Clip.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport App Clip.release.xcconfig"; path = "Target Support Files/Pods-OpenPassport App Clip/Pods-OpenPassport App Clip.release.xcconfig"; sourceTree = "<group>"; };
|
||||
C03CCA67A92F47D59CDA16E5 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBoldItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; };
|
||||
D20EA8C94F544E14AB58E6EB /* Inter-ExtraBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-ExtraBold.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraBold.otf"; sourceTree = "<group>"; };
|
||||
DC9D466C01604E7CE1392D92 /* Pods-OpenPassport.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport.release.xcconfig"; path = "Target Support Files/Pods-OpenPassport/Pods-OpenPassport.release.xcconfig"; sourceTree = "<group>"; };
|
||||
DEBCA1D9B9B7ED1BF998F4A1 /* Pods-OpenPassport-OpenPassportTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport-OpenPassportTests.debug.xcconfig"; path = "Target Support Files/Pods-OpenPassport-OpenPassportTests/Pods-OpenPassport-OpenPassportTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
DF4EC58B331A46F098343757 /* Inter-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Regular.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Regular.otf"; sourceTree = "<group>"; };
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
F28D0EC9A537B138EDEDC422 /* Pods_OpenPassport_OpenPassport_App_Clip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OpenPassport_OpenPassport_App_Clip.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
F59F295E9CC54539B2C48953 /* Luciole-Bold-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Luciole-Bold-Italic.ttf"; path = "../assets/fonts/Luciole-Bold-Italic.ttf"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
@@ -146,23 +243,78 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
054340B12C71B2960014B445 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
05527D5C2C7743010077C942 /* libwitnesscalc_prove_rsa_65537_sha1.a in Frameworks */,
|
||||
0573C4E92C72E7F6006C7386 /* libwitnesscalc_register_sha256WithRSAEncryption_65537.a in Frameworks */,
|
||||
0573C4E52C72E7F6006C7386 /* libfr.a in Frameworks */,
|
||||
0573C4E42C72E7F6006C7386 /* libfq.a in Frameworks */,
|
||||
0573C4E62C72E7F6006C7386 /* libgmp.a in Frameworks */,
|
||||
05527D5E2C7743010077C942 /* libwitnesscalc_prove_rsapss_65537_sha256.a in Frameworks */,
|
||||
0573C4E72C72E7F6006C7386 /* librapidsnark.a in Frameworks */,
|
||||
0573C4E82C72E7F6006C7386 /* libwitnesscalc_disclose.a in Frameworks */,
|
||||
926E45294BCCFD19D5CD4AEF /* Pods_OpenPassport_OpenPassport_App_Clip.framework in Frameworks */,
|
||||
05527D5D2C7743010077C942 /* libwitnesscalc_prove_rsa_65537_sha256.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0573C4F42C754600006C7386 /* libwitnesscalc_prove_rsa_65537_sha1.a in Frameworks */,
|
||||
058516D52BF49B98006A14DA /* libwitnesscalc_register_sha256WithRSAEncryption_65537.a in Frameworks */,
|
||||
05D985F52BB331AB00F58EEA /* libgmp.a in Frameworks */,
|
||||
0569F35F2BBC98D5006670BD /* libfq.a in Frameworks */,
|
||||
0569F35B2BBC9015006670BD /* librapidsnark.a in Frameworks */,
|
||||
0573C4F62C754600006C7386 /* libwitnesscalc_prove_rsapss_65537_sha256.a in Frameworks */,
|
||||
058516D42BF49B98006A14DA /* libwitnesscalc_disclose.a in Frameworks */,
|
||||
05D985F62BB331AB00F58EEA /* libfr.a in Frameworks */,
|
||||
CA9CD86025E82C8AE5193959 /* Pods_OpenPassport.framework in Frameworks */,
|
||||
0573C4F52C754600006C7386 /* libwitnesscalc_prove_rsa_65537_sha256.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
054340B52C71B2960014B445 /* OpenPassport App Clip */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
054340B62C71B2960014B445 /* AppDelegate.h */,
|
||||
0573C4ED2C72E857006C7386 /* passport.json */,
|
||||
054340B72C71B2960014B445 /* AppDelegate.m */,
|
||||
0573C4D32C72E6D0006C7386 /* LottieView.swift */,
|
||||
0573C4D22C72E6D0006C7386 /* MRZScannerModule.m */,
|
||||
0573C4D02C72E6D0006C7386 /* MRZScannerModule.swift */,
|
||||
0573C4CB2C72E6D0006C7386 /* OpenPassport-Bridging-Header.h */,
|
||||
0573C4CC2C72E6D0006C7386 /* PassportReader.m */,
|
||||
0573C4CA2C72E6D0006C7386 /* PassportReader.swift */,
|
||||
0573C4CF2C72E6D0006C7386 /* Prover.m */,
|
||||
0573C4EF2C742FA6006C7386 /* masterList.pem */,
|
||||
0573C4D52C72E6D0006C7386 /* Prover.swift */,
|
||||
0573C4CD2C72E6D0006C7386 /* QKMRZScannerViewRepresentable.swift */,
|
||||
0573C4CE2C72E6D0006C7386 /* QRScannerBridge.m */,
|
||||
0573C4D62C72E6D0006C7386 /* QRScannerBridge.swift */,
|
||||
0573C4D12C72E6D0006C7386 /* QRScannerViewController.swift */,
|
||||
0573C4D42C72E6D0006C7386 /* ScannerHostingController.swift */,
|
||||
054340B92C71B2960014B445 /* SceneDelegate.h */,
|
||||
054340BA2C71B2960014B445 /* SceneDelegate.m */,
|
||||
054340BC2C71B2960014B445 /* ViewController.h */,
|
||||
054340BD2C71B2960014B445 /* ViewController.m */,
|
||||
054340BF2C71B2960014B445 /* Main.storyboard */,
|
||||
054340C52C71B2980014B445 /* Assets.xcassets */,
|
||||
054340C72C71B2980014B445 /* LaunchScreen.storyboard */,
|
||||
054340CA2C71B2980014B445 /* Info.plist */,
|
||||
054340CB2C71B2980014B445 /* main.m */,
|
||||
054340CD2C71B2980014B445 /* OpenPassport_App_Clip.entitlements */,
|
||||
054340C22C71B2960014B445 /* OpenPassport_App_Clip.xcdatamodeld */,
|
||||
);
|
||||
path = "OpenPassport App Clip";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
13B07FAE1A68108700A75B9A /* OpenPassport */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -198,6 +350,10 @@
|
||||
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0573C4EA2C72E7F6006C7386 /* groth16_prover.h */,
|
||||
0573C4F12C7545F6006C7386 /* libwitnesscalc_prove_rsa_65537_sha1.a */,
|
||||
0573C4F32C7545F7006C7386 /* libwitnesscalc_prove_rsa_65537_sha256.a */,
|
||||
0573C4F22C7545F7006C7386 /* libwitnesscalc_prove_rsapss_65537_sha256.a */,
|
||||
058516D32BF49B91006A14DA /* libwitnesscalc_disclose.a */,
|
||||
058516D22BF49B91006A14DA /* libwitnesscalc_register_sha256WithRSAEncryption_65537.a */,
|
||||
0569F35E2BBC98C9006670BD /* libfq.a */,
|
||||
@@ -205,6 +361,7 @@
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
||||
B3521C927F0DD22505739205 /* Pods_OpenPassport.framework */,
|
||||
AC752CDC19F5CA03C154E950 /* Pods_OpenPassport_OpenPassportTests.framework */,
|
||||
F28D0EC9A537B138EDEDC422 /* Pods_OpenPassport_OpenPassport_App_Clip.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -251,8 +408,10 @@
|
||||
83CBB9F61A601CBA00E9B192 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
05B4DDF62C7850A80067519E /* Images.xcassets */,
|
||||
13B07FAE1A68108700A75B9A /* OpenPassport */,
|
||||
832341AE1AAA6A7D00B99B32 /* Libraries */,
|
||||
054340B52C71B2960014B445 /* OpenPassport App Clip */,
|
||||
83CBBA001A601CBA00E9B192 /* Products */,
|
||||
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
||||
BBD78D7AC51CEA395F1C20DB /* Pods */,
|
||||
@@ -268,6 +427,7 @@
|
||||
children = (
|
||||
13B07F961A680F5B00A75B9A /* OpenPassport.app */,
|
||||
00E356EE1AD99517003FC87E /* OpenPassportTests.xctest */,
|
||||
054340B42C71B2960014B445 /* OpenPassport App Clip.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -279,6 +439,10 @@
|
||||
DC9D466C01604E7CE1392D92 /* Pods-OpenPassport.release.xcconfig */,
|
||||
DEBCA1D9B9B7ED1BF998F4A1 /* Pods-OpenPassport-OpenPassportTests.debug.xcconfig */,
|
||||
8A94FF2ACC255C722460867D /* Pods-OpenPassport-OpenPassportTests.release.xcconfig */,
|
||||
4B084D2A6DF9460DCA9EE4BE /* Pods-OpenPassport App Clip.debug.xcconfig */,
|
||||
BAD0889E49DD94940404B318 /* Pods-OpenPassport App Clip.release.xcconfig */,
|
||||
0B18C6F4404CC83576C2F36A /* Pods-OpenPassport-OpenPassport App Clip.debug.xcconfig */,
|
||||
03D7F2F0EF44EF6300A9E4CD /* Pods-OpenPassport-OpenPassport App Clip.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
@@ -306,6 +470,27 @@
|
||||
productReference = 00E356EE1AD99517003FC87E /* OpenPassportTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
054340B32C71B2960014B445 /* OpenPassport App Clip */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 054340D42C71B2980014B445 /* Build configuration list for PBXNativeTarget "OpenPassport App Clip" */;
|
||||
buildPhases = (
|
||||
C58A18F469AD91A0B2CC5615 /* [CP] Check Pods Manifest.lock */,
|
||||
054340B02C71B2960014B445 /* Sources */,
|
||||
054340B12C71B2960014B445 /* Frameworks */,
|
||||
054340B22C71B2960014B445 /* Resources */,
|
||||
054340D52C72904B0014B445 /* Start Packager */,
|
||||
054340D62C7290C50014B445 /* Bundle React Native code and images */,
|
||||
BD911A31EA0C67D2934076B6 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "OpenPassport App Clip";
|
||||
productName = "OpenPassport App Clip";
|
||||
productReference = 054340B42C71B2960014B445 /* OpenPassport App Clip.app */;
|
||||
productType = "com.apple.product-type.application.on-demand-install-capable";
|
||||
};
|
||||
13B07F861A680F5B00A75B9A /* OpenPassport */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "OpenPassport" */;
|
||||
@@ -317,10 +502,12 @@
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||
DF7986E9DBA454E2407E80A3 /* [CP] Embed Pods Frameworks */,
|
||||
054340D12C71B2980014B445 /* Embed App Clips */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
054340CF2C71B2980014B445 /* PBXTargetDependency */,
|
||||
);
|
||||
name = OpenPassport;
|
||||
productName = OpenPassport;
|
||||
@@ -339,6 +526,10 @@
|
||||
CreatedOnToolsVersion = 6.2;
|
||||
TestTargetID = 13B07F861A680F5B00A75B9A;
|
||||
};
|
||||
054340B32C71B2960014B445 = {
|
||||
CreatedOnToolsVersion = 15.2;
|
||||
LastSwiftMigration = 1520;
|
||||
};
|
||||
13B07F861A680F5B00A75B9A = {
|
||||
LastSwiftMigration = 1430;
|
||||
};
|
||||
@@ -359,6 +550,7 @@
|
||||
targets = (
|
||||
13B07F861A680F5B00A75B9A /* OpenPassport */,
|
||||
00E356ED1AD99517003FC87E /* OpenPassportTests */,
|
||||
054340B32C71B2960014B445 /* OpenPassport App Clip */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@@ -371,6 +563,19 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
054340B22C71B2960014B445 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
054340C92C71B2980014B445 /* LaunchScreen.storyboard in Resources */,
|
||||
0573C4F02C742FA6006C7386 /* masterList.pem in Resources */,
|
||||
0573C4EE2C72E857006C7386 /* passport.json in Resources */,
|
||||
054340C62C71B2980014B445 /* Assets.xcassets in Resources */,
|
||||
05B4DDF72C7850A90067519E /* Images.xcassets in Resources */,
|
||||
054340C12C71B2960014B445 /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -427,6 +632,44 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
|
||||
};
|
||||
054340D52C72904B0014B445 /* Start Packager */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Start Packager";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nexport RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n echo \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\"\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
|
||||
};
|
||||
054340D62C7290C50014B445 /* Bundle React Native code and images */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$(SRCROOT)/.xcode.env.local",
|
||||
"$(SRCROOT)/.xcode.env",
|
||||
);
|
||||
name = "Bundle React Native code and images";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nset -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE index.clip.js\"\n";
|
||||
};
|
||||
095376EF00B07A916686CBD0 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -471,6 +714,45 @@
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
BD911A31EA0C67D2934076B6 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-OpenPassport-OpenPassport App Clip/Pods-OpenPassport-OpenPassport App Clip-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-OpenPassport-OpenPassport App Clip/Pods-OpenPassport-OpenPassport App Clip-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OpenPassport-OpenPassport App Clip/Pods-OpenPassport-OpenPassport App Clip-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
C58A18F469AD91A0B2CC5615 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-OpenPassport-OpenPassport App Clip-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
DF7986E9DBA454E2407E80A3 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -534,6 +816,30 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
054340B02C71B2960014B445 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
054340CC2C71B2980014B445 /* main.m in Sources */,
|
||||
054340BE2C71B2960014B445 /* ViewController.m in Sources */,
|
||||
0573C4DE2C72E6D0006C7386 /* MRZScannerModule.m in Sources */,
|
||||
0573C4D72C72E6D0006C7386 /* PassportReader.swift in Sources */,
|
||||
0573C4D82C72E6D0006C7386 /* PassportReader.m in Sources */,
|
||||
0573C4E12C72E6D0006C7386 /* Prover.swift in Sources */,
|
||||
0573C4DA2C72E6D0006C7386 /* QRScannerBridge.m in Sources */,
|
||||
0573C4D92C72E6D0006C7386 /* QKMRZScannerViewRepresentable.swift in Sources */,
|
||||
054340B82C71B2960014B445 /* AppDelegate.m in Sources */,
|
||||
054340BB2C71B2960014B445 /* SceneDelegate.m in Sources */,
|
||||
0573C4DD2C72E6D0006C7386 /* QRScannerViewController.swift in Sources */,
|
||||
054340C42C71B2960014B445 /* OpenPassport_App_Clip.xcdatamodeld in Sources */,
|
||||
0573C4DF2C72E6D0006C7386 /* LottieView.swift in Sources */,
|
||||
0573C4E02C72E6D0006C7386 /* ScannerHostingController.swift in Sources */,
|
||||
0573C4E22C72E6D0006C7386 /* QRScannerBridge.swift in Sources */,
|
||||
0573C4DB2C72E6D0006C7386 /* Prover.m in Sources */,
|
||||
0573C4DC2C72E6D0006C7386 /* MRZScannerModule.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
13B07F871A680F5B00A75B9A /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -563,8 +869,32 @@
|
||||
target = 13B07F861A680F5B00A75B9A /* OpenPassport */;
|
||||
targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
|
||||
};
|
||||
054340CF2C71B2980014B445 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 054340B32C71B2960014B445 /* OpenPassport App Clip */;
|
||||
targetProxy = 054340CE2C71B2980014B445 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
054340BF2C71B2960014B445 /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
054340C02C71B2960014B445 /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
054340C72C71B2980014B445 /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
054340C82C71B2980014B445 /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
00E356F61AD99517003FC87E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
@@ -619,16 +949,127 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
054340D22C71B2980014B445 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 0B18C6F4404CC83576C2F36A /* Pods-OpenPassport-OpenPassport App Clip.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_ENTITLEMENTS = "OpenPassport App Clip/OpenPassport_App_Clip.entitlements";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 54;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = 5B29R5LYHQ;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "OpenPassport App Clip/Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = OpenPassport;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 17.2;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/usr/lib/swift",
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||
MARKETING_VERSION = 1.6;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.warroom.proofofpassport.Clip;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_DIR)/OpenPassport-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
054340D32C71B2980014B445 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 03D7F2F0EF44EF6300A9E4CD /* Pods-OpenPassport-OpenPassport App Clip.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_ENTITLEMENTS = "OpenPassport App Clip/OpenPassport_App_Clip.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 54;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = 5B29R5LYHQ;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "OpenPassport App Clip/Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = OpenPassport;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 17.2;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/usr/lib/swift",
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||
MARKETING_VERSION = 1.6;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.warroom.proofofpassport.Clip;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_DIR)/OpenPassport-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 453D60E43CC0F08D884424E7 /* Pods-OpenPassport.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = OpenPassport/OpenPassport.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 53;
|
||||
CURRENT_PROJECT_VERSION = 54;
|
||||
DEVELOPMENT_TEAM = 5B29R5LYHQ;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
@@ -728,8 +1169,9 @@
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
INFOPLIST_FILE = OpenPassport/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = OpenPassport;
|
||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Needed only if you want to upload QRcodes";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 17.2;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
@@ -741,7 +1183,7 @@
|
||||
"$(PROJECT_DIR)",
|
||||
"$(PROJECT_DIR)/MoproKit/Libs",
|
||||
);
|
||||
MARKETING_VERSION = 1.5;
|
||||
MARKETING_VERSION = 1.6;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -761,10 +1203,11 @@
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = DC9D466C01604E7CE1392D92 /* Pods-OpenPassport.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = OpenPassport/OpenPassport.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 53;
|
||||
CURRENT_PROJECT_VERSION = 54;
|
||||
DEVELOPMENT_TEAM = 5B29R5LYHQ;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -863,9 +1306,10 @@
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
INFOPLIST_FILE = OpenPassport/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = OpenPassport;
|
||||
INFOPLIST_KEY_NSDocumentsFolderUsageDescription = "";
|
||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Needed only if you want to upload QRcodes";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 17.2;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
@@ -876,7 +1320,7 @@
|
||||
"$(PROJECT_DIR)",
|
||||
"$(PROJECT_DIR)/MoproKit/Libs",
|
||||
);
|
||||
MARKETING_VERSION = 1.5;
|
||||
MARKETING_VERSION = 1.6;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -1059,6 +1503,15 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
054340D42C71B2980014B445 /* Build configuration list for PBXNativeTarget "OpenPassport App Clip" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
054340D22C71B2980014B445 /* Debug */,
|
||||
054340D32C71B2980014B445 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "OpenPassport" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
@@ -1078,6 +1531,19 @@
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCVersionGroup section */
|
||||
054340C22C71B2960014B445 /* OpenPassport_App_Clip.xcdatamodeld */ = {
|
||||
isa = XCVersionGroup;
|
||||
children = (
|
||||
054340C32C71B2960014B445 /* OpenPassport_App_Clip.xcdatamodel */,
|
||||
);
|
||||
currentVersion = 054340C32C71B2960014B445 /* OpenPassport_App_Clip.xcdatamodel */;
|
||||
path = OpenPassport_App_Clip.xcdatamodeld;
|
||||
sourceTree = "<group>";
|
||||
versionGroupType = wrapper.xcdatamodel;
|
||||
};
|
||||
/* End XCVersionGroup section */
|
||||
};
|
||||
rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"data" : [
|
||||
{
|
||||
"filename" : "prove_rsa_65537_sha1.dat",
|
||||
"idiom" : "universal",
|
||||
"universal-type-identifier" : "dyn.ah62d4rv4ge80k2py"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"data" : [
|
||||
{
|
||||
"filename" : "prove_rsa_65537_sha256.dat",
|
||||
"idiom" : "universal",
|
||||
"universal-type-identifier" : "dyn.ah62d4rv4ge80k2py"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"data" : [
|
||||
{
|
||||
"filename" : "prove_rsapss_65537_sha256.dat",
|
||||
"idiom" : "universal",
|
||||
"universal-type-identifier" : "dyn.ah62d4rv4ge80k2py"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
@@ -8,5 +8,9 @@
|
||||
<array>
|
||||
<string>TAG</string>
|
||||
</array>
|
||||
<key>com.apple.developer.associated-appclip-app-identifiers</key>
|
||||
<array>
|
||||
<string>5B29R5LYHQ.com.warroom.proofofpassport.Clip</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -7,7 +7,7 @@ require Pod::Executable.execute_command('node', ['-p',
|
||||
{paths: [process.argv[1]]},
|
||||
)', __dir__]).strip
|
||||
|
||||
|
||||
project 'OpenPassport.xcodeproj'
|
||||
|
||||
platform :ios, '13.0'
|
||||
prepare_react_native_project!
|
||||
@@ -63,6 +63,11 @@ target 'OpenPassport' do
|
||||
# Pods for testing
|
||||
end
|
||||
|
||||
target 'OpenPassport App Clip' do
|
||||
inherit! :search_paths
|
||||
inherit! :complete
|
||||
end
|
||||
|
||||
post_install do |installer|
|
||||
installer.generated_projects.each do |project|
|
||||
project.targets.each do |target|
|
||||
|
||||
@@ -669,6 +669,6 @@ SPEC CHECKSUMS:
|
||||
SwiftyTesseract: 1f3d96668ae92dc2208d9842c8a59bea9fad2cbb
|
||||
Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce
|
||||
|
||||
PODFILE CHECKSUM: 0b4a2364bb270ea925376c675c6c8b3aa019d655
|
||||
PODFILE CHECKSUM: 7b509982ef9137a67eabe590749f46e630e5c88f
|
||||
|
||||
COCOAPODS: 1.15.2
|
||||
|
||||
@@ -9,12 +9,24 @@ import Foundation
|
||||
import React
|
||||
import Security
|
||||
|
||||
#if canImport(witnesscalc_register_sha256WithRSAEncryption_65537)
|
||||
import witnesscalc_register_sha256WithRSAEncryption_65537
|
||||
// #if canImport(witnesscalc_register_sha256WithRSAEncryption_65537)
|
||||
// import witnesscalc_register_sha256WithRSAEncryption_65537
|
||||
// #endif
|
||||
|
||||
// #if canImport(witnesscalc_disclose)
|
||||
// import witnesscalc_disclose
|
||||
// #endif
|
||||
|
||||
#if canImport(witnesscalc_prove_rsa_65537_sha256)
|
||||
import witnesscalc_prove_rsa_65537_sha256
|
||||
#endif
|
||||
|
||||
#if canImport(witnesscalc_disclose)
|
||||
import witnesscalc_disclose
|
||||
#if canImport(witnesscalc_prove_rsa_65537_sha1)
|
||||
import witnesscalc_prove_rsa_65537_sha1
|
||||
#endif
|
||||
|
||||
#if canImport(witnesscalc_prove_rsapss_65537_sha256)
|
||||
import witnesscalc_prove_rsapss_65537_sha256
|
||||
#endif
|
||||
|
||||
#if canImport(groth16_prover)
|
||||
@@ -95,15 +107,37 @@ private func _calcWtns(witness_calculator: String, dat: Data, jsonData: Data) th
|
||||
|
||||
let result: Int32
|
||||
|
||||
if witness_calculator == "register_sha256WithRSAEncryption_65537" {
|
||||
result = witnesscalc_register_sha256WithRSAEncryption_65537(
|
||||
// if witness_calculator == "register_sha256WithRSAEncryption_65537" {
|
||||
// result = witnesscalc_register_sha256WithRSAEncryption_65537(
|
||||
// (dat as NSData).bytes, datSize,
|
||||
// (jsonData as NSData).bytes, jsonDataSize,
|
||||
// wtnsBuffer, wtnsSize,
|
||||
// errorBuffer, errorSize
|
||||
// )
|
||||
// } else if witness_calculator == "disclose" {
|
||||
// result = witnesscalc_disclose(
|
||||
// (dat as NSData).bytes, datSize,
|
||||
// (jsonData as NSData).bytes, jsonDataSize,
|
||||
// wtnsBuffer, wtnsSize,
|
||||
// errorBuffer, errorSize
|
||||
// )
|
||||
// } else
|
||||
if witness_calculator == "prove_rsa_65537_sha256" {
|
||||
result = witnesscalc_prove_rsa_65537_sha256(
|
||||
(dat as NSData).bytes, datSize,
|
||||
(jsonData as NSData).bytes, jsonDataSize,
|
||||
wtnsBuffer, wtnsSize,
|
||||
errorBuffer, errorSize
|
||||
)
|
||||
} else if witness_calculator == "disclose" {
|
||||
result = witnesscalc_disclose(
|
||||
} else if witness_calculator == "prove_rsa_65537_sha1" {
|
||||
result = witnesscalc_prove_rsa_65537_sha1(
|
||||
(dat as NSData).bytes, datSize,
|
||||
(jsonData as NSData).bytes, jsonDataSize,
|
||||
wtnsBuffer, wtnsSize,
|
||||
errorBuffer, errorSize
|
||||
)
|
||||
} else if witness_calculator == "prove_rsapss_65537_sha256" {
|
||||
result = witnesscalc_prove_rsapss_65537_sha256(
|
||||
(dat as NSData).bytes, datSize,
|
||||
(jsonData as NSData).bytes, jsonDataSize,
|
||||
wtnsBuffer, wtnsSize,
|
||||
|
||||
BIN
app/ios/libwitnesscalc_prove_rsa_65537_sha1.a
Normal file
BIN
app/ios/libwitnesscalc_prove_rsa_65537_sha256.a
Normal file
BIN
app/ios/libwitnesscalc_prove_rsapss_65537_sha256.a
Normal file
39
app/ios/witnesscalc_prove_rsa_65537_sha1.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef WITNESSCALC_prove_rsa_65537_sha1_H
|
||||
#define WITNESSCALC_prove_rsa_65537_sha1_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_prove_rsa_65537_sha1(
|
||||
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_prove_rsa_65537_sha1_H
|
||||
39
app/ios/witnesscalc_prove_rsa_65537_sha256.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef WITNESSCALC_prove_rsa_65537_sha256_H
|
||||
#define WITNESSCALC_prove_rsa_65537_sha256_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_prove_rsa_65537_sha256(
|
||||
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_prove_rsa_65537_sha256_H
|
||||
39
app/ios/witnesscalc_prove_rsapss_65537_sha256.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef WITNESSCALC_prove_rsapss_65537_sha256_H
|
||||
#define WITNESSCALC_prove_rsapss_65537_sha256_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_prove_rsapss_65537_sha256(
|
||||
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_prove_rsapss_65537_sha256_H
|
||||
@@ -29,6 +29,8 @@
|
||||
"body-parser": "^1.20.2",
|
||||
"buffer": "^6.0.3",
|
||||
"burnt": "^0.12.2",
|
||||
"country-emoji": "^1.5.6",
|
||||
"country-iso-3-to-2": "^1.1.1",
|
||||
"crypto-js": "^4.1.1",
|
||||
"ethers": "^6.11.0",
|
||||
"expo-modules-core": "^1.11.12",
|
||||
|
||||
@@ -25,8 +25,12 @@ cd ../..
|
||||
# Copy artifacts for each circuit
|
||||
for circuit in "${CIRCUITS[@]}"; do
|
||||
cp witnesscalc/build_witnesscalc_ios/src/Release-iphoneos/libwitnesscalc_${circuit}.a ios
|
||||
|
||||
mkdir -p ios/OpenPassport/Assets.xcassets/${circuit}.dat.dataset
|
||||
mkdir -p ios/OpenPassport App Clip/Assets.xcassets/${circuit}.dat.dataset
|
||||
|
||||
cp witnesscalc/src/${circuit}.dat ios/OpenPassport/Assets.xcassets/${circuit}.dat.dataset/${circuit}.dat
|
||||
cp witnesscalc/src/${circuit}.dat ios/OpenPassport App Clip/Assets.xcassets/${circuit}.dat.dataset/${circuit}.dat
|
||||
cp witnesscalc/src/witnesscalc_${circuit}.h ios
|
||||
done
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace CIRCUIT_NAME {" ${file}.cpp
|
||||
}
|
||||
|
||||
# Array of circuit files
|
||||
declare -a CIRCUITS=("register_sha256WithRSAEncryption_65537" "disclose")
|
||||
declare -a CIRCUITS=("prove_rsa_65537_sha256" "prove_rsa_65537_sha1" "prove_rsapss_65537_sha256")
|
||||
|
||||
# Main execution
|
||||
for circuit in "${CIRCUITS[@]}"; do
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
# How do I add my own app?
|
||||
|
||||
- Copy the file of an existing app such as `sbt.tsx`
|
||||
- Adapt the UI fields and the `handleProve` and `handleSendProof` functions
|
||||
- On your server, import the sdk in `/sdk`
|
||||
- For onchain usage, let the app mint an SBT and choose `onchain` in the sdk
|
||||
- For offchain usage, send the proof to your server using an api call, choose `offchain` in the sdk and let it verify the proof directly!
|
||||
@@ -1,30 +0,0 @@
|
||||
import { AppType } from "../../../common/src/utils/appType";
|
||||
import { Text, YStack } from 'tamagui';
|
||||
import { Coins } from '@tamagui/lucide-icons';
|
||||
import GITCOIN from '../images/gitcoin.png';
|
||||
|
||||
const comingSoon = () => (
|
||||
<YStack ml="$2" p="$2" px="$3" bc="#282828" borderRadius="$10">
|
||||
<Text color="#a0a0a0" fontWeight="bold">coming soon</Text>
|
||||
</YStack>
|
||||
);
|
||||
|
||||
export const gitcoinApp: AppType = {
|
||||
id: 'gitcoin',
|
||||
|
||||
title: 'Gitcoin passport',
|
||||
description: 'Add to Gitcoin passport and donate to your favorite projects',
|
||||
background: GITCOIN,
|
||||
colorOfTheText: 'white',
|
||||
selectable: false,
|
||||
icon: Coins,
|
||||
tags: [comingSoon()],
|
||||
|
||||
name: 'Gitcoin',
|
||||
disclosureOptions: {
|
||||
date_of_expiry: "required"
|
||||
},
|
||||
sendButtonText: 'Add to Gitcoin passport',
|
||||
}
|
||||
|
||||
export default gitcoinApp;
|
||||
@@ -1,277 +0,0 @@
|
||||
import { AppType } from "../../../common/src/utils/appType";
|
||||
import { Flame } from '@tamagui/lucide-icons';
|
||||
import { Text, XStack, YStack } from 'tamagui';
|
||||
import { generateProof } from "../utils/prover";
|
||||
import useUserStore from "../stores/userStore";
|
||||
import { generateCircuitInputsDisclose } from "../../../common/src/utils/generateInputs";
|
||||
import EnterAddress from "../components/EnterAddress";
|
||||
import { revealBitmapFromMapping } from "../../../common/src/utils/revealBitmap";
|
||||
import useSbtStore from "../stores/sbtStore";
|
||||
import useNavigationStore from "../stores/navigationStore";
|
||||
import { Steps } from "../utils/utils";
|
||||
import { mintSBT } from "../utils/transactions";
|
||||
import { ethers } from "ethers";
|
||||
import * as amplitude from '@amplitude/analytics-react-native';
|
||||
import Clipboard from "@react-native-community/clipboard";
|
||||
import { shortenTxHash } from "../../utils/utils";
|
||||
import { textColor1 } from "../utils/colors";
|
||||
import { Pressable } from "react-native";
|
||||
import { COMMITMENT_TREE_TRACKER_URL, PASSPORT_ATTESTATION_ID, RPC_URL } from "../../../common/src/constants/constants";
|
||||
import { poseidon2 } from "poseidon-lite";
|
||||
import axios from 'axios';
|
||||
import { LeanIMT } from "@zk-kit/imt";
|
||||
|
||||
const sepolia = () => (
|
||||
<YStack ml="$2" p="$2" px="$3" bc="#0d1e18" borderRadius="$10">
|
||||
<Text color="#3bb178" fow="bold">Sepolia</Text>
|
||||
</YStack>
|
||||
);
|
||||
|
||||
export const sbtApp: AppType = {
|
||||
id: 'soulbound',
|
||||
|
||||
// AppScreen UI
|
||||
title: 'Soulbound Token',
|
||||
description: 'Mint a Soulbound Token and prove you\'re a human',
|
||||
colorOfTheText: 'black',
|
||||
selectable: true,
|
||||
icon: Flame,
|
||||
tags: [sepolia()],
|
||||
|
||||
// ProveScreen UI
|
||||
name: 'Soulbound token',
|
||||
disclosureOptions: {
|
||||
nationality: "optional",
|
||||
expiry_date: "optional",
|
||||
older_than: "optional"
|
||||
},
|
||||
|
||||
// SendProofScreen UI before sending proof
|
||||
beforeSendText1: "You can now use this proof to mint a Soulbound token.",
|
||||
beforeSendText2: "Disclosed information will be displayed on SBT.",
|
||||
sendButtonText: 'Mint Soulbound token',
|
||||
sendingButtonText: 'Minting...',
|
||||
|
||||
// SendProofScreen UI after sending proof
|
||||
successTitle: 'You just have minted a Soulbound token 🎉',
|
||||
successText: 'You can now share this proof with the selected app.',
|
||||
|
||||
successComponent: () => {
|
||||
const txHash = useSbtStore.getState().txHash;
|
||||
const toast = useNavigationStore.getState().toast;
|
||||
|
||||
return (
|
||||
<Pressable onPress={() => {
|
||||
Clipboard.setString(txHash);
|
||||
toast.show('🖨️', {
|
||||
message: "Tx copied to clipboard",
|
||||
customData: {
|
||||
type: "success",
|
||||
},
|
||||
})
|
||||
}}
|
||||
>
|
||||
<XStack jc='space-between' h="$2" ai="center">
|
||||
<Text color={textColor1} fontWeight="bold" fontSize="$5">
|
||||
Tx: {shortenTxHash(txHash)}
|
||||
</Text>
|
||||
</XStack>
|
||||
</Pressable>
|
||||
)
|
||||
},
|
||||
|
||||
finalButtonAction: () => {
|
||||
const txHash = useSbtStore.getState().txHash;
|
||||
const toast = useNavigationStore.getState().toast;
|
||||
|
||||
Clipboard.setString(txHash);
|
||||
toast.show('🖨️', {
|
||||
message: "Tx copied to clipboard",
|
||||
customData: {
|
||||
type: "success",
|
||||
},
|
||||
})
|
||||
},
|
||||
|
||||
finalButtonText: 'Copy to clipboard',
|
||||
|
||||
scope: '1',
|
||||
circuit: "disclose",
|
||||
|
||||
// fields the user can fill
|
||||
fields: [
|
||||
EnterAddress
|
||||
],
|
||||
|
||||
handleProve: async () => {
|
||||
const {
|
||||
update,
|
||||
disclosure,
|
||||
address,
|
||||
majority,
|
||||
} = useSbtStore.getState();
|
||||
|
||||
const {
|
||||
toast,
|
||||
setStep,
|
||||
} = useNavigationStore.getState();
|
||||
|
||||
const {
|
||||
secret,
|
||||
passportData
|
||||
} = useUserStore.getState();
|
||||
|
||||
setStep(Steps.GENERATING_PROOF);
|
||||
|
||||
const reveal_bitmap = revealBitmapFromMapping(disclosure);
|
||||
|
||||
const response = await axios.get(COMMITMENT_TREE_TRACKER_URL)
|
||||
// const serializedCommitmentTree = "[[\"9366833337168993085050982292715343583458999801189875133285760454940954329736\",\"17067815450997614268337156469331439256078702232208444991806942459610897177755\",\"6218618977460894587557092460164616095207478656436068295742870309857616419830\",\"1009498555512750055176786258919772755314598234878788682229429740456064488924\",\"2317777252282411584898482846587421326341858131145081778162865818517424463113\",\"14350861400343175672772758664935358862843556622155842278173685659399974430673\"],[\"5757843324860707578753413472099376283217223062835733089254074659436006978958\",\"9384382887555344903988763589988369409408141218078864334664000402547342440893\",\"20714514634358291855499138323356766695315870633431415798546884765927810445680\"],[\"6444500081923737565029349850782686417529434309028817508928891238372057960879\",\"20714514634358291855499138323356766695315870633431415798546884765927810445680\"],[\"13949165376611379310020797746578693825960496340786495286952352659551479278661\"]]"
|
||||
console.log('response.data:', response.data);
|
||||
|
||||
const imt = new LeanIMT(
|
||||
(a: bigint, b: bigint) => poseidon2([a, b]),
|
||||
[]
|
||||
);
|
||||
|
||||
imt.import(response.data);
|
||||
|
||||
try {
|
||||
const inputs = generateCircuitInputsDisclose(
|
||||
secret,
|
||||
PASSPORT_ATTESTATION_ID,
|
||||
passportData,
|
||||
imt as any,
|
||||
majority.toString().split(""),
|
||||
reveal_bitmap,
|
||||
sbtApp.scope,
|
||||
address,
|
||||
);
|
||||
|
||||
console.log('inputs:', inputs);
|
||||
|
||||
const start = Date.now();
|
||||
|
||||
const proof = await generateProof(
|
||||
sbtApp.circuit,
|
||||
inputs,
|
||||
);
|
||||
|
||||
const end = Date.now();
|
||||
console.log('Total proof time from frontend:', end - start);
|
||||
//amplitude.track('Proof generation successful, took ' + ((end - start) / 1000) + ' seconds');
|
||||
update({
|
||||
proof: proof,
|
||||
proofTime: end - start,
|
||||
});
|
||||
setStep(Steps.PROOF_GENERATED);
|
||||
} catch (error: any) {
|
||||
console.error(error);
|
||||
toast.show('Error', {
|
||||
message: error.message,
|
||||
customData: {
|
||||
type: "error",
|
||||
},
|
||||
})
|
||||
setStep(Steps.NEXT_SCREEN);
|
||||
//amplitude.track(error.message);
|
||||
}
|
||||
},
|
||||
|
||||
handleSendProof: async () => {
|
||||
const {
|
||||
update,
|
||||
proof
|
||||
} = useSbtStore.getState();
|
||||
|
||||
const {
|
||||
toast,
|
||||
setStep
|
||||
} = useNavigationStore.getState();
|
||||
|
||||
if (!proof) {
|
||||
console.error('Proof is not generated');
|
||||
return;
|
||||
}
|
||||
|
||||
setStep(Steps.PROOF_SENDING);
|
||||
|
||||
toast.show('🚀', {
|
||||
message: "Transaction sent...",
|
||||
customData: {
|
||||
type: "info",
|
||||
},
|
||||
})
|
||||
|
||||
const provider = new ethers.JsonRpcProvider(RPC_URL);
|
||||
|
||||
try {
|
||||
const serverResponse = await mintSBT(proof)
|
||||
const txHash = serverResponse?.data.hash;
|
||||
|
||||
setStep(Steps.PROOF_SENT);
|
||||
update({
|
||||
txHash: txHash,
|
||||
proofSentText: `SBT minting... Network: Sepolia. Transaction hash: ${txHash}`
|
||||
});
|
||||
|
||||
const receipt = await provider.waitForTransaction(txHash);
|
||||
console.log('receipt status:', receipt?.status);
|
||||
|
||||
if (receipt?.status === 1) {
|
||||
toast.show('🎊', {
|
||||
message: "SBT minted",
|
||||
customData: {
|
||||
type: "success",
|
||||
},
|
||||
})
|
||||
update({
|
||||
proofSentText: `SBT minted. Network: Sepolia. Transaction hash: ${txHash}`
|
||||
});
|
||||
} else {
|
||||
toast.show('Error', {
|
||||
message: "SBT mint failed",
|
||||
customData: {
|
||||
type: "error",
|
||||
},
|
||||
})
|
||||
update({
|
||||
proofSentText: `Error minting SBT. Network: Sepolia. Transaction hash: ${txHash}`
|
||||
});
|
||||
setStep(Steps.PROOF_GENERATED);
|
||||
}
|
||||
} catch (error: any) {
|
||||
setStep(Steps.PROOF_GENERATED);
|
||||
update({
|
||||
proofSentText: `Error minting SBT. Network: Sepolia.`
|
||||
});
|
||||
if (error.isAxiosError && error.response) {
|
||||
const errorMessage = error.response.data.error;
|
||||
console.log('Server error message:', errorMessage);
|
||||
|
||||
// parse blockchain error and show it
|
||||
const match = errorMessage.match(/execution reverted: "([^"]*)"/);
|
||||
if (match && match[1]) {
|
||||
console.log('Parsed blockchain error:', match[1]);
|
||||
toast.show('Error', {
|
||||
message: `Error: ${match[1]}`,
|
||||
customData: {
|
||||
type: "error",
|
||||
},
|
||||
})
|
||||
} else {
|
||||
toast.show('Error', {
|
||||
message: `Error: mint failed`,
|
||||
customData: {
|
||||
type: "error",
|
||||
},
|
||||
})
|
||||
console.log('Failed to parse blockchain error');
|
||||
}
|
||||
}
|
||||
//amplitude.track(error.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default sbtApp;
|
||||
@@ -1,30 +0,0 @@
|
||||
import { AppType } from "../../../common/src/utils/appType";
|
||||
import { Text, YStack } from 'tamagui';
|
||||
import { Ticket } from '@tamagui/lucide-icons';
|
||||
import ZUPASS from '../images/zupass.png';
|
||||
|
||||
const comingSoon = () => (
|
||||
<YStack ml="$2" p="$2" px="$3" bc="#282828" borderRadius="$10">
|
||||
<Text color="#a0a0a0" fontWeight="bold">coming soon</Text>
|
||||
</YStack>
|
||||
);
|
||||
|
||||
export const zupassApp: AppType = {
|
||||
id: 'zuzalu',
|
||||
|
||||
title: 'Zupass',
|
||||
description: 'Connect to prove your identity at in person events',
|
||||
background: ZUPASS,
|
||||
colorOfTheText: 'white',
|
||||
selectable: false,
|
||||
icon: Ticket,
|
||||
tags: [comingSoon()],
|
||||
|
||||
name: 'Zupass',
|
||||
disclosureOptions: {
|
||||
date_of_expiry: "required"
|
||||
},
|
||||
sendButtonText: 'Add to Zupass',
|
||||
}
|
||||
|
||||
export default zupassApp;
|
||||
@@ -1,89 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Text, YStack, XStack, H4, Button } from 'tamagui';
|
||||
import { ChevronRight } from '@tamagui/lucide-icons';
|
||||
import { useToastController } from '@tamagui/toast';
|
||||
import { borderColor, componentBgColor, textColor1, textColor2 } from '../utils/colors';
|
||||
|
||||
|
||||
interface AppCardProps {
|
||||
title: string;
|
||||
description: string;
|
||||
id: string | number;
|
||||
onTouchStart?: () => void;
|
||||
selected?: boolean;
|
||||
selectable?: boolean;
|
||||
icon: any;
|
||||
tags: any;
|
||||
}
|
||||
|
||||
const AppCard: React.FC<AppCardProps> = ({
|
||||
title,
|
||||
description,
|
||||
id,
|
||||
onTouchStart,
|
||||
selected,
|
||||
selectable,
|
||||
icon,
|
||||
tags
|
||||
}) => {
|
||||
const toast = useToastController();
|
||||
|
||||
const showtoast = () => {
|
||||
toast.show('🚧 Coming soon', {
|
||||
message: 'This feature is under development.',
|
||||
customData: {
|
||||
type: 'info',
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<YStack
|
||||
overflow="hidden"
|
||||
borderRadius="$7"
|
||||
borderWidth={1.2}
|
||||
borderColor={borderColor}
|
||||
key={id}
|
||||
bg={componentBgColor}
|
||||
>
|
||||
<YStack p="$2.5">
|
||||
<XStack gap="$3" ai="center">
|
||||
<XStack h="$3" w="$3" p="$1" ai="center" jc="center" bc="#232323" borderWidth={1.2} borderColor="#343434" borderRadius="$3">
|
||||
{React.createElement(icon, { color: textColor1 })}
|
||||
</XStack>
|
||||
<YStack width={250}>
|
||||
<H4 color={textColor1} selectable={false} >{title}</H4>
|
||||
</YStack>
|
||||
<XStack flex={1} />
|
||||
</XStack>
|
||||
</YStack>
|
||||
<YStack p="$2" bc="#232323" borderWidth={1.2} borderLeftWidth={0} borderRightWidth={0} borderColor="#343434">
|
||||
<XStack ai="center">
|
||||
<YStack gap="$1" >
|
||||
<Text color={textColor2} mt="$1" theme="alt2" selectable={false}>{description}.</Text>
|
||||
<Text color={textColor2} mt="$1" theme="alt2" selectable={false}>No other data than the ones selected in the next step will be shared with the app.</Text>
|
||||
</YStack>
|
||||
<XStack flex={1} />
|
||||
</XStack>
|
||||
</YStack>
|
||||
<YStack p="$2">
|
||||
<XStack gap="$4" ai="center">
|
||||
<XStack gap="$1">
|
||||
{tags.map((Tag: any, index: any) => <React.Fragment key={index}>{Tag}</React.Fragment>)}
|
||||
</XStack>
|
||||
<XStack f={1} />
|
||||
<Button h="$3" p="$2" pl="$3" borderRadius="$4" borderWidth={1} backgroundColor="#282828" borderColor="#343434" onPress={selectable ? onTouchStart : showtoast}>
|
||||
<XStack gap="$0">
|
||||
<Text color="#ededed" fontSize="$5" >Select</Text>
|
||||
<ChevronRight size="$1" color="#ededed" />
|
||||
</XStack>
|
||||
</Button>
|
||||
</XStack>
|
||||
</YStack>
|
||||
|
||||
</YStack>
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
export default AppCard;
|
||||
@@ -1,6 +1,6 @@
|
||||
import React, { useState } from 'react'
|
||||
import { AnimatePresence } from '@tamagui/animate-presence'
|
||||
import { ArrowLeft, ArrowRight, Nfc, ShieldCheck } from '@tamagui/lucide-icons'
|
||||
import { ArrowLeft, Nfc } from '@tamagui/lucide-icons'
|
||||
import { Button, Image, XStack, YStack, styled, Text } from 'tamagui'
|
||||
import { bgBlue, bgGreen, borderColor, textBlack, textColor1, textColor2 } from '../utils/colors'
|
||||
import CustomButton from './CustomButton'
|
||||
@@ -36,18 +36,16 @@ const wrap = (min: number, max: number, v: number) => {
|
||||
interface CarouselProps {
|
||||
images: string[];
|
||||
height?: number;
|
||||
onSlideChange?: (index: number) => void;
|
||||
handleNfcScan?: () => void;
|
||||
}
|
||||
|
||||
export function Carousel({ images, height = 300, onSlideChange, handleNfcScan }: CarouselProps) {
|
||||
export function Carousel({ images, height = 300, handleNfcScan }: CarouselProps) {
|
||||
const [[page, going], setPage] = useState([0, 0])
|
||||
|
||||
const imageIndex = wrap(0, images.length, page)
|
||||
const paginate = (going: number) => {
|
||||
const newPage = page + going
|
||||
setPage([newPage, going])
|
||||
onSlideChange?.(newPage)
|
||||
}
|
||||
|
||||
const isLastImage = imageIndex === images.length - 1
|
||||
@@ -99,10 +97,6 @@ export function Carousel({ images, height = 300, onSlideChange, handleNfcScan }:
|
||||
<Text color={textBlack} fontSize="$5" mt="$2" textAlign='center' style={{ opacity: 0.7 }} fontStyle='italic'>{currentSlide.subtitle}</Text>
|
||||
</YStack>
|
||||
|
||||
<XStack justifyContent='center' alignItems='center' gap="$1.5" position="absolute" style={{ bottom: 120, left: 0, right: 0 }}>
|
||||
<ShieldCheck color={textBlack} size={14} />
|
||||
<Text color={textBlack} fontSize="$4" >private and secured</Text>
|
||||
</XStack>
|
||||
<XStack f={1} />
|
||||
|
||||
<CustomButton
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import React from 'react';
|
||||
import { Button, Text } from 'tamagui';
|
||||
import { bgBlue, bgGreen, textBlack } from '../utils/colors';
|
||||
import useNavigationStore from '../stores/navigationStore';
|
||||
|
||||
interface CustomButtonProps {
|
||||
text: string;
|
||||
@@ -15,9 +14,6 @@ interface CustomButtonProps {
|
||||
}
|
||||
|
||||
const CustomButton: React.FC<CustomButtonProps> = ({ text, onPress, Icon, bgColor, h, isDisabled, disabledOnPress, blueVariant }) => {
|
||||
const {
|
||||
toast,
|
||||
} = useNavigationStore();
|
||||
return (
|
||||
<Button bg={bgColor ? bgColor : blueVariant ? bgBlue : bgGreen} h={blueVariant ? "$8" : "$4.5"} borderRadius="$10" mx="$3" onPress={isDisabled ? disabledOnPress : onPress}>
|
||||
{Icon && <Button.Icon>{Icon}</Button.Icon>}
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { YStack, XStack, Text, Checkbox, Input, Button, Spinner, Image, useWindowDimensions, ScrollView } from 'tamagui';
|
||||
import { borderColor, componentBgColor, componentBgColor2, textColor1, textColor2 } from '../utils/colors';
|
||||
import ENS from "../images/ens_mark_dao.png"
|
||||
import { useToastController } from '@tamagui/toast'
|
||||
import { ethers } from 'ethers';
|
||||
import useSbtStore from '../stores/sbtStore';
|
||||
|
||||
const EnterAddress: React.FC = () => {
|
||||
const [inputValue, setInputValue] = useState('');
|
||||
|
||||
const {
|
||||
address,
|
||||
ens,
|
||||
update
|
||||
} = useSbtStore();
|
||||
|
||||
const provider = new ethers.JsonRpcProvider(`https://eth-mainnet.g.alchemy.com/v2/lpOn3k6Fezetn1e5QF-iEsn-J0C6oGE0`);
|
||||
const toast = useToastController()
|
||||
|
||||
useEffect(() => {
|
||||
if (ens != '' && inputValue == '') {
|
||||
setInputValue(ens);
|
||||
|
||||
}
|
||||
else if (address != ethers.ZeroAddress && inputValue == '') {
|
||||
setInputValue(address);
|
||||
}
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
const resolveENS = async () => {
|
||||
if (inputValue != ens) {
|
||||
if (inputValue.endsWith('.eth')) {
|
||||
try {
|
||||
toast.show('🔭 Looking onchain', {
|
||||
message: 'Looking for ' + inputValue,
|
||||
customData: {
|
||||
type: "info",
|
||||
},
|
||||
})
|
||||
|
||||
const resolvedAddress = await provider.resolveName(inputValue);
|
||||
if (resolvedAddress) {
|
||||
console.log("new address settled:" + resolvedAddress);
|
||||
update({
|
||||
address: resolvedAddress,
|
||||
ens: inputValue
|
||||
});
|
||||
toast.show('✨ Welcome ✨', {
|
||||
message: 'Nice to meet you ' + inputValue,
|
||||
customData: {
|
||||
type: "success",
|
||||
},
|
||||
})
|
||||
} else {
|
||||
toast.show('Error', {
|
||||
message: inputValue + ' not found ',
|
||||
customData: {
|
||||
type: "error",
|
||||
},
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
toast.show('Error', {
|
||||
message: 'Check input format or RPC provider or internet connection',
|
||||
customData: {
|
||||
type: "error",
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
else if (inputValue.length === 42 && inputValue.startsWith('0x')) {
|
||||
update({
|
||||
address: inputValue,
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
resolveENS();
|
||||
}, [inputValue]);
|
||||
|
||||
return (
|
||||
<YStack bc={componentBgColor} borderRadius="$6" borderWidth={1.5} borderColor={borderColor}>
|
||||
<YStack p="$3">
|
||||
<XStack gap="$4" ai="center">
|
||||
<XStack p="$2" bc="#232323" borderWidth={1.2} borderColor="#343434" borderRadius="$3">
|
||||
<Image
|
||||
source={{ uri: ENS }}
|
||||
w="$1"
|
||||
h="$1" />
|
||||
</XStack>
|
||||
<YStack gap="$1">
|
||||
<Text fontSize={16} fow="bold" color="#ededed">Address or ENS</Text>
|
||||
</YStack>
|
||||
</XStack>
|
||||
</YStack>
|
||||
<YStack bc={componentBgColor2} borderTopWidth={1.5} borderColor={borderColor} borderBottomLeftRadius="$6" borderBottomRightRadius="$6">
|
||||
<Input
|
||||
bg="transparent"
|
||||
color={textColor1}
|
||||
fontSize={13}
|
||||
placeholder="anon.eth or 0x023…"
|
||||
value={inputValue}
|
||||
onChangeText={setInputValue}
|
||||
autoCorrect={false}
|
||||
autoCapitalize='none'
|
||||
borderColor="transparent"
|
||||
borderWidth={0}
|
||||
/>
|
||||
</YStack>
|
||||
</YStack>
|
||||
);
|
||||
};
|
||||
|
||||
export default EnterAddress;
|
||||
@@ -1,26 +1,40 @@
|
||||
import { Toast, useToastState } from '@tamagui/toast'
|
||||
import { YStack } from '@tamagui/stacks'
|
||||
import { greenColorDark, greenColorLight, redColorDark, redColorLight, blueColorDark, blueColorLight, textColor1 } from '../utils/colors'
|
||||
import { Toast, useToastState } from '@tamagui/toast';
|
||||
import { YStack } from '@tamagui/stacks';
|
||||
import {
|
||||
greenColorLight,
|
||||
redColorLight,
|
||||
blueColorLight,
|
||||
textColor1,
|
||||
} from '../utils/colors';
|
||||
|
||||
export const ToastMessage = () => {
|
||||
const toast = useToastState();
|
||||
if (!toast || toast.isHandledNatively) return null;
|
||||
return (
|
||||
<Toast
|
||||
bg={toast.customData?.type === "success" ? greenColorDark : toast.customData?.type === "error" ? redColorDark : blueColorDark}
|
||||
animation="100ms"
|
||||
enterStyle={{ y: -20, opacity: 0 }}
|
||||
exitStyle={{ y: -20, opacity: 0 }}
|
||||
opacity={1}
|
||||
x={0}
|
||||
key={toast?.id}
|
||||
duration={toast?.duration}
|
||||
const toast = useToastState();
|
||||
|
||||
>
|
||||
<YStack ai="center" jc="center">
|
||||
<Toast.Title fow="bold" color={toast.customData?.type === "success" ? greenColorLight : toast.customData?.type === "error" ? redColorLight : blueColorLight}>{toast?.title}</Toast.Title>
|
||||
<Toast.Description color={textColor1}>{toast.message}</Toast.Description>
|
||||
</YStack>
|
||||
</Toast>
|
||||
);
|
||||
};
|
||||
if (!toast || toast.isHandledNatively) return null;
|
||||
|
||||
return (
|
||||
<Toast
|
||||
bg={
|
||||
toast.customData?.type === 'success'
|
||||
? greenColorLight
|
||||
: toast.customData?.type === 'error'
|
||||
? redColorLight
|
||||
: blueColorLight
|
||||
}
|
||||
animation="100ms"
|
||||
enterStyle={{ y: -20, opacity: 0 }}
|
||||
exitStyle={{ y: -20, opacity: 0 }}
|
||||
opacity={1}
|
||||
x={0}
|
||||
key={toast?.id}
|
||||
duration={3000}
|
||||
>
|
||||
<YStack ai="center" jc="center">
|
||||
<Toast.Title fow="bold" color={'white'}>{toast?.title}</Toast.Title>
|
||||
<Toast.Description color={textColor1}>
|
||||
{toast.message}
|
||||
</Toast.Description>
|
||||
</YStack>
|
||||
</Toast>
|
||||
);
|
||||
};
|
||||
|
||||
|
Before Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 241 KiB |
BIN
app/src/images/user_profile.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 1.8 MiB |
@@ -1,55 +0,0 @@
|
||||
import React from 'react';
|
||||
import { ScrollView, YStack } from 'tamagui';
|
||||
import AppCard from '../components/AppCard';
|
||||
import { Steps } from '../utils/utils';
|
||||
import useNavigationStore from '../stores/navigationStore';
|
||||
import { AppType } from '../../../common/src/utils/appType';
|
||||
import sbtApp from '../apps/sbt';
|
||||
import zupassApp from '../apps/zupass';
|
||||
import gitcoinApp from '../apps/gitcoin';
|
||||
|
||||
const AppScreen: React.FC = () => {
|
||||
const {
|
||||
selectedApp,
|
||||
update
|
||||
} = useNavigationStore();
|
||||
|
||||
const handleCardSelect = (app: AppType) => {
|
||||
update({
|
||||
selectedTab: "prove",
|
||||
selectedApp: app,
|
||||
step: Steps.APP_SELECTED,
|
||||
})
|
||||
};
|
||||
|
||||
// add new apps here
|
||||
const cardsData = [
|
||||
sbtApp,
|
||||
zupassApp,
|
||||
gitcoinApp
|
||||
];
|
||||
|
||||
return (
|
||||
<ScrollView f={1}>
|
||||
<YStack my="$8" gap="$5" px="$5" jc="center" alignItems='center'>
|
||||
{
|
||||
cardsData.map(app => (
|
||||
<AppCard
|
||||
key={app.id}
|
||||
title={app.title}
|
||||
description={app.description}
|
||||
id={app.id}
|
||||
onTouchStart={() => handleCardSelect(app)}
|
||||
selected={selectedApp && selectedApp.id === app.id ? true : false}
|
||||
selectable={app.selectable}
|
||||
icon={app.icon}
|
||||
tags={app.tags}
|
||||
/>
|
||||
))
|
||||
}
|
||||
</YStack>
|
||||
</ScrollView>
|
||||
);
|
||||
}
|
||||
|
||||
export default AppScreen;
|
||||