rename smt_leaf_value for smt_leaf_key

This commit is contained in:
turnoffthiscomputer
2025-01-15 13:13:13 +01:00
parent 5fdb2ab4bd
commit e1ea30bb07
9 changed files with 34 additions and 34 deletions

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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]);

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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)),