diff --git a/circuits/circuits/disclose/vc_and_disclose.circom b/circuits/circuits/disclose/vc_and_disclose.circom index 90a4a3163..6a42f7be0 100644 --- a/circuits/circuits/disclose/vc_and_disclose.circom +++ b/circuits/circuits/disclose/vc_and_disclose.circom @@ -26,7 +26,7 @@ template VC_AND_DISCLOSE( nLevels,FORBIDDEN_COUNTRIES_LIST_LENGTH) { signal input user_identifier; // ofac check - signal input smt_leaf_value; + signal input smt_leaf_key; signal input smt_root; signal input smt_siblings[256]; signal input selector_ofac; @@ -56,7 +56,7 @@ template VC_AND_DISCLOSE( nLevels,FORBIDDEN_COUNTRIES_LIST_LENGTH) { signal output forbidden_countries_list_packed_disclosed[2] <== ProveCountryIsNotInList(FORBIDDEN_COUNTRIES_LIST_LENGTH)(dg1, forbidden_countries_list); // OFAC - signal ofacCheckResult <== OFAC_NAME()(dg1,smt_leaf_value,smt_root,smt_siblings); + signal ofacCheckResult <== OFAC_NAME()(dg1,smt_leaf_key,smt_root,smt_siblings); signal ofacIntermediaryOutput <== ofacCheckResult * selector_ofac; signal output ofac_result <== ofacIntermediaryOutput; } diff --git a/circuits/circuits/prove/openpassport_prove.circom b/circuits/circuits/prove/openpassport_prove.circom index ea362a22b..ca091f7c8 100644 --- a/circuits/circuits/prove/openpassport_prove.circom +++ b/circuits/circuits/prove/openpassport_prove.circom @@ -30,7 +30,7 @@ template OPENPASSPORT_PROVE(DG_HASH_ALGO, ECONTENT_HASH_ALGO, signatureAlgorithm signal input selector_mode[2]; // ofac check - signal input smt_leaf_value; + signal input smt_leaf_key; signal input smt_root; signal input smt_siblings[256]; signal input selector_ofac; @@ -104,7 +104,7 @@ template OPENPASSPORT_PROVE(DG_HASH_ALGO, ECONTENT_HASH_ALGO, signatureAlgorithm } // OFAC - signal ofacCheckResult <== OFAC_NAME()(dg1,smt_leaf_value,smt_root,smt_siblings); + signal ofacCheckResult <== OFAC_NAME()(dg1,smt_leaf_key,smt_root,smt_siblings); signal ofacIntermediaryOutput <== ofacCheckResult * selector_ofac; signal output ofac_result <== ofacIntermediaryOutput; diff --git a/circuits/circuits/utils/circomlib/merkle-trees/smt.circom b/circuits/circuits/utils/circomlib/merkle-trees/smt.circom index 948dd3bb5..a54c7ae89 100644 --- a/circuits/circuits/utils/circomlib/merkle-trees/smt.circom +++ b/circuits/circuits/utils/circomlib/merkle-trees/smt.circom @@ -7,17 +7,17 @@ include "@zk-kit/binary-merkle-root.circom/src/binary-merkle-root.circom"; include "circomlib/circuits/poseidon.circom"; /// @title SMTVerify -/// @notice Verifies inclusion or non-inclusion of a value in a Sparse Merkle Tree +/// @notice Verifies inclusion or non-inclusion of a key in a Sparse Merkle Tree /// @param nLength Maximum depth of the tree -/// @input virtualValue The value to verify (user's input value) -/// @input value The value stored in the tree at the path +/// @input virtualKey The key to verify (user's input key) +/// @input key The key stored in the tree at the path /// @input root The root of the Sparse Merkle Tree /// @input siblings Array of sibling nodes /// @input mode Verification mode (0 for non-inclusion, 1 for inclusion) /// @output out 1 if verification succeeds, 0 otherwise template SMTVerify(nLength) { - signal input virtualValue; - signal input value; + signal input virtualKey; + signal input key; signal input root; signal input siblings[nLength]; signal input mode; @@ -25,7 +25,7 @@ template SMTVerify(nLength) { // Calculate path signal path[nLength]; - signal path_in_bits_reversed[nLength] <== Num2Bits(256)(virtualValue); + signal path_in_bits_reversed[nLength] <== Num2Bits(256)(virtualKey); var path_in_bits[nLength]; for (var i = 0; i < nLength; i++) { @@ -39,8 +39,8 @@ template SMTVerify(nLength) { path <== pathShifter.out; // Closest_key to leaf - signal leaf <== Poseidon(3)([value, 1, 1]); // compute the leaf from the value - signal isClosestZero <== IsEqual()([value,0]); // check if the inital value is 0, in that case the leaf will be 0 too, not Hash(0,1,1); + signal leaf <== Poseidon(3)([key, 1, 1]); // compute the leaf from the key + signal isClosestZero <== IsEqual()([key,0]); // check if the inital key is 0, in that case the leaf will be 0 too, not Hash(0,1,1); signal leafOrZero <== leaf * (1 - isClosestZero); // Verification @@ -48,7 +48,7 @@ template SMTVerify(nLength) { signal computedRootIsValid <== IsEqual()([computedRoot,root]); // check is leaf equals virtual leaf - signal virtualLeaf <== Poseidon(3)([virtualValue, 1,1]); + signal virtualLeaf <== Poseidon(3)([virtualKey, 1,1]); signal areLeafAndVirtualLeafEquals <== IsEqual()([virtualLeaf, leaf]); signal isInclusionOrNonInclusionValid <== IsEqual()([mode,areLeafAndVirtualLeafEquals]); diff --git a/circuits/circuits/utils/passport/ofac/ofac_name.circom b/circuits/circuits/utils/passport/ofac/ofac_name.circom index 75e7a5456..9096f0ce3 100644 --- a/circuits/circuits/utils/passport/ofac/ofac_name.circom +++ b/circuits/circuits/utils/passport/ofac/ofac_name.circom @@ -7,7 +7,7 @@ template OFAC_NAME() { signal input dg1[93]; - signal input smt_leaf_value; + signal input smt_leaf_key; signal input smt_root; signal input smt_siblings[256]; @@ -22,6 +22,6 @@ template OFAC_NAME() { signal name_hash <== Poseidon(3)([poseidon_hasher[0].out, poseidon_hasher[1].out, poseidon_hasher[2].out]); - signal output ofacCheckResult <== SMTVerify(256)(name_hash, smt_leaf_value, smt_root, smt_siblings, 0); + signal output ofacCheckResult <== SMTVerify(256)(name_hash, smt_leaf_key, smt_root, smt_siblings, 0); } diff --git a/circuits/circuits/utils/passport/ofac/ofac_name_dob.circom b/circuits/circuits/utils/passport/ofac/ofac_name_dob.circom index 1c9c3e362..027473e09 100644 --- a/circuits/circuits/utils/passport/ofac/ofac_name_dob.circom +++ b/circuits/circuits/utils/passport/ofac/ofac_name_dob.circom @@ -7,7 +7,7 @@ template OFAC_NAME_DOB() { signal input dg1[93]; - signal input smt_leaf_value; + signal input smt_leaf_key; signal input smt_root; signal input smt_siblings[256]; // Name Hash @@ -30,5 +30,5 @@ template OFAC_NAME_DOB() { // NameDob hash signal name_dob_hash <== Poseidon(2)([pos_dob.out, name_hash]); - signal output ofacCheckResult <== SMTVerify(256)(name_dob_hash, smt_leaf_value, smt_root, smt_siblings, 0); + signal output ofacCheckResult <== SMTVerify(256)(name_dob_hash, smt_leaf_key, smt_root, smt_siblings, 0); } \ No newline at end of file diff --git a/circuits/circuits/utils/passport/ofac/ofac_passport_number.circom b/circuits/circuits/utils/passport/ofac/ofac_passport_number.circom index 7b9700274..acee4c03b 100644 --- a/circuits/circuits/utils/passport/ofac/ofac_passport_number.circom +++ b/circuits/circuits/utils/passport/ofac/ofac_passport_number.circom @@ -6,7 +6,7 @@ template OFAC_PASSPORT_NUMBER() { signal input dg1[93]; - signal input smt_leaf_value; + signal input smt_leaf_key; signal input smt_root; signal input smt_siblings[256]; signal output proofLevel <== 3; @@ -15,5 +15,5 @@ template OFAC_PASSPORT_NUMBER() { for (var i = 0; i < 9; i++) { poseidon_hasher.inputs[i] <== dg1[49 + i]; } - signal output ofacCheckResult <== SMTVerify(256)(poseidon_hasher.out, smt_leaf_value, smt_root, smt_siblings, 0); + signal output ofacCheckResult <== SMTVerify(256)(poseidon_hasher.out, smt_leaf_key, smt_root, smt_siblings, 0); } diff --git a/circuits/circuits/utils/passport/ofac/validateCountry.circom b/circuits/circuits/utils/passport/ofac/validateCountry.circom index e7cb78865..0982588c7 100644 --- a/circuits/circuits/utils/passport/ofac/validateCountry.circom +++ b/circuits/circuits/utils/passport/ofac/validateCountry.circom @@ -5,7 +5,7 @@ include "../../other/smt.circom"; template ValidateCountry(nLevels) { signal input host_user[6]; // Pair of (user country followed by host's country) - signal input smt_leaf_value; + signal input smt_leaf_key; signal input smt_root; signal input smt_siblings[256]; @@ -16,5 +16,5 @@ template ValidateCountry(nLevels) { poseidon_hasher.inputs[i] <== host_user[i]; } - SMTVerify(nLevels)(poseidon_hasher.out, smt_leaf_value, smt_root, smt_siblings, 0); + SMTVerify(nLevels)(poseidon_hasher.out, smt_leaf_key, smt_root, smt_siblings, 0); } diff --git a/circuits/tests/ofac/ofac.test.ts b/circuits/tests/ofac/ofac.test.ts index de5bec436..dd91c25d8 100644 --- a/circuits/tests/ofac/ofac.test.ts +++ b/circuits/tests/ofac/ofac.test.ts @@ -91,7 +91,7 @@ describe('OFAC - Passport number match', function () { it('should pass - wrong merkleroot, level 3', async function () { const wrongInputs = { ...nonMemSmtInputs, - smt_leaf_value: BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString(), + smt_leaf_key: BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString(), }; let w = await circuit.calculateWitness(wrongInputs); const ofacCheckResult = (await circuit.getOutput(w, ['ofacCheckResult'])).ofacCheckResult; @@ -158,7 +158,7 @@ describe('OFAC - Name and DOB match', function () { it('should pass - wrong merkleroot, level 2', async function () { const wrongInputs = { ...nonMemSmtInputs, - smt_leaf_value: BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString(), + smt_leaf_key: BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString(), }; let w = await circuit.calculateWitness(wrongInputs); @@ -226,7 +226,7 @@ describe('OFAC - Name match', function () { it('should pass - wrong merkleroot, level 1', async function () { const wrongInputs = { ...nonMemSmtInputs, - smt_leaf_value: BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString(), + smt_leaf_key: BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString(), }; let w = await circuit.calculateWitness(wrongInputs); const ofacCheckResult = (await circuit.getOutput(w, ['ofacCheckResult'])).ofacCheckResult; diff --git a/common/src/utils/generateInputs.ts b/common/src/utils/generateInputs.ts index fd376eaaa..9f2faacc6 100644 --- a/common/src/utils/generateInputs.ts +++ b/common/src/utils/generateInputs.ts @@ -76,7 +76,7 @@ export function generateCircuitInputsDisclose( const name_leaf = getNameLeaf(formattedMrz.slice(10, 49)); // [6-44] + 5 shift const { root: smt_root, - closestleaf: smt_leaf_value, + closestleaf: smt_leaf_key, siblings: smt_siblings, } = generateSMTProof(name_smt, name_leaf); @@ -97,7 +97,7 @@ export function generateCircuitInputsDisclose( majority: formatInput(majority_ascii), user_identifier: formatInput(castFromUUID(user_identifier)), smt_root: formatInput(smt_root), - smt_leaf_value: formatInput(smt_leaf_value), + smt_leaf_key: formatInput(smt_leaf_key), smt_siblings: formatInput(smt_siblings), selector_ofac: formatInput(selector_ofac), forbidden_countries_list: formatInput(formatCountriesList(forbidden_countries_list)), @@ -127,7 +127,7 @@ export function generateCircuitInputsOfac( return { dg1: formatInput(mrz_bytes), - smt_leaf_value: formatInput(closestleaf), + smt_leaf_key: formatInput(closestleaf), smt_root: formatInput(root), smt_siblings: formatInput(siblings), }; @@ -145,7 +145,7 @@ export function generateCircuitInputsCountryVerifier( return { dg1: formatInput(mrz_bytes), hostCountry: formatInput(usa_ascii), - smt_leaf_value: formatInput(closestleaf), + smt_leaf_key: formatInput(closestleaf), smt_root: formatInput(root), smt_siblings: formatInput(siblings), }; @@ -223,8 +223,8 @@ export function generateCircuitInputsProve( const dg1PaddingFunction = passportMetadata.dg1HashFunction === 'sha1' || - passportMetadata.dg1HashFunction === 'sha224' || - passportMetadata.dg1HashFunction === 'sha256' + passportMetadata.dg1HashFunction === 'sha224' || + passportMetadata.dg1HashFunction === 'sha256' ? shaPad : sha384_512Pad; @@ -235,8 +235,8 @@ export function generateCircuitInputsProve( const eContentPaddingFunction = passportMetadata.eContentHashFunction === 'sha1' || - passportMetadata.eContentHashFunction === 'sha224' || - passportMetadata.eContentHashFunction === 'sha256' + passportMetadata.eContentHashFunction === 'sha224' || + passportMetadata.eContentHashFunction === 'sha256' ? shaPad : sha384_512Pad; const [signedAttrPadded, signedAttrPaddedLen] = eContentPaddingFunction( @@ -252,7 +252,7 @@ export function generateCircuitInputsProve( const name_leaf = getNameLeaf(mrz_bytes.slice(10, 49)); // [6-44] + 5 shift const { root: smt_root, - closestleaf: smt_leaf_value, + closestleaf: smt_leaf_key, siblings: smt_siblings, } = generateSMTProof(name_smt, name_leaf); @@ -277,7 +277,7 @@ export function generateCircuitInputsProve( secret: formatInput(secret), dsc_secret: formatInput(dsc_secret), smt_root: formatInput(smt_root), - smt_leaf_value: formatInput(smt_leaf_value), + smt_leaf_key: formatInput(smt_leaf_key), smt_siblings: formatInput(smt_siblings), selector_ofac: formatInput(selector_ofac), forbidden_countries_list: formatInput(formatCountriesList(forbidden_countries_list)),