add common sdk (#537)

* add common sdk

* remove sdk backend api

* remove registry

* regenerate sha256 rsa dsc each time

* download ski-pem dynamically on staging, refactor initpassportDataParsing

* add state machine for button on prove screen, improve ux on splash screen

* fetch ski-pem in production

* fix linter issues

* fix prove screen button bugs

* update podfile.lock and yarn.lock

* run linter in circuits repo

* bump build

* bump version for sentry debugging

* bump ios to version 118

---------

Co-authored-by: Justin Hernandez <transphorm@gmail.com>
This commit is contained in:
turnoffthiscomputer
2025-05-07 05:45:21 -04:00
committed by GitHub
parent 5163761a52
commit cc169061bd
213 changed files with 5413 additions and 144545 deletions

View File

@@ -1,25 +1,25 @@
import { describe } from 'mocha';
import { assert, expect } from 'chai';
import path from 'path';
import { wasm as wasm_tester } from 'circom_tester';
import {
attributeToPosition,
PASSPORT_ATTESTATION_ID,
} from '../../../common/src/constants/constants';
import { poseidon1, poseidon2 } from 'poseidon-lite';
import { LeanIMT } from '@openpassport/zk-kit-lean-imt';
import { generateCircuitInputsVCandDisclose } from '../../../common/src/utils/circuits/generateInputs';
import crypto from 'crypto';
import { genMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { SMT } from '@openpassport/zk-kit-smt';
import { assert, expect } from 'chai';
import { wasm as wasm_tester } from 'circom_tester';
import crypto from 'crypto';
import { describe } from 'mocha';
import path from 'path';
import { poseidon1, poseidon2 } from 'poseidon-lite';
import nameAndDobjson from '../../../common/ofacdata/outputs/nameAndDobSMT.json';
import nameAndYobjson from '../../../common/ofacdata/outputs/nameAndYobSMT.json';
import passportNojson from '../../../common/ofacdata/outputs/passportNoAndNationalitySMT.json';
import {
formatAndUnpackReveal,
attributeToPosition,
PASSPORT_ATTESTATION_ID,
} from '../../../common/src/constants/constants';
import {
formatAndUnpackForbiddenCountriesList,
formatAndUnpackReveal,
getAttributeFromUnpackedReveal,
} from '../../../common/src/utils/circuits/formatOutputs';
import { generateCircuitInputsVCandDisclose } from '../../../common/src/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { generateCommitment } from '../../../common/src/utils/passports/passport';
import { hashEndpointWithScope } from '../../../common/src/utils/scope';
@@ -28,7 +28,7 @@ describe('Disclose', function () {
let inputs: any;
let circuit: any;
let w: any;
const passportData = genMockPassportData(
const passportData = genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',
@@ -247,7 +247,7 @@ describe('Disclose', function () {
const testCases = [
{
desc: 'No details match',
data: genMockPassportData(
data: genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',
@@ -262,7 +262,7 @@ describe('Disclose', function () {
},
{
desc: 'Only passport number matches',
data: genMockPassportData(
data: genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',
@@ -277,7 +277,7 @@ describe('Disclose', function () {
},
{
desc: 'Only nationality matches',
data: genMockPassportData(
data: genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',
@@ -292,7 +292,7 @@ describe('Disclose', function () {
},
{
desc: 'Only passport number and nationality matches',
data: genMockPassportData(
data: genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',
@@ -307,7 +307,7 @@ describe('Disclose', function () {
},
{
desc: 'Name and DOB matches (so YOB matches too)',
data: genMockPassportData(
data: genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',
@@ -322,7 +322,7 @@ describe('Disclose', function () {
},
{
desc: 'Only name and YOB match',
data: genMockPassportData(
data: genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',
@@ -337,7 +337,7 @@ describe('Disclose', function () {
},
{
desc: 'All details match',
data: genMockPassportData(
data: genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',

View File

@@ -1,23 +1,22 @@
import dotenv from 'dotenv';
import { assert, expect } from 'chai';
import path from 'path';
import { expect } from 'chai';
import { wasm as wasm_tester } from 'circom_tester';
import { generateCircuitInputsDSC } from '../../../common/src/utils/circuits/generateInputs';
import { fullSigAlgs, sigAlgs } from './test_cases';
import { genMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { getCircuitNameFromPassportData } from '../../../common/src/utils/circuits/circuitsName';
import { getLeafDscTreeFromParsedDsc } from '../../../common/src/utils/trees';
import { parseCertificateSimple } from '../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import { parseDscCertificateData } from '../../../common/src/utils/passports/passport_parsing/parseDscCertificateData';
import dotenv from 'dotenv';
import path from 'path';
import serialized_csca_tree from '../../../common/pubkeys/serialized_csca_tree.json';
import { parseCertificateSimple } from '../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import { getCircuitNameFromPassportData } from '../../../common/src/utils/circuits/circuitsName';
import { generateCircuitInputsDSC } from '../../../common/src/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { parseDscCertificateData } from '../../../common/src/utils/passports/passport_parsing/parseDscCertificateData';
import { getLeafDscTreeFromParsedDsc } from '../../../common/src/utils/trees';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { fullSigAlgs, sigAlgs } from './test_cases';
dotenv.config();
const testSuite = process.env.FULL_TEST_SUITE === 'true' ? fullSigAlgs : sigAlgs;
testSuite.forEach(({ sigAlg, hashFunction, domainParameter, keyLength }) => {
const passportData = genMockPassportData(
const passportData = genAndInitMockPassportData(
hashFunction,
hashFunction,
`${sigAlg}_${hashFunction}_${domainParameter}_${keyLength}` as SignatureAlgorithm,
@@ -33,7 +32,7 @@ testSuite.forEach(({ sigAlg, hashFunction, domainParameter, keyLength }) => {
this.timeout(0); // Disable timeout
let circuit;
const inputs = generateCircuitInputsDSC(passportData.dsc, serialized_csca_tree);
const inputs = generateCircuitInputsDSC(passportData, serialized_csca_tree);
before(async () => {
circuit = await wasm_tester(

View File

@@ -1,18 +1,18 @@
import { expect } from 'chai';
import path from 'path';
import { wasm as wasm_tester } from 'circom_tester';
import { generateCircuitInputsOfac } from '../../../common/src/utils/circuits/generateInputs';
import { SMT } from '@openpassport/zk-kit-smt';
import { expect } from 'chai';
import { wasm as wasm_tester } from 'circom_tester';
import path from 'path';
import { poseidon2 } from 'poseidon-lite';
import passportNoAndNationalityjson from '../../../common/ofacdata/outputs/passportNoAndNationalitySMT.json';
import nameAndDobjson from '../../../common/ofacdata/outputs/nameAndDobSMT.json';
import nameAndYobjson from '../../../common/ofacdata/outputs/nameAndYobSMT.json';
import { genMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import passportNoAndNationalityjson from '../../../common/ofacdata/outputs/passportNoAndNationalitySMT.json';
import { generateCircuitInputsOfac } from '../../../common/src/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
let circuit: any;
// Mock passport not added in ofac list
const passportData = genMockPassportData(
const passportData = genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',
@@ -21,7 +21,7 @@ const passportData = genMockPassportData(
'300101'
);
// Mock passport in ofac list
const passportDataInOfac = genMockPassportData(
const passportDataInOfac = genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',

View File

@@ -1,12 +1,11 @@
import { expect } from 'chai';
import { X509Certificate } from 'crypto';
import path from 'path';
import { wasm as wasm_tester } from 'circom_tester';
import { genMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { formatInput } from '../../../common/src/utils/circuits/generateInputs';
import { formatMrz } from '../../../common/src/utils/passports/format';
import path from 'path';
import { formatCountriesList } from '../../../common/src/utils/circuits/formatInputs';
import { formatAndUnpackForbiddenCountriesList } from '../../../common/src/utils/circuits/formatOutputs';
import { formatInput } from '../../../common/src/utils/circuits/generateInputs';
import { formatMrz } from '../../../common/src/utils/passports/format';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
describe('ProveCountryIsNotInList', function () {
this.timeout(0);
@@ -27,7 +26,7 @@ describe('ProveCountryIsNotInList', function () {
});
describe('ProveCountryIsNotInList', async () => {
const passportData = genMockPassportData(
const passportData = genAndInitMockPassportData(
'sha256',
'sha256',
'rsa_sha256_65537_2048',

View File

@@ -1,21 +1,21 @@
import { expect } from 'chai';
import { wasm as wasm_tester } from 'circom_tester';
import dotenv from 'dotenv';
import { describe } from 'mocha';
import { expect } from 'chai';
import path from 'path';
import { wasm as wasm_tester } from 'circom_tester';
import { generateCircuitInputsRegister } from '../../../common/src/utils/circuits/generateInputs';
import { genMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { poseidon6 } from 'poseidon-lite';
import serialized_dsc_tree from '../../../common/pubkeys/serialized_dsc_tree.json';
import { PASSPORT_ATTESTATION_ID } from '../../../common/src/constants/constants';
import { parseCertificateSimple } from '../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import { getCircuitNameFromPassportData } from '../../../common/src/utils/circuits/circuitsName';
import { sigAlgs, fullSigAlgs } from './test_cases';
import { generateCircuitInputsRegister } from '../../../common/src/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import {
generateCommitment,
generateNullifier,
} from '../../../common/src/utils/passports/passport';
import { poseidon6 } from 'poseidon-lite';
import { PASSPORT_ATTESTATION_ID } from '../../../common/src/constants/constants';
import { parseCertificateSimple } from '../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import serialized_dsc_tree from '../../../common/pubkeys/serialized_dsc_tree.json';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { fullSigAlgs, sigAlgs } from './test_cases';
dotenv.config();
const testSuite = process.env.FULL_TEST_SUITE === 'true' ? fullSigAlgs : sigAlgs;
@@ -36,7 +36,7 @@ testSuite.forEach(
this.timeout(0);
let circuit: any;
const passportData = genMockPassportData(
const passportData = genAndInitMockPassportData(
dgHashAlgo,
eContentHashAlgo,
`${sigAlg}_${hashFunction}_${domainParameter}_${keyLength}${saltLength ? `_${saltLength}` : ''}` as SignatureAlgorithm,