mirror of
https://github.com/selfxyz/self.git
synced 2026-02-08 05:15:19 -05:00
merkle tree circuit proving in app
- factor out generateCircuitInputs - new proof working on iOS - new zkey on aws and contract deployment - not working on android because of mysterious bug
This commit is contained in:
102
app/App.tsx
102
app/App.tsx
@@ -14,22 +14,17 @@ import {
|
||||
DEFAULT_DOE
|
||||
} from '@env';
|
||||
import { PassportData } from '../common/src/utils/types';
|
||||
import { AWS_ENDPOINT, MAX_DATAHASHES_LEN } from '../common/src/constants/constants';
|
||||
import { revealBitmapFromMapping } from '../common/src/utils/revealBitmap';
|
||||
import { jmrtdToStandardName } from '../common/src/utils/formatNames';
|
||||
import { generateCircuitInputs } from '../common/src/utils/generateInputs';
|
||||
import { AWS_ENDPOINT } from '../common/src/constants/constants';
|
||||
import {
|
||||
hash,
|
||||
toUnsignedByte,
|
||||
bytesToBigDecimal,
|
||||
formatMrz,
|
||||
splitToWords,
|
||||
hexStringToSignedIntArray,
|
||||
formatProofIOS,
|
||||
formatInputsIOS
|
||||
} from '../common/src/utils/utils';
|
||||
import { samplePassportData } from '../common/src/utils/passportDataStatic';
|
||||
import { sha256Pad } from '../common/src/utils/sha256Pad';
|
||||
|
||||
import "@ethersproject/shims"
|
||||
import { ethers, ZeroAddress } from "ethers";
|
||||
import { ethers } from "ethers";
|
||||
import axios from 'axios';
|
||||
import groth16ExportSolidityCallData from './utils/snarkjs';
|
||||
import contractAddresses from "./deployments/addresses.json"
|
||||
@@ -40,19 +35,10 @@ import forge from 'node-forge';
|
||||
import { Buffer } from 'buffer';
|
||||
import { YStack } from 'tamagui';
|
||||
global.Buffer = Buffer;
|
||||
import pubkeys from '../common/pubkeys/publicKeysParsed.json';
|
||||
|
||||
console.log('DEFAULT_PNUMBER', DEFAULT_PNUMBER);
|
||||
|
||||
const attributeToPosition = {
|
||||
issuing_state: [2, 5],
|
||||
name: [5, 44],
|
||||
passport_number: [44, 52],
|
||||
nationality: [54, 57],
|
||||
date_of_birth: [57, 63],
|
||||
gender: [64, 65],
|
||||
expiry_date: [65, 71],
|
||||
}
|
||||
|
||||
function App(): JSX.Element {
|
||||
const [passportNumber, setPassportNumber] = useState(DEFAULT_PNUMBER ?? "");
|
||||
const [dateOfBirth, setDateOfBirth] = useState(DEFAULT_DOB ?? '');
|
||||
@@ -148,7 +134,6 @@ function App(): JSX.Element {
|
||||
|
||||
const cert = forge.pki.certificateFromPem(pem);
|
||||
const publicKey = cert.publicKey;
|
||||
console.log('publicKey', publicKey)
|
||||
|
||||
const modulus = (publicKey as any).n.toString(10);
|
||||
|
||||
@@ -175,9 +160,9 @@ function App(): JSX.Element {
|
||||
console.log('mrz', passportData.mrz);
|
||||
console.log('signatureAlgorithm', passportData.signatureAlgorithm);
|
||||
console.log('pubKey', passportData.pubKey);
|
||||
console.log('dataGroupHashes', passportData.dataGroupHashes);
|
||||
console.log('eContent', passportData.eContent);
|
||||
console.log('encryptedDigest', passportData.encryptedDigest);
|
||||
console.log('dataGroupHashes', [...passportData.dataGroupHashes.slice(0, 10), '...']);
|
||||
console.log('eContent', [...passportData.eContent.slice(0, 10), '...']);
|
||||
console.log('encryptedDigest', [...passportData.encryptedDigest.slice(0, 10), '...']);
|
||||
console.log("photoBase64", passportData.photoBase64.substring(0, 100) + '...')
|
||||
|
||||
setPassportData(passportData);
|
||||
@@ -204,7 +189,7 @@ function App(): JSX.Element {
|
||||
|
||||
const passportData: PassportData = {
|
||||
mrz: mrz.replace(/\n/g, ''),
|
||||
signatureAlgorithm: signatureAlgorithm,
|
||||
signatureAlgorithm: jmrtdToStandardName(signatureAlgorithm),
|
||||
pubKey: {
|
||||
modulus: modulus,
|
||||
curveName: curveName,
|
||||
@@ -293,69 +278,38 @@ function App(): JSX.Element {
|
||||
}
|
||||
|
||||
const handleProve = async (path: string) => {
|
||||
setStep(Steps.GENERATING_PROOF);
|
||||
if (passportData === null) {
|
||||
console.log('passport data is null');
|
||||
return;
|
||||
}
|
||||
|
||||
setStep(Steps.GENERATING_PROOF);
|
||||
setGeneratingProof(true)
|
||||
await new Promise(resolve => setTimeout(resolve, 10));
|
||||
|
||||
// 1. TODO check signature to make sure the proof will work
|
||||
// TODO check circuit to make sure the proof will work
|
||||
|
||||
// 2. Format all the data as inputs for the circuit
|
||||
const formattedMrz = formatMrz(passportData.mrz);
|
||||
const reveal_bitmap = revealBitmapFromMapping(disclosure);
|
||||
|
||||
const reveal_bitmap = Array.from({ length: 88 }, (_) => '0');
|
||||
|
||||
for (const attribute in disclosure) {
|
||||
if (disclosure[attribute as keyof typeof disclosure]) {
|
||||
const [start, end] = attributeToPosition[attribute as keyof typeof attributeToPosition];
|
||||
for (let i = start; i <= end; i++) {
|
||||
reveal_bitmap[i] = '1';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if (!["SHA256withRSA", "sha256WithRSAEncryption"].includes(passportData.signatureAlgorithm)) {
|
||||
// if (!["sha256WithRSAEncryption"].includes(passportData.signatureAlgorithm)) {
|
||||
// console.log(`${passportData.signatureAlgorithm} not supported for proof right now.`);
|
||||
// setError(`${passportData.signatureAlgorithm} not supported for proof right now.`);
|
||||
// return;
|
||||
// }
|
||||
|
||||
console.log('passportData.dataGroupHashes', passportData.dataGroupHashes);
|
||||
|
||||
const dataGroupHashesUint8Array = new Uint8Array(passportData.dataGroupHashes);
|
||||
|
||||
console.log('dataGroupHashesUint8Array', dataGroupHashesUint8Array);
|
||||
|
||||
const [messagePadded, messagePaddedLen] = sha256Pad(
|
||||
dataGroupHashesUint8Array,
|
||||
MAX_DATAHASHES_LEN
|
||||
const inputs = generateCircuitInputs(
|
||||
passportData,
|
||||
pubkeys as string[],
|
||||
reveal_bitmap,
|
||||
address
|
||||
);
|
||||
console.log('messagePadded', messagePadded);
|
||||
|
||||
const inputs = {
|
||||
mrz: Array.from(formattedMrz).map(byte => String(byte)),
|
||||
reveal_bitmap: reveal_bitmap.map(byte => String(byte)),
|
||||
dataHashes: Array.from(messagePadded).map((x) => (x as number).toString()),
|
||||
datahashes_padded_length: messagePaddedLen.toString(),
|
||||
eContentBytes: Array.from(passportData.eContent.map(toUnsignedByte)).map(byte => String(byte)),
|
||||
signature: splitToWords(
|
||||
BigInt(bytesToBigDecimal(passportData.encryptedDigest)),
|
||||
BigInt(64),
|
||||
BigInt(32)
|
||||
),
|
||||
pubkey: splitToWords(
|
||||
BigInt(passportData.pubKey.modulus as string),
|
||||
BigInt(64),
|
||||
BigInt(32)
|
||||
),
|
||||
address,
|
||||
}
|
||||
|
||||
console.log('inputs', inputs)
|
||||
Object.keys(inputs).forEach((key) => {
|
||||
if (Array.isArray(inputs[key as keyof typeof inputs])) {
|
||||
console.log(key, inputs[key as keyof typeof inputs].slice(0, 10), '...');
|
||||
} else {
|
||||
console.log(key, inputs[key as keyof typeof inputs]);
|
||||
}
|
||||
});
|
||||
|
||||
const start = Date.now();
|
||||
if (Platform.OS === 'android') {
|
||||
@@ -410,7 +364,9 @@ function App(): JSX.Element {
|
||||
const response = await NativeModules.Prover.runProveAction({
|
||||
...inputs,
|
||||
datahashes_padded_length: [inputs.datahashes_padded_length.toString()], // wrap everything in arrays for bindings
|
||||
address: [BigInt(address).toString()]
|
||||
signatureAlgorithm: [inputs.signatureAlgorithm],
|
||||
root: [inputs.root],
|
||||
address: [BigInt(address).toString()],
|
||||
})
|
||||
console.log('proof response:', response)
|
||||
const parsedResponse = JSON.parse(response)
|
||||
|
||||
@@ -639,7 +639,11 @@ class RNPassportReaderModule(private val reactContext: ReactApplicationContext)
|
||||
datahashes_padded_length: String,
|
||||
eContentBytes: List<String>,
|
||||
signature: List<String>,
|
||||
signature_algorithm: String,
|
||||
pubkey: List<String>,
|
||||
path_indices: List<String>,
|
||||
siblings: List<String>,
|
||||
root: String,
|
||||
address: String,
|
||||
zkeypath: String
|
||||
): String
|
||||
@@ -654,7 +658,11 @@ class RNPassportReaderModule(private val reactContext: ReactApplicationContext)
|
||||
val datahashes_padded_length = inputs.getString("datahashes_padded_length") ?: ""
|
||||
val e_content_bytes = inputs.getArray("eContentBytes")?.toArrayList()?.map { it as String } ?: listOf()
|
||||
val signature = inputs.getArray("signature")?.toArrayList()?.map { it as String } ?: listOf()
|
||||
val signature_algorithm = inputs.getString("signatureAlgorithm") ?: ""
|
||||
val pubkey = inputs.getArray("pubkey")?.toArrayList()?.map { it as String } ?: listOf()
|
||||
val path_indices = inputs.getArray("pathIndices")?.toArrayList()?.map { it as String } ?: listOf()
|
||||
val siblings = inputs.getArray("siblings")?.toArrayList()?.map { it as String } ?: listOf()
|
||||
val root = inputs.getString("root") ?: ""
|
||||
val address = inputs.getString("address") ?: ""
|
||||
|
||||
val resultFromProof = provePassport(
|
||||
@@ -664,7 +672,11 @@ class RNPassportReaderModule(private val reactContext: ReactApplicationContext)
|
||||
datahashes_padded_length,
|
||||
e_content_bytes,
|
||||
signature,
|
||||
signature_algorithm,
|
||||
pubkey,
|
||||
path_indices,
|
||||
siblings,
|
||||
root,
|
||||
address,
|
||||
zkeypath
|
||||
)
|
||||
|
||||
@@ -104,7 +104,11 @@ pub extern "C" fn Java_io_tradle_nfc_RNPassportReaderModule_provePassport(
|
||||
datahashes_padded_length: JString,
|
||||
e_content_bytes: JObject,
|
||||
signature: JObject,
|
||||
signature_algorithm: JString,
|
||||
pubkey: JObject,
|
||||
path_indices: JObject,
|
||||
siblings: JObject,
|
||||
root: JString,
|
||||
address: JString,
|
||||
zkeypath: JString,
|
||||
) -> jstring {
|
||||
@@ -117,7 +121,11 @@ pub extern "C" fn Java_io_tradle_nfc_RNPassportReaderModule_provePassport(
|
||||
datahashes_padded_length: JString,
|
||||
e_content_bytes: JObject,
|
||||
signature: JObject,
|
||||
signature_algorithm: JString,
|
||||
pubkey: JObject,
|
||||
path_indices: JObject,
|
||||
siblings: JObject,
|
||||
root: JString,
|
||||
address: JString,
|
||||
zkeypath: JString,
|
||||
env: JNIEnv
|
||||
@@ -137,6 +145,11 @@ pub extern "C" fn Java_io_tradle_nfc_RNPassportReaderModule_provePassport(
|
||||
let e_content_bytes_vec: Vec<String> = java_arraylist_to_rust_vec(&env, e_content_bytes)?;
|
||||
let signature_vec: Vec<String> = java_arraylist_to_rust_vec(&env, signature)?;
|
||||
let pubkey_vec: Vec<String> = java_arraylist_to_rust_vec(&env, pubkey)?;
|
||||
let path_indices_vec: Vec<String> = java_arraylist_to_rust_vec(&env, path_indices)?;
|
||||
let siblings_vec: Vec<String> = java_arraylist_to_rust_vec(&env, siblings)?;
|
||||
|
||||
let signature_algorithm_str: String = env.get_string(signature_algorithm)?.into();
|
||||
let root_str: String = env.get_string(root)?.into();
|
||||
let address_str: String = env.get_string(address)?.into();
|
||||
let datahashes_padded_length_str: String = env.get_string(datahashes_padded_length)?.into();
|
||||
|
||||
@@ -145,7 +158,11 @@ pub extern "C" fn Java_io_tradle_nfc_RNPassportReaderModule_provePassport(
|
||||
log::error!("PROOF OF PASSPORT ---- data_hashes_vec {:?}", data_hashes_vec);
|
||||
log::error!("PROOF OF PASSPORT ---- e_content_bytes_vec {:?}", e_content_bytes_vec);
|
||||
log::error!("PROOF OF PASSPORT ---- signature_vec {:?}", signature_vec);
|
||||
log::error!("PROOF OF PASSPORT ---- signature_algorithm_str {:?}", signature_algorithm_str);
|
||||
log::error!("PROOF OF PASSPORT ---- pubkey_vec {:?}", pubkey_vec);
|
||||
log::error!("PROOF OF PASSPORT ---- path_indices_vec {:?}", path_indices_vec);
|
||||
log::error!("PROOF OF PASSPORT ---- siblings_vec {:?}", siblings_vec);
|
||||
log::error!("PROOF OF PASSPORT ---- root_str {:?}", root_str);
|
||||
log::error!("PROOF OF PASSPORT ---- address_str {:?}", address_str);
|
||||
log::error!("PROOF OF PASSPORT ---- datahashes_padded_length_str {:?}", datahashes_padded_length_str);
|
||||
|
||||
@@ -162,13 +179,22 @@ pub extern "C" fn Java_io_tradle_nfc_RNPassportReaderModule_provePassport(
|
||||
parse_and_insert(&mut inputs, "eContentBytes", e_content_bytes_vec.iter().map(AsRef::as_ref).collect());
|
||||
parse_and_insert(&mut inputs, "signature", signature_vec.iter().map(AsRef::as_ref).collect());
|
||||
parse_and_insert(&mut inputs, "pubkey", pubkey_vec.iter().map(AsRef::as_ref).collect());
|
||||
parse_and_insert(&mut inputs, "pathIndices", path_indices_vec.iter().map(AsRef::as_ref).collect());
|
||||
parse_and_insert(&mut inputs, "siblings", siblings_vec.iter().map(AsRef::as_ref).collect());
|
||||
|
||||
let address_bigint = BigInt::from_bytes_be(Sign::Plus, &decode(&address_str[2..])?);
|
||||
inputs.insert("address".to_string(), vec![address_bigint]);
|
||||
|
||||
let datahashes_padded_length_i32 = datahashes_padded_length_str.parse::<i32>().expect("Failed to parse datahashes_padded_length to i32");
|
||||
let datahashes_padded_length_bigint = BigInt::from(datahashes_padded_length_i32);
|
||||
inputs.insert("datahashes_padded_length".to_string(), vec![datahashes_padded_length_bigint]);
|
||||
|
||||
let signature_algorithm_i32 = signature_algorithm_str.parse::<i32>().expect("Failed to parse signature_algorithm_str to i32");
|
||||
let signature_algorithm_bigint = BigInt::from(signature_algorithm_i32);
|
||||
inputs.insert("signature_algorithm".to_string(), vec![signature_algorithm_bigint]);
|
||||
let root_bigint = BigInt::parse_bytes(root_str.as_bytes(), 10).unwrap();
|
||||
inputs.insert("root".to_string(), vec![root_bigint]);
|
||||
|
||||
println!("generating witness...");
|
||||
let now = Instant::now();
|
||||
let full_assignment = witness_calculator()
|
||||
@@ -269,7 +295,11 @@ pub extern "C" fn Java_io_tradle_nfc_RNPassportReaderModule_provePassport(
|
||||
datahashes_padded_length,
|
||||
e_content_bytes,
|
||||
signature,
|
||||
signature_algorithm,
|
||||
pubkey,
|
||||
path_indices,
|
||||
siblings,
|
||||
root,
|
||||
address,
|
||||
zkeypath,
|
||||
env
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"ProofOfPassport":"0x7AB5B112b09816617048482230C6Ea9629AF2349","Groth16Verifier":"0x764f40848eBD343da6595b0624c9480cfBA0668e"}
|
||||
{"ProofOfPassport":"0x24c919Dc3E5BA89c0898778D71435D566B05B4c5","Groth16Verifier":"0x6b3c6CF3e7bf2663E5EA30F2566433261fe64554"}
|
||||
@@ -555,13 +555,13 @@ SPEC CHECKSUMS:
|
||||
React-Core: 8293312ad137ea82fd2c29deb163dbc24aa4e00e
|
||||
React-CoreModules: 32fab1d62416849a3b6dac6feff9d54e5ddc2d1e
|
||||
React-cxxreact: 55d0f7cb6b4cc09ba9190797f1da87182d1a2fb6
|
||||
React-debug: 878f0c4026b30a6240f7a15f8612efcf5d8c3df9
|
||||
React-debug: 7e61555c8158126c6cd98c3154381ad3821aaaca
|
||||
React-jsc: 0db8e8cc2074d979c37ffa7b8d7c914833960497
|
||||
React-jsi: 58677ff4848ceb6aeb9118fe03448a843ea5e16a
|
||||
React-jsiexecutor: 2c15ba1bace70177492368d5180b564f165870fd
|
||||
React-jsinspector: b511447170f561157547bc0bef3f169663860be7
|
||||
React-logger: c5b527272d5f22eaa09bb3c3a690fee8f237ae95
|
||||
React-NativeModulesApple: 3a49a4bc38b979b804525816b781eb6612dba5fa
|
||||
React-NativeModulesApple: 0438665fc7473be6edc496e823e6ea0b0537b46c
|
||||
React-perflogger: 6bd153e776e6beed54c56b0847e1220a3ff92ba5
|
||||
React-RCTActionSheet: c0b62af44e610e69d9a2049a682f5dba4e9dff17
|
||||
React-RCTAnimation: fe7005136b58f58871cab2f70732343b6e330d30
|
||||
@@ -575,13 +575,13 @@ SPEC CHECKSUMS:
|
||||
React-RCTVibration: ea3a68a49873a54ced927c90923fc6932baf344a
|
||||
React-rncore: 9672a017af4a7da7495d911f0b690cbcae9dd18d
|
||||
React-runtimeexecutor: 369ae9bb3f83b65201c0c8f7d50b72280b5a1dbc
|
||||
React-runtimescheduler: 116fb55732ddfd96298350528cf13ceaf94759c8
|
||||
React-utils: a8681f0d721ff080373ae9e4afb1f380707b55f9
|
||||
ReactCommon: df6a7f5665621529ee01b89fb0c3c93eb014f276
|
||||
React-runtimescheduler: ec1066a4f2d1152eb1bc3fb61d69376b3bc0dde0
|
||||
React-utils: d55ba834beb39f01b0b470ae43478c0a3a024abe
|
||||
ReactCommon: 68e3a815fbb69af3bb4196e04c6ae7abb306e7a8
|
||||
RNSVG: 07dbd870b0dcdecc99b3a202fa37c8ca163caec2
|
||||
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
|
||||
Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce
|
||||
|
||||
PODFILE CHECKSUM: 7568291077da8ee6387464cd1a7e01559a46ab1f
|
||||
|
||||
COCOAPODS: 1.15.0
|
||||
COCOAPODS: 1.14.3
|
||||
|
||||
@@ -22,6 +22,31 @@
|
||||
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 */; };
|
||||
2FA7C90AFAF5417DAA7BCB1E /* Inter-Black.otf in Resources */ = {isa = PBXBuildFile; fileRef = 066DD67BD55B4E90941F2B97 /* Inter-Black.otf */; };
|
||||
C9B733B168F84BBA818C6CB8 /* Inter-BlackItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 0C76A5D3C00C4D19B7624F46 /* Inter-BlackItalic.otf */; };
|
||||
15AAF7651FCF40EB993543A3 /* Inter-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 6F5E37006DF4462994FA8164 /* Inter-BoldItalic.otf */; };
|
||||
1D2A11340C7041909B820A90 /* Inter-ExtraBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = D20EA8C94F544E14AB58E6EB /* Inter-ExtraBold.otf */; };
|
||||
E4BC7CC193684992A11E3135 /* Inter-ExtraBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5686BD657D224A089EAFB825 /* Inter-ExtraBoldItalic.otf */; };
|
||||
1BA25F26C91C45F697D55099 /* Inter-ExtraLight.otf in Resources */ = {isa = PBXBuildFile; fileRef = 568162F4DC4B4CDC8B341853 /* Inter-ExtraLight.otf */; };
|
||||
625D35EA2F1643E89F9887CE /* Inter-ExtraLightItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 67F811D831354006A0A6FE2A /* Inter-ExtraLightItalic.otf */; };
|
||||
EEC491DF41A44001A577E8C5 /* Inter-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8716F728A49C438396CB79D3 /* Inter-Italic.otf */; };
|
||||
0A6918EB0654476189741475 /* Inter-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 780F6F2600AE4EC1B21B6F44 /* Inter-Light.otf */; };
|
||||
9713779CBED04A308A0B2DF2 /* Inter-LightItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 38DEC0D33CBA43429A48B8E3 /* Inter-LightItalic.otf */; };
|
||||
B9E3D3D20C9F4863A67B66D3 /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 53AEBBB143534D68B7792C46 /* Inter-Medium.otf */; };
|
||||
8362BCF2197E445C9CAFFD53 /* Inter-MediumItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 60F5BB028A4E49588D71E6CE /* Inter-MediumItalic.otf */; };
|
||||
2CD45EA0A0A94063935CE7D3 /* Inter-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = DF4EC58B331A46F098343757 /* Inter-Regular.otf */; };
|
||||
6FA6BA98BE3F485982F5E962 /* Inter-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 666078AFC2DC4894ABC19DA5 /* Inter-SemiBold.otf */; };
|
||||
B7C1F08B40CC4C1985152F72 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = C03CCA67A92F47D59CDA16E5 /* Inter-SemiBoldItalic.otf */; };
|
||||
F78FB2FC94E1443A8EE8EEC3 /* Inter-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = B68457923C3F444388AB85F2 /* Inter-Thin.otf */; };
|
||||
37AF1D1302824FFC83B6D1D2 /* Inter-ThinItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1CA9D245CD5A439D88F01D4F /* Inter-ThinItalic.otf */; };
|
||||
CC99B59A281C4B6497C14141 /* Luciole-Bold-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F59F295E9CC54539B2C48953 /* Luciole-Bold-Italic.ttf */; };
|
||||
05E2174E2E7E48EB80B9C8D8 /* Luciole-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ABB740B68A8141229E6118AC /* Luciole-Bold.ttf */; };
|
||||
6959CC40713D4D42AA56850D /* Luciole-Regular-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8720D4D8B8BC41B79088D43C /* Luciole-Regular-Italic.ttf */; };
|
||||
E4E0715B819049EFACAF2AEE /* Luciole-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 714371FB26B944FFBE7F0B29 /* Luciole-Regular.ttf */; };
|
||||
98D6CE33FC02453794D8DB08 /* slkscr.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 110D16BAD3FA4513BEA89A3A /* slkscr.ttf */; };
|
||||
FA58D9C915314CF086BD7FFB /* slkscrb.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0AD24C885D29461481982641 /* slkscrb.ttf */; };
|
||||
749862C5A266413FBE508618 /* slkscr.woff in Resources */ = {isa = PBXBuildFile; fileRef = 98413C61772F41BD96F279F5 /* slkscr.woff */; };
|
||||
5A0E2800F0C34012B292255B /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 449D98322BFA406CBB9E2648 /* Inter-Bold.otf */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -63,6 +88,31 @@
|
||||
CE0B085EC65BAFEB61DD9C49 /* Pods-ProofOfPassport.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProofOfPassport.debug.xcconfig"; path = "Target Support Files/Pods-ProofOfPassport/Pods-ProofOfPassport.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
CFAE0EE7E1942128592D0CC4 /* Pods_ProofOfPassport_ProofOfPassportTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ProofOfPassport_ProofOfPassportTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
066DD67BD55B4E90941F2B97 /* Inter-Black.otf */ = {isa = PBXFileReference; name = "Inter-Black.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Black.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
0C76A5D3C00C4D19B7624F46 /* Inter-BlackItalic.otf */ = {isa = PBXFileReference; name = "Inter-BlackItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-BlackItalic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
6F5E37006DF4462994FA8164 /* Inter-BoldItalic.otf */ = {isa = PBXFileReference; name = "Inter-BoldItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-BoldItalic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
D20EA8C94F544E14AB58E6EB /* Inter-ExtraBold.otf */ = {isa = PBXFileReference; name = "Inter-ExtraBold.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraBold.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
5686BD657D224A089EAFB825 /* Inter-ExtraBoldItalic.otf */ = {isa = PBXFileReference; name = "Inter-ExtraBoldItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraBoldItalic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
568162F4DC4B4CDC8B341853 /* Inter-ExtraLight.otf */ = {isa = PBXFileReference; name = "Inter-ExtraLight.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraLight.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
67F811D831354006A0A6FE2A /* Inter-ExtraLightItalic.otf */ = {isa = PBXFileReference; name = "Inter-ExtraLightItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraLightItalic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
8716F728A49C438396CB79D3 /* Inter-Italic.otf */ = {isa = PBXFileReference; name = "Inter-Italic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Italic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
780F6F2600AE4EC1B21B6F44 /* Inter-Light.otf */ = {isa = PBXFileReference; name = "Inter-Light.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Light.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
38DEC0D33CBA43429A48B8E3 /* Inter-LightItalic.otf */ = {isa = PBXFileReference; name = "Inter-LightItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-LightItalic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
53AEBBB143534D68B7792C46 /* Inter-Medium.otf */ = {isa = PBXFileReference; name = "Inter-Medium.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Medium.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
60F5BB028A4E49588D71E6CE /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; name = "Inter-MediumItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-MediumItalic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
DF4EC58B331A46F098343757 /* Inter-Regular.otf */ = {isa = PBXFileReference; name = "Inter-Regular.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Regular.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
666078AFC2DC4894ABC19DA5 /* Inter-SemiBold.otf */ = {isa = PBXFileReference; name = "Inter-SemiBold.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-SemiBold.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
C03CCA67A92F47D59CDA16E5 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; name = "Inter-SemiBoldItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
B68457923C3F444388AB85F2 /* Inter-Thin.otf */ = {isa = PBXFileReference; name = "Inter-Thin.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Thin.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
1CA9D245CD5A439D88F01D4F /* Inter-ThinItalic.otf */ = {isa = PBXFileReference; name = "Inter-ThinItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ThinItalic.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
F59F295E9CC54539B2C48953 /* Luciole-Bold-Italic.ttf */ = {isa = PBXFileReference; name = "Luciole-Bold-Italic.ttf"; path = "../assets/fonts/Luciole-Bold-Italic.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
ABB740B68A8141229E6118AC /* Luciole-Bold.ttf */ = {isa = PBXFileReference; name = "Luciole-Bold.ttf"; path = "../assets/fonts/Luciole-Bold.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
8720D4D8B8BC41B79088D43C /* Luciole-Regular-Italic.ttf */ = {isa = PBXFileReference; name = "Luciole-Regular-Italic.ttf"; path = "../assets/fonts/Luciole-Regular-Italic.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
714371FB26B944FFBE7F0B29 /* Luciole-Regular.ttf */ = {isa = PBXFileReference; name = "Luciole-Regular.ttf"; path = "../assets/fonts/Luciole-Regular.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
110D16BAD3FA4513BEA89A3A /* slkscr.ttf */ = {isa = PBXFileReference; name = "slkscr.ttf"; path = "../node_modules/@tamagui/font-silkscreen/files/slkscr.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
0AD24C885D29461481982641 /* slkscrb.ttf */ = {isa = PBXFileReference; name = "slkscrb.ttf"; path = "../node_modules/@tamagui/font-silkscreen/files/slkscrb.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
98413C61772F41BD96F279F5 /* slkscr.woff */ = {isa = PBXFileReference; name = "slkscr.woff"; path = "../node_modules/@tamagui/font-silkscreen/files/slkscr.woff"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
449D98322BFA406CBB9E2648 /* Inter-Bold.otf */ = {isa = PBXFileReference; name = "Inter-Bold.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Bold.otf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -154,6 +204,7 @@
|
||||
83CBBA001A601CBA00E9B192 /* Products */,
|
||||
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
||||
BBD78D7AC51CEA395F1C20DB /* Pods */,
|
||||
48CFD94B265341A283033375 /* Resources */,
|
||||
);
|
||||
indentWidth = 2;
|
||||
sourceTree = "<group>";
|
||||
@@ -180,6 +231,39 @@
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
48CFD94B265341A283033375 /* Resources */ = {
|
||||
isa = "PBXGroup";
|
||||
children = (
|
||||
066DD67BD55B4E90941F2B97 /* Inter-Black.otf */,
|
||||
0C76A5D3C00C4D19B7624F46 /* Inter-BlackItalic.otf */,
|
||||
6F5E37006DF4462994FA8164 /* Inter-BoldItalic.otf */,
|
||||
D20EA8C94F544E14AB58E6EB /* Inter-ExtraBold.otf */,
|
||||
5686BD657D224A089EAFB825 /* Inter-ExtraBoldItalic.otf */,
|
||||
568162F4DC4B4CDC8B341853 /* Inter-ExtraLight.otf */,
|
||||
67F811D831354006A0A6FE2A /* Inter-ExtraLightItalic.otf */,
|
||||
8716F728A49C438396CB79D3 /* Inter-Italic.otf */,
|
||||
780F6F2600AE4EC1B21B6F44 /* Inter-Light.otf */,
|
||||
38DEC0D33CBA43429A48B8E3 /* Inter-LightItalic.otf */,
|
||||
53AEBBB143534D68B7792C46 /* Inter-Medium.otf */,
|
||||
60F5BB028A4E49588D71E6CE /* Inter-MediumItalic.otf */,
|
||||
DF4EC58B331A46F098343757 /* Inter-Regular.otf */,
|
||||
666078AFC2DC4894ABC19DA5 /* Inter-SemiBold.otf */,
|
||||
C03CCA67A92F47D59CDA16E5 /* Inter-SemiBoldItalic.otf */,
|
||||
B68457923C3F444388AB85F2 /* Inter-Thin.otf */,
|
||||
1CA9D245CD5A439D88F01D4F /* Inter-ThinItalic.otf */,
|
||||
F59F295E9CC54539B2C48953 /* Luciole-Bold-Italic.ttf */,
|
||||
ABB740B68A8141229E6118AC /* Luciole-Bold.ttf */,
|
||||
8720D4D8B8BC41B79088D43C /* Luciole-Regular-Italic.ttf */,
|
||||
714371FB26B944FFBE7F0B29 /* Luciole-Regular.ttf */,
|
||||
110D16BAD3FA4513BEA89A3A /* slkscr.ttf */,
|
||||
0AD24C885D29461481982641 /* slkscrb.ttf */,
|
||||
98413C61772F41BD96F279F5 /* slkscr.woff */,
|
||||
449D98322BFA406CBB9E2648 /* Inter-Bold.otf */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
path = "";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@@ -276,6 +360,31 @@
|
||||
05BD9DCC2B548AA900823023 /* MoproKit in Resources */,
|
||||
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
||||
2FA7C90AFAF5417DAA7BCB1E /* Inter-Black.otf in Resources */,
|
||||
C9B733B168F84BBA818C6CB8 /* Inter-BlackItalic.otf in Resources */,
|
||||
15AAF7651FCF40EB993543A3 /* Inter-BoldItalic.otf in Resources */,
|
||||
1D2A11340C7041909B820A90 /* Inter-ExtraBold.otf in Resources */,
|
||||
E4BC7CC193684992A11E3135 /* Inter-ExtraBoldItalic.otf in Resources */,
|
||||
1BA25F26C91C45F697D55099 /* Inter-ExtraLight.otf in Resources */,
|
||||
625D35EA2F1643E89F9887CE /* Inter-ExtraLightItalic.otf in Resources */,
|
||||
EEC491DF41A44001A577E8C5 /* Inter-Italic.otf in Resources */,
|
||||
0A6918EB0654476189741475 /* Inter-Light.otf in Resources */,
|
||||
9713779CBED04A308A0B2DF2 /* Inter-LightItalic.otf in Resources */,
|
||||
B9E3D3D20C9F4863A67B66D3 /* Inter-Medium.otf in Resources */,
|
||||
8362BCF2197E445C9CAFFD53 /* Inter-MediumItalic.otf in Resources */,
|
||||
2CD45EA0A0A94063935CE7D3 /* Inter-Regular.otf in Resources */,
|
||||
6FA6BA98BE3F485982F5E962 /* Inter-SemiBold.otf in Resources */,
|
||||
B7C1F08B40CC4C1985152F72 /* Inter-SemiBoldItalic.otf in Resources */,
|
||||
F78FB2FC94E1443A8EE8EEC3 /* Inter-Thin.otf in Resources */,
|
||||
37AF1D1302824FFC83B6D1D2 /* Inter-ThinItalic.otf in Resources */,
|
||||
CC99B59A281C4B6497C14141 /* Luciole-Bold-Italic.ttf in Resources */,
|
||||
05E2174E2E7E48EB80B9C8D8 /* Luciole-Bold.ttf in Resources */,
|
||||
6959CC40713D4D42AA56850D /* Luciole-Regular-Italic.ttf in Resources */,
|
||||
E4E0715B819049EFACAF2AEE /* Luciole-Regular.ttf in Resources */,
|
||||
98D6CE33FC02453794D8DB08 /* slkscr.ttf in Resources */,
|
||||
FA58D9C915314CF086BD7FFB /* slkscrb.ttf in Resources */,
|
||||
749862C5A266413FBE508618 /* slkscr.woff in Resources */,
|
||||
5A0E2800F0C34012B292255B /* Inter-Bold.otf in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string></string>
|
||||
<string/>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NFCReaderUsageDescription</key>
|
||||
@@ -31,7 +31,7 @@
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict/>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string></string>
|
||||
<string/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
@@ -52,5 +52,32 @@
|
||||
<string>A0000002472001</string>
|
||||
<string>00000000000000</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>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -5,6 +5,5 @@ if [ -f "proof_of_passport_final.zkey" ]; then
|
||||
rm "proof_of_passport_final.zkey"
|
||||
fi
|
||||
echo "downloading proof_of_passport_final.zkey to /circuits/build/"
|
||||
wget https://current-pop-zkey.s3.eu-north-1.amazonaws.com/proof_of_passport_final_dynamic_dg_support.arkzkey # ios
|
||||
mv proof_of_passport_final_dynamic_dg_support.arkzkey proof_of_passport_final.zkey
|
||||
cd ../../app
|
||||
wget https://current-pop-zkey.s3.eu-north-1.amazonaws.com/proof_of_passport_final_merkle_proof.arkzkey # ios
|
||||
mv proof_of_passport_final_merkle_proof.arkzkey proof_of_passport_final.zkey
|
||||
@@ -60,7 +60,7 @@ const ProveScreen: React.FC<ProveScreenProps> = ({
|
||||
try {
|
||||
console.log('Downloading file...')
|
||||
const result = await NativeModules.RNPassportReader.downloadFile(
|
||||
'https://current-pop-zkey.s3.eu-north-1.amazonaws.com/proof_of_passport_final_dynamic_dg_support.arkzkey',
|
||||
'https://current-pop-zkey.s3.eu-north-1.amazonaws.com/proof_of_passport_final_merkle_proof.arkzkey',
|
||||
fileName
|
||||
);
|
||||
console.log("Download successful");
|
||||
|
||||
Reference in New Issue
Block a user