diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..16cdac457 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "src/solidity/lib/zkpassport-packages"] + path = src/solidity/lib/zkpassport-packages + url = git@github.com:zkpassport/zkpassport-packages.git + branch = main diff --git a/package-lock.json b/package-lock.json index 442020599..d6b74bb81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "circuits", - "version": "0.17.0", + "version": "0.18.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "circuits", - "version": "0.17.0", + "version": "0.18.0", "dependencies": { "@aws-sdk/client-cloudfront": "^3.730.0", "@aws-sdk/client-s3": "^3.730.0", diff --git a/package.json b/package.json index 904794409..d3925667a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "circuits", - "version": "0.17.0", + "version": "0.18.0", "scripts": { "lint": "tsc --project src/ts/tsconfig.json --noEmit && nargo fmt --check", "test": "TZ=UTC jest circuits.test.ts --runInBand --verbose", @@ -9,7 +9,7 @@ "compile:test": "scripts/ci-compile-circuits.sh", "package-circuits": "tsx --max-old-space-size=8192 src/ts/scripts/circuit-packager && cp target/packaged/manifest.json src/ts/tests/fixtures/circuit-manifest.json", "generate-fixtures": "tsx --max-old-space-size=8192 src/ts/scripts/generate-fixtures.ts", - "test-contracts": "(cd src/solidity && ./run-integration-tests.sh)" + "test-contracts": "(cd src/solidity && forge test -vv)" }, "dependencies": { "@aws-sdk/client-cloudfront": "^3.730.0", diff --git a/src/solidity/deployments/addresses-1.json b/src/solidity/deployments/addresses-1.json new file mode 100644 index 000000000..69c26ce0f --- /dev/null +++ b/src/solidity/deployments/addresses-1.json @@ -0,0 +1,29 @@ +{ + "sub_verifier_versions": { + "0.18.0": { + "address": "0x06A13AE9d0BF8AfC1701D82c2EB0c1040B07a467", + "admin": "0x2000ab040a899f914D6DfD2457C3dFBB22d4c762", + "deployed_at": 1778063015, + "proof_verifiers": { + "outer_count_10": "0x2b80Be1a98d48a2986dF59c9e7a3DF728165F311", + "outer_count_11": "0x1887a01437Ddbee7Dc7cFdA666eEfAd441d671BD", + "outer_count_12": "0x1DE356fb7C74Ebdae3B8B33d3cca59C0ABE1D26F", + "outer_count_13": "0xcc7cb81b429C5B1239f68b43b2c66474feb1e8f4", + "outer_count_4": "0xD320De663FF0318650c6c861302b96911A7d71ce", + "outer_count_5": "0x43e314D43b6cB2f389F481875d7d561C57204325", + "outer_count_6": "0x05e5eA6f47843e9e4cd8A0C9EaB149f3634b2A54", + "outer_count_7": "0xc434f3Fe3cC3f1bf06C81A24948472e3924A9616", + "outer_count_8": "0x40F8cC43A0e0FC7E4d7E3f110144B429827D499b", + "outer_count_9": "0x18b515ce162e8193099A0e2D1DB9DAE1D7Aaf310" + }, + "root_verifier": "0x1D000001000EFD9a6371f4d90bB8920D5431c0D8" + } + }, + "verifier_helper_versions": { + "0.18.0": { + "address": "0x9894282C73AFaDF1c5c63b6FAc0169039fc42983", + "deployed_at": 1778063471, + "root_registry": "0x1D0000020038d6E40E1d98e09fA1bb3A7DAA8B70" + } + } +} \ No newline at end of file diff --git a/src/solidity/deployments/addresses-11155111.json b/src/solidity/deployments/addresses-11155111.json new file mode 100644 index 000000000..48ef22d60 --- /dev/null +++ b/src/solidity/deployments/addresses-11155111.json @@ -0,0 +1,29 @@ +{ + "sub_verifier_versions": { + "0.18.0": { + "address": "0x33EB4b92C5600575a8c0eB133fbd34E37Cc9d7aB", + "admin": "0x2000ab040a899f914D6DfD2457C3dFBB22d4c762", + "deployed_at": 1778007576, + "proof_verifiers": { + "outer_count_10": "0x01b2F7950Ff8280f1581D3f2758e347A5D6f437B", + "outer_count_11": "0xCbaA4253aaF0937fB87D0CCa556bb864f4B4eEF8", + "outer_count_12": "0x5A87026E6627E4AFF96353538f83532ED840A78a", + "outer_count_13": "0x535D7dDB4051C46FaC01CaE97259cf5ad58dd587", + "outer_count_4": "0x5aa54cB7467FeAf1892156a65A89Eb6F27232b41", + "outer_count_5": "0xf4abF40BD5E51479DC4c6bc11796e3E48135E640", + "outer_count_6": "0x3A26aF81581c73A1ab0DED32BD314A62693e53A5", + "outer_count_7": "0x4620879f0450b353D0B856E5d66C62c91a7DdE7B", + "outer_count_8": "0x6Bc83390E39CE6C5D922A8f4e36Da1010977F8fc", + "outer_count_9": "0x2EA9b14B221a63A655215E325cB60F3C4a22C606" + }, + "root_verifier": "0x1D000001000EFD9a6371f4d90bB8920D5431c0D8" + } + }, + "verifier_helper_versions": { + "0.18.0": { + "address": "0xdd33c53248393D104FE0c7d75941e42647BFB414", + "deployed_at": 1778007888, + "root_registry": "0x1D0000020038d6E40E1d98e09fA1bb3A7DAA8B70" + } + } +} \ No newline at end of file diff --git a/src/solidity/deployments/addresses-8453.json b/src/solidity/deployments/addresses-8453.json new file mode 100644 index 000000000..c22bbd082 --- /dev/null +++ b/src/solidity/deployments/addresses-8453.json @@ -0,0 +1,29 @@ +{ + "sub_verifier_versions": { + "0.18.0": { + "address": "0x40F8cC43A0e0FC7E4d7E3f110144B429827D499b", + "admin": "0x2000ab040a899f914D6DfD2457C3dFBB22d4c762", + "deployed_at": 1778063967, + "proof_verifiers": { + "outer_count_10": "0xD320De663FF0318650c6c861302b96911A7d71ce", + "outer_count_11": "0x43e314D43b6cB2f389F481875d7d561C57204325", + "outer_count_12": "0x05e5eA6f47843e9e4cd8A0C9EaB149f3634b2A54", + "outer_count_13": "0xc434f3Fe3cC3f1bf06C81A24948472e3924A9616", + "outer_count_4": "0x14B10de2CF34870a7BB825C6BDE5e48A525E1759", + "outer_count_5": "0xD04bE5f1B90FAEF026392f802f1803672D65448e", + "outer_count_6": "0xd0539007aAAB04F53A0009468557db493704219d", + "outer_count_7": "0xBAa59Fa2a046ACEAcfB76CC4C2faE3A1799cF949", + "outer_count_8": "0x40803220faaD6C5EcF9588270205D6602E060d79", + "outer_count_9": "0x4b87246b00872779226f3de26C6900d05a886C33" + }, + "root_verifier": "0x1D000001000EFD9a6371f4d90bB8920D5431c0D8" + } + }, + "verifier_helper_versions": { + "0.18.0": { + "address": "0x1887a01437Ddbee7Dc7cFdA666eEfAd441d671BD", + "deployed_at": 1778064291, + "root_registry": "0x1D0000020038d6E40E1d98e09fA1bb3A7DAA8B70" + } + } +} \ No newline at end of file diff --git a/src/solidity/foundry.toml b/src/solidity/foundry.toml index dced77101..d20628b28 100644 --- a/src/solidity/foundry.toml +++ b/src/solidity/foundry.toml @@ -9,6 +9,11 @@ optimizer = true optimizer_runs = 200 # Ensure deterministic init code hash bytecode_hash = "none" +# Map the registry-contracts namespace to the canonical Solidity protocol contracts in +# zkpassport-packages/registry-contracts +remappings = [ + "@zkpassport/registry-contracts/=lib/zkpassport-packages/packages/registry-contracts/src/", +] # File system permissions fs_permissions = [{ access = "read-write", path = "./"}] @@ -20,7 +25,6 @@ tab_width = 2 ignore = [ "src/ultra-honk-verifiers", "src/SampleContract.sol", - "src/Constants.sol", "test/Constants.t.sol", ] diff --git a/src/solidity/lib/zkpassport-packages b/src/solidity/lib/zkpassport-packages new file mode 160000 index 000000000..3a16128fd --- /dev/null +++ b/src/solidity/lib/zkpassport-packages @@ -0,0 +1 @@ +Subproject commit 3a16128fd66a8564b9276d6641d9cade22abb2bc diff --git a/src/solidity/run-integration-tests.sh b/src/solidity/run-integration-tests.sh deleted file mode 100755 index 2c44522f3..000000000 --- a/src/solidity/run-integration-tests.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash - -LOCAL_DIR=${1:-null} -PORT=8545 - -# Note: got a crazy bug where foundry wouldnt deploy to anvil unless i changed the chain id -export CHAIN_ID=1337 - -SCRIPT_DIR=$(pwd)/$(dirname "$0") - -# If the local directory is not null, use it, otherwise clone the zkpassport-packages repo -if [ "$LOCAL_DIR" = "null" ]; then - git clone https://github.com/zkpassport/zkpassport-packages.git - cd zkpassport-packages - bun i - bun run build -else - cd $LOCAL_DIR -fi - -# Move to the registry contracts directory -cd packages/registry-contracts - -# Make sure the port is not in use -lsof -ti:${PORT} | xargs kill -9 - -# Start anvil in the background if it's not already running -anvil --port ${PORT} --chain-id $CHAIN_ID > /dev/null 2>&1 & - -# Give anvil a moment to start -sleep 2 - -# Make the deploy and update-roots scripts executable -chmod +x script/bash/deploy.sh -chmod +x script/bash/update-roots.sh - -# Deploy the contracts and capture the ROOT_REGISTRY_ADDRESS -DEPLOY_OUTPUT=$(script/bash/deploy.sh) -# Get the ROOT_REGISTRY_ADDRESS from the deploy output -export ROOT_REGISTRY_ADDRESS=$(echo "$DEPLOY_OUTPUT" | grep "RootRegistry deployed at:" | head -1 | awk '{print $NF}' | tr -d '\n\r') - -# Get the certificate and circuit registry roots from the public inputs of the fixtures -export CERTIFICATE_REGISTRY_ROOT=$(jq -r '.inputs[0]' $SCRIPT_DIR/test/fixtures/all_subproofs_public_inputs.json) -export CIRCUIT_REGISTRY_ROOT=$(jq -r '.inputs[1]' $SCRIPT_DIR/test/fixtures/all_subproofs_public_inputs.json) -export SANCTIONS_REGISTRY_ROOT=0x06caac33440d8a83b838f07ba0e2bbe7e9889f10915efcb37396534f1feadac5 - -echo "Updating roots..." -echo "Root Registry: $ROOT_REGISTRY_ADDRESS" -echo "Certificate Registry Root: $CERTIFICATE_REGISTRY_ROOT" -echo "Circuit Registry Root: $CIRCUIT_REGISTRY_ROOT" -echo "Sanctions Registry Root: $SANCTIONS_REGISTRY_ROOT" - -# Update the roots -script/bash/update-roots.sh - -# Move back to the verifier contracts directory -cd $SCRIPT_DIR - -# Run the tests -forge test --rpc-url http://localhost:${PORT} -vv - -# Kill the anvil process -lsof -ti:${PORT} | xargs kill -9 - -echo "Tests completed successfully" - -# If the tests were run based off a fresh clone of the zkpassport-packages repo, remove it -if [ "$LOCAL_DIR" = "null" ]; then - rm -rf zkpassport-packages -fi diff --git a/src/solidity/script/Deploy.s.sol b/src/solidity/script/Deploy.s.sol deleted file mode 100644 index cc9bb606d..000000000 --- a/src/solidity/script/Deploy.s.sol +++ /dev/null @@ -1,191 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2025 ZKPassport - -/* - * Deploy.s.sol - * - * Deploys the ZKPassport root verifier, subverifier, helper, and proof verifiers - * for outer circuits (supporting 4-13 subproofs). - */ - -pragma solidity ^0.8.30; - -import {Script, console} from "forge-std/Script.sol"; -import {stdJson} from "forge-std/StdJson.sol"; -import {HonkVerifier as OuterCount4Verifier} from "../src/ultra-honk-verifiers/OuterCount4.sol"; -import {HonkVerifier as OuterCount5Verifier} from "../src/ultra-honk-verifiers/OuterCount5.sol"; -import {HonkVerifier as OuterCount6Verifier} from "../src/ultra-honk-verifiers/OuterCount6.sol"; -import {HonkVerifier as OuterCount7Verifier} from "../src/ultra-honk-verifiers/OuterCount7.sol"; -import {HonkVerifier as OuterCount8Verifier} from "../src/ultra-honk-verifiers/OuterCount8.sol"; -import {HonkVerifier as OuterCount9Verifier} from "../src/ultra-honk-verifiers/OuterCount9.sol"; -import {HonkVerifier as OuterCount10Verifier} from "../src/ultra-honk-verifiers/OuterCount10.sol"; -import {HonkVerifier as OuterCount11Verifier} from "../src/ultra-honk-verifiers/OuterCount11.sol"; -import {HonkVerifier as OuterCount12Verifier} from "../src/ultra-honk-verifiers/OuterCount12.sol"; -import {HonkVerifier as OuterCount13Verifier} from "../src/ultra-honk-verifiers/OuterCount13.sol"; -import {IRootRegistry} from "../src/IRootRegistry.sol"; -import {ZKPassportRootVerifier} from "../src/ZKPassportRootVerifier.sol"; -import {ZKPassportSubVerifier as ZKPassportSubVerifierV1} from "../src/ZKPassportSubVerifier.sol"; -import {ZKPassportHelper as ZKPassportHelperV1} from "../src/ZKPassportHelper.sol"; -import {ProofVerifier} from "../src/Types.sol"; - -contract Deploy is Script { - using stdJson for string; - - bytes32 public SUB_VERIFIER_VERSION; - - bytes32[] public vkeyHashes = [ - // Outer (4 subproofs) - bytes32(hex"072583d991a1ef614353daed3b3e3fe5f94e5274966437a9fc9d77da19a306ca"), - // Outer (5 subproofs) - bytes32(hex"04ff20501e4bdd02871cc1429f70d496b4281bac97aece4544ffaedf156c7eef"), - // Outer (6 subproofs) - bytes32(hex"1212298562eaa813d58ea4aaaf2a4117c6f02a72f3b9c64a21b1dbc6e5fab0b9"), - // Outer (7 subproofs) - bytes32(hex"0b769026390dcfb778e3e38af7b45382abcad3b2784d62b84f44ec8fecba8d3a"), - // Outer (8 subproofs) - bytes32(hex"09f506d0e46238c664160fceec1bd2dec6ef39c0b584f12c316f80aff92d3c42"), - // Outer (9 subproofs) - bytes32(hex"2cc2ff165f1e5a7b51d654669c5fb129384dd4c36341aeeafd5cfa8e2647e681"), - // Outer (10 subproofs) - bytes32(hex"0f069d864ffc03a6696d0ae37e8708dea13c7c3802ce95839c8110381684a5b1"), - // Outer (11 subproofs) - bytes32(hex"26be2379e1555cab19cd37061f32342d09b0a4891e84d4f1a363c93c87c7ba25"), - // Outer (12 subproofs) - bytes32(hex"16828fad756bb212bd1887e291c51cffd5bbe23acbdb96768b6a174d682224f6"), - // Outer (13 subproofs) - bytes32(hex"0e165d27cf39d8b4e569e218dedbf60abc5badcfd936bdc54030669c382c802c") - ]; - address[] public proofVerifiers = new address[](10); - - function run() public { - SUB_VERIFIER_VERSION = vm.envOr("SUB_VERIFIER_VERSION", bytes32(uint256(1))); - - // Load the private key from environment variable - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - - // Start broadcasting transactions - vm.startBroadcast(deployerPrivateKey); - - // Deploy the root verifier - console.log("Deploying ZKPassportRootVerifier..."); - address admin = vm.envAddress("ROOT_VERIFIER_ADMIN_ADDRESS"); - address guardian = vm.envAddress("ROOT_VERIFIER_GUARDIAN_ADDRESS"); - IRootRegistry rootRegistry = IRootRegistry(vm.envAddress("ROOT_REGISTRY_ADDRESS")); - // Hash of the global default OPRF public key; defaults to zero if unset so it can be - // populated later via `rootVerifier.setDefaultOprfPubKeyHash(...)` once the DKG key is known. - bytes32 defaultOprfPubKeyHash = vm.envOr("DEFAULT_OPRF_PUB_KEY_HASH", bytes32(0)); - ZKPassportRootVerifier rootVerifier = - new ZKPassportRootVerifier(admin, guardian, rootRegistry, defaultOprfPubKeyHash); - console.log("ZKPassportRootVerifier deployed at:", address(rootVerifier)); - - // Deploy the sub verifier - console.log("Deploying ZKPassportSubVerifierV1..."); - ZKPassportSubVerifierV1 subVerifier = new ZKPassportSubVerifierV1(admin, rootVerifier); - console.log("ZKPassportSubVerifierV1 deployed at:", address(subVerifier)); - - // Add the sub verifier to the root verifier - console.log("Adding sub verifier to root verifier..."); - rootVerifier.addSubVerifier(SUB_VERIFIER_VERSION, subVerifier); - console.log("Sub verifier added to root verifier"); - - // Deploy the helper - console.log("Deploying ZKPassportHelperV1..."); - ZKPassportHelperV1 helper = new ZKPassportHelperV1(rootRegistry); - console.log("ZKPassportHelperV1 deployed at:", address(helper)); - - // Add the helper to the root verifier - console.log("Adding helper to root verifier..."); - rootVerifier.addHelper(SUB_VERIFIER_VERSION, address(helper)); - console.log("Helper added to root verifier"); - - // Deploy the proof verifiers - console.log("Deploying Outer (4 subproofs) proof verifier..."); - proofVerifiers[0] = address(new OuterCount4Verifier()); - console.log("Outer (4 subproofs) proof verifier deployed at:", proofVerifiers[0]); - - console.log("Deploying Outer (5 subproofs) proof verifier..."); - proofVerifiers[1] = address(new OuterCount5Verifier()); - console.log("Outer (5 subproofs) proof verifier deployed at:", proofVerifiers[1]); - - console.log("Deploying Outer (6 subproofs) proof verifier..."); - proofVerifiers[2] = address(new OuterCount6Verifier()); - console.log("Outer (6 subproofs) proof verifier deployed at:", proofVerifiers[2]); - - console.log("Deploying Outer (7 subproofs) proof verifier..."); - proofVerifiers[3] = address(new OuterCount7Verifier()); - console.log("Outer (7 subproofs) proof verifier deployed at:", proofVerifiers[3]); - - console.log("Deploying Outer (8 subproofs) proof verifier..."); - proofVerifiers[4] = address(new OuterCount8Verifier()); - console.log("Outer (8 subproofs) proof verifier deployed at:", proofVerifiers[4]); - - console.log("Deploying Outer (9 subproofs) proof verifier..."); - proofVerifiers[5] = address(new OuterCount9Verifier()); - console.log("Outer (9 subproofs) proof verifier deployed at:", proofVerifiers[5]); - - console.log("Deploying Outer (10 subproofs) proof verifier..."); - proofVerifiers[6] = address(new OuterCount10Verifier()); - console.log("Outer (10 subproofs) proof verifier deployed at:", proofVerifiers[6]); - - console.log("Deploying Outer (11 subproofs) proof verifier..."); - proofVerifiers[7] = address(new OuterCount11Verifier()); - console.log("Outer (11 subproofs) proof verifier deployed at:", proofVerifiers[7]); - - console.log("Deploying Outer (12 subproofs) proof verifier..."); - proofVerifiers[8] = address(new OuterCount12Verifier()); - console.log("Outer (12 subproofs) proof verifier deployed at:", proofVerifiers[8]); - - console.log("Deploying Outer (13 subproofs) proof verifier..."); - proofVerifiers[9] = address(new OuterCount13Verifier()); - console.log("Outer (13 subproofs) proof verifier deployed at:", proofVerifiers[9]); - - // Add proof verifiers to the sub verifier - console.log("Adding proof verifiers to the sub verifier..."); - ProofVerifier[] memory proofVerifiersArray = new ProofVerifier[](10); - for (uint256 i = 0; i < 10; i++) { - proofVerifiersArray[i] = ProofVerifier({vkeyHash: vkeyHashes[i], verifier: proofVerifiers[i]}); - } - subVerifier.addProofVerifiers(proofVerifiersArray); - console.log("Proof verifiers added to the sub verifier"); - - // Stop broadcasting transactions - vm.stopBroadcast(); - - // Create the main JSON object with deployment details - string memory mainJson = "main"; - vm.serializeUint(mainJson, "chain_id", block.chainid); - vm.serializeString(mainJson, "deployment_timestamp", vm.toString(block.timestamp)); - vm.serializeAddress(mainJson, "root_verifier", address(rootVerifier)); - string memory subVerifierVersion = vm.toString(uint256(SUB_VERIFIER_VERSION)); - string memory subVerifierVersionString = string.concat("v", subVerifierVersion); - vm.serializeAddress(mainJson, string.concat("sub_verifier_", subVerifierVersionString), address(subVerifier)); - vm.serializeAddress(mainJson, string.concat("helper_", subVerifierVersionString), address(helper)); - // Add proof verifiers to JSON artifact - string memory proofVerifiersJson = "proof_verifiers"; - vm.serializeAddress(proofVerifiersJson, "outer_count_4", proofVerifiers[0]); - vm.serializeAddress(proofVerifiersJson, "outer_count_5", proofVerifiers[1]); - vm.serializeAddress(proofVerifiersJson, "outer_count_6", proofVerifiers[2]); - vm.serializeAddress(proofVerifiersJson, "outer_count_7", proofVerifiers[3]); - vm.serializeAddress(proofVerifiersJson, "outer_count_8", proofVerifiers[4]); - vm.serializeAddress(proofVerifiersJson, "outer_count_9", proofVerifiers[5]); - vm.serializeAddress(proofVerifiersJson, "outer_count_10", proofVerifiers[6]); - vm.serializeAddress(proofVerifiersJson, "outer_count_11", proofVerifiers[7]); - vm.serializeAddress(proofVerifiersJson, "outer_count_12", proofVerifiers[8]); - proofVerifiersJson = vm.serializeAddress(proofVerifiersJson, "outer_count_13", proofVerifiers[9]); - mainJson = vm.serializeString(mainJson, "proof_verifiers", proofVerifiersJson); - string memory finalJson = vm.serializeString(mainJson, "main", mainJson); - - // Ensure deployments directory exists - string memory deploymentsDir = "./deployments"; - if (!vm.exists(deploymentsDir)) { - vm.createDir(deploymentsDir, true); - } - - // Write the JSON to a file in the deployments folder - string memory chainId = vm.toString(block.chainid); - string memory outputPath = string.concat(deploymentsDir, "/deployment-", chainId, ".json"); - vm.writeJson(finalJson, outputPath); - console.log("Deployment addresses written to:", outputPath); - console.log("Don't forget to update the addresses in DeployWithExistingVerifiers.s.sol"); - } -} diff --git a/src/solidity/script/DeployBase.s.sol b/src/solidity/script/DeployBase.s.sol new file mode 100644 index 000000000..195717542 --- /dev/null +++ b/src/solidity/script/DeployBase.s.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2025 ZKPassport + +/* + * DeployBase.s.sol + * + * Shared base contract for circuits-side deploy scripts. Provides helpers for writing + * deployment data into the shared addresses file, mirroring the pattern used by the + * registry-contracts deploy scripts. + */ + +pragma solidity ^0.8.30; + +import {Script, console} from "forge-std/Script.sol"; + +abstract contract DeployBase is Script { + string internal constant DEPLOYMENTS_DIR = "./deployments"; + + function _ensureDeploymentsDir() internal { + if (!vm.exists(DEPLOYMENTS_DIR)) { + vm.createDir(DEPLOYMENTS_DIR, true); + } + } + + function _chainIdStr() internal view returns (string memory) { + return vm.toString(block.chainid); + } + + function _addressesFilePath() internal view returns (string memory) { + return string.concat(DEPLOYMENTS_DIR, "/addresses-", _chainIdStr(), ".json"); + } + + /// Write a serialized JSON object to a top-level key in `addresses-.json`. + function _writeToAddresses(string memory key, string memory json) internal { + _ensureDeploymentsDir(); + string memory path = _addressesFilePath(); + if (!vm.exists(path)) { + vm.writeJson("{}", path); + } + vm.writeJson(json, path, string.concat(".", key)); + console.log("Updated addresses file:", path); + } +} diff --git a/src/solidity/script/DeploySubVerifier.s.sol b/src/solidity/script/DeploySubVerifier.s.sol new file mode 100644 index 000000000..dfe29a4b0 --- /dev/null +++ b/src/solidity/script/DeploySubVerifier.s.sol @@ -0,0 +1,178 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2025 ZKPassport + +/* + * DeploySubVerifier.s.sol + * + * Deploys the 10 UltraHonk outer-circuit proof verifiers, deploys a SubVerifier (canonical + * contract imported from the registry-contracts package), wires the proof verifiers + their + * vkey hashes, optionally sets the default OPRF public key hash, and transfers admin to + * the final ADMIN_ADDRESS. Does NOT register the SubVerifier with the RootVerifier — that + * registration is performed by the RootVerifier admin (a Safe multisig) outside this script. + * + * The broadcaster is the temporary admin during deployment so it can call admin-only setup + * functions (addProofVerifiers, setDefaultOPRFPubKeyHash). Admin is transferred to + * ADMIN_ADDRESS at the end of the script. + * + * Required env vars: + * PRIVATE_KEY - deployer key (becomes temporary admin) + * ROOT_VERIFIER_ADDRESS - already-deployed RootVerifier this SubVerifier targets + * ADMIN_ADDRESS - final admin (e.g. multisig) for the new SubVerifier + * + * Optional env vars: + * SUB_VERIFIER_VERSION - bytes32 semver key. Recorded in the addresses JSON only. + * Defaults to bytes32(0) (rendered as "unversioned"). + * DEFAULT_OPRF_PUB_KEY_HASH - protocol-default OPRF pubkey hash. When non-zero, set via + * setDefaultOPRFPubKeyHash. Otherwise admin can set later. + */ + +pragma solidity ^0.8.30; + +import {console} from "forge-std/Script.sol"; +import {DeployBase} from "./DeployBase.s.sol"; +import {HonkVerifier as OuterCount4Verifier} from "../src/ultra-honk-verifiers/OuterCount4.sol"; +import {HonkVerifier as OuterCount5Verifier} from "../src/ultra-honk-verifiers/OuterCount5.sol"; +import {HonkVerifier as OuterCount6Verifier} from "../src/ultra-honk-verifiers/OuterCount6.sol"; +import {HonkVerifier as OuterCount7Verifier} from "../src/ultra-honk-verifiers/OuterCount7.sol"; +import {HonkVerifier as OuterCount8Verifier} from "../src/ultra-honk-verifiers/OuterCount8.sol"; +import {HonkVerifier as OuterCount9Verifier} from "../src/ultra-honk-verifiers/OuterCount9.sol"; +import {HonkVerifier as OuterCount10Verifier} from "../src/ultra-honk-verifiers/OuterCount10.sol"; +import {HonkVerifier as OuterCount11Verifier} from "../src/ultra-honk-verifiers/OuterCount11.sol"; +import {HonkVerifier as OuterCount12Verifier} from "../src/ultra-honk-verifiers/OuterCount12.sol"; +import {HonkVerifier as OuterCount13Verifier} from "../src/ultra-honk-verifiers/OuterCount13.sol"; +import {RootVerifier} from "@zkpassport/registry-contracts/RootVerifier.sol"; +import {SubVerifier} from "@zkpassport/registry-contracts/SubVerifier.sol"; +import {ProofVerifier} from "@zkpassport/registry-contracts/lib/Types.sol"; + +contract DeploySubVerifier is DeployBase { + bytes32 public SUB_VERIFIER_VERSION; + + // vkey hashes for the 10 outer UltraHonk proof verifiers (outer_count_4 .. outer_count_13). + // Auto-generated by `src/ts/scripts/circuit-packager.ts` — do not edit by hand. + bytes32[] public vkeyHashes = [ + // Outer (4 subproofs) + bytes32(hex"072583d991a1ef614353daed3b3e3fe5f94e5274966437a9fc9d77da19a306ca"), + // Outer (5 subproofs) + bytes32(hex"04ff20501e4bdd02871cc1429f70d496b4281bac97aece4544ffaedf156c7eef"), + // Outer (6 subproofs) + bytes32(hex"1212298562eaa813d58ea4aaaf2a4117c6f02a72f3b9c64a21b1dbc6e5fab0b9"), + // Outer (7 subproofs) + bytes32(hex"0b769026390dcfb778e3e38af7b45382abcad3b2784d62b84f44ec8fecba8d3a"), + // Outer (8 subproofs) + bytes32(hex"09f506d0e46238c664160fceec1bd2dec6ef39c0b584f12c316f80aff92d3c42"), + // Outer (9 subproofs) + bytes32(hex"2cc2ff165f1e5a7b51d654669c5fb129384dd4c36341aeeafd5cfa8e2647e681"), + // Outer (10 subproofs) + bytes32(hex"0f069d864ffc03a6696d0ae37e8708dea13c7c3802ce95839c8110381684a5b1"), + // Outer (11 subproofs) + bytes32(hex"26be2379e1555cab19cd37061f32342d09b0a4891e84d4f1a363c93c87c7ba25"), + // Outer (12 subproofs) + bytes32(hex"16828fad756bb212bd1887e291c51cffd5bbe23acbdb96768b6a174d682224f6"), + // Outer (13 subproofs) + bytes32(hex"0e165d27cf39d8b4e569e218dedbf60abc5badcfd936bdc54030669c382c802c") + ]; + address[] public proofVerifiers = new address[](10); + + function setUp() public {} + + function run() public { + // Validate env + SUB_VERIFIER_VERSION = vm.envOr("SUB_VERIFIER_VERSION", bytes32(0)); + address adminAddress = vm.envAddress("ADMIN_ADDRESS"); + require(adminAddress != address(0), "ADMIN_ADDRESS must be set"); + RootVerifier rootVerifier = RootVerifier(vm.envAddress("ROOT_VERIFIER_ADDRESS")); + require(address(rootVerifier) != address(0), "ROOT_VERIFIER_ADDRESS must be set"); + bytes32 defaultOPRFPubKeyHash = vm.envOr("DEFAULT_OPRF_PUB_KEY_HASH", bytes32(0)); + + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + address deployer = vm.addr(deployerPrivateKey); + vm.startBroadcast(deployerPrivateKey); + + // Deploy the 10 UltraHonk proof verifiers. + console.log("Deploying outer proof verifiers..."); + proofVerifiers[0] = address(new OuterCount4Verifier()); + proofVerifiers[1] = address(new OuterCount5Verifier()); + proofVerifiers[2] = address(new OuterCount6Verifier()); + proofVerifiers[3] = address(new OuterCount7Verifier()); + proofVerifiers[4] = address(new OuterCount8Verifier()); + proofVerifiers[5] = address(new OuterCount9Verifier()); + proofVerifiers[6] = address(new OuterCount10Verifier()); + proofVerifiers[7] = address(new OuterCount11Verifier()); + proofVerifiers[8] = address(new OuterCount12Verifier()); + proofVerifiers[9] = address(new OuterCount13Verifier()); + for (uint256 i = 0; i < 10; i++) { + console.log(" outer_count_", i + 4, "deployed at:", proofVerifiers[i]); + } + + // Deploy the SubVerifier with the broadcaster as temporary admin. + console.log("Deploying SubVerifier..."); + SubVerifier subVerifier = new SubVerifier(deployer, rootVerifier); + console.log("SubVerifier deployed at:", address(subVerifier)); + + // Wire proof verifiers (admin-only on SubVerifier). + ProofVerifier[] memory pvArray = new ProofVerifier[](10); + for (uint256 i = 0; i < 10; i++) { + pvArray[i] = ProofVerifier({vkeyHash: vkeyHashes[i], verifier: proofVerifiers[i]}); + } + subVerifier.addProofVerifiers(pvArray); + console.log("Proof verifiers added"); + + // Set the OPRF pub key hash if provided (skip the no-op tx + event when unset). + if (defaultOPRFPubKeyHash != bytes32(0)) { + subVerifier.setDefaultOPRFPubKeyHash(defaultOPRFPubKeyHash); + console.log("Default OPRF pub key hash set"); + } else { + console.log("DEFAULT_OPRF_PUB_KEY_HASH not provided; admin can set later"); + } + + // Hand admin over to the final admin (e.g. multisig). + subVerifier.transferAdmin(adminAddress); + console.log("Admin transferred to:", adminAddress); + + vm.stopBroadcast(); + + _writeAddresses(rootVerifier, subVerifier, adminAddress); + + console.log(""); + console.log("Next: RootVerifier admin (multisig) calls addSubVerifier(version, %s)", address(subVerifier)); + } + + function _writeAddresses(RootVerifier rootVerifier, SubVerifier subVerifier, address adminAddress) internal { + string memory versionStr = _versionString(SUB_VERIFIER_VERSION); + + // proof_verifiers object keyed by outer_count_N + string memory pvJson = "pv"; + vm.serializeAddress(pvJson, "outer_count_4", proofVerifiers[0]); + vm.serializeAddress(pvJson, "outer_count_5", proofVerifiers[1]); + vm.serializeAddress(pvJson, "outer_count_6", proofVerifiers[2]); + vm.serializeAddress(pvJson, "outer_count_7", proofVerifiers[3]); + vm.serializeAddress(pvJson, "outer_count_8", proofVerifiers[4]); + vm.serializeAddress(pvJson, "outer_count_9", proofVerifiers[5]); + vm.serializeAddress(pvJson, "outer_count_10", proofVerifiers[6]); + vm.serializeAddress(pvJson, "outer_count_11", proofVerifiers[7]); + vm.serializeAddress(pvJson, "outer_count_12", proofVerifiers[8]); + pvJson = vm.serializeAddress(pvJson, "outer_count_13", proofVerifiers[9]); + + // version object: { address, admin, root_verifier, proof_verifiers, deployed_at } + string memory versionJson = "subverifier_version"; + vm.serializeAddress(versionJson, "address", address(subVerifier)); + vm.serializeAddress(versionJson, "admin", adminAddress); + vm.serializeAddress(versionJson, "root_verifier", address(rootVerifier)); + vm.serializeUint(versionJson, "deployed_at", block.timestamp); + versionJson = vm.serializeString(versionJson, "proof_verifiers", pvJson); + + // sub_verifier_versions: { "": { ... } } + string memory section = "sub_verifier_versions"; + section = vm.serializeString(section, versionStr, versionJson); + + _writeToAddresses("sub_verifier_versions", section); + } + + function _versionString(bytes32 version) internal pure returns (string memory) { + if (version == bytes32(0)) return "unversioned"; + uint256 v = uint256(version); + return string.concat( + vm.toString(uint16(v >> 240)), ".", vm.toString(uint16(v >> 224)), ".", vm.toString(uint16(v >> 208)) + ); + } +} diff --git a/src/solidity/script/DeployVerifierHelper.s.sol b/src/solidity/script/DeployVerifierHelper.s.sol new file mode 100644 index 000000000..f9f62d47d --- /dev/null +++ b/src/solidity/script/DeployVerifierHelper.s.sol @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2025 ZKPassport + +/* + * DeployVerifierHelper.s.sol + * + * Validates required env vars, deploys a VerifierHelper (canonical contract imported from + * the registry-contracts package), and writes the deployed address into the shared + * deployments JSON. Does NOT register the helper with the RootVerifier — that registration + * is performed by the RootVerifier admin (a Safe multisig) outside this script. + * + * VerifierHelper has no admin state (no setters, no ownable surface), so there is no + * admin transfer step. It only reads from RootRegistry at verification time. + * + * Required env vars: + * PRIVATE_KEY - deployer key + * ROOT_REGISTRY_ADDRESS - the RootRegistry the helper will read from + * + * Optional env vars: + * SUB_VERIFIER_VERSION - bytes32 semver key. Recorded in the addresses JSON only. + * Defaults to bytes32(0) (rendered as "unversioned"). + */ + +pragma solidity ^0.8.30; + +import {console} from "forge-std/Script.sol"; +import {DeployBase} from "./DeployBase.s.sol"; +import {RootRegistry} from "@zkpassport/registry-contracts/RootRegistry.sol"; +import {VerifierHelper} from "@zkpassport/registry-contracts/VerifierHelper.sol"; + +contract DeployVerifierHelper is DeployBase { + bytes32 public SUB_VERIFIER_VERSION; + + function setUp() public {} + + function run() public { + // Validate env + SUB_VERIFIER_VERSION = vm.envOr("SUB_VERIFIER_VERSION", bytes32(0)); + RootRegistry rootRegistry = RootRegistry(vm.envAddress("ROOT_REGISTRY_ADDRESS")); + require(address(rootRegistry) != address(0), "ROOT_REGISTRY_ADDRESS must be set"); + + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + console.log("Deploying VerifierHelper..."); + VerifierHelper helper = new VerifierHelper(rootRegistry); + console.log("VerifierHelper deployed at:", address(helper)); + + vm.stopBroadcast(); + + _writeAddresses(rootRegistry, helper); + + console.log(""); + console.log("Next: RootVerifier admin (multisig) calls addHelper(version, %s)", address(helper)); + } + + function _writeAddresses(RootRegistry rootRegistry, VerifierHelper helper) internal { + string memory versionStr = _versionString(SUB_VERIFIER_VERSION); + + string memory versionJson = "helper_version"; + vm.serializeAddress(versionJson, "address", address(helper)); + vm.serializeAddress(versionJson, "root_registry", address(rootRegistry)); + versionJson = vm.serializeUint(versionJson, "deployed_at", block.timestamp); + + string memory section = "verifier_helper_versions"; + section = vm.serializeString(section, versionStr, versionJson); + + _writeToAddresses("verifier_helper_versions", section); + } + + function _versionString(bytes32 version) internal pure returns (string memory) { + if (version == bytes32(0)) return "unversioned"; + uint256 v = uint256(version); + return string.concat( + vm.toString(uint16(v >> 240)), ".", vm.toString(uint16(v >> 224)), ".", vm.toString(uint16(v >> 208)) + ); + } +} diff --git a/src/solidity/src/Constants.sol b/src/solidity/src/Constants.sol deleted file mode 100644 index 79800b5fe..000000000 --- a/src/solidity/src/Constants.sol +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -uint256 constant SECONDS_BETWEEN_1900_AND_1970 = 2208988800; -uint256 constant COUNTRY_LIST_LENGTH = 200; -uint256 constant BOUND_DATA_LENGTH = 509; -uint256 constant TIMESTAMP_LENGTH = 8; - -// Registry IDs -library RegistryID { - bytes32 constant CERTIFICATE = bytes32(0x0000000000000000000000000000000000000000000000000000000000000001); - bytes32 constant CIRCUIT = bytes32(0x0000000000000000000000000000000000000000000000000000000000000002); - bytes32 constant SANCTIONS = bytes32(0x0000000000000000000000000000000000000000000000000000000000000003); -} - -// The lengths of the preimages of the `param_commitments` of the various disclosure circuits. -// Note: this is excluding the 3 bytes for the proof type and length -library CommittedInputLen { - uint256 constant COMPARE_AGE = 2; - uint256 constant COMPARE_BIRTHDATE = 16; - uint256 constant COMPARE_EXPIRY = 16; - uint256 constant DISCLOSE_BYTES = 180; - uint256 constant INCL_ISSUING_COUNTRY = 600; - uint256 constant EXCL_ISSUING_COUNTRY = 600; - uint256 constant INCL_NATIONALITY = 600; - uint256 constant EXCL_NATIONALITY = 600; - uint256 constant BIND = 509; - uint256 constant SANCTIONS = 33; - uint256 constant FACEMATCH = 98; -} - -// Gather all the public input indices in one place -library PublicInput { - uint256 constant CERTIFICATE_REGISTRY_ROOT_INDEX = 0; - uint256 constant CIRCUIT_REGISTRY_ROOT_INDEX = 1; - uint256 constant CURRENT_DATE_INDEX = 2; - uint256 constant SCOPE_INDEX = 3; - uint256 constant SUBSCOPE_INDEX = 4; - uint256 constant PARAM_COMMITMENTS_INDEX = 5; - // The length of the public inputs excluding the param commitments - uint256 constant PUBLIC_INPUTS_EXCLUDING_PARAM_COMMITMENTS_LENGTH = 8; -} - -// Gather all the MRZ indices in one place -library MRZIndex { - // Index for the country of issuance of the passport - uint256 constant PASSPORT_MRZ_ISSUING_COUNTRY_INDEX = 2; - // Index for the three letter code of the country of citizenship - // Note that the first three letter code (index 2) in the MRZ is the country of issuance - // not citizenship. It is important to keep in mind for residence permits - // where the issuing country differs from the citizenship country - uint256 constant PASSPORT_MRZ_NATIONALITY_INDEX = 54; - // Index for the gender of the passport holder (M, F or < if unspecified) - uint256 constant PASSPORT_MRZ_GENDER_INDEX = 64; - // Index for the date of expiry (YYMMDD) - uint256 constant PASSPORT_MRZ_EXPIRY_DATE_INDEX = 65; - // Index for the date of birth (YYMMDD) in TD1 (i.e. passport) MRZ - uint256 constant PASSPORT_MRZ_BIRTHDATE_INDEX = 57; - // Index for the document number in the MRZ - uint256 constant PASSPORT_MRZ_DOCUMENT_NUMBER_INDEX = 44; - // Index for the document type in the MRZ - uint256 constant PASSPORT_MRZ_DOCUMENT_TYPE_INDEX = 0; - // Index for the name of the passport holder - uint256 constant PASSPORT_MRZ_NAME_INDEX = 5; - - // Index for the country of issuance of the ID card - uint256 constant ID_CARD_MRZ_ISSUING_COUNTRY_INDEX = 2; - // Note that the first three letter code (index 2) in the MRZ is the country of issuance - // not citizenship. It is important to keep in mind for residence permits - // where the issuing country differs from the citizenship country - uint256 constant ID_CARD_MRZ_NATIONALITY_INDEX = 45; - // Index for the gender of the passport holder (M, F or < if unspecified) - uint256 constant ID_CARD_MRZ_GENDER_INDEX = 37; - // Index for the date of expiry (YYMMDD) - uint256 constant ID_CARD_MRZ_EXPIRY_DATE_INDEX = 38; - // Index for the date of birth (YYMMDD) in TD3 (i.e. ID cards) MRZ - uint256 constant ID_CARD_MRZ_BIRTHDATE_INDEX = 30; - // Index for the document number in the MRZ - uint256 constant ID_CARD_MRZ_DOCUMENT_NUMBER_INDEX = 5; - // Index for the document type in the MRZ - uint256 constant ID_CARD_MRZ_DOCUMENT_TYPE_INDEX = 0; - // Index for the name of the passport holder - uint256 constant ID_CARD_MRZ_NAME_INDEX = 60; -} - -// Gather all the MRZ field lengths in one place -library MRZLength { - uint256 constant PASSPORT_MRZ_LENGTH = 88; - uint256 constant ID_CARD_MRZ_LENGTH = 90; - uint256 constant MRZ_MAX_LENGTH = 90; - uint256 constant PASSPORT_MRZ_ISSUING_COUNTRY_LENGTH = 3; - uint256 constant ID_CARD_MRZ_ISSUING_COUNTRY_LENGTH = 3; - uint256 constant PASSPORT_MRZ_NATIONALITY_LENGTH = 3; - uint256 constant ID_CARD_MRZ_NATIONALITY_LENGTH = 3; - uint256 constant PASSPORT_MRZ_GENDER_LENGTH = 1; - uint256 constant ID_CARD_MRZ_GENDER_LENGTH = 1; - uint256 constant PASSPORT_MRZ_BIRTHDATE_LENGTH = 6; - uint256 constant ID_CARD_MRZ_BIRTHDATE_LENGTH = 6; - uint256 constant PASSPORT_MRZ_EXPIRY_DATE_LENGTH = 6; - uint256 constant ID_CARD_MRZ_EXPIRY_DATE_LENGTH = 6; - uint256 constant PASSPORT_MRZ_DOCUMENT_NUMBER_LENGTH = 9; - uint256 constant ID_CARD_MRZ_DOCUMENT_NUMBER_LENGTH = 9; - uint256 constant PASSPORT_MRZ_DOCUMENT_TYPE_LENGTH = 2; - uint256 constant ID_CARD_MRZ_DOCUMENT_TYPE_LENGTH = 2; - uint256 constant PASSPORT_MRZ_NAME_LENGTH = 39; - uint256 constant ID_CARD_MRZ_NAME_LENGTH = 30; - uint256 constant PASSPORT_MRZ_YEAR_OF_BIRTH_LENGTH = 2; - uint256 constant ID_CARD_MRZ_YEAR_OF_BIRTH_LENGTH = 2; -} - -library AppAttest { - // ZKPassport iOS App ID hash - // Little-endian packed and poseidon2 hash of `YL5MS3Z639.app.zkpassport.zkpassport` - bytes32 constant IOS_APP_ID_HASH = 0x1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b; - // ZKPassport Android App ID hash - // Little-endian packed and poseidon2 hash of `app.zkpassport.zkpassport` - bytes32 constant ANDROID_APP_ID_HASH = 0x24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d; - // The hash of Apple's root certificate public key - bytes32 constant APPLE_ROOT_KEY_HASH = 0x2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b; - // The hash of Google's RSA root certificate public key - bytes32 constant GOOGLE_RSA_ROOT_KEY_HASH = 0x16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c211; - // The hash of Google's ECDSA (P384) root certificate public key - bytes32 constant GOOGLE_ECDSA_ROOT_KEY_HASH = 0x0e1889bec6c1d686abcf08360ff404f803ab345881ea8cba6aad33b7f7f7ffe0; - // The hash of the Android integrity public key - bytes32 constant ANDROID_INTEGRITY_PUBLIC_KEY_HASH = 0x12e3dc7cc8fec0205b51ff21825630865028f3be5bc64a6eec9ee5e71221319f; -} diff --git a/src/solidity/src/DateUtils.sol b/src/solidity/src/DateUtils.sol deleted file mode 100644 index 440812eff..000000000 --- a/src/solidity/src/DateUtils.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -/** - * @title DateUtils - * @dev Utility functions for date operations - */ -library DateUtils { - /** - * @dev Validates if a date is within a validity period - * @param timestamp The timestamp in seconds since the Unix epoch - * @param validityPeriodInSeconds The validity period in seconds - * @return True if the date is valid and within the validity period - */ - function isDateValid(uint256 timestamp, uint256 validityPeriodInSeconds) internal view returns (bool) { - uint256 validityPeriodTimestamp = timestamp + validityPeriodInSeconds; - return - block.timestamp >= timestamp && validityPeriodTimestamp > timestamp && validityPeriodTimestamp > block.timestamp; - } -} diff --git a/src/solidity/src/IProofVerifier.sol b/src/solidity/src/IProofVerifier.sol deleted file mode 100644 index f2702f8f7..000000000 --- a/src/solidity/src/IProofVerifier.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -/** - * @title IProofVerifier - * @dev Interface for a ZKPassport proof verifier - */ -interface IProofVerifier { - function verify(bytes calldata _proof, bytes32[] calldata _publicInputs) external view returns (bool); -} diff --git a/src/solidity/src/IRootRegistry.sol b/src/solidity/src/IRootRegistry.sol deleted file mode 100644 index 8976c878a..000000000 --- a/src/solidity/src/IRootRegistry.sol +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -/** - * @title IRootRegistry - * @dev Interface for the ZKPassport RootRegistry contract - */ -interface IRootRegistry { - function latestRoot(bytes32 registryId) external view returns (bytes32); - function isRootValid(bytes32 registryId, bytes32 root, uint256 timestamp) external view returns (bool); - function isRootValidAtTimestamp(bytes32 registryId, bytes32 root, uint256 timestamp) external view returns (bool); -} diff --git a/src/solidity/src/InputsExtractor.sol b/src/solidity/src/InputsExtractor.sol deleted file mode 100644 index 504afd0d7..000000000 --- a/src/solidity/src/InputsExtractor.sol +++ /dev/null @@ -1,359 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -import { - MRZIndex, - MRZLength, - CommittedInputLen, - COUNTRY_LIST_LENGTH, - BOUND_DATA_LENGTH, - TIMESTAMP_LENGTH -} from "./Constants.sol"; -import {DisclosedData, ProofType, FaceMatchMode, Environment} from "./Types.sol"; -import {BoundDataIdentifier} from "./Types.sol"; - -/** - * @title InputsExtractor - * @dev Utility functions for extracting inputs from committed inputs - */ -library InputsExtractor { - function getDisclosedData(bytes calldata discloseBytes, bool isIDCard) - public - pure - returns (DisclosedData memory disclosedData) - { - if (!isIDCard) { - disclosedData.name = string( - discloseBytes[MRZIndex.PASSPORT_MRZ_NAME_INDEX:MRZIndex.PASSPORT_MRZ_NAME_INDEX - + MRZLength.PASSPORT_MRZ_NAME_LENGTH - ] - ); - disclosedData.issuingCountry = string( - discloseBytes[MRZIndex.PASSPORT_MRZ_ISSUING_COUNTRY_INDEX:MRZIndex.PASSPORT_MRZ_ISSUING_COUNTRY_INDEX - + MRZLength.PASSPORT_MRZ_ISSUING_COUNTRY_LENGTH - ] - ); - disclosedData.nationality = string( - discloseBytes[MRZIndex.PASSPORT_MRZ_NATIONALITY_INDEX:MRZIndex.PASSPORT_MRZ_NATIONALITY_INDEX - + MRZLength.PASSPORT_MRZ_NATIONALITY_LENGTH - ] - ); - disclosedData.gender = string( - discloseBytes[MRZIndex.PASSPORT_MRZ_GENDER_INDEX:MRZIndex.PASSPORT_MRZ_GENDER_INDEX - + MRZLength.PASSPORT_MRZ_GENDER_LENGTH - ] - ); - disclosedData.birthDate = string( - discloseBytes[MRZIndex.PASSPORT_MRZ_BIRTHDATE_INDEX:MRZIndex.PASSPORT_MRZ_BIRTHDATE_INDEX - + MRZLength.PASSPORT_MRZ_BIRTHDATE_LENGTH - ] - ); - disclosedData.expiryDate = string( - discloseBytes[MRZIndex.PASSPORT_MRZ_EXPIRY_DATE_INDEX:MRZIndex.PASSPORT_MRZ_EXPIRY_DATE_INDEX - + MRZLength.PASSPORT_MRZ_EXPIRY_DATE_LENGTH - ] - ); - disclosedData.documentNumber = string( - discloseBytes[MRZIndex.PASSPORT_MRZ_DOCUMENT_NUMBER_INDEX:MRZIndex.PASSPORT_MRZ_DOCUMENT_NUMBER_INDEX - + MRZLength.PASSPORT_MRZ_DOCUMENT_NUMBER_LENGTH - ] - ); - disclosedData.documentType = string( - discloseBytes[MRZIndex.PASSPORT_MRZ_DOCUMENT_TYPE_INDEX:MRZIndex.PASSPORT_MRZ_DOCUMENT_TYPE_INDEX - + MRZLength.PASSPORT_MRZ_DOCUMENT_TYPE_LENGTH - ] - ); - } else { - disclosedData.name = string( - discloseBytes[MRZIndex.ID_CARD_MRZ_NAME_INDEX:MRZIndex.ID_CARD_MRZ_NAME_INDEX - + MRZLength.ID_CARD_MRZ_NAME_LENGTH - ] - ); - disclosedData.issuingCountry = string( - discloseBytes[MRZIndex.ID_CARD_MRZ_ISSUING_COUNTRY_INDEX:MRZIndex.ID_CARD_MRZ_ISSUING_COUNTRY_INDEX - + MRZLength.ID_CARD_MRZ_ISSUING_COUNTRY_LENGTH - ] - ); - disclosedData.nationality = string( - discloseBytes[MRZIndex.ID_CARD_MRZ_NATIONALITY_INDEX:MRZIndex.ID_CARD_MRZ_NATIONALITY_INDEX - + MRZLength.ID_CARD_MRZ_NATIONALITY_LENGTH - ] - ); - disclosedData.gender = string( - discloseBytes[MRZIndex.ID_CARD_MRZ_GENDER_INDEX:MRZIndex.ID_CARD_MRZ_GENDER_INDEX - + MRZLength.ID_CARD_MRZ_GENDER_LENGTH - ] - ); - disclosedData.birthDate = string( - discloseBytes[MRZIndex.ID_CARD_MRZ_BIRTHDATE_INDEX:MRZIndex.ID_CARD_MRZ_BIRTHDATE_INDEX - + MRZLength.ID_CARD_MRZ_BIRTHDATE_LENGTH - ] - ); - disclosedData.expiryDate = string( - discloseBytes[MRZIndex.ID_CARD_MRZ_EXPIRY_DATE_INDEX:MRZIndex.ID_CARD_MRZ_EXPIRY_DATE_INDEX - + MRZLength.ID_CARD_MRZ_EXPIRY_DATE_LENGTH - ] - ); - disclosedData.documentNumber = string( - discloseBytes[MRZIndex.ID_CARD_MRZ_DOCUMENT_NUMBER_INDEX:MRZIndex.ID_CARD_MRZ_DOCUMENT_NUMBER_INDEX - + MRZLength.ID_CARD_MRZ_DOCUMENT_NUMBER_LENGTH - ] - ); - disclosedData.documentType = string( - discloseBytes[MRZIndex.ID_CARD_MRZ_DOCUMENT_TYPE_INDEX:MRZIndex.ID_CARD_MRZ_DOCUMENT_TYPE_INDEX - + MRZLength.ID_CARD_MRZ_DOCUMENT_TYPE_LENGTH - ] - ); - } - } - - function getDiscloseProofInputs(bytes calldata committedInputs) - public - pure - returns (bytes memory discloseMask, bytes memory discloseBytes) - { - uint256 offset = 0; - uint256 foundCount = 0; - while (offset < committedInputs.length) { - ProofType proofType = ProofType(uint8(committedInputs[offset])); - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - offset += 3; - if (proofType == ProofType.DISCLOSE && length == CommittedInputLen.DISCLOSE_BYTES) { - discloseMask = committedInputs[offset:offset + MRZLength.MRZ_MAX_LENGTH]; - discloseBytes = committedInputs[offset + MRZLength.MRZ_MAX_LENGTH:offset + MRZLength.MRZ_MAX_LENGTH * 2]; - foundCount++; - } - offset += length; - } - require(foundCount > 0, "Disclose proof inputs not found"); - require(foundCount == 1, "Found multiple disclose proofs, the proof should only have one"); - } - - function getDateProofInputs(bytes calldata committedInputs, ProofType proofType) - public - pure - returns (uint256 minDate, uint256 maxDate) - { - uint256 offset = 0; - uint256 foundCount = 0; - while (offset < committedInputs.length) { - ProofType retrievedProofType = ProofType(uint8(committedInputs[offset])); - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - offset += 3; - if (proofType == retrievedProofType && length == CommittedInputLen.COMPARE_EXPIRY) { - // Get rid of the padding 0s bytes as the timestamp is contained within the first 64 bits - // i.e. 256 - 64 = 192 - minDate = uint256(bytes32(committedInputs[offset:offset + TIMESTAMP_LENGTH])) >> 192; - maxDate = uint256(bytes32(committedInputs[offset + TIMESTAMP_LENGTH:offset + TIMESTAMP_LENGTH * 2])) >> 192; - foundCount++; - } - offset += length; - } - if (proofType == ProofType.BIRTHDATE) { - require(foundCount > 0, "Compare birthdate proof inputs not found"); - require(foundCount == 1, "Found multiple compare birthdate proofs, the proof should only have one"); - } else { - require(foundCount > 0, "Compare expiry date proof inputs not found"); - require(foundCount == 1, "Found multiple compare expiry date proofs, the proof should only have one"); - } - } - - function getAgeProofInputs(bytes calldata committedInputs) public pure returns (uint8 minAge, uint8 maxAge) { - uint256 offset = 0; - uint256 foundCount = 0; - while (offset < committedInputs.length) { - ProofType retrievedProofType = ProofType(uint8(committedInputs[offset])); - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - offset += 3; - if (retrievedProofType == ProofType.AGE && length == CommittedInputLen.COMPARE_AGE) { - minAge = uint8(committedInputs[offset]); - maxAge = uint8(committedInputs[offset + 1]); - foundCount++; - } - offset += length; - } - require(foundCount > 0, "Compare age proof inputs not found"); - require(foundCount == 1, "Found multiple compare age proofs, the proof should only have one"); - } - - function getCountryListLength(bytes calldata committedInputs, ProofType proofType) - public - pure - returns (uint256 countryListLength) - { - uint256 offset = 0; - while (offset < committedInputs.length) { - ProofType retrievedProofType = ProofType(uint8(committedInputs[offset])); - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - offset += 3; - if (proofType == retrievedProofType && length == CommittedInputLen.INCL_NATIONALITY) { - for (uint256 j = 0; j < COUNTRY_LIST_LENGTH; j++) { - // The circuit constrains that once we've reached the first `0`, - // we won't encounter any further nonzero values. - // We don't need to include the padding bytes - if (committedInputs[offset] == 0) return j; - offset += 3; - } - offset += length - COUNTRY_LIST_LENGTH * 3; - } else { - offset += length; - } - } - } - - function getCountryProofInputs(bytes calldata committedInputs, ProofType proofType) - public - pure - returns (string[] memory countryList, uint256 countryListLength) - { - require( - proofType == ProofType.NATIONALITY_INCLUSION || proofType == ProofType.ISSUING_COUNTRY_INCLUSION - || proofType == ProofType.NATIONALITY_EXCLUSION || proofType == ProofType.ISSUING_COUNTRY_EXCLUSION, - "Invalid proof type" - ); - uint256 offset = 0; - uint256 foundCount = 0; - countryListLength = getCountryListLength(committedInputs, proofType); - countryList = new string[](countryListLength); - while (offset < committedInputs.length) { - ProofType retrievedProofType = ProofType(uint8(committedInputs[offset])); - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - offset += 3; - if (proofType == retrievedProofType && length == CommittedInputLen.INCL_NATIONALITY) { - for (uint256 j = 0; j < countryListLength; j++) { - countryList[j] = string(committedInputs[offset:offset + 3]); - offset += 3; - } - offset += length - countryListLength * 3; - foundCount++; - } else { - offset += length; - } - } - if (proofType == ProofType.ISSUING_COUNTRY_INCLUSION) { - require(foundCount > 0, "Inclusion country proof inputs not found"); - require(foundCount == 1, "Found multiple inclusion country proofs, the proof should only have one"); - } else if (proofType == ProofType.ISSUING_COUNTRY_EXCLUSION) { - require(foundCount > 0, "Exclusion country proof inputs not found"); - require(foundCount == 1, "Found multiple exclusion country proofs, the proof should only have one"); - } else if (proofType == ProofType.NATIONALITY_INCLUSION) { - require(foundCount > 0, "Inclusion nationality proof inputs not found"); - require(foundCount == 1, "Found multiple inclusion nationality proofs, the proof should only have one"); - } else if (proofType == ProofType.NATIONALITY_EXCLUSION) { - require(foundCount > 0, "Exclusion nationality proof inputs not found"); - require(foundCount == 1, "Found multiple exclusion nationality proofs, the proof should only have one"); - } - } - - function getBindProofInputs(bytes calldata committedInputs) public pure returns (bytes memory data) { - uint256 offset = 0; - uint256 foundCount = 0; - while (offset < committedInputs.length) { - ProofType retrievedProofType = ProofType(uint8(committedInputs[offset])); - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - offset += 3; - if (retrievedProofType == ProofType.BIND && length == CommittedInputLen.BIND) { - data = committedInputs[offset:offset + BOUND_DATA_LENGTH]; - foundCount++; - } - offset += length; - } - require(foundCount > 0, "Bind data proof inputs not found"); - require(foundCount == 1, "Found multiple bind data proofs, the proof should only have one"); - } - - function getSanctionsProofInputs(bytes calldata committedInputs) - public - pure - returns (bytes32 sanctionsTreesCommitment, bool isStrict) - { - uint256 offset = 0; - uint256 foundCount = 0; - while (offset < committedInputs.length) { - ProofType retrievedProofType = ProofType(uint8(committedInputs[offset])); - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - offset += 3; - if (retrievedProofType == ProofType.SANCTIONS && length == CommittedInputLen.SANCTIONS) { - sanctionsTreesCommitment = bytes32(committedInputs[offset:offset + 32]); - isStrict = uint8(committedInputs[offset + 32]) == 1; - foundCount++; - } - offset += length; - } - require(foundCount > 0, "Sanctions proof inputs not found"); - require(foundCount == 1, "Found multiple sanctions proofs, the proof should only have one"); - } - - function getBoundData(bytes calldata data) - public - pure - returns (address senderAddress, uint256 chainId, string memory customData) - { - uint256 offset = 0; - while (offset < BOUND_DATA_LENGTH) { - if (data[offset] == bytes1(uint8(BoundDataIdentifier.USER_ADDRESS))) { - uint16 addressLength = uint16(bytes2(data[offset + 1:offset + 3])); - senderAddress = address(bytes20(data[offset + 3:offset + 3 + addressLength])); - offset += 2 + addressLength + 1; - } else if (data[offset] == bytes1(uint8(BoundDataIdentifier.CHAIN_ID))) { - uint16 chainIdLength = uint16(bytes2(data[offset + 1:offset + 3])); - require(chainIdLength <= 32, "Chain id length too long"); - // bytes32 right pads while we want to left pad - // so we shift the bytes to the right by 256 - (chainIdLength * 8) - chainId = uint256(bytes32(data[offset + 3:offset + 3 + chainIdLength]) >> (256 - (chainIdLength * 8))); - offset += 2 + chainIdLength + 1; - } else if (data[offset] == bytes1(uint8(BoundDataIdentifier.CUSTOM_DATA))) { - uint16 customDataLength = uint16(bytes2(data[offset + 1:offset + 3])); - customData = string(data[offset + 3:offset + 3 + customDataLength]); - offset += 2 + customDataLength + 1; - } else { - // Check that the data length is valid - require(offset > 0 && offset <= BOUND_DATA_LENGTH, "Invalid data length"); - // Check that the padding is valid - for (uint256 i = offset; i < BOUND_DATA_LENGTH; i++) { - require(data[i] == 0, "Invalid padding"); - } - break; - } - } - } - - function getFacematchProofInputs(bytes calldata committedInputs) - public - pure - returns ( - bytes32 rootKeyHash, - Environment environment, - bytes32 appIdHash, - bytes32 integrityPublicKeyHash, - FaceMatchMode facematchMode - ) - { - uint256 offset = 0; - uint256 foundCount = 0; - while (offset < committedInputs.length) { - ProofType retrievedProofType = ProofType(uint8(committedInputs[offset])); - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - offset += 3; - if (retrievedProofType == ProofType.FACEMATCH && length == CommittedInputLen.FACEMATCH) { - rootKeyHash = bytes32(committedInputs[offset:offset + 32]); - environment = Environment(uint8(committedInputs[offset + 32])); - appIdHash = bytes32(committedInputs[offset + 33:offset + 65]); - integrityPublicKeyHash = bytes32(committedInputs[offset + 65:offset + 97]); - facematchMode = FaceMatchMode(uint8(committedInputs[offset + 97])); - foundCount++; - } - offset += length; - } - require(foundCount > 0, "Facematch proof inputs not found"); - require(foundCount == 1, "Found multiple facematch proofs, the proof should only have one"); - } -} diff --git a/src/solidity/src/SampleContract.sol b/src/solidity/src/SampleContract.sol index 71747e84b..8d1177e40 100644 --- a/src/solidity/src/SampleContract.sol +++ b/src/solidity/src/SampleContract.sol @@ -9,13 +9,13 @@ pragma solidity ^0.8.30; -import {ZKPassportRootVerifier} from "./ZKPassportRootVerifier.sol"; -import {ZKPassportHelper} from "./ZKPassportHelper.sol"; -import {DisclosedData, ProofVerificationParams} from "./Types.sol"; +import {RootVerifier} from "@zkpassport/registry-contracts/RootVerifier.sol"; +import {VerifierHelper} from "@zkpassport/registry-contracts/VerifierHelper.sol"; +import {DisclosedData, ProofVerificationParams} from "@zkpassport/registry-contracts/lib/Types.sol"; contract SampleContract { // ZKPassport Verifier contract - ZKPassportRootVerifier public zkPassportVerifier; + RootVerifier public zkPassportVerifier; // Unique identifier => whether it was verified or not mapping(bytes32 => bool) public isVerified; @@ -32,11 +32,6 @@ contract SampleContract { // Replace with your usage scope (e.g. "registration") string internal constant validScope = "bigproof"; - // Set to a non-zero value to require proofs to be generated with a specific - // custom OPRF key (whose public key hashes to this value). Leave as bytes32(0) - // to fall back to the root verifier's `defaultOprfPubKeyHash()`. - bytes32 internal constant customOprfPubKeyHash = bytes32(0); - // Errors error InvalidProof(); error InvalidScope(); @@ -68,7 +63,7 @@ contract SampleContract { // Pass the address of the ZKPassport Root Verifier constructor(address _zkPassportVerifier) { require(_zkPassportVerifier != address(0), "ZKPassport Root Verifier cannot be zero address"); - zkPassportVerifier = ZKPassportRootVerifier(_zkPassportVerifier); + zkPassportVerifier = RootVerifier(_zkPassportVerifier); } /** @@ -86,25 +81,13 @@ contract SampleContract { ) public returns (bytes32) { // Verify the proof - (bool verified, bytes32 uniqueIdentifier, ZKPassportHelper helper) = zkPassportVerifier.verify(params); + (bool verified, bytes32 uniqueIdentifier, VerifierHelper helper) = zkPassportVerifier.verify(params); require(verified, "Proof is invalid"); require(!isVerified[uniqueIdentifier], "User already verified"); // Verify the proof was generated for the correct domain name require(helper.verifyScopes(params.proofVerificationData.publicInputs, validDomain, validScope), "Invalid domain or scope"); - // If the proof uses a salted (OPRF-derived) nullifier, verify the OPRF public key hash. - // Apps with their own OPRF key set `customOprfPubKeyHash` to the hash of their key. - // Otherwise we fall back to the global default published by the root verifier. - if (helper.isSaltedNullifier(params.proofVerificationData.publicInputs)) { - bytes32 expectedOprfPubKeyHash = - customOprfPubKeyHash != bytes32(0) ? customOprfPubKeyHash : zkPassportVerifier.defaultOprfPubKeyHash(); - require( - helper.verifyOprfPubKeyHash(params.proofVerificationData.publicInputs, expectedOprfPubKeyHash), - "Invalid OPRF public key" - ); - } - // Verify the age is above or equal to the minimum age require(helper.isAgeAboveOrEqual(MIN_AGE, params.committedInputs), "Age is not 18+"); diff --git a/src/solidity/src/StringUtils.sol b/src/solidity/src/StringUtils.sol deleted file mode 100644 index e1c2bbbf9..000000000 --- a/src/solidity/src/StringUtils.sol +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -library StringUtils { - function equals(string memory a, string memory b) internal pure returns (bool) { - return keccak256(bytes(a)) == keccak256(bytes(b)); - } - - function isEmpty(string memory a) internal pure returns (bool) { - return bytes(a).length == 0; - } -} diff --git a/src/solidity/src/Types.sol b/src/solidity/src/Types.sol deleted file mode 100644 index 2c6655997..000000000 --- a/src/solidity/src/Types.sol +++ /dev/null @@ -1,125 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -struct ProofVerifier { - bytes32 vkeyHash; - address verifier; -} - -enum ProofType { - DISCLOSE, - AGE, - BIRTHDATE, - EXPIRY_DATE, - NATIONALITY_INCLUSION, - NATIONALITY_EXCLUSION, - ISSUING_COUNTRY_INCLUSION, - ISSUING_COUNTRY_EXCLUSION, - BIND, - SANCTIONS, - FACEMATCH -} - -enum BoundDataIdentifier { - NONE, - USER_ADDRESS, - CHAIN_ID, - CUSTOM_DATA -} - -enum FaceMatchMode { - NONE, - REGULAR, - STRICT -} - -enum Environment { - DEVELOPMENT, - PRODUCTION -} - -enum NullifierType { - NON_SALTED_NULLIFIER, - SALTED_NULLIFIER, - NON_SALTED_MOCK_NULLIFIER, - SALTED_MOCK_NULLIFIER -} - -enum OS { - ANY, - IOS, - ANDROID -} - -// ProofVerificationParams -// │ -// ├── bytes32 version // Version identifier of the verifier -// │ -// ├── ProofVerificationData proofVerificationData -// │ ├── bytes32 vkeyHash // Verification key hash -// │ ├── bytes proof // The actual ZK proof -// │ └── bytes32[] publicInputs // Array of public inputs (7+ elements) -// │ │ // Use PublicInputsCast.asStruct() for structured access: -// │ ├── [0] certificate_registry_root // Field - struct.certificateRegistryRoot -// │ │ // v1: H(packed(schema_version || timestamp), state_root) -// │ │ // state_root = H(cert_tree_root, revocation_tree_root, masterlist_tree_root) -// │ ├── [1] circuit_registry_root // Field - struct.circuitRegistryRoot -// │ ├── [2] current_date // u64 - PublicInputsCast.getCurrentDate(struct) -// │ ├── [3] service_scope // Field - struct.serviceScope -// │ ├── [4] service_subscope // Field - struct.serviceSubscope -// │ ├── [5:5+N] param_commitments // Field[N] - PublicInputsCast.getParamCommitment(array, index) -// │ ├── [5+N] nullifier_type // u8 - PublicInputsCast.getNullifierType(array, paramCount) -// │ ├── [6+N] scoped_nullifier // Field - PublicInputsCast.getScopedNullifier(array, paramCount) -// │ └── [7+N] oprf_pk_hash // Field - Hash of the OPRF public key (0 if non-salted) -// │ -// ├── bytes committedInputs // Preimages of param_commitments -// │ -// └── ServiceConfig serviceConfig -// ├── uint256 validityPeriodInSeconds // How long the proof is valid -// ├── string domain // Service domain -// ├── string scope // Service scope -// └── bool devMode // Development mode flag -struct ProofVerificationParams { - bytes32 version; - ProofVerificationData proofVerificationData; - bytes committedInputs; - ServiceConfig serviceConfig; -} - -struct ProofVerificationData { - bytes32 vkeyHash; - bytes proof; - bytes32[] publicInputs; -} - -struct ServiceConfig { - uint256 validityPeriodInSeconds; - string domain; - string scope; - bool devMode; -} - -struct DisclosedData { - string name; - string issuingCountry; - string nationality; - string gender; - string birthDate; - string expiryDate; - string documentNumber; - string documentType; -} - -struct BoundData { - address senderAddress; - uint256 chainId; - string customData; -} diff --git a/src/solidity/src/ZKPassportHelper.sol b/src/solidity/src/ZKPassportHelper.sol deleted file mode 100644 index 3b0edd7a8..000000000 --- a/src/solidity/src/ZKPassportHelper.sol +++ /dev/null @@ -1,524 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -import {IRootRegistry} from "./IRootRegistry.sol"; -import {DateUtils} from "./DateUtils.sol"; -import {StringUtils} from "./StringUtils.sol"; -import {InputsExtractor} from "./InputsExtractor.sol"; -import {SECONDS_BETWEEN_1900_AND_1970, PublicInput, AppAttest, RegistryID} from "./Constants.sol"; -import {ProofType, DisclosedData, BoundData, FaceMatchMode, Environment, OS, NullifierType} from "./Types.sol"; - -contract ZKPassportHelper { - IRootRegistry public immutable rootRegistry; - - constructor(IRootRegistry _rootRegistry) { - require(address(_rootRegistry) != address(0), "Root registry cannot be zero address"); - rootRegistry = _rootRegistry; - } - - /** - * @notice Gets the data disclosed by the proof - * @param committedInputs The committed inputs - * @param isIDCard Whether the proof is an ID card - * @return disclosedData The data disclosed by the proof - */ - function getDisclosedData(bytes calldata committedInputs, bool isIDCard) - external - pure - returns (DisclosedData memory disclosedData) - { - (, bytes memory discloseBytes) = InputsExtractor.getDiscloseProofInputs(committedInputs); - disclosedData = InputsExtractor.getDisclosedData(discloseBytes, isIDCard); - } - - /** - * @notice Checks if the age is above or equal to the given age - * @param minAge The age must be above or equal to this age - * @param committedInputs The committed inputs - * @return True if the age is above or equal to the given age, false otherwise - */ - function isAgeAboveOrEqual(uint8 minAge, bytes calldata committedInputs) public pure returns (bool) { - (uint8 min, uint8 max) = InputsExtractor.getAgeProofInputs(committedInputs); - require(max == 0, "The proof upper bound must be 0, please use isAgeBetween instead"); - return minAge == min; - } - - /** - * @notice Checks if the age is above the given age - * @param minAge The age must be above this age - * @param committedInputs The committed inputs - * @return True if the age is above the given age, false otherwise - */ - function isAgeAbove(uint8 minAge, bytes calldata committedInputs) public pure returns (bool) { - return isAgeAboveOrEqual(minAge + 1, committedInputs); - } - - /** - * @notice Checks if the age is in the given range - * @param minAge The age must be greater than or equal to this age - * @param maxAge The age must be less than or equal to this age - * @param committedInputs The committed inputs - * @return True if the age is in the given range, false otherwise - */ - function isAgeBetween(uint8 minAge, uint8 maxAge, bytes calldata committedInputs) public pure returns (bool) { - (uint8 min, uint8 max) = InputsExtractor.getAgeProofInputs(committedInputs); - require(minAge <= maxAge, "Min age must be less than or equal to max age"); - require(min != 0, "The proof lower bound must be non-zero, please use isAgeBelowOrEqual instead"); - require(max != 0, "The proof upper bound must be non-zero, please use isAgeAboveOrEqual instead"); - return minAge == min && maxAge == max; - } - - /** - * @notice Checks if the age is below or equal to the given age - * @param maxAge The age must be below or equal to this age - * @param committedInputs The committed inputs - * @return True if the age is below or equal to the given age, false otherwise - */ - function isAgeBelowOrEqual(uint8 maxAge, bytes calldata committedInputs) public pure returns (bool) { - (uint8 min, uint8 max) = InputsExtractor.getAgeProofInputs(committedInputs); - require(min == 0, "The proof lower bound must be 0, please use isAgeBetween instead"); - return maxAge == max; - } - - /** - * @notice Checks if the age is below the given age - * @param maxAge The age must be below this age - * @param committedInputs The committed inputs - * @return True if the age is below the given age, false otherwise - */ - function isAgeBelow(uint8 maxAge, bytes calldata committedInputs) public pure returns (bool) { - require(maxAge > 0, "Max age must be greater than 0"); - return isAgeBelowOrEqual(maxAge - 1, committedInputs); - } - - /** - * @notice Checks if the age is equal to the given age - * @param age The age must be equal to this age - * @param committedInputs The committed inputs - * @return True if the age is equal to the given age, false otherwise - */ - function isAgeEqual(uint8 age, bytes calldata committedInputs) public pure returns (bool) { - return isAgeBetween(age, age, committedInputs); - } - - function _isDateAfterOrEqual(uint256 minDate, ProofType proofType, bytes calldata committedInputs) - private - pure - returns (bool) - { - (uint256 min, uint256 max) = InputsExtractor.getDateProofInputs(committedInputs, proofType); - require(proofType == ProofType.BIRTHDATE || proofType == ProofType.EXPIRY_DATE, "Invalid proof type"); - if (proofType == ProofType.BIRTHDATE) { - require(max == 0, "The proof upper bound must be 0, please use isBirthdateBetween instead"); - // Birthdate comparison dates use 1900 as the starting epoch so the proof can take in value - // prior to 1970, so we need to subtract the difference between 1900 and 1970 (starting UNIX epoch) - return minDate == min - SECONDS_BETWEEN_1900_AND_1970; - } else { - require(max == 0, "The proof upper bound must be 0, please use isExpiryDateBetween instead"); - return minDate == min; - } - } - - function _isDateBetween(uint256 minDate, uint256 maxDate, ProofType proofType, bytes calldata committedInputs) - private - pure - returns (bool) - { - (uint256 min, uint256 max) = InputsExtractor.getDateProofInputs(committedInputs, proofType); - require(minDate <= maxDate, "Min date must be less than or equal to max date"); - require(proofType == ProofType.BIRTHDATE || proofType == ProofType.EXPIRY_DATE, "Invalid proof type"); - if (proofType == ProofType.BIRTHDATE) { - require(min != 0, "The proof lower bound must be non-zero, please use isBirthdateBelowOrEqual instead"); - require(max != 0, "The proof upper bound must be non-zero, please use isBirthdateAboveOrEqual instead"); - // Birthdate comparison dates use 1900 as the starting epoch so the proof can take in values - // prior to 1970, so we need to subtract the difference between 1900 and 1970 (starting UNIX epoch) - return minDate == min - SECONDS_BETWEEN_1900_AND_1970 && maxDate == max - SECONDS_BETWEEN_1900_AND_1970; - } else { - require(min != 0, "The proof lower bound must be non-zero, please use isExpiryDateBelowOrEqual instead"); - require(max != 0, "The proof upper bound must be non-zero, please use isExpiryDateAboveOrEqual instead"); - return minDate == min && maxDate == max; - } - } - - function _isDateBeforeOrEqual(uint256 maxDate, ProofType proofType, bytes calldata committedInputs) - private - pure - returns (bool) - { - (uint256 min, uint256 max) = InputsExtractor.getDateProofInputs(committedInputs, proofType); - require(min == 0, "The proof lower bound must be 0, please use _isDateBetween instead"); - require(proofType == ProofType.BIRTHDATE || proofType == ProofType.EXPIRY_DATE, "Invalid proof type"); - if (proofType == ProofType.BIRTHDATE) { - require(max != 0, "The proof upper bound must be non-zero, please use isBirthdateAboveOrEqual instead"); - // Birthdate comparison dates use 1900 as the starting epoch so the proof can take in value - // prior to 1970, so we need to subtract the difference between 1900 and 1970 (starting UNIX epoch) - return maxDate == max - SECONDS_BETWEEN_1900_AND_1970; - } else { - require(max != 0, "The proof upper bound must be non-zero, please use isExpiryDateAboveOrEqual instead"); - return maxDate == max; - } - } - - /** - * @notice Checks if the birthdate is after or equal to the given date - * @param minDate The birthdate must be after or equal to this date - * @param committedInputs The committed inputs - * @return True if the birthdate is after or equal to the given date, false otherwise - */ - function isBirthdateAfterOrEqual(uint256 minDate, bytes calldata committedInputs) public pure returns (bool) { - return _isDateAfterOrEqual(minDate, ProofType.BIRTHDATE, committedInputs); - } - - /** - * @notice Checks if the birthdate is after the given date - * @param minDate The birthdate must be after this date - * @param committedInputs The committed inputs - * @return True if the birthdate is after the given date, false otherwise - */ - function isBirthdateAfter(uint256 minDate, bytes calldata committedInputs) public pure returns (bool) { - return _isDateAfterOrEqual(minDate + 1 days, ProofType.BIRTHDATE, committedInputs); - } - - /** - * @notice Checks if the birthdate is between the given dates - * @param minDate The birthdate must be after or equal to this date - * @param maxDate The birthdate must be before or equal to this date - * @param committedInputs The committed inputs - * @return True if the birthdate is between the given dates, false otherwise - */ - function isBirthdateBetween(uint256 minDate, uint256 maxDate, bytes calldata committedInputs) - public - pure - returns (bool) - { - return _isDateBetween(minDate, maxDate, ProofType.BIRTHDATE, committedInputs); - } - - /** - * @notice Checks if the birthdate is before or equal to the given date - * @param maxDate The birthdate must be before or equal to this date - * @param committedInputs The committed inputs - * @return True if the birthdate is before or equal to the given date, false otherwise - */ - function isBirthdateBeforeOrEqual(uint256 maxDate, bytes calldata committedInputs) public pure returns (bool) { - return _isDateBeforeOrEqual(maxDate, ProofType.BIRTHDATE, committedInputs); - } - - /** - * @notice Checks if the birthdate is before the given date - * @param maxDate The birthdate must be before this date - * @param committedInputs The committed inputs - * @return True if the birthdate is before the given date, false otherwise - */ - function isBirthdateBefore(uint256 maxDate, bytes calldata committedInputs) public pure returns (bool) { - return _isDateBeforeOrEqual(maxDate - 1 days, ProofType.BIRTHDATE, committedInputs); - } - - /** - * @notice Checks if the birthdate is equal to the given date - * @param date The birthdate must be equal to this date - * @param committedInputs The committed inputs - * @return True if the birthdate is equal to the given date, false otherwise - */ - function isBirthdateEqual(uint256 date, bytes calldata committedInputs) public pure returns (bool) { - return _isDateBetween(date, date, ProofType.BIRTHDATE, committedInputs); - } - - /** - * @notice Checks if the expiry date is after or equal to the given date - * @param minDate The expiry date must be after or equal to this date - * @param committedInputs The committed inputs - * @return True if the expiry date is after or equal to the given date, false otherwise - */ - function isExpiryDateAfterOrEqual(uint256 minDate, bytes calldata committedInputs) public pure returns (bool) { - return _isDateAfterOrEqual(minDate, ProofType.EXPIRY_DATE, committedInputs); - } - - /** - * @notice Checks if the expiry date is after the given date - * @param minDate The expiry date must be after this date - * @param committedInputs The committed inputs - * @return True if the expiry date is after the given date, false otherwise - */ - function isExpiryDateAfter(uint256 minDate, bytes calldata committedInputs) public pure returns (bool) { - return _isDateAfterOrEqual(minDate + 1 days, ProofType.EXPIRY_DATE, committedInputs); - } - - /** - * @notice Checks if the expiry date is between the given dates - * @param minDate The expiry date must be after or equal to this date - * @param maxDate The expiry date must be before or equal to this date - * @param committedInputs The committed inputs - * @return True if the expiry date is between the given dates, false otherwise - */ - function isExpiryDateBetween(uint256 minDate, uint256 maxDate, bytes calldata committedInputs) - public - pure - returns (bool) - { - return _isDateBetween(minDate, maxDate, ProofType.EXPIRY_DATE, committedInputs); - } - - /** - * @notice Checks if the expiry date is before or equal to the given date - * @param maxDate The expiry date must be before or equal to this date - * @param committedInputs The committed inputs - * @return True if the expiry date is before or equal to the given date, false otherwise - */ - function isExpiryDateBeforeOrEqual(uint256 maxDate, bytes calldata committedInputs) public pure returns (bool) { - return _isDateBeforeOrEqual(maxDate, ProofType.EXPIRY_DATE, committedInputs); - } - - /** - * @notice Checks if the expiry date is before the given date - * @param maxDate The expiry date must be before this date - * @param committedInputs The committed inputs - * @return True if the expiry date is before the given date, false otherwise - */ - function isExpiryDateBefore(uint256 maxDate, bytes calldata committedInputs) public pure returns (bool) { - return _isDateBeforeOrEqual(maxDate - 1 days, ProofType.EXPIRY_DATE, committedInputs); - } - - /** - * @notice Checks if the expiry date is equal to the given date - * @param date The expiry date must be equal to this date - * @param committedInputs The committed inputs - * @return True if the expiry date is equal to the given date, false otherwise - */ - function isExpiryDateEqual(uint256 date, bytes calldata committedInputs) public pure returns (bool) { - return _isDateBetween(date, date, ProofType.EXPIRY_DATE, committedInputs); - } - - function isCountryInOrOut(string[] memory countryList, ProofType proofType, bytes calldata committedInputs) - private - pure - returns (bool) - { - (string[] memory inputCountryList, uint256 inputCountryListLength) = - InputsExtractor.getCountryProofInputs(committedInputs, proofType); - if (countryList.length != inputCountryListLength) { - return false; - } - for (uint256 i = 0; i < inputCountryListLength; i++) { - if (!StringUtils.equals(countryList[i], inputCountryList[i])) { - return false; - } - } - return true; - } - - /** - * @notice Checks if the nationality is in the list of countries - * @param countryList The list of countries (needs to match exactly the list of countries in the proof) - * @param committedInputs The committed inputs - * @return True if the nationality is in the list of countries, false otherwise - */ - function isNationalityIn(string[] memory countryList, bytes calldata committedInputs) external pure returns (bool) { - return isCountryInOrOut(countryList, ProofType.NATIONALITY_INCLUSION, committedInputs); - } - - /** - * @notice Checks if the issuing country is in the list of countries - * @param countryList The list of countries (needs to match exactly the list of countries in the proof) - * @param committedInputs The committed inputs - * @return True if the issuing country is in the list of countries, false otherwise - */ - function isIssuingCountryIn(string[] memory countryList, bytes calldata committedInputs) - external - pure - returns (bool) - { - return isCountryInOrOut(countryList, ProofType.ISSUING_COUNTRY_INCLUSION, committedInputs); - } - - /** - * @notice Checks if the nationality is not in the list of countries - * @param countryList The list of countries (needs to match exactly the list of countries in the proof) - * Note: The list of countries must be sorted in alphabetical order - * @param committedInputs The committed inputs - * @return True if the nationality is not in the list of countries, false otherwise - */ - function isNationalityOut(string[] memory countryList, bytes calldata committedInputs) external pure returns (bool) { - return isCountryInOrOut(countryList, ProofType.NATIONALITY_EXCLUSION, committedInputs); - } - - /** - * @notice Checks if the issuing country is not in the list of countries - * @param countryList The list of countries (needs to match exactly the list of countries in the proof) - * Note: The list of countries must be sorted in alphabetical order - * @param committedInputs The committed inputs - * @return True if the issuing country is not in the list of countries, false otherwise - */ - function isIssuingCountryOut(string[] memory countryList, bytes calldata committedInputs) - external - pure - returns (bool) - { - return isCountryInOrOut(countryList, ProofType.ISSUING_COUNTRY_EXCLUSION, committedInputs); - } - - /** - * @notice Gets the data bound to the proof - * @param committedInputs The committed inputs - * @return boundData The data bound to the proof - */ - function getBoundData(bytes calldata committedInputs) external pure returns (BoundData memory boundData) { - bytes memory data = InputsExtractor.getBindProofInputs(committedInputs); - (boundData.senderAddress, boundData.chainId, boundData.customData) = InputsExtractor.getBoundData(data); - } - - /** - * @notice Checks if the sanctions root is valid against the expected sanction list(s) - * @param currentTimestamp The current timestamp (preferably from the proof rather than the block timestamp). - * This is used to check the validity of the sanctions root at that specific time. - * @param isStrict Whether the sanctions check was strict or not - * @param committedInputs The committed inputs - * @return True if the sanctions root is valid against the expected sanction list(s), false otherwise - */ - function isSanctionsRootValid(uint256 currentTimestamp, bool isStrict, bytes calldata committedInputs) - external - view - returns (bool) - { - return _isSanctionsRootValid(currentTimestamp, isStrict, committedInputs); - } - - function _isSanctionsRootValid(uint256 currentTimestamp, bool isStrict, bytes calldata committedInputs) - internal - view - returns (bool) - { - (bytes32 proofSanctionsRoot, bool retrievedIsStrict) = InputsExtractor.getSanctionsProofInputs(committedInputs); - require(isStrict == retrievedIsStrict, "Invalid sanctions check mode"); - return rootRegistry.isRootValid(RegistryID.SANCTIONS, proofSanctionsRoot, currentTimestamp); - } - - /** - * @notice Enforces that the proof checks against the expected sanction list(s) - * @param currentTimestamp The current timestamp (preferably from the proof rather than the block timestamp). - * This is used to check the validity of the sanctions root at that specific time. - * @param isStrict Whether the sanctions check was strict or not - * @param committedInputs The committed inputs - */ - function enforceSanctionsRoot(uint256 currentTimestamp, bool isStrict, bytes calldata committedInputs) external view { - bool isValid = _isSanctionsRootValid(currentTimestamp, isStrict, committedInputs); - require(isValid, "Invalid sanctions registry root"); - } - - /** - * @notice Checks if the proof is tied to a FaceMatch verification - * @param faceMatchMode The FaceMatch mode expected to be used in the verification - * @param os The operating system on which the proof should have been generated (Any (0), iOS (1), Android (2)) - * @param committedInputs The committed inputs - * @return True if the proof is tied to a valid FaceMatch verification, false otherwise - */ - function isFaceMatchVerified(FaceMatchMode faceMatchMode, OS os, bytes calldata committedInputs) - external - pure - returns (bool) - { - ( - bytes32 rootKeyHash, - Environment environment, - bytes32 appIdHash, - bytes32 integrityPublicKeyHash, - FaceMatchMode retrievedFaceMatchMode - ) = InputsExtractor.getFacematchProofInputs(committedInputs); - bool isProduction = environment == Environment.PRODUCTION; - bool isCorrectMode = retrievedFaceMatchMode == faceMatchMode; - bool isCorrectRootKeyHash = (rootKeyHash == AppAttest.APPLE_ROOT_KEY_HASH && (os == OS.IOS || os == OS.ANY)) - || ((rootKeyHash == AppAttest.GOOGLE_RSA_ROOT_KEY_HASH || rootKeyHash == AppAttest.GOOGLE_ECDSA_ROOT_KEY_HASH) - && (os == OS.ANDROID || os == OS.ANY)); - bool isCorrectAppIdHash = (appIdHash == AppAttest.IOS_APP_ID_HASH && (os == OS.IOS || os == OS.ANY)) - || (appIdHash == AppAttest.ANDROID_APP_ID_HASH && (os == OS.ANDROID || os == OS.ANY)); - // The integrity public key hash is 0 for iOS as it's logic specific to Android - bool isCorrectIntegrityPublicKeyHash = (integrityPublicKeyHash == bytes32(0) && (os == OS.IOS || os == OS.ANY)) - || (integrityPublicKeyHash == AppAttest.ANDROID_INTEGRITY_PUBLIC_KEY_HASH && (os == OS.ANDROID || os == OS.ANY)); - return - isProduction && isCorrectMode && isCorrectRootKeyHash && isCorrectAppIdHash && isCorrectIntegrityPublicKeyHash; - } - - /** - * @notice Gets the timestamp the proof was generated at - * @param publicInputs The public inputs of the proof - * @return The timestamp the proof was generated at - */ - function getProofTimestamp(bytes32[] calldata publicInputs) external pure returns (uint256) { - return uint256(publicInputs[PublicInput.CURRENT_DATE_INDEX]); - } - - /** - * @notice Verifies that the proof was generated for the given scope (domain) and subscope (service scope) - * @param publicInputs The public inputs of the proof - * @param scope The scope (domain) to check against - * @param subscope The subscope (service scope) to check against - * @return True if valid, false otherwise - */ - function verifyScopes(bytes32[] calldata publicInputs, string calldata scope, string calldata subscope) - external - pure - returns (bool) - { - // One byte is dropped at the end - // What we call scope internally is derived from the domain - bytes32 scopeHash = StringUtils.isEmpty(scope) ? bytes32(0) : sha256(abi.encodePacked(scope)) >> 8; - // What we call the subscope internally is the service scope specified manually in the SDK - bytes32 subscopeHash = StringUtils.isEmpty(subscope) ? bytes32(0) : sha256(abi.encodePacked(subscope)) >> 8; - return - publicInputs[PublicInput.SCOPE_INDEX] == scopeHash && publicInputs[PublicInput.SUBSCOPE_INDEX] == subscopeHash; - } - - /** - * @notice Reads the nullifier type from the proof's public inputs - * @param publicInputs The public inputs of the proof - * @return The nullifier type - */ - function getNullifierType(bytes32[] calldata publicInputs) public pure returns (NullifierType) { - return NullifierType(uint256(publicInputs[publicInputs.length - 3])); - } - - /** - * @notice Returns true if the proof uses a salted (OPRF-derived) nullifier - * @param publicInputs The public inputs of the proof - * @return True if SALTED_NULLIFIER or SALTED_MOCK_NULLIFIER - */ - function isSaltedNullifier(bytes32[] calldata publicInputs) external pure returns (bool) { - NullifierType t = getNullifierType(publicInputs); - return t == NullifierType.SALTED_NULLIFIER || t == NullifierType.SALTED_MOCK_NULLIFIER; - } - - /** - * @notice Extracts the OPRF public key hash that was used to derive the salted nullifier - * @dev Returns bytes32(0) for non-salted nullifiers - * @param publicInputs The public inputs of the proof - * @return The OPRF public key hash committed to by the proof - */ - function getOprfPubKeyHash(bytes32[] calldata publicInputs) external pure returns (bytes32) { - return publicInputs[publicInputs.length - 1]; - } - - /** - * @notice Verifies the proof's OPRF public key hash matches the expected hash - * @dev App contracts should call this when consuming a SALTED nullifier, passing either - * their own custom OPRF key's hash or the root verifier's `defaultOprfPubKeyHash()`. - * For non-salted nullifiers, callers should skip this check (or pass bytes32(0)) - * @param publicInputs The public inputs of the proof - * @param expectedOprfPubKeyHash The expected OPRF public key hash - * @return True if the hash in the proof matches the expected hash - */ - function verifyOprfPubKeyHash(bytes32[] calldata publicInputs, bytes32 expectedOprfPubKeyHash) - external - pure - returns (bool) - { - return publicInputs[publicInputs.length - 1] == expectedOprfPubKeyHash; - } -} diff --git a/src/solidity/src/ZKPassportRootVerifier.sol b/src/solidity/src/ZKPassportRootVerifier.sol deleted file mode 100644 index fcad5a30b..000000000 --- a/src/solidity/src/ZKPassportRootVerifier.sol +++ /dev/null @@ -1,276 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -/* - ______ _ _ _____ _______ _______ _______ _____ _____ ______ _______ - ____/ |____/ |_____] |_____| |______ |______ |_____] | | |_____/ | - /_____ | \_ | | | ______| ______| | |_____| | \_ | - -*/ - -pragma solidity ^0.8.30; - -import {IRootRegistry} from "./IRootRegistry.sol"; -import {ZKPassportSubVerifier} from "./ZKPassportSubVerifier.sol"; -import {ZKPassportHelper} from "./ZKPassportHelper.sol"; -import {ProofVerificationParams} from "./Types.sol"; - -/** - * @title ZKPassport Root Verifier - * @notice Main entry point for verifying ZKPassport identity proofs - */ -contract ZKPassportRootVerifier { - address public admin; - address public guardian; - bool public paused; - - // ZKPassport Root Registry - IRootRegistry public rootRegistry; - - // Subverifier mapping - mapping(bytes32 => ZKPassportSubVerifier) public subverifiers; - // Counter for the number of subverifiers - uint256 public subverifierCount; - - // Helper mapping - mapping(bytes32 => ZKPassportHelper) public helpers; - // Counter for the number of helpers - uint256 public helperCount; - - // Config mapping - mapping(bytes32 key => bytes32 value) public config; - - // Hash of the OPRF public key for the global default OPRF key. - // Apps that use SALTED nullifiers without supplying a custom OPRF key expect the proof's - // oprf_pk_hash public input to match this value. Apps with a custom OPRF key ignore it. - bytes32 public defaultOprfPubKeyHash; - - // Events - event RootVerifierDeployed(address admin, address guardian, address rootRegistry); - event AdminUpdated(address indexed oldAdmin, address indexed newAdmin); - event GuardianUpdated(address indexed oldGuardian, address indexed newGuardian); - event RootRegistryUpdated(address indexed oldRootRegistry, address indexed newRootRegistry); - event SubVerifierAdded(bytes32 indexed version, address indexed subVerifier); - event SubVerifierRemoved(bytes32 indexed version, address indexed subVerifier); - event SubVerifierUpdated(bytes32 indexed version, address indexed oldSubVerifier, address indexed newSubVerifier); - event HelperAdded(bytes32 indexed version, address indexed helper); - event HelperRemoved(bytes32 indexed version, address indexed helper); - event HelperUpdated(bytes32 indexed version, address indexed oldHelper, address indexed newHelper); - event PausedStatusChanged(bool paused); - event ConfigUpdated(bytes32 indexed key, bytes32 oldValue, bytes32 newValue); - event DefaultOprfPubKeyHashUpdated(bytes32 oldHash, bytes32 newHash); - - /** - * @notice Constructor - * @param _admin The admin address - * @param _guardian The guardian address - * @param _rootRegistry The root registry address - * @param _defaultOprfPubKeyHash Hash of the global default OPRF public key - */ - constructor(address _admin, address _guardian, IRootRegistry _rootRegistry, bytes32 _defaultOprfPubKeyHash) { - require(_admin != address(0), "Admin cannot be zero address"); - admin = _admin; - guardian = _guardian; - rootRegistry = _rootRegistry; - defaultOprfPubKeyHash = _defaultOprfPubKeyHash; - emit RootVerifierDeployed(admin, guardian, address(_rootRegistry)); - emit DefaultOprfPubKeyHashUpdated(bytes32(0), _defaultOprfPubKeyHash); - } - - /** - * @notice Verifies a ZKPassport zero-knowledge proof - * @dev This function is called by the root verifier to verify a proof for a specific version - * @param params The proof verification parameters - * @return valid True if the proof is valid or false otherwise - * @return uniqueIdentifier The unique identifier associated with the ID used to generate the proof - * @return helper The helper for the calling contract to use to verify the committed inputs - */ - function verify(ProofVerificationParams calldata params) - external - view - whenNotPaused - returns (bool valid, bytes32 uniqueIdentifier, ZKPassportHelper helper) - { - ZKPassportSubVerifier subverifier = subverifiers[params.version]; - require(address(subverifier) != address(0), "Subverifier not found for version"); - (valid, uniqueIdentifier) = subverifier.verify(rootRegistry, params); - return (valid, uniqueIdentifier, helpers[params.version]); - } - - modifier onlyAdmin() { - require(msg.sender == admin, "Not authorized: admin only"); - _; - } - - modifier onlyAdminOrGuardian() { - require(msg.sender == admin || msg.sender == guardian, "Not authorized: admin or guardian only"); - _; - } - - modifier whenNotPaused() { - require(!paused, "Root verifier is paused"); - _; - } - - /** - * @notice Transfers the admin role to a new address - * @param newAdmin The new admin address - */ - function transferAdmin(address newAdmin) external onlyAdmin { - require(newAdmin != address(0), "Admin cannot be zero address"); - address oldAdmin = admin; - admin = newAdmin; - emit AdminUpdated(oldAdmin, newAdmin); - } - - /** - * @notice Sets the guardian role to a new address - * @param newGuardian The new guardian address - */ - function setGuardian(address newGuardian) external onlyAdmin { - address oldGuardian = guardian; - guardian = newGuardian; - emit GuardianUpdated(oldGuardian, newGuardian); - } - - /** - * @notice Adds a subverifier for a specific version - * @param version The version identifier - * @param subVerifier The address of the subverifier - */ - function addSubVerifier(bytes32 version, ZKPassportSubVerifier subVerifier) external onlyAdmin { - require(address(subVerifier) != address(0), "Subverifier cannot be zero address"); - require(version != bytes32(0), "Version cannot be zero"); - require(address(subverifiers[version]) == address(0), "Subverifier already exists for version"); - subverifiers[version] = subVerifier; - subverifierCount++; - emit SubVerifierAdded(version, address(subVerifier)); - } - - /** - * @notice Removes a subverifier for a specific version - * @param version The version identifier - */ - function removeSubVerifier(bytes32 version) external onlyAdmin { - require(version != bytes32(0), "Version cannot be zero"); - address subVerifier = address(subverifiers[version]); - require(subVerifier != address(0), "Subverifier not found for version"); - delete subverifiers[version]; - subverifierCount--; - emit SubVerifierRemoved(version, subVerifier); - } - - /** - * @notice Updates a subverifier for a specific version - * @param version The version identifier - * @param newSubVerifier The address of the new subverifier - */ - function updateSubVerifier(bytes32 version, address newSubVerifier) external onlyAdmin { - require(version != bytes32(0), "Version cannot be zero"); - require(newSubVerifier != address(0), "Subverifier cannot be zero address"); - require(address(subverifiers[version]) != address(0), "Subverifier not found for version"); - address oldSubVerifier = address(subverifiers[version]); - subverifiers[version] = ZKPassportSubVerifier(newSubVerifier); - emit SubVerifierUpdated(version, oldSubVerifier, newSubVerifier); - } - - /** - * @notice Gets the subverifier address for a specific version - * @dev Returns zero address if no subverifier exists for the given version - * @param version The version identifier - * @return The address of the subverifier contract, or zero address if not found - */ - function getSubVerifier(bytes32 version) external view returns (address) { - return address(subverifiers[version]); - } - - /** - * @notice Adds a helper for a specific version - * @param version The version identifier - * @param newHelper The address of the helper - */ - function addHelper(bytes32 version, address newHelper) external onlyAdmin { - require(newHelper != address(0), "Helper cannot be zero address"); - require(version != bytes32(0), "Version cannot be zero"); - require(address(helpers[version]) == address(0), "Helper already exists for version"); - helpers[version] = ZKPassportHelper(newHelper); - helperCount++; - emit HelperAdded(version, newHelper); - } - - /** - * @notice Removes a helper for a specific version - * @param version The version identifier - */ - function removeHelper(bytes32 version) external onlyAdmin { - require(version != bytes32(0), "Version cannot be zero"); - address helper = address(helpers[version]); - require(helper != address(0), "Helper not found for version"); - delete helpers[version]; - helperCount--; - emit HelperRemoved(version, helper); - } - - /** - * @notice Updates a helper for a specific version - * @param version The version identifier - * @param newHelper The address of the new helper - */ - function updateHelper(bytes32 version, address newHelper) external onlyAdmin { - require(version != bytes32(0), "Version cannot be zero"); - require(newHelper != address(0), "Helper cannot be zero address"); - require(address(helpers[version]) != address(0), "Helper not found for version"); - address oldHelper = address(helpers[version]); - helpers[version] = ZKPassportHelper(newHelper); - emit HelperUpdated(version, oldHelper, newHelper); - } - - /** - * @notice Gets the helper address for a specific version - * @dev Returns zero address if no helper exists for the given version - * @param version The version identifier - * @return The address of the helper contract, or zero address if not found - */ - function getHelper(bytes32 version) external view returns (address) { - return address(helpers[version]); - } - - /** - * @notice Update a config value - * @param key The config key - * @param value The config value - */ - function updateConfig(bytes32 key, bytes32 value) external onlyAdmin { - bytes32 oldValue = config[key]; - config[key] = value; - emit ConfigUpdated(key, oldValue, value); - } - - /** - * @notice Update the default OPRF public key hash - * @param newHash The new default OPRF public key hash - */ - function setDefaultOprfPubKeyHash(bytes32 newHash) external onlyAdmin { - bytes32 oldHash = defaultOprfPubKeyHash; - defaultOprfPubKeyHash = newHash; - emit DefaultOprfPubKeyHashUpdated(oldHash, newHash); - } - - /** - * @notice Pause the root verifier - * @dev Only admin or guardian can pause the root verifier - * @dev This is a security measure to pause all proof verification operations in the event of an emergency - */ - function pause() external onlyAdminOrGuardian { - paused = true; - emit PausedStatusChanged(true); - } - - /** - * @notice Unpause the root verifier - * @dev Only admin can unpause the root verifier - */ - function unpause() external onlyAdmin { - paused = false; - emit PausedStatusChanged(false); - } -} diff --git a/src/solidity/src/ZKPassportSubVerifier.sol b/src/solidity/src/ZKPassportSubVerifier.sol deleted file mode 100644 index 04d10f413..000000000 --- a/src/solidity/src/ZKPassportSubVerifier.sol +++ /dev/null @@ -1,244 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2025 ZKPassport -pragma solidity ^0.8.30; -import {ZKPassportRootVerifier as RootVerifier} from "./ZKPassportRootVerifier.sol"; -import {IRootRegistry} from "./IRootRegistry.sol"; -import {IProofVerifier} from "../src/IProofVerifier.sol"; -import {ProofVerificationParams, NullifierType, ProofVerifier} from "./Types.sol"; -import {PublicInput, RegistryID} from "./Constants.sol"; -import {DateUtils} from "./DateUtils.sol"; -import {StringUtils} from "./StringUtils.sol"; - -contract ZKPassportSubVerifier { - address public admin; - bool public paused; - - // The address of the root verifier - RootVerifier public rootVerifier; - - // Mapping from vkey hash of each outer circuit to its proof verifier (UltraHonk verifier) address - mapping(bytes32 => address) public proofVerifiers; - - // Events - event ZKPassportSubVerifierDeployed(address indexed admin, address indexed rootVerifier); - event AdminUpdated(address indexed oldAdmin, address indexed newAdmin); - event ProofVerifierAdded(address indexed proofVerifier, bytes32 indexed vkeyHash); - event ProofVerifierRemoved(address indexed proofVerifier, bytes32 indexed vkeyHash); - event PausedStatusChanged(bool paused); - - /** - * @dev Constructor - * @param _admin The admin address - * @param _rootVerifier The address of the ZKPassport root verifier - */ - constructor(address _admin, RootVerifier _rootVerifier) { - require(_admin != address(0), "Admin cannot be zero address"); - admin = _admin; - require(address(_rootVerifier) != address(0), "Root verifier cannot be zero address"); - rootVerifier = _rootVerifier; - emit ZKPassportSubVerifierDeployed(admin, address(_rootVerifier)); - } - - modifier onlyAdmin() { - require(msg.sender == admin, "Not authorized: admin only"); - _; - } - - modifier onlyRootVerifier() { - require(msg.sender == address(rootVerifier), "This function can only be called from the root verifier"); - _; - } - - modifier whenNotPaused() { - require(!paused, "Contract is paused"); - _; - } - - function transferAdmin(address newAdmin) external onlyAdmin { - require(newAdmin != address(0), "Admin cannot be zero address"); - address oldAdmin = admin; - admin = newAdmin; - emit AdminUpdated(oldAdmin, newAdmin); - } - - function setPaused(bool _paused) external onlyAdmin { - paused = _paused; - emit PausedStatusChanged(_paused); - } - - function addProofVerifiers(ProofVerifier[] calldata _proofVerifiers) external onlyAdmin { - for (uint256 i = 0; i < _proofVerifiers.length; i++) { - proofVerifiers[_proofVerifiers[i].vkeyHash] = _proofVerifiers[i].verifier; - emit ProofVerifierAdded(_proofVerifiers[i].verifier, _proofVerifiers[i].vkeyHash); - } - } - - function removeProofVerifiers(bytes32[] calldata vkeyHashes) external onlyAdmin { - for (uint256 i = 0; i < vkeyHashes.length; i++) { - address proofVerifier = proofVerifiers[vkeyHashes[i]]; - if (proofVerifier != address(0)) { - delete proofVerifiers[vkeyHashes[i]]; - emit ProofVerifierRemoved(proofVerifier, vkeyHashes[i]); - } - } - } - - function _checkDateValidity(uint256 currentDateTimeStamp, uint256 validityPeriodInSeconds) - internal - view - returns (bool) - { - return DateUtils.isDateValid(currentDateTimeStamp, validityPeriodInSeconds); - } - - /** - * @notice Verifies that the proof was generated for the given scope (domain) and subscope (service scope) - * @param publicInputs The public inputs of the proof - * @param scope The scope (domain) to check against - * @param subscope The subscope (service scope) to check against - * @return True if valid, false otherwise - */ - function _verifyScopes(bytes32[] calldata publicInputs, string calldata scope, string calldata subscope) - internal - pure - returns (bool) - { - // One byte is dropped at the end - // What we call scope internally is derived from the domain - bytes32 scopeHash = StringUtils.isEmpty(scope) ? bytes32(0) : sha256(abi.encodePacked(scope)) >> 8; - // What we call the subscope internally is the service scope specified manually in the SDK - bytes32 subscopeHash = StringUtils.isEmpty(subscope) ? bytes32(0) : sha256(abi.encodePacked(subscope)) >> 8; - return - publicInputs[PublicInput.SCOPE_INDEX] == scopeHash && publicInputs[PublicInput.SUBSCOPE_INDEX] == subscopeHash; - } - - function _verifyCommittedInputs(bytes32[] memory paramCommitments, bytes calldata committedInputs) internal pure { - uint256 offset = 0; - uint256 index = 0; - while (offset < committedInputs.length && index < paramCommitments.length) { - // The committed inputs are formatted as follows: - // - 1 byte: proof type - // - 2 bytes: length of the committed inputs - // - N bytes: committed inputs for a given proof - uint16 length = uint16(bytes2(committedInputs[offset + 1:offset + 3])); - // One byte is dropped inside the circuit as BN254 is limited to 254 bits - // We also add 3 bytes to take into account the proof type and length - bytes32 calculatedCommitment = sha256(abi.encodePacked(committedInputs[offset:offset + length + 3])) >> 8; - require(calculatedCommitment == paramCommitments[index], "Invalid commitment"); - offset += length + 3; - index++; - } - // Check that all the committed inputs have been covered, otherwise something is wrong - require(offset == committedInputs.length, "Invalid committed inputs length"); - require(index == paramCommitments.length, "Invalid parameter commitments"); - } - - function _getProofVerifier(bytes32 vkeyHash) internal view returns (address) { - address verifier = proofVerifiers[vkeyHash]; - require(verifier != address(0), "Verifier not found"); - return verifier; - } - - function _validateCertificateRoot(IRootRegistry _rootRegistry, bytes32 certificateRoot, uint256 timestamp) - internal - view - { - require( - _rootRegistry.isRootValid(RegistryID.CERTIFICATE, certificateRoot, timestamp), "Invalid certificate registry root" - ); - } - - function _validateCircuitRoot(IRootRegistry _rootRegistry, bytes32 circuitRoot, uint256 timestamp) internal view { - require(_rootRegistry.isRootValid(RegistryID.CIRCUIT, circuitRoot, timestamp), "Invalid circuit registry root"); - } - - /** - * @notice Verifies a ZKPassport proof - * @dev This function is called by the root verifier to verify a proof for a specific version - * @param rootRegistry The root registry - * @param params The proof verification parameters - * @return isValid True if the proof is valid, false otherwise - * @return uniqueIdentifier The unique identifier associated to the identity document that generated the proof - */ - function verify(IRootRegistry rootRegistry, ProofVerificationParams calldata params) - external - view - whenNotPaused - onlyRootVerifier - returns (bool isValid, bytes32 uniqueIdentifier) - { - // Get the verifier for the Outer Circuit corresponding to the vkey hash - address verifier = _getProofVerifier(params.proofVerificationData.vkeyHash); - - uint256 currentTimestamp = uint256(params.proofVerificationData.publicInputs[PublicInput.CURRENT_DATE_INDEX]); - - // Validate certificate registry root - _validateCertificateRoot( - rootRegistry, - params.proofVerificationData.publicInputs[PublicInput.CERTIFICATE_REGISTRY_ROOT_INDEX], - currentTimestamp - ); - - // Validate circuit registry root - _validateCircuitRoot( - rootRegistry, params.proofVerificationData.publicInputs[PublicInput.CIRCUIT_REGISTRY_ROOT_INDEX], currentTimestamp - ); - - // Checks the date of the proof - // This is the current date used as public input in the disclosure proofs - // so verifying it here guarantees that the disclosure proofs were generated with this date - require( - _checkDateValidity(currentTimestamp, params.serviceConfig.validityPeriodInSeconds), - "The proof was generated outside the validity period" - ); - - // Validate scopes - // It is recommended to verify this against static variables in your contract - // by calling `helper.verifyScopes(publicInputs, domain, scope)` or setting the domain and scope - // in the params inside your smart contract function before calling `verifier.verify(params)` - // Check SampleContract.sol for an example - require( - _verifyScopes(params.proofVerificationData.publicInputs, params.serviceConfig.domain, params.serviceConfig.scope), - "Invalid domain or scope" - ); - - // Verifies the commitments against the committed inputs - _verifyCommittedInputs( - // Extracts the commitments from the public inputs - params.proofVerificationData - .publicInputs[PublicInput.PARAM_COMMITMENTS_INDEX:params.proofVerificationData.publicInputs.length - 3], - params.committedInputs - ); - - NullifierType nullifierType = NullifierType( - uint256(params.proofVerificationData.publicInputs[params.proofVerificationData.publicInputs.length - 3]) - ); - - // Allow mock proofs in dev mode - // Note: On mainnets, this stage won't be reached as the ZKR certificates will not be part - // of the mainnet registries and the verification will fail at _validateCertificateRoot - require( - (nullifierType != NullifierType.NON_SALTED_MOCK_NULLIFIER && nullifierType != NullifierType.SALTED_MOCK_NULLIFIER) - || params.serviceConfig.devMode, - "Mock proofs are only allowed in dev mode" - ); - - require( - nullifierType == NullifierType.NON_SALTED_NULLIFIER || nullifierType == NullifierType.SALTED_NULLIFIER - || params.serviceConfig.devMode, - "Unsupported nullifier type" - ); - - // Call the proof verifier for the given Outer Circuit to verify if the actual proof is valid - isValid = - IProofVerifier(verifier).verify(params.proofVerificationData.proof, params.proofVerificationData.publicInputs); - - // Get the unique identifier (scoped_nullifier) from the public inputs. - // Trailing public inputs (in order): [length-3] nullifier_type, [length-2] scoped_nullifier, [length-1] oprf_pk_hash. - uint256 uniqueIdentifierIndex = params.proofVerificationData.publicInputs.length - 2; - uniqueIdentifier = params.proofVerificationData.publicInputs[uniqueIdentifierIndex]; - - // Return the validity of the proof verification and the unique identifier - return (isValid, uniqueIdentifier); - } -} diff --git a/src/solidity/test/Constants.t.sol b/src/solidity/test/Constants.t.sol index 8bc0602a9..81e80b836 100644 --- a/src/solidity/test/Constants.t.sol +++ b/src/solidity/test/Constants.t.sol @@ -10,7 +10,7 @@ pragma solidity ^0.8.30; import {Test} from "forge-std/Test.sol"; -import {CommittedInputLen} from "../src/Constants.sol"; +import {CommittedInputLen} from "@zkpassport/registry-contracts/lib/Constants.sol"; import {ZKPassportTest} from "./Utils.t.sol"; contract ConstantsTest is ZKPassportTest { diff --git a/src/solidity/test/DateUtils.t.sol b/src/solidity/test/DateUtils.t.sol index b9674aeae..8d57c907e 100644 --- a/src/solidity/test/DateUtils.t.sol +++ b/src/solidity/test/DateUtils.t.sol @@ -9,7 +9,7 @@ pragma solidity ^0.8.30; -import {DateUtils} from "../src/DateUtils.sol"; +import {DateUtils} from "@zkpassport/registry-contracts/lib/DateUtils.sol"; import {ZKPassportTest} from "./Utils.t.sol"; contract DateUtilsTest is ZKPassportTest { diff --git a/src/solidity/test/MockRootRegistry.sol b/src/solidity/test/MockRootRegistry.sol index fa433e5b6..024f6cdfd 100644 --- a/src/solidity/test/MockRootRegistry.sol +++ b/src/solidity/test/MockRootRegistry.sol @@ -9,9 +9,12 @@ pragma solidity ^0.8.30; -import {IRootRegistry} from "../src/IRootRegistry.sol"; - -contract MockRootRegistry is IRootRegistry { +/** + * @notice Standalone mock that matches the subset of `RootRegistry`'s ABI exercised by + * SubVerifier and VerifierHelper. Used in test setup as + * `RootRegistry(address(new MockRootRegistry()))`. Always reports roots as valid. + */ +contract MockRootRegistry { function latestRoot(bytes32) external pure returns (bytes32) { return bytes32(uint256(1)); } @@ -24,4 +27,3 @@ contract MockRootRegistry is IRootRegistry { return true; } } - diff --git a/src/solidity/test/ProofVerifier.t.sol b/src/solidity/test/ProofVerifier.t.sol index f1eb6b508..baff86fdc 100644 --- a/src/solidity/test/ProofVerifier.t.sol +++ b/src/solidity/test/ProofVerifier.t.sol @@ -10,7 +10,7 @@ pragma solidity ^0.8.30; import {Test, console} from "forge-std/Test.sol"; -import {IProofVerifier} from "../src/IProofVerifier.sol"; +import {IProofVerifier} from "@zkpassport/registry-contracts/IProofVerifier.sol"; import {HonkVerifier} from "../src/ultra-honk-verifiers/OuterCount5.sol"; import {ZKPassportTest} from "./Utils.t.sol"; diff --git a/src/solidity/test/SampleContract.t.sol b/src/solidity/test/SampleContract.t.sol index f6b1757dc..3a3f41848 100644 --- a/src/solidity/test/SampleContract.t.sol +++ b/src/solidity/test/SampleContract.t.sol @@ -10,8 +10,12 @@ pragma solidity ^0.8.30; import {console} from "forge-std/Test.sol"; -import {ZKPassportRootVerifier} from "../src/ZKPassportRootVerifier.sol"; -import {ServiceConfig, ProofVerificationParams, ProofVerificationData} from "../src/Types.sol"; +import {RootVerifier} from "@zkpassport/registry-contracts/RootVerifier.sol"; +import { + ServiceConfig, + ProofVerificationParams, + ProofVerificationData +} from "@zkpassport/registry-contracts/lib/Types.sol"; import {SampleContract} from "../src/SampleContract.sol"; import {ZKPassportTest} from "./Utils.t.sol"; @@ -19,7 +23,7 @@ contract SampleContractTest is ZKPassportTest { SampleContract public sampleContract; function setUp() public { - (ZKPassportRootVerifier verifier,) = deployZKPassport(); + (RootVerifier verifier,) = deployZKPassport(); sampleContract = new SampleContract(address(verifier)); } @@ -43,7 +47,11 @@ contract SampleContractTest is ZKPassportTest { }), committedInputs: data.committedInputs, serviceConfig: ServiceConfig({ - validityPeriodInSeconds: 7 days, domain: "zkpassport.id", scope: "bigproof", devMode: false + validityPeriodInSeconds: 7 days, + domain: "zkpassport.id", + scope: "bigproof", + devMode: false, + oprfPubKeyHash: bytes32(0) }) }); diff --git a/src/solidity/test/StringUtils.t.sol b/src/solidity/test/StringUtils.t.sol index 40e4410fe..45547154d 100644 --- a/src/solidity/test/StringUtils.t.sol +++ b/src/solidity/test/StringUtils.t.sol @@ -10,7 +10,7 @@ pragma solidity ^0.8.30; import {Test} from "forge-std/Test.sol"; -import {StringUtils} from "../src/StringUtils.sol"; +import {StringUtils} from "@zkpassport/registry-contracts/lib/StringUtils.sol"; import {ZKPassportTest} from "./Utils.t.sol"; contract StringUtilsTest is ZKPassportTest { diff --git a/src/solidity/test/Utils.t.sol b/src/solidity/test/Utils.t.sol index 6ede1cd58..66b7cadce 100644 --- a/src/solidity/test/Utils.t.sol +++ b/src/solidity/test/Utils.t.sol @@ -12,13 +12,13 @@ pragma solidity ^0.8.30; import {Test, console} from "forge-std/Test.sol"; import {StdConstants} from "forge-std/StdConstants.sol"; import {stdJson} from "forge-std/StdJson.sol"; -import {ZKPassportRootVerifier} from "../src/ZKPassportRootVerifier.sol"; -import {ZKPassportSubVerifier} from "../src/ZKPassportSubVerifier.sol"; -import {ZKPassportHelper} from "../src/ZKPassportHelper.sol"; +import {RootVerifier} from "@zkpassport/registry-contracts/RootVerifier.sol"; +import {SubVerifier} from "@zkpassport/registry-contracts/SubVerifier.sol"; +import {VerifierHelper} from "@zkpassport/registry-contracts/VerifierHelper.sol"; +import {RootRegistry} from "@zkpassport/registry-contracts/RootRegistry.sol"; import {HonkVerifier as OuterVerifier5} from "../src/ultra-honk-verifiers/OuterCount5.sol"; import {HonkVerifier as OuterVerifier13} from "../src/ultra-honk-verifiers/OuterCount13.sol"; -import {ProofVerifier} from "../src/Types.sol"; -import {IRootRegistry} from "../src/IRootRegistry.sol"; +import {ProofVerifier} from "@zkpassport/registry-contracts/lib/Types.sol"; import {MockRootRegistry} from "./MockRootRegistry.sol"; abstract contract ZKPassportTest is Test { @@ -68,16 +68,16 @@ abstract contract ZKPassportTest is Test { }); } - function deployZKPassport() internal returns (ZKPassportRootVerifier, ZKPassportSubVerifier) { + function deployZKPassport() internal returns (RootVerifier, SubVerifier) { // Use labeled test accounts address admin = makeAddr("admin"); address guardian = makeAddr("guardian"); // Deploy mock root registry - IRootRegistry rootRegistry = new MockRootRegistry(); - // Deploy root verifier with a placeholder default OPRF public key hash - ZKPassportRootVerifier rootVerifier = new ZKPassportRootVerifier(admin, guardian, rootRegistry, bytes32(0)); + RootRegistry rootRegistry = RootRegistry(address(new MockRootRegistry())); + // Deploy root verifier + RootVerifier rootVerifier = new RootVerifier(admin, guardian, rootRegistry); // Deploy sub verifier - ZKPassportSubVerifier subVerifier = new ZKPassportSubVerifier(admin, rootVerifier); + SubVerifier subVerifier = new SubVerifier(admin, rootVerifier); // Add sub verifier to root verifier vm.prank(admin); rootVerifier.addSubVerifier(VERIFIER_VERSION, subVerifier); @@ -90,7 +90,7 @@ abstract contract ZKPassportTest is Test { vm.prank(admin); subVerifier.addProofVerifiers(proofVerifiers); // Deploy helper - ZKPassportHelper helper = new ZKPassportHelper(rootRegistry); + VerifierHelper helper = new VerifierHelper(rootRegistry); // Add helper to root verifier vm.prank(admin); rootVerifier.addHelper(VERIFIER_VERSION, address(helper)); diff --git a/src/solidity/test/ZKPassportHelper.t.sol b/src/solidity/test/ZKPassportHelper.t.sol deleted file mode 100644 index b39455f31..000000000 --- a/src/solidity/test/ZKPassportHelper.t.sol +++ /dev/null @@ -1,89 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright © 2025 ZKPassport -pragma solidity ^0.8.30; - -import {Test} from "forge-std/Test.sol"; -import {ZKPassportHelper} from "../src/ZKPassportHelper.sol"; -import {NullifierType} from "../src/Types.sol"; -import {IRootRegistry} from "../src/IRootRegistry.sol"; -import {MockRootRegistry} from "./MockRootRegistry.sol"; - -// Testing mainly the ordering of trailing public inputs -// (last 3 elements, in order): -// [length-3] nullifier_type -// [length-2] scoped_nullifier -// [length-1] oprf_pk_hash -contract ZKPassportHelperTest is Test { - ZKPassportHelper helper; - - bytes32 constant SCOPED_NULLIFIER = bytes32(uint256(0xdead)); - bytes32 constant OPRF_PK_HASH = bytes32(uint256(0xbeef)); - - function setUp() public { - IRootRegistry rootRegistry = new MockRootRegistry(); - helper = new ZKPassportHelper(rootRegistry); - } - - // Builds a minimal publicInputs array with 2 param commitments + the 3 trailing fields. - function _buildPublicInputs(uint256 nullifierTypeValue) internal pure returns (bytes32[] memory) { - bytes32[] memory publicInputs = new bytes32[](5); - publicInputs[0] = bytes32(uint256(0xa1)); // param commitment - publicInputs[1] = bytes32(uint256(0xa2)); // param commitment - publicInputs[2] = bytes32(nullifierTypeValue); - publicInputs[3] = SCOPED_NULLIFIER; - publicInputs[4] = OPRF_PK_HASH; - return publicInputs; - } - - function test_GetNullifierType_AllVariants() public view { - assertEq( - uint256(helper.getNullifierType(_buildPublicInputs(0))), - uint256(NullifierType.NON_SALTED_NULLIFIER) - ); - assertEq( - uint256(helper.getNullifierType(_buildPublicInputs(1))), - uint256(NullifierType.SALTED_NULLIFIER) - ); - assertEq( - uint256(helper.getNullifierType(_buildPublicInputs(2))), - uint256(NullifierType.NON_SALTED_MOCK_NULLIFIER) - ); - assertEq( - uint256(helper.getNullifierType(_buildPublicInputs(3))), - uint256(NullifierType.SALTED_MOCK_NULLIFIER) - ); - } - - function test_IsSaltedNullifier() public view { - assertEq(helper.isSaltedNullifier(_buildPublicInputs(0)), false); // NON_SALTED - assertEq(helper.isSaltedNullifier(_buildPublicInputs(1)), true); // SALTED - assertEq(helper.isSaltedNullifier(_buildPublicInputs(2)), false); // NON_SALTED_MOCK - assertEq(helper.isSaltedNullifier(_buildPublicInputs(3)), true); // SALTED_MOCK - } - - function test_GetOprfPubKeyHash() public view { - bytes32 result = helper.getOprfPubKeyHash(_buildPublicInputs(1)); - assertEq(result, OPRF_PK_HASH); - assertTrue(result != SCOPED_NULLIFIER); - } - - function test_VerifyOprfPubKeyHash_Matches() public view { - assertEq(helper.verifyOprfPubKeyHash(_buildPublicInputs(1), OPRF_PK_HASH), true); - } - - function test_VerifyOprfPubKeyHash_Mismatches() public view { - bytes32 wrongHash = bytes32(uint256(0xcafe)); - assertEq(helper.verifyOprfPubKeyHash(_buildPublicInputs(1), wrongHash), false); - } - - function test_VerifyOprfPubKeyHash_ZeroForNonSalted() public view { - // Build inputs with oprf_pk_hash = 0 (as non-salted proofs should produce). - bytes32[] memory publicInputs = new bytes32[](5); - publicInputs[0] = bytes32(uint256(0xa1)); - publicInputs[1] = bytes32(uint256(0xa2)); - publicInputs[2] = bytes32(uint256(0)); // NON_SALTED - publicInputs[3] = SCOPED_NULLIFIER; - publicInputs[4] = bytes32(0); - assertEq(helper.verifyOprfPubKeyHash(publicInputs, bytes32(0)), true); - } -} diff --git a/src/solidity/test/ZKPassportRootVerifier.t.sol b/src/solidity/test/ZKPassportRootVerifier.t.sol index a662f7278..b4561c7c7 100644 --- a/src/solidity/test/ZKPassportRootVerifier.t.sol +++ b/src/solidity/test/ZKPassportRootVerifier.t.sol @@ -11,11 +11,11 @@ pragma solidity ^0.8.30; import {Test, console} from "forge-std/Test.sol"; import {ZKPassportTest} from "./Utils.t.sol"; -import {ZKPassportRootVerifier} from "../src/ZKPassportRootVerifier.sol"; -import {IRootRegistry} from "../src/IRootRegistry.sol"; -import {ZKPassportSubVerifier} from "../src/ZKPassportSubVerifier.sol"; -import {ZKPassportHelper} from "../src/ZKPassportHelper.sol"; -import {CommittedInputLen} from "../src/Constants.sol"; +import {RootVerifier} from "@zkpassport/registry-contracts/RootVerifier.sol"; +import {RootRegistry} from "@zkpassport/registry-contracts/RootRegistry.sol"; +import {SubVerifier} from "@zkpassport/registry-contracts/SubVerifier.sol"; +import {VerifierHelper} from "@zkpassport/registry-contracts/VerifierHelper.sol"; +import {CommittedInputLen} from "@zkpassport/registry-contracts/lib/Constants.sol"; import { DisclosedData, BoundData, @@ -25,11 +25,11 @@ import { OS, ProofType, ProofVerificationParams -} from "../src/Types.sol"; +} from "@zkpassport/registry-contracts/lib/Types.sol"; -contract ZKPassportRootVerifierTest is ZKPassportTest { - ZKPassportRootVerifier public rootVerifier; - ZKPassportSubVerifier public subVerifier; +contract RootVerifierTest is ZKPassportTest { + RootVerifier public rootVerifier; + SubVerifier public subVerifier; // Use labeled test accounts address public admin = makeAddr("admin"); @@ -55,13 +55,17 @@ contract ZKPassportRootVerifierTest is ZKPassportTest { }), committedInputs: data.committedInputs, serviceConfig: ServiceConfig({ - validityPeriodInSeconds: 7 days, domain: "zkpassport.id", scope: "bigproof", devMode: false + validityPeriodInSeconds: 7 days, + domain: "zkpassport.id", + scope: "bigproof", + devMode: false, + oprfPubKeyHash: bytes32(0) }) }); - vm.startSnapshotGas("ZKPassportRootVerifier.verify"); - (bool result, bytes32 scopedNullifier, ZKPassportHelper helper) = rootVerifier.verify(params); - logGas("ZKPassportRootVerifier.verify"); + vm.startSnapshotGas("RootVerifier.verify"); + (bool result, bytes32 scopedNullifier, VerifierHelper helper) = rootVerifier.verify(params); + logGas("RootVerifier.verify"); uint256 proofTimestamp = helper.getProofTimestamp(params.proofVerificationData.publicInputs); assertEq(proofTimestamp, currentDate); @@ -72,9 +76,9 @@ contract ZKPassportRootVerifierTest is ZKPassportTest { "Scoped nullifier should match" ); - vm.startSnapshotGas("ZKPassportHelper.getDisclosedData"); + vm.startSnapshotGas("VerifierHelper.getDisclosedData"); DisclosedData memory disclosedData = helper.getDisclosedData(params.committedInputs, false); - logGas("ZKPassportHelper.getDisclosedData"); + logGas("VerifierHelper.getDisclosedData"); assertEq(disclosedData.name, "SILVERHAND< { await pool.drain() } - // Update Deploy.s.sol with the vkey hashes - updateVkeyHashesInSolidityDeployScript(DEPLOY_SOL_PATH) - // Update DeployWithExistingVerifiers.s.sol with the vkey hashes - // updateVkeyHashesInSolidityDeployScript(DEPLOY_SUB_VERIFIER_SOL_PATH) - // Update DeployProofVerifiers.s.sol with the vkey hashes - // updateVkeyHashesInSolidityDeployScript(DEPLOY_PROOF_VERIFIERS_SOL_PATH) + // Update DeploySubVerifier.s.sol with the vkey hashes + updateVkeyHashesInSolidityDeployScript(DEPLOY_SUB_VERIFIER_SOL_PATH) // Exit with error code if any file failed to process if (hasErrors) { diff --git a/src/ts/tests/fixtures/circuit-manifest.json b/src/ts/tests/fixtures/circuit-manifest.json index 0464d1e74..9dc8064c0 100644 --- a/src/ts/tests/fixtures/circuit-manifest.json +++ b/src/ts/tests/fixtures/circuit-manifest.json @@ -1,3955 +1,3955 @@ { - "version": "0.17.0", + "version": "0.18.0", "root": "0x26fa1d2e130fb4d3234f56e51662631f80c2be7ef07ad6368376fd59e3e67a8e", "circuits": { "bind": { "hash": "0x2153bca1ada0b33ad7d9079f8cd961a13489225063eb23b00801cf30092bb181", - "cid": "QmX2LAe2Xi77BzAFi42HeQjCifh8j3Qn6dCEiXaqRsvYE4", + "cid": "QmNnj294ZNpAK8xhmDqoeTcAUcJXLApepRadXnAZCkv2n6", "size": 74697 }, "bind_evm": { "hash": "0x29558da474c947bf8a41d4e621b1e8e1f87bdbf9ec056713be3bf1fee1d86d65", - "cid": "QmbL7T6PDrBrYkb8Uqktbi5YbFdHtJUMqDypxHH4xMaU7R", + "cid": "Qmf1zw3S4yebyQ3JbHnKKMRg5ndmeQLE4gAsNSMK3Fa2eK", "size": 110059 }, "compare_age": { "hash": "0x16abf86c7015cd7e13e79e3fd2a30e225970b319caf57c5fd36a55f6dfbbaa2f", - "cid": "QmaRLWTjAe45dkiGUQ71T73gWTo9HusF1fXSXqcS6BM9d7", + "cid": "QmbNZcnbowtwico6xKxUedvS4YER3QCG8v4Gnj2hUjLX5f", "size": 80084 }, "compare_age_evm": { "hash": "0x154d569a77e6862d44f653cb71d2d343ff4e98acc39f620d11af8b7448426751", - "cid": "QmXsEtqffBtV6yE9KmxEfcsAebVJ3RoiwonvFcSLbENJFj", + "cid": "Qmbz4cvuNXURMyMHWqwstz3q9NyARxoJXwfwFL5TPvrawJ", "size": 83981 }, "compare_birthdate": { "hash": "0x17a4aa0f52b1957820f7d5203977d3e143149c63bfddf267d9753f87ccf116f2", - "cid": "QmfBhm924hSYPMr9thTxdysebCLRCdn3obhEMtbAmXufXX", + "cid": "QmW2sSt9jJdkQm1RX3QGuHuheAMq5Y3nb2mJKf7iG5LybW", "size": 82221 }, "compare_birthdate_evm": { "hash": "0x033cbc8a6a5600beb48bc2b0b3cf32febf7c97ffe7f7dc72ad2ceebb6c2d589f", - "cid": "QmUWhmDWwvNkU5vMmvcZ4yAmxS6JrT2ToXUWwnPxNfrgwA", + "cid": "QmaUJg62arJryHEzhUno8zSdhTB99NuePW2Syv7bhgCcpV", "size": 86154 }, "compare_expiry": { "hash": "0x006fa89f88890aa1ea12cb2fb3118fc943770a191611f546ff786ecf72d25937", - "cid": "QmSSyszRetiw7QuKsBcQNh5Dg6domJeAETbZSQoGD3D4LY", + "cid": "QmdX6tazx7qkssCN7GYBistaC6XsafGbknnmqkTu5D8Cny", "size": 82213 }, "compare_expiry_evm": { "hash": "0x2cda4f30ff3af3fdfa84ed4d59bff941c66325b18eccfce35e4e29c011bfc151", - "cid": "QmTrkEnp7rfFy33we7WDbLWyUyg2p6osRDYLNPvkMQZ4za", + "cid": "QmQ9CdsL8J2yW4W4o1Rf2Yut1RoYj4CyXRebW7dN8XGeiX", "size": 86145 }, "data_check_integrity_sa_sha1_dg_sha1": { "hash": "0x00c0ab2440f3802c57d14c4c017c028624cf813cdb94be45e605a997a2f75490", - "cid": "QmXWo7iiPVM4WSswdgXWAd6kmew2KkU99GwRQTW5woB1uD", + "cid": "QmWxYvqwrRdD13Uwhm88ikGmmYaHNXUGZiFDf2Ww386YPv", "size": 177687 }, "data_check_integrity_sa_sha1_dg_sha224": { "hash": "0x1c8aee3270b59ca40f62ae2f62d3940c6b52e94863ec66039547d052553088c4", - "cid": "QmdXdo6wjMFVZcge3vuj9rBcJWhiVxnw1NmumrB9dFEzcX", + "cid": "QmRBEndPoBZaP6j1bGSDxvyAaMqNW8DzKi8tmPZsDARUCY", "size": 168842 }, "data_check_integrity_sa_sha1_dg_sha256": { "hash": "0x112fbcdef0d8099ba9d29874ac865e71f6031219c79f237e07744163cb63a2b6", - "cid": "QmUg54kF2Td7AVpz6tSh9k9b4vhhwxBu8AJwNTEyq8ePw2", + "cid": "Qmapk3agygQk4aAi9EYJrqXdPaJwZCFchHT94uRRam9gQn", "size": 168913 }, "data_check_integrity_sa_sha1_dg_sha384": { "hash": "0x0fc3f235ab9e516fa198d7fe5e1181e554bc8d3b2dacca634f476a65674a2d25", - "cid": "QmcY8cH6MyxrNwdGz6UckyHd5fLVd2hhaj8JHPfofLZHao", + "cid": "Qmew5hWwqDay2HuHL98HBzNzPB6ADhPZWdHZJZ1dznJh5w", "size": 194313 }, "data_check_integrity_sa_sha1_dg_sha512": { "hash": "0x2c0c14fe586b1172b7734bdb8b94f0318fa82270f885d82066fea3e7314df078", - "cid": "QmQ48zvKtHQCDtK3PwqKGavByYazoGfpJu6BkZensHqVQM", + "cid": "QmP9g5UixMTUcKMyTmgWu3wjZaNpSpyw9ogRGpPcgyaM95", "size": 194604 }, "data_check_integrity_sa_sha224_dg_sha1": { "hash": "0x1d8b9d31108fe73889f96b2bd78d3cd95b5c6030290395155165081243b3ea87", - "cid": "QmUafDEHpBRQyvjgdGkd9g9McwT2Y6Yz3kiqdM76jP5Kjp", + "cid": "Qmep7BTPzqd4XWomFckC7N9jS8T5DQpkDXhvDaabFup7Wt", "size": 98859 }, "data_check_integrity_sa_sha224_dg_sha224": { "hash": "0x0c193a26e81fbfd63e90cb1ed2dcdfdba46d811243c5eec4d025fac83689e21e", - "cid": "QmebQuu1ojK6QYS4D2HGL6wsXidYx1bXoAUMV28v251zbK", + "cid": "QmRRonRmW6SJsakB2Jz5gPjSZpAxsmH8Vh1qiZrgCJQSoq", "size": 79206 }, "data_check_integrity_sa_sha224_dg_sha256": { "hash": "0x28840f9374454349b530c89d8b73e751f6c4c4c9faea8a597ef42fc0b8928c13", - "cid": "QmPMbjdgtdnkNkkes3cXJkaTnucrgvryrYrU2oppW8gHvQ", + "cid": "QmPzJ2BKxjc6dYiBGF5P5enkuvrqsZvbgsY6RoZCHTXoDE", "size": 79285 }, "data_check_integrity_sa_sha224_dg_sha384": { "hash": "0x2e24be7fa28821b867ebc5fe243080851c545a919aafbe67b3293ac3ae1ac2a9", - "cid": "QmXgWuTNoxJ5Rt98PUtEKT5pR88zt5mdE3LEHJApPXzCwZ", + "cid": "Qme7oY6P8Apc7W6GP7KvvCxcUaUhY7VJRinvzn2AyYrSRg", "size": 105394 }, "data_check_integrity_sa_sha224_dg_sha512": { "hash": "0x1860d25fb77cc4cfb3bd89024150c33b2795bdbb1775a7e9724a8952b2012072", - "cid": "QmbcsLcojiqRLf5em3EaTUNpASGaiTcaLMdYjTN5KspDHe", + "cid": "QmSiKsuX3QcPcAyC5bkdYLsrqYMqzzCNuRtK8xKs4sUYPT", "size": 105685 }, "data_check_integrity_sa_sha256_dg_sha1": { "hash": "0x2f2869f8bb817e92bb2dbc620cbaee4764d11d80ab4d377d4b666e202e281043", - "cid": "QmcBEPQ6wdQhzR8yAEpG7ZDdrV78W99uXzRWVdaXnZcLFB", + "cid": "Qmd2MXtujaZPyhXQvrPQyJMwvSYDTNhaiwxwuKvP8EkWhd", "size": 98906 }, "data_check_integrity_sa_sha256_dg_sha224": { "hash": "0x07bc57ae007d44be2689afd1191f84da241fd7134e94c7d35a4eae7c74b72b75", - "cid": "QmUKTXkRLdh9hieBerPZo4oewmr1zr3m97d5qvWxEqTjQW", + "cid": "QmcLPMXwEqwUqgGnqQ8voM5ypP65xJ1UM1ft3sYaUvsm2f", "size": 79261 }, "data_check_integrity_sa_sha256_dg_sha256": { "hash": "0x05fd043922472975f0c3783446f59e863bfd96adb9538193512b9118039b5c55", - "cid": "QmYX47PzpFzD63acxerB9QyCQwrv34AjyFUt783sL8iWMo", + "cid": "QmbBCKS51DzSJx7RdRx163m1ys1tYnv6huET1MEQLK3DCB", "size": 79324 }, "data_check_integrity_sa_sha256_dg_sha384": { "hash": "0x02437a3aad78e3c15dc2301f3f7a3f22727111e8a1fd9bea93cbc3c8505c4047", - "cid": "QmaGhNLWTKtQbBQxK5CGv5h2zKs9uaU6JEvpCrjCL68Nho", + "cid": "QmPvL5LGcWHytnLfkLLEXPSCJV3w9srsJtTd4PQa7U7VQi", "size": 105441 }, "data_check_integrity_sa_sha256_dg_sha512": { "hash": "0x1d1eab76e7ba7bbc8b121bf49b076a368333f2afe097e0aa3de4391aae5bd9df", - "cid": "QmbPwdqJB1jAgSrTJoCnfwU6wNP8K9sM9NNhyUPo8V2q2A", + "cid": "QmbxwNtqVZptuLB5oyta1AijLSNUR2KQvkU8QRJxDTVMP6", "size": 105732 }, "data_check_integrity_sa_sha384_dg_sha1": { "hash": "0x262b88eb1af960b3c779c1297ef690941e30de6250ec2dd3a57f74a95b08f83e", - "cid": "QmVFGTxqFt7TxXDzTLemd6Lo7nMKbDrSc6s1RrZhwenJzd", + "cid": "QmbqC8W3Yoh8fenEXDhLeo2AVF7trBcbSBybwxwJhymi3d", "size": 231531 }, "data_check_integrity_sa_sha384_dg_sha224": { "hash": "0x2d447f9fe7c9124492e05dccbaca3a18c85d2c04deb3c6985c352d442c463e14", - "cid": "QmQnG1rNZz8upsLkz9BFgre7zJTy4R9eyvQrJ8ZnwX7pxL", + "cid": "QmQSVjBCdCCfYG18McbDrW1VBTBNHu3wcWr2ufXYHNJcdo", "size": 212596 }, "data_check_integrity_sa_sha384_dg_sha256": { "hash": "0x2cc5d6b60b3385bac6ecc58ea048df411dbf3158bfb692f398a905db628cbb53", - "cid": "QmfVDfUtxUNbsAhmV6DriUBJ9PRKfEUHspZC2J1X5r43EA", + "cid": "QmW8ddDowdSDnZyVVZWGHxA1H94P7B8Qds5QZuMm4oLcH6", "size": 212667 }, "data_check_integrity_sa_sha384_dg_sha384": { "hash": "0x0791561b23f4cfcb938e6f627d7e7aa58edf89139defd521337633271c868045", - "cid": "QmZ3TYMVZrHULQruboJzomsVoZfi2MSo5Jbz2PEcKi2Dob", + "cid": "Qma5rJ5LoZjpjJMvwbSzbKTKmQwfBfqKTWwumE9uZdSmtN", "size": 228525 }, "data_check_integrity_sa_sha384_dg_sha512": { "hash": "0x0f5bd7f91ca919782b0379b3eef99160c2f1b80296dbff3e7c6a7e6deeca7256", - "cid": "QmciTEQMX7nombfK3Tkuy3MnpsPHVkWh3z7jMbvcF2T16X", + "cid": "QmfWxes6HbTjfi9ydm6cXV9BVrhotQRTTzZ4WeaiavVzvw", "size": 228816 }, "data_check_integrity_sa_sha512_dg_sha1": { "hash": "0x2267dbb509189a184e6e34c1fd62ee639c1a2a5f9406580824a697c933c1e614", - "cid": "QmPu4UpbSR2LHuRLnMvvztLfAHD6HRjYsjQHRskpXVPw1L", + "cid": "QmNNckypxkWr449EEmQyc5rHtx1mHqd8xeQfzxZBSHXCMQ", "size": 231719 }, "data_check_integrity_sa_sha512_dg_sha224": { "hash": "0x1027ac6240a347166cfca6b49616b2a9796a057c9d72cb3b9f5e9999541ea3b3", - "cid": "QmTkhSKQhcvtwWe9gdmUYfwBqc1kdrk79zLPGCnRYMDyfD", + "cid": "QmXzxxReD4eMoBJJQNFvgUiZdU4esexzkaxVvq1WgwNCsN", "size": 212784 }, "data_check_integrity_sa_sha512_dg_sha256": { "hash": "0x23cdf42e21144239e98bd70d703fd3de752c1402068331bf357282a215bdf17b", - "cid": "QmRss6SZndsmRkzovwwGsfDN1EDVZtXDiCUJ3wEyzUnsiK", + "cid": "QmfF7TCGV3NR2ees63P3PqkYdMTE9PSx7mJQaMGg4os4rP", "size": 212855 }, "data_check_integrity_sa_sha512_dg_sha384": { "hash": "0x021dae045ed15edd8f64df6095b4f38327452abcc0a1ddbc559e14562975d606", - "cid": "QmSpK4iUG4yaaVe5cTZUTF567Um2JQMXhbcLzsJoPMKohe", + "cid": "QmNnKQJredZHYURaCs1EbcK8NkGmTUMBhhcgbCNFB14BmX", "size": 228713 }, "data_check_integrity_sa_sha512_dg_sha512": { "hash": "0x141fd25ce3982ca631e87d7346d5302d5042cc7ee8a727f14e7d6913bd823ed5", - "cid": "QmSPCxVFzcndfz9Mgwqc26bDrJ8KnEKSmQ9mUttKQcyu6B", + "cid": "QmSpuakaqHFM8JASgtxQCtPZYxEW2iPRcQbN31v4byqvqh", "size": 229004 }, "disclose_bytes": { "hash": "0x156434fc19bd472a89328a31cdbacab9bf56bb9216bdf4bb53e763dd5f9e2761", - "cid": "QmaxEKV4mDhmLSefu5ZJmy2bwuGKAijAsc29vz4wEXW2W3", + "cid": "QmaR8BCMn6X37mmNdahTZ7Kst21nweQhXZnVNrdC7V294i", "size": 73737 }, "disclose_bytes_evm": { "hash": "0x1f996319e573c798eda87543a240a62766256881d82d3d08e97f4a3ea8f6c436", - "cid": "QmUjpx2UhJCKkDyDp3T5koZDWcgM38fQXu3qRgCsD9H5kv", + "cid": "QmNgyKrJBzvG8nTyEz41cDKgvkhfgLZY4CXva5yAZP6kDh", "size": 85602 }, "exclusion_check_issuing_country": { "hash": "0x137bee48e3a44a7fc987ff7ce0c3dc8545e8c8f6a0f9cfdcf420206f1b0ef47a", - "cid": "QmcxJRL3gEjjXEG1m1BeJTZiZ4f9JT3jqC4j9DkLC2Z8e1", + "cid": "QmXvi5RQ3VCazaRutzobq9NrtbhV2mho5VhjcViFaDitpt", "size": 81540 }, "exclusion_check_issuing_country_evm": { "hash": "0x2efcb0ff8bfc3675049eb364b2917bdfc5ede5fd915b119cba0a3cc441baabbb", - "cid": "QmfAAG3yKSzzumMSxCEbhmwjAcKpzBnzRzzFb7g5y1Fmi2", + "cid": "QmVqPFQ6bkcsU6q41AxecwGwfDfTYGJ26f9GH6ZXkrYCMM", "size": 120272 }, "exclusion_check_nationality": { "hash": "0x0f29faad6d358ec0e4d5a7e68b45c9e484026ff0d7f47b3fd03a4a64f71abf1d", - "cid": "QmVxSguAuvKRyS2cqRhpEhKFGqRrMKWzZ9AJ7iJw5yWpfu", + "cid": "QmRDpfmvVdGxYBgmQZzuPaV86LXYLH4nSfkzFaSUgSoPEG", "size": 81560 }, "exclusion_check_nationality_evm": { "hash": "0x075ed250b1d7a8ed521240a2d316eb8002eb61f8d60f5fd055b9b18cc54650f4", - "cid": "QmaGhZJkhL66ZEWitxnuDEjJqzZuKHnstPDf8LZRk9agcW", + "cid": "QmY4Mp7ToEf9LPpwTFiBJwoghzNaoEL9XjMcb8LwPmDeLr", "size": 120292 }, "exclusion_check_sanctions": { "hash": "0x040b0867e179bba268ec86d6bbd426d7bb66cdc730a44f814e8c9a088009dc84", - "cid": "Qmd8NriWJ7HKp2c4aWoKwksjPEE9WiNAPacSQg5zZ7i3A4", + "cid": "QmUfyQDoNg4uwGwFm7y51EW3RBEajWohACx8qv2Lisn3Ky", "size": 119585 }, "exclusion_check_sanctions_evm": { "hash": "0x2874ed4bd6ceff7f88e25b03597cd2b90799c43a8d0416ad119e1a224d0e5918", - "cid": "Qme4TKf9eiEQ1zKgpKW8nFCFEFnUgCm7mDvGqM1d9rWmqi", + "cid": "QmUdw44Kv3ybkrRJfssrwKx3c96ukb9WMZXWtj2hQkie6K", "size": 123916 }, "facematch_android_rk_ecdsa_ik_count_1_ik_ecdsa_p256_sha256": { "hash": "0x0c23279c9565e0226f4c173a9dbe144ba61378245c52ca4651d37a285e7943b0", - "cid": "QmY37PnU1UrP9F1G7WybNJbz9jRBSHfaUANjEmMrzYVoab", + "cid": "QmR7VacsUsNDB365yfRV68dwWxB998WGySVfPL6yczMReC", "size": 972320 }, "facematch_android_rk_ecdsa_ik_count_1_ik_ecdsa_p256_sha256_evm": { "hash": "0x04ac09c11c80ac0d1a4328d1e8e0045fd8c541498a793654de86b37ad8a2aacc", - "cid": "QmddaXDb6ayPi5qYURCeBgQaByNHnY1psJn8GHQ8oq9H1z", + "cid": "QmZwqwzAwPkBGzbVFhHxQh5aX21pcAD7Qc55xh5mgSVYnC", "size": 981396 }, "facematch_android_rk_ecdsa_ik_count_1_ik_ecdsa_p384_sha256": { "hash": "0x0d02ff525def680b4d28f38b0deace0864f40853b65a072d9b3b4e3440c85a7b", - "cid": "QmWDdrWdSY8yHw5wZBeHLhXW6rbNnhrRv4QapDupXWG1Eu", + "cid": "QmaUajN16yGNAoj4GigrDQ1SdLzJQwLNUVK7kLdv2x9Gye", "size": 1107572 }, "facematch_android_rk_ecdsa_ik_count_1_ik_ecdsa_p384_sha256_evm": { "hash": "0x14a2b65115606b8286c9bffe3a6052c87f0121b04a4ec20f46f7e2efaa47b20e", - "cid": "Qmc4vdqSNpDvK2Gdb6M4CRTMcnUi7Mbm3jtb3E2Tktfy7K", + "cid": "QmShJejszqn2RREHhEDDDDhERqpRRVnWJZ2MgVdsnVJjKG", "size": 1116648 }, "facematch_android_rk_ecdsa_ik_count_1_ik_ecdsa_p384_sha384": { "hash": "0x0b0f2d6fad266f82b842c3986349797902f7d6490f6ee5de3999d4c11cf45ab5", - "cid": "QmR1dJuB9iHAVXoXNiWLYqQ5xqxaKV6bjAJ4aVzKPC8y2H", + "cid": "QmdJwPZVHgZcwThyQJ3dDHg4YoE5bHzN3NZuY4VX36qM7S", "size": 1267358 }, "facematch_android_rk_ecdsa_ik_count_1_ik_ecdsa_p384_sha384_evm": { "hash": "0x22e4b6a2f1666bdd9eb0d9daa1f8bd023d5fe3fff4c9994f50cbd5c463d28a0b", - "cid": "QmYXSRavvKYTLrTjAAfhgEaDERWVdVNz6Qur1RbAKRX19j", + "cid": "QmbZWowUCx1q2aNFTCqkwYfRUA6WLXEWEiHTt9mRQE7gMh", "size": 1276434 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256": { "hash": "0x08908241eeaa0f19a3b01a9431b6aad3f717ed95a1b98569fc539f017ae5ecb9", - "cid": "QmZRaHsg575XeRn2LmcAfPtCANK1xaiMHweTA9bmYTgZFT", + "cid": "QmNXa2mYMXMbcBzXFzfQRMugWhELGv9AAfViW8EdPrS3VN", "size": 1099086 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x108031ddda416d61e11c16f490df0a3f66c2cf8c3c333cc571cc3885d8bf3ddc", - "cid": "QmQeV7sNoxo7nbMGTfoxZB5Ncb7h1gj5G1B2V9rFL8RifR", + "cid": "QmUYpW3ekpPoYPnjGcNKCS4LzGsDGdcCo88HCSaPsffYBH", "size": 1108163 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256": { "hash": "0x11d6971547924abced4b3816eeaf978a925efbf0631c962c3dc7357254167435", - "cid": "QmZj5gwaXzkCHbiDeQvyfLPiyKZMFHkFRxPmeqLPKCdgfD", + "cid": "QmRqNaDsrNPNX2QyjUXB3tVogzx7LNRzmtkhfPiuuZ5rU4", "size": 1234293 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x2faf3cd86d4a3caf9a38b36eb4551487accabfaa2dde7f9e5c39f202238ba2e6", - "cid": "Qmb5o8SbhJZJfLNYSwtvjqjmA21hCSGjzpfGKHzrKw5rcm", + "cid": "Qmcx1BX8KUGewiNnPnYWU8wgBTXG2W8em6ZVZKEvEYCTWj", "size": 1243371 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384": { "hash": "0x01ade42701a3e5c6160e3d4277a439dcd690365e04b43e6b6203863b71312620", - "cid": "QmcPECF2xqVu6bZKACjq6AFyJbjSJRca4T218fYwfPagjf", + "cid": "QmX67UkokpDseRyfJtu1hnRB7hwHWWYBaHteZuc1LFEb61", "size": 1394078 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x1d5e207989710fa1ea06e8a7b7cbc9d318b9b81e05bbebcefada314f95e2ba2a", - "cid": "QmbAFWr4KNR99vN4upEMJSkBL88dRHUs3vXq1MQYZD6JAB", + "cid": "QmZbe4R6qLpe57DyxS5JhZ4nxSah3mxDo1GCrMTx5mtJkM", "size": 1403154 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256": { "hash": "0x167ee74049f6a84cac7e13bfffcb42bd07ba29d76c948194f8e79f1341c424d2", - "cid": "QmUFLjnBmTyBJM9QG4kzjtFsmYjH9kv1poWwwsbvp5jWDy", + "cid": "QmNa7nQi4vraemSLP7JsHHRkCm8P1rjex78BF3wmGNZ8YS", "size": 1234338 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x19effceda21abe1b322cea91605c9fbfbbe362d234432fd8ee66edda1314f73b", - "cid": "QmdrBhAkzDD8dKDPiAJ286E3zR5nGYwUT9Txh22XtKtTRf", + "cid": "QmPBfCwpBKCSNn1mjHXBZU4hWi5NstiF3ytph4gEb31tDy", "size": 1243416 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256": { "hash": "0x0e97469d07862157fc09a3a29b1a980379f6324a10e92bffd75d275a7223dd57", - "cid": "QmRaqnh9kpZotiy5SQD9JhdrdkKccDjhJ2SNLsCZUfdV82", + "cid": "QmRTVzPTzMniP3zZkyeNRMtdbjTm7b5pMigCKf4brNVgDh", "size": 1369546 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x1f2082f71aff6876bbdf717ad6795c727a3d1279ec1316a0d633d0591487bd36", - "cid": "Qmf9kwtwVdSGFkz8vshmACtAKC3jCd9cu4ssoXo2kfDYvA", + "cid": "QmcS92RFFfeiQWHyEjpqCnyaXob9xjXTb98ALcHdetRztb", "size": 1378624 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384": { "hash": "0x0e8bc7c48fb5c5d2a950c13cbdf5d8d6dd2cffcc49683ec373cc23cfb05f3959", - "cid": "QmV3mK9fC5FEoSTZQCkYJCqp2tzgt7J9dT3ZTKfUNUxo9J", + "cid": "QmPoJVbjvkm1bFtLWDEumsvdmVEHqVCiHAKMq3BFfD7q89", "size": 1529331 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x19833cc0d72a40c72fb1bff3fe29e77c3b1d7c11b556ea0100a2da73e901b8f9", - "cid": "QmTPv8uKYadWvGz7WA8fnA5tDbvCNaVbHKeMUNQ6v3KnoV", + "cid": "QmTqYEtCTzrxf688wuWtPnrBRxodFzPEqhyJm2fQjeQPS1", "size": 1538407 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256": { "hash": "0x1c20b57c3a92002d634e72a9fcc0a7c0faac03035b21e89c232b4f798129a126", - "cid": "QmR2mZu7isnvLKjuDTA3TjLRmkRpFWYkAx6EW9c8z1KRVY", + "cid": "QmYkSEuBuB1xGXxFKtjGFrHBBJgTzaQm3FkrytsL6gquKZ", "size": 1355306 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_evm": { "hash": "0x034d8ce826b04ef718d2e3e629dc70162b3e01baac57ef461654d9c054ae3554", - "cid": "QmZyANgFYwMDJFnrKmmJj9XN3ZPBic7yq1SvwXYa9pJPqj", + "cid": "QmXUcfi8cRLqrES6tApV3PqVNtsuw1R6nCq5QpFCceuwAx", "size": 1364383 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256": { "hash": "0x0cc4817d3a6de62984f0f4fffb9d86d0f9aed5e390eb8bb195c17a86bf0661c1", - "cid": "QmdHHQNS1Lbeed2pmkGJHHU2iTWpRdhtyM4R5iJULqkX3m", + "cid": "QmfKcmkjuC5yqTD9fAz9n8BHmGWXUGPE7mxm6Gt8ZkeWHg", "size": 1490421 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_evm": { "hash": "0x182ac57620d884f7d8f5631cd43ce202bf4264fdb2e0e03177c7473cee3da2e9", - "cid": "QmU8MHGrhVn6QL1F3gY6iPM9gxozS6bfSCBFirU6yvbt7g", + "cid": "QmS5sWMJRmPUb2fcHGvjQeSZurFNVTk7eMimg79Ge1zLbH", "size": 1499498 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384": { "hash": "0x16ec617eebfbbf0f02c0bd1a214ddc28bb6f1beb059abbdef0af1236f849f2e1", - "cid": "QmbFeghQTNahB4hsuYGGyHatoB2hjVPhcKStmhYEC25er9", + "cid": "QmZSVaJ9ZaBq2Ykv62W4NovXaQhbop7LkGjUUcTCMAu6gb", "size": 1650208 }, "facematch_android_rk_ecdsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_evm": { "hash": "0x2fb72879efba58ec9fef668f6addcdb356677b5829fdfc9f44189fa517d79891", - "cid": "QmUhR4kjifNm57w4uY38CVSdnbPMLitFEDyUmxWQGa8m5j", + "cid": "QmQJWb3NMeb45fQExqGrLsTU7fseCPfAte26Frb6dhwj3Z", "size": 1659284 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256": { "hash": "0x27803fe48a1267620bc9bef90b0ba63bd75ab8981d8dc20de81aece78b8f0e5d", - "cid": "QmbkD4jiu8fp8rGpmpry1reJ5JSmEQ5RU1NBfKkwin8VnM", + "cid": "QmXc7RDwJjN3SkZNasMUecL3ysqMLs4kW9r1kgPmpNdska", "size": 1225850 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x2def0484578302ae506d9768d3ff0f5fb10f2821d30953f2426a7732b741e3dc", - "cid": "Qmczhm6a46BwN9WgsGiMmvgRNn4Y3df8bdXuDGc8Rp5dxD", + "cid": "QmWVqdf1VFBKAn4r88GQBjeo817y3bruKCNMnF2Kj7x4tN", "size": 1234927 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256": { "hash": "0x170c630181f17a058a66a7d5336fdba6bc47d61d94538dea03ab0e8f147262c7", - "cid": "QmWsT8nHHh5Ua8mnpTNyWXxSQcWWMNkC2xjt9HgdG3BG4a", + "cid": "QmVnHJ8MdDvB1XnwGy5CQmjRCPs4vaCGBYkLvqU976AKm4", "size": 1361059 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x171a720373b7ecc71769eef27a061f9bc0ed806dffb16760300bfce5e84aa2f2", - "cid": "QmVMmMhpf6WMWto4jCSSVeJJNAoyRJGGesB2rkMXtRtTir", + "cid": "QmP6rBKUaQD5qymLcyuHpsL9gUKvHSvmnfVaP2FyfgKTs3", "size": 1370136 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384": { "hash": "0x1599db43b8949ef730bb49947ea2b8411fad5a1133a6135681f8de4624992dfa", - "cid": "QmZ5E23bQC1nDi46EytTj67GowAAyJLrspWGYinqmf27Qr", + "cid": "QmPQKD63gqRbkgZQq9h3qtWVTyXgX32fSYfLUgdQ6pdgA4", "size": 1520845 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x18388a8912a2d1cfb4cadecd73a69b645d23b050657d7b6e9144f6896162b0f2", - "cid": "QmRJVNEJdr7m4cWpF8qrekc1UyEC1JHkmvkSJcZHYez4yu", + "cid": "QmS2V7fngbkyX1wYdz5A7abcoTxpS8o8CTWXkTE4Enm3wL", "size": 1529922 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256": { "hash": "0x0b5616da0c623ba41adc41d21150c6b886af87f395205bff2731ae4aa2541632", - "cid": "QmSGcYq5TjNuuwqmDfTLWQgCNRDxHoZk88PmpwxpZVCTL8", + "cid": "Qmdpr9qqZdMyPvft9QFnD2y1ywUQ1ySon1MHQ1PHfa7C2a", "size": 1361059 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x085b9988bb8810705a5bd77a1dc4083f417e29916135906ff5d8386d39405b7c", - "cid": "QmSmTgedBJTD8eTnyNzhQhzMA9v7YF1cE1ynjiBBDcznJ9", + "cid": "QmZzTUyVDKeXvwwtqEdsx97wN1VoLtF2CNhoge59b7xPnA", "size": 1370136 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256": { "hash": "0x27e35f436850e7665ba67b11fa3971e6ea281f0f47911ff5323fee2a2ccb3a0b", - "cid": "QmR3eq2dDktiJAWEMyvAPX65UiJj8yKvjeH8KRUy3Wnpsy", + "cid": "QmNY45zoB2TtFJ2N6Mv6PsEkiRuHqCA5ZtTqeGf8zt2YDT", "size": 1496268 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x183c91164d31a28cc998c525d4073eae0f63add09ed0690c4c4c63be2f163076", - "cid": "QmUxQ917AK5GB37VtKZkinVAs5AaPc7eiYGo9Zg3XsbJdP", + "cid": "QmR33D8TnFEHqdGnH2BsiYheioanYEpMNHGU5yEax4uyBk", "size": 1505344 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384": { "hash": "0x23e90b39cc2ef400e8148cd5cd9284a2ea876d765314efbdd60c7860093683a7", - "cid": "QmQfaiGKLHorAxo863gxEpQjGt1L7Kb4KusD2vzH3ahGm5", + "cid": "QmdsT2TNN8s5hjuPtjpVrrzit67zKstGiypdxgo5k75Zi1", "size": 1656053 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x28011df77bbf5602bea38d8677d9bc7191f09c032e7db10a90cf9e8ecd101154", - "cid": "QmVZz4A9pXyhCKeLqKMg2kysRYVPppeuav1UU9hSWW8ctx", + "cid": "QmNhTHndmxSAonaN2CERHnJgoRwCUqrF8MHia6MWYrT56X", "size": 1665129 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256": { "hash": "0x14500c65aaaec49296fc8fffe3a0b4bb1056c3c0deb36b257b9789e0564f2e93", - "cid": "Qmab4DsPHybpPD7xinoz3etZgN2MqTiWPf3M6hrfCQMU1f", + "cid": "Qmd8K9bAc8KwUwrpZC561wMgDzRUQwkAyECt8TZChySkvd", "size": 1481896 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_evm": { "hash": "0x038ddf712b3454152e53351d3ea13789b9491fab59722dfaad55ac60b88a278d", - "cid": "Qmagxfotdb466zVauzFbsWF6uhDY1DgoCazVUcHEYnKL8e", + "cid": "QmWryrqXExF4HYCkwiPyNruLgQQKEXQtPhnd7zKkaew8Jv", "size": 1490974 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256": { "hash": "0x1d76c52adb9f91eeac3a37b4db596b99fc5030d41c9c8dd988924f87d78989d0", - "cid": "QmSRFiC1S5po9jBVjbTq8AZNu4KvWeEmnpzDjHsiXM2cEk", + "cid": "QmZfJc1yr6VQRig7GjRYFwDSrf2CVk9HZFtVQuv1bibgZ5", "size": 1617280 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_evm": { "hash": "0x2d19ac24e8a8d628b3a0c95a90290334eacc5b6fca349661c95beb912acedf2b", - "cid": "QmXtxWteZ8hZgdKRjXcFsZfQnChnb2wTbYbvwTx8aZ7uvu", + "cid": "QmXzFpZtzkDgre1dbTrGtSTmCkSPpy3d7JyXEKSqgdzJe9", "size": 1626359 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384": { "hash": "0x0c20c44fac3d3aca030a13ee6c57c53bd9919133bc06dddf75aa0953bdae6847", - "cid": "Qmf7tM62du6ubSpJz1gCAcDpTwd4quZiPr31M5vNkmaXso", + "cid": "QmNmyLMsACFx2FNtmWWAqbTL8xeD4HA9FUtEsnccGXiz7c", "size": 1777067 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_evm": { "hash": "0x05099d6aa9d7ad818408c78f738cfdb4761d33e13848f80e8c1477bc648df1c2", - "cid": "QmSYeGDmh9FYugsVxpHAETmTYHdetECT5WGjkNXD4t422R", + "cid": "QmZogRrmoUeYr7CcqMh21LojgNbaoUCJBWDbQb4q8Wonst", "size": 1786143 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256": { "hash": "0x1e4bdeed430a25215e648bc8cc85a5966cda0fc1f4a5d495f0d5232d0804020b", - "cid": "QmRvWXsDJfsUhehmZuYLeND8v7QJ8KwVHcEfLjhjCeKU8N", + "cid": "QmeRmeD3Ynb21YZctrDwfdvF9XJvJEprpSpdDsvdyJZ9WR", "size": 1361104 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x00bc984560d5294ddba166f5a7f92ba2fb160e9c6c6ec8035d119a3c0cfc8987", - "cid": "QmUrKeKUiurDuyik4rT1HoDe33PW1aqp3CwoBs3MdUzkTz", + "cid": "QmQZioYyABupQPK1vJTUvLPxsLFd7MhN3Q95y46aGq5sRa", "size": 1370181 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256": { "hash": "0x0bdbdedaffdfd10efc34736604b0d3135f5b4121ebe2c28c0a309ef861f4eafe", - "cid": "QmTXqtfCrCGGs6HDmH2ZDHKududr7xcsyQe7Fy2iDF2Z3r", + "cid": "QmZtWfWRipbqkGpAfBAV1iEH1zqsMSFecS2bUALtc8fu1A", "size": 1496313 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x01f87ebc638c5fbdb340338200b70bc9d3fbb3a164f56f66e165fe12de8662a0", - "cid": "QmdAVcfoHp9m82rhdLDkgnjABCnGtgwKpvxfTEFCaq5ynQ", + "cid": "QmRY3Qn7UZhENMpQQTRGr9njG8K7HzoYHHGMoh42whDe7M", "size": 1505389 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384": { "hash": "0x141f10d8e72065bea753d0fd09c6022f8490003043efd1687ff773b6651a37a3", - "cid": "QmYysitqEtm1zjMNw8Cz5GeuJHTZmedfyek8vY3FwN5zpZ", + "cid": "QmPrtKBkYFoGmVKy2gurnbUSMpDxbdpsWoiikDqt3mK6u1", "size": 1656098 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x297af49c87adaae50f0796e1f612b6ce0e0012c2efd6de03bc752b3266e96d8e", - "cid": "Qmbhq6i9ww2SnVnsznFRKY1ET2ZdXv5uaGkSWnuiM6G1Aw", + "cid": "QmW1HVuC8gFKENtuypd72ipMhsM28eJSbuERPnQaRTKGzv", "size": 1665174 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256": { "hash": "0x08f48d2d308bc867bc7c2de3dbdf3431e10883484d6a31322c8236df7a715f36", - "cid": "QmYc3ky9mRwAUsKYE76vZoXHZCyT6d3xKAj476HeSce7zp", + "cid": "QmbuCRfjtJFEMGtL8bZPhVEcgY49jTkh1nQLkFj1Kn7iyF", "size": 1496313 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x16b130eb61a7c8b1ebc74c48015a516a0301ccc838a5b5f4ce37e4fdf42b53fb", - "cid": "QmdvsvMD4ALijhdt1HaiBQmTusFmALidJGBPeHbeD1tY4W", + "cid": "QmP1zJffWeAkJqhGGYcsX552U4nkzxzx5Ebs1EqqADV2ER", "size": 1505389 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256": { "hash": "0x066fb95d4ea810a317e7e1812675eccb081c945df22ab7e129b3ef4b1a1469ad", - "cid": "QmbMaNXkH7QJjD6Zbv2BWk2294kH45HYxyr1VXCV759dRp", + "cid": "QmTsGU4EFUL7ngCjsD7xhSnjBZdYsQKYTFsKEH8qzHSmpF", "size": 1631520 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x26fe6d0e1ac146a0b58192e82222c83cea4188a8f4f2bbc2306637bfabda4fe4", - "cid": "Qmbdvma7h3hAAHP7yVaMz9hMf4YQek1s7V5bZdXnLE9Z3L", + "cid": "QmS6eZBPqzKAo82mnYPWfeHntfYQPKhHfsCwRyxNDLQxNb", "size": 1640596 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384": { "hash": "0x2faf7af5dc79b0e3458c72725d08a7e73cd46cd749216be43c12f1a96db7ab00", - "cid": "QmWawBRKjqNH9nFz8fC7CHagTHVCSyqsiNXQMUg9dqJDKC", + "cid": "QmZyM4DqBVbdam54SeiSPADefGwwzjaW2rHLtDsHGztU23", "size": 1791306 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x03e0d688e57ce681e2387014445e8fac33fb4d58ac45f921dc6329edd684d29e", - "cid": "QmchDoDDAF5Ar4xWjk9QpuLM5bMamrRSEgtzeTt5cXETQg", + "cid": "QmeVuLfehtzpQYHmvid4gGbHVc9iq6krjJBrZc5dkVFLA7", "size": 1800382 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256": { "hash": "0x14681c65c7eae646fb674f687f42fa4f89098171b53d3d42c93281ab4ffeefd0", - "cid": "QmUzeMyR9AvoFxaHkN4ABkvspVqPyBvdBq2AHusRamJ8ux", + "cid": "QmdriD6HfA9uwqwWxXv43UYLC9vUKmExwXW2LeSKspoFav", "size": 1617280 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_evm": { "hash": "0x26e34444add154fab664f6e09f91ede1904cf0615207f046333442f63d1007c8", - "cid": "Qmbvb5BbYUNHzmAc4yeSqPEjSHW1MYyPsYQzcigdsZcYLF", + "cid": "QmcXPbTgSDVxfCSwvotpWmGjkgoxuZ6CoTZS2Lyc8GcFus", "size": 1626359 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256": { "hash": "0x21d1938bd92fa92bf85302ad326e7742d3c7938f917e76a59a23488b35f9d49e", - "cid": "QmcoUttn8QAzBVWMraWfUS41pKWtd1aZuLL2PDdnpHABh7", + "cid": "QmX6LQvZ1rqCsQK2CccecTGLiksfM4vdHBKYxVNmFvQRRo", "size": 1752395 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_evm": { "hash": "0x12bfff3e3ef10117ff8f9daa322b6ee9f86b11f51b82a9106986ec292370cbb2", - "cid": "QmegKKh3b3Mb4nbWidapcRLRDMWMkKhzsDuAA91txFUGoD", + "cid": "QmXSM9QxUtc5y9adPoAFo5qTaSvG4zdgjWJBsfFdPWRfML", "size": 1761474 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384": { "hash": "0x2db988dbc7fc0b762a40c3b55026d5fbdadb1ec04c325121c3571376a5089b44", - "cid": "QmXA599cfHdro8zjmwbu8Dnchif1JjRfkXHcHcZFpSvv9L", + "cid": "QmS91gPN12tCBh7GMXhuQSWAAs7PjDjswrB2FQ11HCZjXU", "size": 1912182 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_evm": { "hash": "0x1122c2b350f1c31b06d86a898929c7db5f26334d826100f080fcca0ec6e1f6fe", - "cid": "QmVaDeqpxjwbPdBRrhjibCRSJi92w9j1YdHfpiWakqV4Aj", + "cid": "QmYKZbYy81ew1RgKp7kyo2DYYwVE35nnUVYSg3LJk5dKAQ", "size": 1921258 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256": { "hash": "0x175acb7dc6da8eaea804f01ce64995e26e63cd930d895364ee61829bdc3752e3", - "cid": "QmSSyYE4W52dZ3sHKR3MEzm5yogeEtDJtsVeGXTmeitkaL", + "cid": "QmQBZZ15NdjNFjkK2wSvA21LjYAXLaEsGcv7h2noeoSy5m", "size": 1482073 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x1ee380a69aa96e6a6395e1a5a36ef25e71d64cf8c2d70085363b51e77d375e66", - "cid": "QmUudvz4UPRVc9t9DjjSf3EWusLbQedhufTnrDBbfChwo9", + "cid": "QmbT4afFPM18vStVGYYASq7YU6zgbfw5ngX8rEEXE6Dy6W", "size": 1491151 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256": { "hash": "0x11dc89fd38d18ce5373cd300dfb4f6bebb520f33e81196c3c1be5baa55e68b03", - "cid": "QmZmu81Zg5dUukKPkCmMn8mY9W6UomkoYqSU3LSKmCdb7D", + "cid": "QmdLQowPmTxvuLYWWBJLwX2UtecFP3ZAJdWa2D27QmLxB3", "size": 1617280 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x0cfdf9d10096068c3934727a9526eeed6b9beec1ea88b1b8faee7af60dd5e500", - "cid": "Qmf3MJA9rzYorzCpM9uz65sgS2dGnBHCxBxLHhoq7EPfJe", + "cid": "QmXpwVktaBFoSAr4CE8UtR5chnP5g9rJQ4yHzQSFPdhSQ3", "size": 1626359 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384": { "hash": "0x27420b727de7c11aaabda0cc797f160304f9114c200be94a60235c887fd9b3a0", - "cid": "QmaW7n4sWV3PFUp8qj5wF8nLHciwHwU8KbKkhLVQhTXMEb", + "cid": "QmR5aWPm6ZedQMMrBjtsZZwKsae8j7NoEV4AiL4ndsFY88", "size": 1777067 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x00fac5d3a8806b6e3eb218a977d40a20a6dd9dc5e639f2c6c12aac0d0913865f", - "cid": "QmYgGCsVUX8Lsqp9aohZBkW1P1Tbwi32eVDMetx6rYcD8t", + "cid": "QmdtvFw5QqxysYf526Y1R1ZB2B9MZuqa5r8GT2jXeYqp5C", "size": 1786143 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256": { "hash": "0x04e78c538167570d395ea465a8fe97b6c67009fbe3b0f654284592d952e95efe", - "cid": "Qmad745dtXyjf7ZJeXqaJZGDBTgVjk85mccbiVjYKPmTkF", + "cid": "QmRSW4Ro37XGaVd3BJjJpu7LcXtt98aL35yEtRzTvJuycu", "size": 1617187 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x135a87f01e60a0c8c00a461abe4f4d69bec179fc28fc4c9317195bff297835dc", - "cid": "QmREA7spvnvUeqet2hSNHH2sgHXBgk1KFp8a3PnDo2tMj4", + "cid": "QmRHcB15BmmDZUh1ftxyCACSnvpuLpm2xw5Hzmo7qBBNVc", "size": 1626266 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256": { "hash": "0x1b176fae9de1ffde66788b8fdb85a329a95cd7facc0423b209801199a5f952e6", - "cid": "Qmd51Q7aNzH5E5cwJryzmiaNWVtZZb3AYweUNJBmfFB1T7", + "cid": "Qmb18xtYdCgdS3YJe77cUjn2nUxpqofSB3ykX2Bw9X7KVc", "size": 1752395 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x25204713e8419c2551d9204a827b26a9a4c494aff33bebf2571bf14701c8d8d8", - "cid": "QmUr3n2zH1U3YnVutH2u8T2gfTK8jaoTNg4sPiiNCqbTNU", + "cid": "QmS4xr1DsWmztMGGrg5TDxq1dkf7vcKAQfgUDkqpcwVDvr", "size": 1761474 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384": { "hash": "0x21ac50056c8357b394307525158ec7c167e31cd1410f73893d11d3379d84baaf", - "cid": "QmWEnr9CJr9G6kp18ZHhRJdHNrzvnPPN7A6531XA3YfzNq", + "cid": "QmeLgNrt7CSwcwuFb3i1kLeBf6qmUKeChSDbNj6pMjmbsS", "size": 1912182 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x144bff9f9dde94f6e52fdfea2a1b187e553bc274430621784ff89734b827eafd", - "cid": "QmVVKagmmjMrUrgqsTHjaG8Q4xEabvbNJGgDhBVECMDVKw", + "cid": "QmXazBFbLPF4bJ7YAoHgntS5GQ3qKeJFuWMA66Ur7n3YUV", "size": 1921258 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256": { "hash": "0x148dd995caecc0def29f84becfa26ca8cf8223bce06e81481f6bcf56ca8d4c68", - "cid": "QmVqU9Tgg2MXHJkgybpUroy2p13Cqnz1nUxUP2k1arCpxS", + "cid": "QmbccGzzoJ8cPE2s9kuejWEhcoT3AbVq31ZCGJmts6UkPd", "size": 1738157 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_evm": { "hash": "0x09c82083cf7ab88980cf581be6d7396daffc8736fe78dedfcb55c14f713a1ce8", - "cid": "QmVomE2uY8aP7NAnAWCzzzUi7QNaj8DVRMRd8sKvVkxSYq", + "cid": "QmNLyrhfqr7dnLb7w3FgmwdwZfPZ1W28dwHzUQeKtWsot7", "size": 1747233 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256": { "hash": "0x0dce38b73c185652414e174dd2ee73cd810a018b8d97f6b9bd05d2359a9f2537", - "cid": "QmfB9PWHJsXNBu1mETcpHtxrDFpq6ZoQjJTnT7W6ua5G7Q", + "cid": "QmScu7VukAth5HVgdSkXq1QBcYgaecmZjf6fTjFuvgyBiB", "size": 1873273 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_evm": { "hash": "0x12bc9a5dca4299da7302af218ee356ad9d9d089b2fe536ee85a7132da78d4a40", - "cid": "QmU8Xs1VUYjkVKGWaKCFqLGnzw6oEFPffcuVgB9mpHh4Dw", + "cid": "QmPGZ5H3gwJk65AnUNzG7fLspuit1P5KRMCsSetUMxXkgT", "size": 1882349 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384": { "hash": "0x09feba2d22ae761c55788bd95030328e0c5dbc9b1d1b61c043e03fe7bbf0e0ef", - "cid": "QmRVHC3hF17HYayE9dRR7ptwPN842zi5kbLBUkJaFDQwFa", + "cid": "QmW2UpdaxvT5j5dVQ45NDgXTMZRAnB49ZeHQqFViALZKDe", "size": 2033058 }, "facematch_android_rk_ecdsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_evm": { "hash": "0x2d0d1316948682ce02b707fc831c6d1eb285cff103af56d2b7bc3f047eef4668", - "cid": "QmfC9QzbjLPbMJA9v8UndbSkEQpd357VAMPrwjEaAtLoCS", + "cid": "Qmb5Jd5hBzjVSo6a6yjtWVFRHND24WtAMNq9EtAgfnfNDC", "size": 2042134 }, "facematch_android_rk_rsa_ik_count_1_ik_ecdsa_p256_sha256": { "hash": "0x1b2af4d32a1df9d9e193fd4135d514b8e3a261d953733534349661c55f3cef57", - "cid": "QmdxF2RefZUJfHMQTYUHzSSW1J4eNeGoZDLZx1WLgCaVAq", + "cid": "QmbnsVir3nRWjt4kpYYF7RFLDJUnLwapCKJYYYSXxi32ov", "size": 694294 }, "facematch_android_rk_rsa_ik_count_1_ik_ecdsa_p256_sha256_evm": { "hash": "0x202a310ca6e5b9510cf832c8616342fd0286f28bd5f7b2ecf985dc07542c3760", - "cid": "QmcrZTfgDTSLLSkExu3kEFr7fMbUtJZHAi9tkuSTVxEhNM", + "cid": "QmbsSyiozHBg9ai9v7AGB6YZYzuGxBUzw3nX61EMdHX5gK", "size": 703372 }, "facematch_android_rk_rsa_ik_count_1_ik_ecdsa_p384_sha256": { "hash": "0x16148139eca255886b14ff702a4d1c8dbce8277ef754144d5bc062919d3acd85", - "cid": "QmXRBtZHUhR3XEw1o1AvMDskrLLHpnfdDdWnNvh5MBWchy", + "cid": "QmdzekXTsiZ4TJG69fovj2SiKjdWhTzieTfweve3PNuKSt", "size": 829514 }, "facematch_android_rk_rsa_ik_count_1_ik_ecdsa_p384_sha256_evm": { "hash": "0x0bf5594e3a5e324e63d4693203695dec12aca05c1ef22777dfec4503d8ed0f62", - "cid": "QmTXY2kdbzR4y1foBv7AaFq2qdh3EmCgo92gxAcECCXUV5", + "cid": "QmSgmgvq2RNYLpSGGAkBGo5w89kcgHdEAgYV8ya8FthKjh", "size": 838592 }, "facematch_android_rk_rsa_ik_count_1_ik_ecdsa_p384_sha384": { "hash": "0x038895fbe5d03d56c7bf4625e078d76b9358f721bd989cd3a01d696023d811de", - "cid": "QmWfJoRXkJm4Q2sxFetn7snNCoCVJ4KZadXnvKZFA37LNK", + "cid": "QmXF6visvko2YXhqSvvdC4P8rGxqWsnBHGtdLEwMkf4ujw", "size": 998965 }, "facematch_android_rk_rsa_ik_count_1_ik_ecdsa_p384_sha384_evm": { "hash": "0x0da37bca684aad11cb62d33891806e10a2ed7d6533e795dbdaaec46fb55f1aa4", - "cid": "QmZPot2WkWtCB4NPURAmYFVrfrnwF5Vn9yzgupg5a45G2u", + "cid": "QmRsxZ9rs9iuQ9KtJ5BLqcYEVV5wU6EjDivyzeDkpc29hg", "size": 1008042 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256": { "hash": "0x01d928cd6b41b5956fa1b115c619c6808c90fe258d57b2250bc5809210e6993b", - "cid": "QmejSY6kFt5dUwktWjyCfvRPYrSjQnxuRDtotCDuVU32Ej", + "cid": "QmZiFZpgQySFcJrmSqkETsF3V3Q62k64rXHdcMu8jeDeAr", "size": 821061 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x1063853018860ecd22a345a4d271036d3e374603025f70b652d9799f8841b8b2", - "cid": "QmRxutvucV7sHFfFfA5fh21cSztrrCog6CPR2713t168CZ", + "cid": "QmPaMPFhV4SoXi6KbNbi7YgeNQU7zr44VWRCjcNpSss4ia", "size": 830139 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256": { "hash": "0x09a27207086e8d4e793fbd2e41f89da262d005c65d55a31789347e862a049fad", - "cid": "QmbnZjsZdXaF6mtjiaCLDcmNvzqak3iovnYiFsvXnLTtcf", + "cid": "Qmf9D9yNuFjNigWFPjqLEZyKZnuttc8RxWhjR46Edce8WK", "size": 956281 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x000ea7119829f3b5c6842af6306546dbaeb858aef42d6d1923c30acd2013fd65", - "cid": "QmXfvf6FKwPdVMDaryau59K98MzE6HRzmixMByHip8uvXb", + "cid": "QmZMgvKjVtJYGer8MLVdpyYZcpXRTMv3q84BmCSU8ND1iR", "size": 965358 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384": { "hash": "0x16201b87ac82c4995aceb693c8e979210a22b4333f46f616be46481a99125c7a", - "cid": "QmR6vwKpXLgifRTwa3SGc6iMrB9cYEXiTqZ3iNpzYf4ThL", + "cid": "QmUmvovGLe39PLVfnwY57dhQTbh5x5gAxtX4xsh8M9Pv4Z", "size": 1125731 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x068e9d7c4e3628bed0d1942cc36f7a58a129b55eb4ed204e23d2170d84faa303", - "cid": "QmP8kjmZ3H1NKA814tA6npSPTMdTGdkW7KvpUp56cx4w1y", + "cid": "QmU5yowxRaz284bjsEAcPM92cdax13ozx223FZvcFDHBPJ", "size": 1134807 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256": { "hash": "0x1f10628b4da46977ca2a15d7acf46e57d9751ab17790d733046d2680aadffcc5", - "cid": "QmdAxitwvXWi4vYteV5hnvQsrY2KRt7GUGqkH9LjKrY4W2", + "cid": "QmXyRaj1U1xvYHZHtXL85t46norHSJYznVGZvzCjqqKYLb", "size": 956281 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x2a7a708dc21e65dba59b4a3c51bb9d95a66e7831a64eb46d6f5fa291ef4df1fd", - "cid": "QmTZ1aL81HdNfm21P4rQrrbPJKEHpCeaLpnzjdXv7M1ccx", + "cid": "QmNduDFQfpeScz4t65bBC4kJVezJ5y2GdDJ1JmRKYXhx8X", "size": 965358 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256": { "hash": "0x0c739c5bd1c39beb7158ca7e213567194120e8a52f21f68f5b72eeded28aeccf", - "cid": "QmYnEv9jmYgKqig7fTDrgGsxcMmiXNGi1ZCviAjm3HDcea", + "cid": "QmVhjNjpRsmr7ym2h7sFQwpHqui82izyqjNLVFjVELSyMW", "size": 1091489 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x0483efbc32e95d334e16418ac102bdb7120db0f3e4637b4916544a4d5720a978", - "cid": "QmeG3q76B1SpgdBjNPXD4tjoDVGuJNbug3dd17nYvN22xX", + "cid": "QmPZSAkbnSRM6tNMg7fViKK8kDQNfHues49Gz539Ts1WjJ", "size": 1100566 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384": { "hash": "0x237c3dcfc6336bfe78d10b3086b73b33d910351591dc349246a966ff75fbca47", - "cid": "QmSki8yF2qFATW3LaCy1HLdDq1KMs6kPKysV2TebAASFHj", + "cid": "QmNUgjMDgExA7PS5j2K3caGUXQJbYyidia5cKvb6TzmX6w", "size": 1260938 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x2ef45d5f70a58d54051e6a52d36a75232bf876b980c9058c73f23d2ba518dd8a", - "cid": "QmWYZ3tB9iSjASGEpi8ERCmLFsgHA51KQ9koNJuJBKNAp8", + "cid": "QmRnG9dVss8pegvqErgkW1C1oiLX77tK3FpZFUQZWfoc2p", "size": 1270014 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256": { "hash": "0x1f4c30f4ea5b4a35e35dd78c6a085dba07f6bff949dbb50aa07c297973ae49a0", - "cid": "QmNWScrcBMDZSueVYkaHMHeYDSumzpSxUq2UFdtFpQxwww", + "cid": "QmNe1XVb59dNB8fWMieXNMLTTJJPZ6KK3ihgdrnRVQ2E62", "size": 1087174 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_evm": { "hash": "0x211da2d40d201b033f36f2917aaf89de540b2d78e0b626ffa3fbb98e2216ad37", - "cid": "Qmch8QgBKJeQtxz4S9DikMpRYvQdPtB6obdG3W8ywXerWf", + "cid": "QmXnJi8Pj36LBLYm6tmMMYj5vqS4JM83hMiU3bcfsgeUzf", "size": 1096253 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256": { "hash": "0x17d591b80a55722a5248726d1226eb8c298de00507564b121eb9165333c5bb2d", - "cid": "QmRnkBH6ufC5WTGSeBA2JcFbk1pr83LXCn8eNu8W5vTtxn", + "cid": "QmYHGXmrGfrvUoCwiKcQwW9qWgodFHJ6nD4xT81nzJJaMT", "size": 1222426 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_evm": { "hash": "0x16e15df567674e0a3f5af79836e5752f9104bb1a63747489ced0802cebd889ee", - "cid": "QmU1F3P4mZBDqygSLkHwbZi6dgZZwvQ3TV7jRKShVx3T3a", + "cid": "QmUht2u3SneEfgEnZBugD6h8ketSCrbBeHb5ySX6RSRVDP", "size": 1231505 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384": { "hash": "0x1051ae4f158ff906a2453762f0ab522c9df1c3c68579cab6da7dd6f6a0f1cd4a", - "cid": "QmfWmCvNHYBPF85mRz1MV92YYhjQ5FmtC9PXw8r17jWktG", + "cid": "QmPGXmFsytBMaBgcL48Kb8dQJDSBb8xKw78keSqH5zmHvM", "size": 1382214 }, "facematch_android_rk_rsa_ik_count_2_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_evm": { "hash": "0x16b743685d936b6ba9a17a5580de0b146a938bcee4c5ed74c3e96477fe3451ac", - "cid": "QmfWz4e536WbpNcxfWcnWwWqhfWDh9u71kXhb3gjf3xFp9", + "cid": "QmNSQUtwPyycUqQ61TzFsy7ppn2N8zd9sRwYseYQ4LPKuX", "size": 1391291 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256": { "hash": "0x228faca51b95bada219af533c9e0fa9cda5ebdf660f8a018d582db272ed9287d", - "cid": "Qma5pXAkTo9DXhBPsbznk6kB8U6tpRLw4g3LvV43YfYXtN", + "cid": "QmQSTKAUupiRJVLrrAnUFNw3FBgdv8StFV2Zw43QmUEk2K", "size": 947825 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x2281232050ae83168a55bc47056621fb5348fd3a583214c706cf313f901216bb", - "cid": "QmWQ116gpN6Kj1YVa5ijgJseP7aMDn1rstc1kV3Xe1r76a", + "cid": "QmdRhFyXudBUqrxtMMFAGeQpNQQnC5wQbrPEYWje8C2QBT", "size": 956902 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256": { "hash": "0x27c79084915fa23a6eb401036321bdc4b64b5947d4d4564022b4bce5edef3644", - "cid": "QmY4L7hGRQwbdX5EKwmtCu7qpVdQfpvXEysh6oQZVg7R7g", + "cid": "Qmd8np7otoinvmSFUUWTDPfapKXVdwvadjQQYnrNPXPxiC", "size": 1083046 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x11b63ff229d128ebf671e06fbc3fc207909c77b6665eb833e5318936b52fdf7e", - "cid": "QmeZ5B4FnGsVYyHbfzJzZgV9B6N7uFJP9EtSTxzGtonRSn", + "cid": "QmQLxeytJNaqu3s1hkhM4EWsDDP8PXmV8UjyrjsmGPs4yD", "size": 1092123 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384": { "hash": "0x1b0ed50bd6a65a8c74416113f78d58cf6a96ff29203ca4fe5fa0baff4bc5f4b8", - "cid": "QmZGXMSwquNFPTp6YDUtMJsogvUNMFnQx9UWzNiYBTB4hb", + "cid": "QmaZC4JiDNEvZYzgPGXWC3LVDNNdDjPinijhqMpfS1fsdV", "size": 1252497 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x302357aed273bdd576cafad2ef0fc0c5d3a461614630c6ee9345540d3fde63e9", - "cid": "QmXhgufqG5D3x7q6cQwcnVsMcqdkiDXm4yx8ZP6QYnhcVb", + "cid": "QmSWQwUDLrpS44CGT2RcTdjPLpFtpC7bxC7qZYiRq8jEPo", "size": 1261573 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256": { "hash": "0x08ff3c9412653f04c54c484dee7c73a9d8c292f142b79fcbffe5711acc495cdb", - "cid": "QmbXhS4pcGCgUHFdD7qoLCQAkKz6b6LxqFKjevszbEuGwm", + "cid": "QmfY7mr43kwVnSzoRZShT4ifGRteM1orJLBfK4ac6bRygn", "size": 1083046 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x069880a44e7be65774227bb1be59b18993af2bfe3e47767afd7376f8e5b9ab4a", - "cid": "QmR6yuQGYfvYUj6gGgDhFufYCRuPN76j6BVrmc8MAWZpk1", + "cid": "QmZJjvjMm2Z1m8mEhUEMSmu2f9bcMd1xQJtFBFrdqV31DE", "size": 1092123 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256": { "hash": "0x0196f0a1ba1ce67503a265da0b3062a7171893c3fd9f46a2db1489bc16976ead", - "cid": "QmNRmzHJC8K3ojKXHj35w43EmEtqUHNXcTTbbmpZWTK8sE", + "cid": "QmTmJkGX5BymzuvrcwVh7XJUNEYJMWZLwn4u8iRpSvHMGN", "size": 1218253 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x2b5099ec4494acce413ba5bb45b851d37e7e6b1b3b8948d9a2a51d25123f091f", - "cid": "QmSVQekAAQpyegE99YbSe4P4RomVezHNqB52wipyrT1TYa", + "cid": "QmPhLmpfim1WKehosS3jCx7PDrFDf3QriYeaCiKWh8kmLF", "size": 1227331 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384": { "hash": "0x0616d1e47aacebc90ef02b512d85928ecb35ae2956d4086de710d76b3c72d45e", - "cid": "QmbLYpFZfPe13LGAwC9fBoNARCjZjmKW6so83YCzHXDuNV", + "cid": "QmSzWEGNjgAW2NkwZziyvaVNgzbPASwdhq7btabzxb5ndd", "size": 1387705 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x26f106c1cd317f9bc08732967da5e86c43c37f7e87779760c5ce76df045bd4e2", - "cid": "QmbvxNxWprmxbnL5e8XsBfn2UdYNkwpuM8DqZDsvP7MaLb", + "cid": "QmSd8Cri57XxqidZJQA7AijhAL6NBdBesFba9B2Kc7fZta", "size": 1396782 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256": { "hash": "0x1c1abd10fd8c617cce0e9f9df613613d972a5463553c8ca32734aaef6e8324cf", - "cid": "QmfTFLFwQt53NvaR31bNZepBqpKXmBjoux7mYRHAF9dGGt", + "cid": "QmNkNrovPdYcH7DiVDfk4DNmEYHhv3DoZvRdet9VcEmbF1", "size": 1213940 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_evm": { "hash": "0x13782c8a9a9063ce9f2022221882830f2456c227a745fbf0a1b16162539d17fe", - "cid": "QmWgKGapppSyGms7io7rnxhomKUX6AitKvcoUb5mTxpVTi", + "cid": "Qmc2MC7DuVZbTpKYz9E6RyaxzZukU2GPGGwCAqq5zJTsXn", "size": 1223019 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256": { "hash": "0x2cb4215c1d4f0167b31e3fe16256cf4c31fb4a47d998b18f386e51221130dc33", - "cid": "QmVQR2gEthx9WmGwfKgiiZsriwPi4N9nBLwLxyU8cEFLWj", + "cid": "QmQbyZxrJJ92tcULRPZAAWt9ifHtJYLMrsQiwDvqXNeRSH", "size": 1349194 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_evm": { "hash": "0x0a8384eb8a84c27ab00be3afaf0b9f305e247d2384ca2c1b2f2da477ca9f7742", - "cid": "QmPifrdFqDka2HKpgPHf5dTNedPiwVfD1vZAe3yJxr2a4S", + "cid": "QmUg6r25Mqm4sHnGjobjo32VJYkdYWeLseNkaqAZQmLeuv", "size": 1358272 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384": { "hash": "0x124d3fc1eb0db472ad1c12721e75f1d7275a02c8311be183423a6fdc0b8ac4cd", - "cid": "QmYe1tuepnYaaVmVULwP4iY48ErpPS1tQgvTk5jpbHZxFu", + "cid": "QmcR3LB11cUfADey82hAS1bX4u3K7mFPBpxKNP1fc7ipbm", "size": 1508979 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_evm": { "hash": "0x07c512cb8486857bcb8a2f7067638d110c30c83318674a1b85dca618afeb32c8", - "cid": "QmYsHBcYX9H2mzFDKp5jZSy4ZDyhSYW34wBC3MZwnfiBYe", + "cid": "QmXHJt96EV9V6Ewwgc9MxHHnWZGbJBWccZgLfGSXB4YgmD", "size": 1518055 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256": { "hash": "0x1cb45bb6bcfe3d0a0d65a1ce34cbbda2ab0a65b3f170d22d6267e7d87c1b7175", - "cid": "QmPwroJw3YeeuurACbRbdPcE3whfy5gpywynmFS9A525cK", + "cid": "QmTcCKXUcm2hxXnTS2hdi3nHuLitKUUT6NJMkhgr4272Ba", "size": 1083046 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x0f780ec6f28a48ce939592fb7d2c9f1cb0c83bf02b06ff9894cc2de3a4c72bbb", - "cid": "QmPEcoXaoSMxb1xpjHtJSxZRBMcs8NqHX4btgqZLcjkyt1", + "cid": "QmPan1oYGNGmSoAwkNC7xW5ZWEnbxcraG5g8CoacKwS9i5", "size": 1092123 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256": { "hash": "0x2a6b54e3119641e915729d93048893bfcc20b007c3a187dc2c09e37058d8091a", - "cid": "QmdrrpStNPwdq55c8CDn9V9PEUHL4XXDMuWZeYWBHcajYn", + "cid": "QmWbDiL87bqMsUAa6SaJEUPMFpKL34wPfwcvAMPpAWUGEp", "size": 1218253 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x1bbba0551afebbc4b03cacf32fa607eb82079b52889ac0ed20986e528d2c3134", - "cid": "QmRszYg2vHErHygMCwFWxLRGe6diGVn2g6r62ScaQ5gkE8", + "cid": "QmZaF9T88ToBhZVSdZerS22xL395XmXzeoGPjv83QXCAQv", "size": 1227331 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384": { "hash": "0x1a66bdb4283788fa15ccf79e19878b9c5a5c31ce2aaebd352805daffa2aa2f18", - "cid": "Qmd1JbEoU7P5Zcx8xDyQZcHNPYMSwSpZt9X32cwr5TkxwN", + "cid": "QmfWhhoYTYXCJWMyQvAnfwU6gzqsB38SgLXRP7Jss37TnM", "size": 1387705 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x008cd1413a787663c863ae0608ca3db70731edc03234c675965f55161363a7de", - "cid": "QmTj8bz72McgJ7Cd2GbFH56XhgnAaRcmSCRKMMzYvNAsZS", + "cid": "QmbYvppQ68DbASHVr9h12mdJhb7ABSAhAw6an3LJfkp322", "size": 1396782 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256": { "hash": "0x0093c83c4506224805c78640e6d90a868ba89c1841185bd80a4b8b00268a4e9d", - "cid": "QmU3RocqkeaMdBThdy7QzAM8xXab5gV7nCwvqtZA7BkBAv", + "cid": "QmVLw8NqJqCh6HaZRiKCCzyfC1HxgECKRW91djFuS6odfB", "size": 1218253 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x06ee365eccaf0f9f5204238f1c057a09785b35b46511d7b41ed962d0d55a2d77", - "cid": "QmRvQ9gKDmrNACjckA8bZwsL25zppGFVyms8YNCfnbBrN2", + "cid": "QmccJCiuQBc1cHubhKEToaKfPiDyTzoEnYAZ5h1JFuScmb", "size": 1227331 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256": { "hash": "0x02f972fb61fd1059788a611a8384b0b55bbcf49aa8c87751b6e062770a359e9e", - "cid": "QmXfmGzxmsYDUhSLqxdFsEHUj6DtmqhnSSsmTav6FGJG4c", + "cid": "QmX9XvpXN3UYDUg3kJtCsuxMisRSiRZY8iPZqWu2GqxxuY", "size": 1353461 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x22e3d25ce45dae1d938133b105f4c1ed6253d983f1a4dc74db4b902e2939d49b", - "cid": "QmawbEEbicvWD3oULyEgZ4gecundM6zg5pGLgdV5N8uZND", + "cid": "QmTAd2SZm4qojmPQy7ybH9L2biE68E4H1b5L8vy4ACott7", "size": 1362539 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384": { "hash": "0x0b134bb1da0d432703f1190c3d213cf9d496c6c005924714b9f11c2f93818f7d", - "cid": "QmYiMgazo1u3PgxNRyoi4Uir2FdDodQCbFX1PTVEnELkSL", + "cid": "QmZdWFHV9es2B6xMjL8sohAzsQmuXLuRi18kN1MRVrabX9", "size": 1522913 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x2e3c50bacdadc03f47aec62eb29c768c2657dc9e4b1fc699012cd374ad5fcc37", - "cid": "QmabtdtGE2DEoVcwk2RzsNbkQrkQSqts8tzKqdpHNkEVQg", + "cid": "QmZEc5jK1819irLEaoccj4aVMhkN1VtqVsFLRLY5Yhw12n", "size": 1531990 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256": { "hash": "0x13cf45e7e8deb327c6c07c9be67d86d6f8aab5a8f10a356087bb5055cde2cdab", - "cid": "Qma1zWtaummXqpSGYd22cr4v8vmMoMDRR16Y7y63FyxarG", + "cid": "QmVWA5D8zDVLuWxgF6g2Zf45FnECBNZ6CidYcEk19dMrKg", "size": 1349149 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_evm": { "hash": "0x231258fb27a06e2b99209d0427fdbcc5f419314a85e2abd560f0085f00c0a39d", - "cid": "QmTnvGRKdHxFo2pMWNveHtTjk12bJ8dx8dEF9WLiNHbB2R", + "cid": "Qmc8SMUypJmHuNLi2HuV4a1ZiT7A9mN4xavYbxt8Jdt9Zn", "size": 1358227 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256": { "hash": "0x249aec94188c314697da722303e4a0467eec398d9b073f0a1789e836c5c97797", - "cid": "QmVMUQKLMHLLq58ap3EZeJ6bk4GuZCy2U24sPgnCaM2ZYY", + "cid": "QmPRnFJuYsR6MNptWhtJ5f3i9Jt4anaFXZPqYJs6KFnmjG", "size": 1484402 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_evm": { "hash": "0x13d5bc35205cf9168a5aa6240d98723a9fbb9a2f590035631f95e168f2fbeac9", - "cid": "Qma1ShTqH5nZ77bEzThVA32PPvNv5JKiNQSmE8tPrAgc5e", + "cid": "QmUsDccoZ27jtsXPhk8YtTYCDvtkAnkxSHXFp2FdJppP3F", "size": 1493480 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384": { "hash": "0x1cb83ca1e6f5757bfb809a95635f52e91919cfec14f74e5540f27510f2d63805", - "cid": "QmVd3p3HLvu5cMPSU8545YujFGzmdz4vjQxDP2id1NhmXp", + "cid": "QmPHUuF4s4Uir8pW1AmJpKsxNK2c8dgLwJwk6kajt5Vr36", "size": 1644187 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_evm": { "hash": "0x08b6167d24b26e17a613bae13cb44e8d3d4f31cd008dc523fe3e35066b200dc5", - "cid": "QmYEiEX4aYM8Ey6yCYS28D87UaqTWsGzGcmjfSNQy61Py5", + "cid": "QmbRVqHi69utBFE665LU68zneG39AgJfDqRUs7SYgXGrbq", "size": 1653263 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256": { "hash": "0x2ce2edaededbecb70aae7456b22b2d15223e75f28c32a64d4b13f3b8557d4241", - "cid": "QmboYDGa2MUMs9DerRV77GCHQ2EncXgaRUXNwcPtVh2bvZ", + "cid": "QmVqtAJwjtS3L1EY8N9XabcY69VDJjBJjko4ZAwjfkYHou", "size": 1213940 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x28c31aabf7f263e84abf84dfd7433c53205d0bef45125aeb87c8f7d44c6a0d24", - "cid": "QmVYbYPWtqAqizPCjD4g1VmFZyjbWpqpBawds8mARTHEGp", + "cid": "QmaMhEZhGZNKavrwbggrXBh4AzZtKsyM57K8wtE8NmMccj", "size": 1223019 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256": { "hash": "0x2f915e369caf31d964a19dc22bc15700bf34a0984d6ed7ed2bad709efc81b56d", - "cid": "QmVdLHeyV3SWu153sS1TTVQQKJ3hKNBvxTcE6ZEDQZg4kM", + "cid": "QmNys611d5uc7RKTYtVDGUMZ7xuGasPjv1UUg9WDEtQNxm", "size": 1349149 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x2d87602cd4860f78d0d57d97467e42f8661b0d90f9ed5250e945d32c46471c63", - "cid": "QmXmExc4749LbYiMiXpH4BAoxfbvD6aBZM3aZriP6NHbWh", + "cid": "QmVWVJDDK34n4wKbf12J5ssN4nPsx5v6uaJUQtC7WuhMnS", "size": 1358227 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384": { "hash": "0x100d9536610a1335d0c9da4fe67f94ddeb83a301244fcb1c9c0bac6581ce6d69", - "cid": "QmRxLWu4fZSa2fPiWasuXpo3MHjiAN3ToEzbCtXPrmFhE8", + "cid": "Qmd9HiVtBqj9ZoxyS5t7KXwzHmMEdnBM4xT3HUPPCTp5ak", "size": 1508934 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x29940613a150a12bbbb92e35e8502448b743315e42d74017203935d3aadcb5e4", - "cid": "QmamtWKjdxjFMujcE74rdvaRL68isjYfi52CeWg2EPrijR", + "cid": "QmcTorCTZsdYyeynzx3RcZCLLDcuKWE99iFRpUwyseWE29", "size": 1518010 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256": { "hash": "0x0ce9cc25aead7e35c315506f6afda41cdc347dfb27e08af2be9c89f6896f96bb", - "cid": "QmUSb62gMRWQEwBBrxVosmaA4NMBURssyGLW4cX5KxaBtk", + "cid": "QmbtwSg5rVhfyMtGJUrfEugLFWjC8PpUFnXcnAZGVEjfQQ", "size": 1349194 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p256_sha256_evm": { "hash": "0x02595c995cfee69c5d13966898884adf35bafe1bb26a7102db81569b805aec75", - "cid": "QmUj3bvE7LXwu4b4ZzUX5DWSKcLEAEuZtHzWcK6zNAJTDu", + "cid": "QmWWvoKaxNwqSKdsDdKSteBWtDhU7hjPcRCQ2xvuZHUHQb", "size": 1358272 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256": { "hash": "0x03f058e16c942461ddd4e6f9b50fd164b28176b54cf7959ba590f9da0141d9c9", - "cid": "QmNqGVaatEf1zeWxtvQLq819LsdVFp4iSCA42xPFwvHDYv", + "cid": "QmTVuPv6YgdUswFWWNnFnibvH9JUw7AZ79dTwRVLXAewdQ", "size": 1484402 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha256_evm": { "hash": "0x239987ef4cf876bf34703517d93e627b0eb297eb97ca5ddf6032b965849060fc", - "cid": "QmQfMiUJJCn9FaLZABFXxaXTsceMvxjLGC7SyNfoUB5D8v", + "cid": "QmbzpEHQv35yRkDTaunB7rbb822ddufWVJnFAgyDpLDyFF", "size": 1493480 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384": { "hash": "0x062b4b268650f6af8565f2276416c31da96cf44dcdf3f1d615c34ef111c1b65d", - "cid": "QmbyGHz9iDr3U4Gh3h3NU927hi2DQiWcgFnNdhLs7jeFwA", + "cid": "QmXCy3w81vsUKVRuigcu5Mqa27oiK4k7xz4bbwQHcaUTAL", "size": 1644187 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_ik_ecdsa_p384_sha384_evm": { "hash": "0x26fbe22f8a93b0d6a2c28f196aa0aeddcdbc6ec1efea04a919a1c109d5711288", - "cid": "QmYT7BTgtYQCkv1FEP9BShKdn3aVhj4yLsYa8rb6t3sgvo", + "cid": "QmaDRB5e97VEuDDHBrW8PbzYsv7ti6yitvXXB8DuvrWmCS", "size": 1653263 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256": { "hash": "0x071a603ce11b753a7f7b7a3762457698ccde11ee4feb426c1651ffdc2bd82869", - "cid": "QmZjhDq8AaTcuBeKWfKunyjsKvVrDTb5P7SpcVYHdorfXD", + "cid": "QmXkiztsCsA55o6geJZyy9Jy4ELrS4191JhNJDvnzLbCkL", "size": 1470161 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p256_sha256_evm": { "hash": "0x1c2c0e4237eafa8b8c8a1ba2d35cec7f7c51b9a317f6e0c9677f9eacdbe989bd", - "cid": "QmYpjHHVbHbiY9P65DXsgRqHmb7PosQBFN4UDwBxg3E4QV", + "cid": "QmNuu1T2BUBFpestq8heVzmopJ5aBjqsWqb8NWVvgmjtpi", "size": 1479239 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256": { "hash": "0x24991238d8b8c2e61150d3613b42a01d04744dd9daf43f206a8cf419d42ab49e", - "cid": "QmU56XqVLN2Dvssg3iqrFQcequFa1dUzoFRqbk531vr11t", + "cid": "QmW75cHk7urnP2HttVgFNtWGR27MRw7RFxYAZSUtwuvbUq", "size": 1605276 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha256_evm": { "hash": "0x171889869031479bc316de4237d449d46eed0a68e90fb26bd004eaaebaad4787", - "cid": "QmU8jYuX4aKV26C8TFugzmmMgTMZ4MLx1ND8foXMT9cRx9", + "cid": "QmbNewvH1FqMsNGoQh834mKkTgBDxTFTcKtNknY1Po6z9i", "size": 1614354 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384": { "hash": "0x02ccd8f19f1901392fec58211168a56e9e0a59c4f568811bdd5f80c2013bcdb8", - "cid": "QmeJQSggh63AWAYZhY4YbPS51KsYmXNzd97K5MfJH15xFB", + "cid": "QmcbZdybuAY1EayE5bg5GosUHQYugCpcfdHr9QyKAdCjY2", "size": 1765063 }, "facematch_android_rk_rsa_ik_count_3_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_ik_ecdsa_p384_sha384_evm": { "hash": "0x2052f2934126ae87f95a26bee5fc28b58821c049117596cedb39d842e41ef84a", - "cid": "QmUeB3Qz1pWbvgzQtafT1y8EFuaivkRXbpw5QFAjppcHSw", + "cid": "QmbpVBF3vXAi3SxUX7i7nGkLE67ArtcGxeKtj8u5yBhqjo", "size": 1774140 }, "facematch_ios": { "hash": "0x290420fafc86ce24b8ce0ff9dc4d52f113bc2b562973db8b218bbe58b962e1b9", - "cid": "QmXGjrDdsuPM1K8KLB3qE26mixxKQArWgHQ8Ajej6kkBpB", + "cid": "QmRJmKEJfsrRufvETr4jHcYLRNEqNgqQGkQ25EBUavWddk", "size": 698137 }, "facematch_ios_evm": { "hash": "0x1d55f4d3335b5e4af291bd9d1f032589c4a1e57580630e76c96b0c9ea02206e3", - "cid": "QmQF8rLVUq1jwhB7DbcTcaCJo57s29PMjWzJWtjYuvaczv", + "cid": "Qmaojx6uffaeKzNF8phGfaz8P2vfu7igg8ryd71XqttqZQ", "size": 706781 }, "inclusion_check_issuing_country": { "hash": "0x1c6dafb9f9689005c4776a388881814f3b1a7e8485e19e55078ad42d640ee56f", - "cid": "QmaUgD6XjCDw6CMrcvDEJveayxGMfn2H9C4BMSNByLdPKJ", + "cid": "QmSPDpsZAVSmNr9HJFGzmEP89dbjTGTLzbimZ3o72kvBGm", "size": 84793 }, "inclusion_check_issuing_country_evm": { "hash": "0x2fb20101ec82c1d8d95ebf7617e908aeaa95463033114a1608baebd4524b2493", - "cid": "Qme8ctzufzAv6G9rjJRHvDnCPuSdrrC2eief1n4tHtwdnn", + "cid": "Qmd6CH58hhjSraALmZSAmRKdgU96rSsk8QWMXicXzrnALJ", "size": 118625 }, "inclusion_check_nationality": { "hash": "0x1f1dc6baf9a97df8fca04a8b4037e0ddbf5a38f481bc6447cc3bb13da58cae34", - "cid": "QmSWtV4FKbgkR3yT7Zbo2YdekGyBKK26oYCbkbrFgWZF2q", + "cid": "QmcMF9utCNNp5JMChAckszjGQV55kiSmwJnxAtZqB4DYDe", "size": 84817 }, "inclusion_check_nationality_evm": { "hash": "0x211bc9faf4d9800681560cc46b194643697a62d6fd709d3197c0a007c9c8121d", - "cid": "QmX3NnWLptXHzb9a9NMxs4CDj76g7uqgopy7MXvfcM5UTy", + "cid": "Qmc9KByBB52d8wCyDWoKUyUFJm1YWYZpxQHFNkcAcTRMTH", "size": 118649 }, "oprf_auth": { "hash": "0x29d8cfe17c1a8e517d50a8758c90c16c2c257f40add07a669592299e8d8d737b", - "cid": "QmUGUPUwmrWsS7qi2sEStkJtwfjQ2EoQAc9BoptrionfJD", + "cid": "QmPUZK4pLVRGNYfDu6aYBDgNr1kHwJwpDvDQD9kMLsqG8y", "size": 11967 }, "outer_count_10": { "hash": "0x1ce7407a2ea8ee6a6b6a6feee656d70eebbc4658cc002bb7c13470fe2f0d8861", - "cid": "QmRLfXNqyTF6cNpLLNUJY7sfMNjSwPMsbZkNj8jdRPqMfh", + "cid": "QmeJkneJeX1SQ8khU8XBKHYbkrEsukzq9kFvBYsoeRbamh", "size": 8327601 }, "outer_count_11": { "hash": "0x26af4f87a26a5aaaaeb065609b5116f0107fe1a2a5733bf4a7d49f31420c3a98", - "cid": "QmVYn4ZZVfPc336kH3CE2EFR9tQ74LnaZU2BWZwTtpsXD3", + "cid": "QmY6YFZ4XnstpQjyv68u1ZEWU6QUr2W5UF8PBvjPM4Neht", "size": 9166657 }, "outer_count_12": { "hash": "0x07ea1a07b69f2974f8358d485883c30ae2251390f74550a3157b5438f6fad3c9", - "cid": "QmS5b9YgDMmsysrPuZJ8NsfmTs3nt6iNAUaka5qqnd8iYQ", + "cid": "QmNiy6MhysX6Xt1y6cAzey6x73ayXfkGU9QPSf4d2NwYxE", "size": 10005714 }, "outer_count_13": { "hash": "0x200c38d7be1cb9a506b573bd2505fc82779e6d377b0f97953a65ba729edeca0b", - "cid": "QmSwrrUz73LUXdCeCnBgTd4avzo4fGo68mXbPw1XNtYvwu", + "cid": "QmbxsjpMN7S5Znu91isJUxjW3P4TNQ5ePHtVTAsDvviQcF", "size": 10844770 }, "outer_count_4": { "hash": "0x19cd8e028bee27590aed863d24372eb5e14594c817259b6259974e18dad46e1d", - "cid": "QmYV8U1rDkGgupLcgyFJPgtcFVHY6bZ9um3JgEHiZUc1Ue", + "cid": "QmZcbz6YFpwetmmxtccAW3okK11BJpa9YtKLytMeg3fRXX", "size": 3293267 }, "outer_count_5": { "hash": "0x20ad3a1aebd9eb43afa00c2d5e2c6a5b8af19c7867ea9c8144407685f182c7d9", - "cid": "QmTqPkAcXRWB8tGnthxWmjHD1P2YmBpUBUhFwu531MyQCa", + "cid": "QmR8DZVNNKa5r2AVB4fcngRpQKMKtgKosLRyvT35RZcSYw", "size": 4132320 }, "outer_count_6": { "hash": "0x28fde795d7f3b0ea37700a400d161386c540254b8d5457f4c9aeb597774f72da", - "cid": "QmdXEvZom4TccM4qvdCKZjd3N34JtrJXWLaNBaBM876Prf", + "cid": "QmUkdRFJN2g3zPGWBQQVcFs353kABpmnkPtjZrTw3McdyR", "size": 4971376 }, "outer_count_7": { "hash": "0x2625b3f655fd85b55ef73c77ebc92d95e7a247747762938e48dc6c237b506b90", - "cid": "Qmbba2ZD4SyiPBBC3ncu2hRUU5sYZt5yDnRBt8J2hRVfZE", + "cid": "QmcjEHb9GEF1v5a9VUN3yxteKMuSWFsk4BygPmrrEXQAHC", "size": 5810432 }, "outer_count_8": { "hash": "0x2dcc3d3a87b029364b063e4f1b3ca55e9e838fa5a195a6d6e7fdbfe83f936ab2", - "cid": "QmcnJTUSnubHLKaiwWhnNuvDpLg1rNeMnTnPSP8d3ZJxbv", + "cid": "Qmcm7x6dsu5656chpzbNERSa7BAAkn4ShrjWBsWe7y5xQG", "size": 6649489 }, "outer_count_9": { "hash": "0x2fa7587f8d298972276b35f6bc7d7013ecb34b80458e5d72e42b20eb9874e952", - "cid": "QmQr4TsYVDKHPi3VLMKFdQeJ215ZBdHTTdEhCmuWMHyBGX", + "cid": "QmSo5pSd8dL8dYc8WH7DfxJro5d4ZcD9ai9DSkqzbn8Nrd", "size": 7488545 }, "outer_evm_count_10": { "hash": "0x0f069d864ffc03a6696d0ae37e8708dea13c7c3802ce95839c8110381684a5b1", - "cid": "QmcrSjmatTCqPVb8cNHGj7K25tWmQXddYCkmc5gepJDoKa", + "cid": "QmXxJ6BUp12AsM5LJF63PccmzXjbb5Bn83Y4xSjLqKFPrv", "size": 8327601 }, "outer_evm_count_11": { "hash": "0x26be2379e1555cab19cd37061f32342d09b0a4891e84d4f1a363c93c87c7ba25", - "cid": "QmYmFdJc8cwVFSsjLfy9UBKDpASTcxDF9xzyTerCFvz3UJ", + "cid": "QmdrQmd5PXfE2Sjb4swD51pAnYWjYLTNHp9YFcDk21z6g7", "size": 9166657 }, "outer_evm_count_12": { "hash": "0x16828fad756bb212bd1887e291c51cffd5bbe23acbdb96768b6a174d682224f6", - "cid": "QmbsGXZ87s13hxaEwJUCHJrf8atieZCzhxUBfrP7oWpWVm", + "cid": "QmYV3kxHLNVGZMaChhvnm2AVb6gc3NwU2EWHLFDoYk64h2", "size": 10005714 }, "outer_evm_count_13": { "hash": "0x0e165d27cf39d8b4e569e218dedbf60abc5badcfd936bdc54030669c382c802c", - "cid": "QmWX94aD4d5naSfbYEGFTKSeiiggAL4wpzqjNKmQK51EWD", + "cid": "QmYGKz3fswJFHiaJkXuqTDec2jfLDJH8gMGD59ncccBg1n", "size": 10844770 }, "outer_evm_count_4": { "hash": "0x072583d991a1ef614353daed3b3e3fe5f94e5274966437a9fc9d77da19a306ca", - "cid": "QmQEyXTZgyytRZqes8eMev1qXHKuhHC68yMAQF4ndywQFc", + "cid": "QmSN2HxjThLvzYgiJzUiuk7GoY3ZdnoCy17rXyGEn5H1mB", "size": 3293267 }, "outer_evm_count_5": { "hash": "0x04ff20501e4bdd02871cc1429f70d496b4281bac97aece4544ffaedf156c7eef", - "cid": "QmTnoXLcaHyPZz52WdiWLpWR8rgmT96utmnhsraFird6pY", + "cid": "QmdXaGUWKExNwDbL2j7VCgcGqB8s8ByyhHfxwx87BZrfEv", "size": 4132320 }, "outer_evm_count_6": { "hash": "0x1212298562eaa813d58ea4aaaf2a4117c6f02a72f3b9c64a21b1dbc6e5fab0b9", - "cid": "QmPftUKtgtM2K7CJacqu3FWE1FmMjTJC8bpYXXTY3M7LC3", + "cid": "QmYzCDhtLvo42q57adrzmPjYH6okpNWy8orZw3BTBFNeqm", "size": 4971376 }, "outer_evm_count_7": { "hash": "0x0b769026390dcfb778e3e38af7b45382abcad3b2784d62b84f44ec8fecba8d3a", - "cid": "QmRwLWzC9C1vAZUZeH2CV4ZyteMc75sN7Gh7x28yhf87JG", + "cid": "QmPkdqZ8rbLnSH916RBPc2s3Co5VnFyHdLqnaxfMZNuv6i", "size": 5810432 }, "outer_evm_count_8": { "hash": "0x09f506d0e46238c664160fceec1bd2dec6ef39c0b584f12c316f80aff92d3c42", - "cid": "QmQ6LeiwbmWcajLCy35tGkJLW82M5C5kwUvorvDthmYxbP", + "cid": "QmetwPuvvC1bKxsvRHc5j3NieGuW1t6uHgRFqvLT8payfp", "size": 6649489 }, "outer_evm_count_9": { "hash": "0x2cc2ff165f1e5a7b51d654669c5fb129384dd4c36341aeeafd5cfa8e2647e681", - "cid": "Qmaccc25EenTjcLcsWH91pFou11Hp7R74CGh57y6qZMHrt", + "cid": "QmezmDWCF8NExUqLZEj1CA3NBB4r7GhYtz7zfkkdDuoFXn", "size": 7488545 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_192r1_sha1": { "hash": "0x205af06056030099f03ff7400d4a09bcbb86a868c3b0bf946f39e54f608d71ed", - "cid": "Qma6tU3LyXaj3iQazZb5mNe8NTKGLfrTjBfU5cBAJbtAvU", + "cid": "QmdjDC4joRYQYANTojbRCnWHks7d2PDYrbvfgVcgUTYqh3", "size": 236442 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_192r1_sha256": { "hash": "0x024a29a4158b0afe588895299d5c52210dc1e3844b9a741b5c8a6254f3137247", - "cid": "QmNZ8WX4btEVw7VUUVt56CtVDrQPi6qq4SyQjHoSozmbkz", + "cid": "QmVA1ftbPMVzkhFjpPQ4rf5sE3HoM6afiRSbZLWdfiAbz3", "size": 128954 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_192r1_sha384": { "hash": "0x06ba7ec9eb84f47e3b7d393bfe69403ffef79f95d28fe39d48063b7222113950", - "cid": "QmVSo3jPK2KQz22qSsfy2LS2SaREFSqYeF32WqGEzewhjr", + "cid": "QmbMpErCasgwUxm9uM3xWKhNM8qE9CTAMVpJkGsoVJEH9U", "size": 294120 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_192r1_sha512": { "hash": "0x12f5e1a8aefd31fc329207ca0c4756a93176e0113531c04112150a73a1d63c17", - "cid": "QmNTQG4kxiFRd7KcbyYbcFFBKu3t2BhJ9tmYFL4UEteDZk", + "cid": "QmbVK1wmbjBKr5XWH5KZ27UVNCQk2omzTPPdJy4wfZxbYC", "size": 294120 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_224r1_sha1": { "hash": "0x28a97093d7cd960bcd582fd1cbd391cf9f1c2d64a6845b074e8049541ed3bbab", - "cid": "Qmc5Pmbw6QcXnPS6xMkbTYfkz5NLdqkk9nTp64KZWMYvME", + "cid": "QmPA7KhWpaEaVkYthzMEERQbuT311iHopX1CCuCteDL4gi", "size": 246684 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_224r1_sha256": { "hash": "0x260c597b1af02f14ca56cefc7c3dcfc52074b676126073d129f20780ea094799", - "cid": "QmYk4i7DVAJTjsgXwfgE8J8yQvPDdRrCFAr33w3bJWpMxJ", + "cid": "QmWThTbT6He5Ec5PzvYAVxPecY8uy7LBqgwZqCTiEhQ9gt", "size": 139196 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_224r1_sha384": { "hash": "0x20197a47302d278af0f28ccc3baf40dc6c7ffc9f0dc206075b7b91aaeb74328c", - "cid": "QmaoGSckYGmu3aUSVgNp5GrLwGzr3D6ANkQ7W1SZyryeRc", + "cid": "QmRtL7yUT32yLuyhtemoD6D7tfXFhyLKzjK2B14bTNbzSQ", "size": 305066 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_224r1_sha512": { "hash": "0x251cd1adbbc37dd7cae53243829467f4f5e3f07ae2d22b14689aa8ae282fa786", - "cid": "Qmbwy3AUtiEGjMJcBssSnm8xKy1UkFRTVnGTuLucu6jy1y", + "cid": "QmXC1RUozc6Wc7DTHPBA6YytiYmNZaBg7rJVV9i48NpVTj", "size": 305066 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_256r1_sha1": { "hash": "0x1080737cd5e6895f1a7a3a91522098f35a327eb415dac0789966075c03ff0244", - "cid": "QmctaRxmRATULn8i66oA43E61mYvbPQE1JhGPCmFFQf6YV", + "cid": "QmYbVjm4jm49rPjisk3fMEP9E8ACp9nYdX3wh9sKt3JEg1", "size": 285974 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_256r1_sha256": { "hash": "0x0cbe8a8bb7413d218e74f22a9f47f75b7d77fbed96285463ab78025dc5df102d", - "cid": "QmXgCTdw5aSpoDTY6xFzQADfJGSjRstmtxBUjkswUYhi5x", + "cid": "QmcZRgDixtCaNtd6xvRN2duYbeyZcDsR5MiFrgmf5C8tG6", "size": 178492 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_256r1_sha384": { "hash": "0x0b197e433999fa4e01f3eef126b1348823ac534140f3cb309f027aeee8d0ae03", - "cid": "QmPzQknC7srsKjet1A7rFwECAKexMGt1zdjk7WLNKuQae8", + "cid": "QmdZdScC3XhdLvtD7sSNSKa2ZdCa4XkUwhzKEQwyfj1VPh", "size": 343658 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_256r1_sha512": { "hash": "0x298177d75e44e2870f7c42d0ba210074beab37c0b2dc87647c1d1d25ffd3b363", - "cid": "QmPQ1XAwh7kdTioiPY56r2wsT7SUpmGiBo7GPvJsP8Ar9g", + "cid": "QmbDVpwN9koqPPDTRwGCau4Hmv9FGQ8auP3WR4nT74T4w4", "size": 343658 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_384r1_sha1": { "hash": "0x29744d9776ffef674726cbce4ea24e3853a04e12cea31d8f0028dcf28740441d", - "cid": "QmePQToGDJg5zJzMhRv1kBG1KzCac4AZ7o1J2GTHMmY9Yj", + "cid": "QmX86vkJwnkzjHEwp24rSJWCAgCtue6CfCLqK1pkxGeiTy", "size": 397608 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_384r1_sha256": { "hash": "0x103693f31d75fcf4c005cdf22944cfdd0a34d3261ffba7b053d1d3a30713e09a", - "cid": "QmdUp8EwfgRV3NWEwGSmX169nZnVPfxD5vRLdJkY6TJqy2", + "cid": "QmZfN1HnSBBfNig1KxFHHxg6c7nFeoD5pqggjsrrsT5CVT", "size": 290133 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_384r1_sha384": { "hash": "0x081b4f90863cd7796bcaa5a96f225810b816fd30f7c7c92919baf392af5970bd", - "cid": "QmdiHRa6VzBWo3BLdPjDb9HT6dsydaC3cpkLtVWEeWfiiB", + "cid": "Qma1LfyzpCNr86k9h2vUoX1nXWHn7FGKMECjn24jcKBibm", "size": 455306 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_384r1_sha512": { "hash": "0x11c8b5e88d06fefa6ba1518491bfadd0ccb8247e3638fef95976805452d25c0a", - "cid": "QmQ3T1VYhZ8LuVpZop1iULLkHst97iTd7sxrKsX7Nk1ptE", + "cid": "QmPX2Y5VqdrJZDAM1PuoJcxXGxs8N1fmcfMEYFbJNk6At1", "size": 455306 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_512r1_sha1": { "hash": "0x058dec8f895237ae045f1af378e2fe607298f061c7f6918f94ac2e4a8ae70412", - "cid": "QmdRDvg2Y1RArh46p8oRwyZBRoa8sH4aG4VMcKozanmMkY", + "cid": "QmYjhhs2Av52uRv7SswNmu2T9udTZ4Bzbrd5usbUVsi25v", "size": 557544 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_512r1_sha256": { "hash": "0x17b9f5894ba386666b3962916690f90914325c04ffce0d4900a10de6894bfca7", - "cid": "QmUQJAJwWPpRVzMR1MhGyBeR123g73ys8nziFQGFt15e2D", + "cid": "QmWKedStNqAsfChb27NtVbBFVnGMgwuKiDgm1k4dEDJsF9", "size": 450068 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_512r1_sha384": { "hash": "0x032a74b12aa041f3ded1fd65426feab54309252f73e9e87a21f184a7f3c99350", - "cid": "QmRnPBzfeK5jjwbEuUe9kJwqKxRA6SH95NiB46fMsNSLjr", + "cid": "QmezGp7xLPMQEPKkoBCD17rxfsuyRxq6GQoyT8mxY9kq41", "size": 615250 }, "sig_check_dsc_tbs_1000_ecdsa_brainpool_512r1_sha512": { "hash": "0x061bc58ed1a4c5df7162557f11a8bff1f1c8bff2557e5e1f004d444805b2b2b2", - "cid": "QmQViG7m5cjbLoNurYtgRSWNE8j44Dc3e6tSPWqRsKrf79", + "cid": "QmW14q9JzmnXK7Zjr996zXHe8D6wq1Z2KGQu8X5PYk7Ywd", "size": 615260 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p192_sha1": { "hash": "0x00ea2c4412467cfe94b637b9970ff4622f2b2eedf5b2dca9bf10aa6c516d6942", - "cid": "QmeCo7shKvGDK9PXxXeExtvwZizmKD8KYrbNxkrT9zryGm", + "cid": "QmTi1HnyHFNWYjPCfS1N56TKpHHJajqyG6Skmt75BarU4B", "size": 236442 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p192_sha256": { "hash": "0x23f22a561733dacf23aebd8c7212c80c12cde621cb508c43b1f895c69a5268c9", - "cid": "QmYHDM5gRnbw9CEY44LGDJ6ww7yqGCvzGfhuAuEtvX1VSC", + "cid": "QmaRWgg3GiUSyD9FWJzVinRxcQd7MUjWTLDfEqrvJBPG7z", "size": 128954 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p192_sha384": { "hash": "0x2fe5e6028c0de5a4a6c82c855799234b3abbe40cf769a01ee61aedb8adf25e3c", - "cid": "QmR36BkpbxJi7wJRhMsNazJH4Fj4kfEAPBrQQwPdnJ9vty", + "cid": "QmdYgZpKWbuSF48dZ5UrurPUBnNsjrRJjpH5KnRTH5HqKc", "size": 294120 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p192_sha512": { "hash": "0x2f31cceb515b718a342c9f5345a09b096ad2b476d62b724dba639594076054e2", - "cid": "QmRF5RVaB7iKXqyxdxkrbppyfJrzqVD58PAiVDPYxUrdKC", + "cid": "QmX959Hnp5ChWMhxryZ92npLbLiB9qJuJqoKzup9LdMBaT", "size": 294120 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p224_sha1": { "hash": "0x0c09aeb5b65086802a4d47d9b9c3bda8e84fc9b22183649400ba7fd08a49fd91", - "cid": "QmS9zCSNwkjfnkeKkKBQHZuwe5ANWxd5R6wccCNLKCkAx2", + "cid": "QmdVgqChu6VYh5H6xT34N4QBDja1M1V514CsLxKvBCejGA", "size": 246684 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p224_sha256": { "hash": "0x062cde6f621292ff0a7f91f28ae3890c9a0bd26c2cd623054c284e851c0a5ce5", - "cid": "QmSDYEagCmmGYDcxzR7c7NkQ4ZvSnRrZ7iPi4eYpHRkGxD", + "cid": "QmYypJZDLyNQfLNJZ94UR57YWtiQVjhSK7SkVZFSgd1huE", "size": 139196 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p224_sha384": { "hash": "0x2cd5d4f741693a550432198b716f311842b4bc5d3e1676244568d7b05af4a947", - "cid": "QmWsjHTJmErsdgASE6Y8beeyg8RvRcC8BnUF6JzWZCMSD9", + "cid": "QmWFtY9phjMqzZqES27Yq8M8wNpqemrdvyefWykmuZFwpK", "size": 305066 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p224_sha512": { "hash": "0x172c7f88f656100ebdeb90a66733bb6de22261bbe37360b5e75dcf2fe57a3f07", - "cid": "QmeWcgbRuvceBsA5DaZZYv9Tsa9AN3u9zb5ytuY7FVLs8h", + "cid": "Qme8r5vwDB6TKTfrj7f8XKShGTD3D5f9cqHjYimuzfRbNW", "size": 305066 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p256_sha1": { "hash": "0x0688832bff3eac01a4164dc9c2ed8824ecb15f18e9d12bd8996dc87fc4404e14", - "cid": "QmZJPtcax4PoTGyr2KgKbMwVkGv44NHVYc9o7FEfNxHsaU", + "cid": "QmRcEKd5nfZLZ9Gx71KxdFegcVtu3CUH4CfWu4bdFbBdXH", "size": 285974 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p256_sha256": { "hash": "0x216ebd1b1de8726ca9e757ddb3fadd95d1788ff845ae5c799e55317560ce526b", - "cid": "QmSdgxSQtyTYmEP3bhaZJyDxgT7R6FsbBQHhQ2YFxTMaa3", + "cid": "QmUieD1fA2j15t1myp1NLGnHTRVVnk6wzQophawhHVzAjW", "size": 178492 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p256_sha384": { "hash": "0x12283344e1e149d1c34abf5aeac73317a13f3cb49e64bd9220fa259a9a1bd480", - "cid": "Qmc2LT6SzJSs5R4rBPyauaPMSEkzYr18uV6dXaJnPywx8M", + "cid": "QmXsap3CuCxCJMqBu1F2gLATqAUwfv8qVUQviHJpX2DsVK", "size": 343658 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p256_sha512": { "hash": "0x095efa57115634c53e13954894426dee85b0077642692fd7dc912ecc3e13aa16", - "cid": "QmSk9RJ3ia13fEhfGepormeAAsKTymFAC4pRLJBxzJfQ64", + "cid": "QmYgN9W7gaBjA6bd9kmLQpbfVkkETz8AZ17pbRVsZn4L9P", "size": 343658 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p384_sha1": { "hash": "0x0f3f060bc05fa230f182b97c35783ce63a018815271e3ca6d8410fc747e3e1f5", - "cid": "QmRCwVtF4DaYTEDPTXWBo4YNETNvpeKmYUMdAErYg9jpWh", + "cid": "QmNQFTeXnznEVM6NR82rdbjXRFFL4UhdqRJR4YGwW8ZWnd", "size": 397608 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p384_sha256": { "hash": "0x141202e6cea107ea162f964d8983d42ef092f6ee447b3c1f2ddefe6e07cdfc3f", - "cid": "Qmc5FBTChZjKCfpMHKtPajGno6G3V7itZb3gyn3CRsZxCL", + "cid": "QmaaP3wqNwU6NousnJn3BPd1jaXHdY7Us1qNzKoVivRKdQ", "size": 290133 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p384_sha384": { "hash": "0x0f7c20af968a31485aac1a85e9d82b177317f6647a60f4b7681e526d8ca6ef89", - "cid": "QmPtHDjfohfXoPMm49EyZTHVNSwLoNXVt4teWrr9GL5sjU", + "cid": "QmNmjTfmoh7SM4BJSEYSprijgRPbHfRZBSZvXeDMkCDtAR", "size": 455306 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p384_sha512": { "hash": "0x2db6164ce19efcd4dacbfa9daae913cde3ffea22f4084e7a85455cfe67d69748", - "cid": "QmfPiKtHgwth6DshPxJPJLivdRARZYFqu7WpPwyt6tyDPc", + "cid": "QmdshxSapNWAwFWE1Dw4hHyzTKXVr14TfvoxZxs6wvBTKz", "size": 455306 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p521_sha1": { "hash": "0x2dc7b033841613525693b162829a8d10598897ce32f6e58ec5cf55a0b4e053ca", - "cid": "QmXZMujafwzzv1ssAWUGtwSpe5s9Ci9b629YiPuSqPXZS1", + "cid": "QmSi3QMxX8Lj5V2R89Yjzge43kxP8w5u2KEnPFimDe8Zq4", "size": 565883 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p521_sha256": { "hash": "0x089383018f48e3eb36d662aa493c33bc31be9c72e4214bc4545c5e41b85fa9a0", - "cid": "QmbohSWrMpBTfogGBnY8SuHBm6BDbMeoQTChukjry7QPTG", + "cid": "QmRNUKMPHGWRzUSwPQGqzELdNWcHPBsrVmLvBfnmkUUzcn", "size": 459785 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p521_sha384": { "hash": "0x2bd6cf9af647568e1d31443b0820f75585fc1d8cd9be5b8e5e6f480015200e9e", - "cid": "QmUJLg33Tss3K63sjxfKcoaZKbHG5Q2oBTzjMkUCw5LLbm", + "cid": "QmeRNGyoCfZ1LCa98STXoBXHoNTtbea7tkmxHpbWCwdApv", "size": 624966 }, "sig_check_dsc_tbs_1000_ecdsa_nist_p521_sha512": { "hash": "0x287b4fd7ed949f0d4af6221a8eb299e1dcc45741c9598d1bda8b316b57cdbee3", - "cid": "QmU9ckikVVDA86kb9Xz5kt3AxLPUyFRbKUVi2Yw3soKLPc", + "cid": "QmV9sYQP12Kig8c6housQFDCMNMjAkuHUbXRo6VdsWR1UZ", "size": 624976 }, "sig_check_dsc_tbs_1000_rsa_pkcs_1024_sha1": { "hash": "0x026c0d972c4b3f6a689dcc49f23291c97683bc4dc836f6bb24765199b18b6ca2", - "cid": "QmT3gFw1oFDp7xUTpejMW3aLLbbcvkbTEWhkNxxXKa3rYM", + "cid": "QmRRoaG6U8wiwpfwoh7z6Uv2xmxc4j7cafpCRjRP6TVeyh", "size": 219301 }, "sig_check_dsc_tbs_1000_rsa_pkcs_1024_sha256": { "hash": "0x0312117bb1dbf2bb26aa4bf952e5a34c927b14acdf04d189bdeb1231220a0f56", - "cid": "Qmf5SrFcVesbDSN9ayUhwh3ZqywV3DGAyJdYD3J6PokGcp", + "cid": "Qmdpy7RJnXLHXuvYDy2HH4S8Mu68y212HgY2sDqUprPzo2", "size": 111828 }, "sig_check_dsc_tbs_1000_rsa_pkcs_1024_sha384": { "hash": "0x283c8850f5aec4a3a1d608d651dd4ae9a48e5e0bd5493d50adce0f3127ae7f09", - "cid": "QmQWqXH4tzwisCwAh2Vd12mD6e4MrxEXRMqnMbUvvPNgQM", + "cid": "QmPNgebKkYsxf3z2H2Tv42SWQZQ6BxzFfcBLByj42LbLLh", "size": 277018 }, "sig_check_dsc_tbs_1000_rsa_pkcs_2048_sha1": { "hash": "0x179ce84bf4a5f2679c2feb5e4d3eaf7e9637b2a521ddb3517ec157993c2747c0", - "cid": "Qmb4pEY1LtdtgeX1JX8EGfpn3gRJVdmfiEcH7qoyci23UR", + "cid": "QmQFoLcNXk9Tu1nTXNYQDmh57jEYjFpBpvHDiwFgusfKYc", "size": 259592 }, "sig_check_dsc_tbs_1000_rsa_pkcs_2048_sha256": { "hash": "0x20ba2ba5d0fd4c55296eedee889dc44d7358665f54368ae292ddcdfeec0258fc", - "cid": "QmPKRZZHD7rGZpouVLuhHUBBuEbbWSBVPSnyXaqpWzj661", + "cid": "QmTGd8KWrdPeAh9DqamE6Qkkq1WV4XKAfMMf5sWEJhwKV8", "size": 152119 }, "sig_check_dsc_tbs_1000_rsa_pkcs_2048_sha384": { "hash": "0x2ccf20701fc3af3195d6131c74b8c2d9848a41c65d1fb1264a539a69dfdd64eb", - "cid": "Qmaa68HWUwnVJumk3PRNx4ChBPDH34R5qhMdMkkyKXR8m2", + "cid": "QmTLNRrZwyueJXJvURoXeCWVv3gDV5BcjQyxAmbVN7o5YB", "size": 317309 }, "sig_check_dsc_tbs_1000_rsa_pkcs_2048_sha512": { "hash": "0x2e460247e93e7ba9a9d51614c4067f18d4140c71436185a91fc3c743d4d5e369", - "cid": "QmcqTFyBe7U8QkexfTXuWCr5YJQ3MucqSPBmU6QWm9ZLiR", + "cid": "QmeHafNurKWzamNqNtXHsznhwsVUDxtprDcM6fp62ozgvs", "size": 317329 }, "sig_check_dsc_tbs_1000_rsa_pkcs_3072_sha1": { "hash": "0x0bc539dcac78f29285d87d52bb9295aa3bbd0862f8cd628b5777c885718d155d", - "cid": "QmVj3m6K3v1T1ps3DrZNZBeaKxxbt7s8qABimdwoc8YjvE", + "cid": "QmQ7ctYNAEHfBoFFsNCGw5DRNaadZm4k3xCV7dhnGmi3zm", "size": 308327 }, "sig_check_dsc_tbs_1000_rsa_pkcs_3072_sha256": { "hash": "0x13e82b9645e3697337405fcc04cfc8044aab9461ff0fa92afe6b43fe07582498", - "cid": "QmWkiNWAwjux7pMXnVfSv5S4Tat9NVeahgdkSQcw9DBvi2", + "cid": "QmZJQMBb396xjVpsCKjZwzkzZM8MD44jBpth1vsaQGrBGL", "size": 200852 }, "sig_check_dsc_tbs_1000_rsa_pkcs_3072_sha384": { "hash": "0x3055e3a2b6107b4f4942c30824101b04dba7a7a886124467a3ad3dac75bacd9c", - "cid": "QmToEHQDtL2J9k4gqPekhPkGDn8RchMKBwdEMckN4ZmTzx", + "cid": "QmQEzDFpksjxQjHp8FAgaT3gZUdjvPVRKMnoZKYetr8W4f", "size": 366044 }, "sig_check_dsc_tbs_1000_rsa_pkcs_3072_sha512": { "hash": "0x050d4db4048e57867242dc7dfdae2837dd95d3f6185ad1ae133f765af51d2eac", - "cid": "QmcJC8EYfFxd1C65Q7grDfeGcfQxAGwYPJVEKTEQwaDVCp", + "cid": "QmY1ZjXijCchpygh5Ne7GEpiB6W6i6wnD7qTQ7EYY9pwdn", "size": 366064 }, "sig_check_dsc_tbs_1000_rsa_pkcs_4096_sha1": { "hash": "0x1dd6116d9d6a48e1e7db9680d48174d4f42ede17a18b506ca4ce1862710e068f", - "cid": "QmernGzrW3RJ1kbTSnXwgCrSZGwbi4bkaVS9YZXZyAkK5p", + "cid": "QmdVBjkbUCMCCPyvnrRTEADFcuMzPucUhM4RXqYcUcFfVx", "size": 376636 }, "sig_check_dsc_tbs_1000_rsa_pkcs_4096_sha256": { "hash": "0x052e035d478036cb461176102bd6aeafad2a49c9d4d926614061d01b4a023388", - "cid": "QmWmAhyHfjGWSEYxcpRNeBC7XBKzPPkLA2E8aWVaK9uaH7", + "cid": "QmTjQSDkyxnanUo7TBf1fj4Y58KnwQhukdpoEkaBL2fnk8", "size": 269163 }, "sig_check_dsc_tbs_1000_rsa_pkcs_4096_sha384": { "hash": "0x01beb79eb3d6f717b75bceaa9d45be3d77941d725b35c5b45e30a4be5ab73450", - "cid": "QmQU7RrwSULynQgwhJiJoKSiKHH6Dk6fkZ9Zv6mS75TLFP", + "cid": "QmQWsbJc7vFQAiyGfQ6NVQJhHnVDgSLJfEXA3n9StPdZEM", "size": 434353 }, "sig_check_dsc_tbs_1000_rsa_pkcs_4096_sha512": { "hash": "0x2653f9de22ba9de9877c974e07b952b0ad48fad9e1346f02e5e7f815b689e90a", - "cid": "QmPo6uHeDeMAgrbzByJLbS8KAdeB5BZihnidtQw2NQjR92", + "cid": "QmRw5mqJg2kXet5amYWZHwpiZWKmGvSikJmsHEhHH1VTgJ", "size": 434373 }, "sig_check_dsc_tbs_1000_rsa_pkcs_6144_sha1": { "hash": "0x2e1c8bdb96a7a297014652befd37dadbdadafa04af08f130869192d7c85cfa05", - "cid": "QmSeuzk4bxxBRZmpaVCz9ah5C8Sqm6B7J1zziyMRRWmCL3", + "cid": "QmNfKyvayevBUV2SxgRUxTwuqbZHFFZuvQ4bgNfqzHrd8R", "size": 546529 }, "sig_check_dsc_tbs_1000_rsa_pkcs_6144_sha256": { "hash": "0x09874e36be480dcc5ea74298bf135b8e95698f506d99963419f215039bcefe1a", - "cid": "QmYXZKtqoX4HB34BgeRLioMayamzd3EWo2eYnZqVSD9Tmu", + "cid": "QmUL59SsShRGgjZhFeAufoCE4qhoX1tM2FHdZZ3FF9TTM1", "size": 439056 }, "sig_check_dsc_tbs_1000_rsa_pss_1024_sha1": { "hash": "0x0534cdb3241e063fa20d52f8b531c163da0b0a8d37dd41d91b2759090063e41f", - "cid": "Qmf1MsGmAAsbJeRPuxrdMr3EP4HShmZWypv2rkj7tMpffE", + "cid": "QmafzuwM6MVZyNRwp3ZsrBpPbfZSvHaHBXGcmuazAbJnkj", "size": 294406 }, "sig_check_dsc_tbs_1000_rsa_pss_1024_sha256": { "hash": "0x0d05f2f70caa1af2474ab4d683dc918eab82b6dc24aa3f3332f1126332eb3e35", - "cid": "QmYVgMFNH8iWpvcncUkGrjjGJgJ1jQb77AqZkcY1aHriLL", + "cid": "QmZ3hetLE6yjbdUjyvJniZahHGFXmL1y11yXjRuy7soUaz", "size": 139202 }, "sig_check_dsc_tbs_1000_rsa_pss_1024_sha384": { "hash": "0x032deef852405659aca2e39afd816841c40665a97826466423b8da3660e44e19", - "cid": "QmSSzxYwKAcqPCmhECYMGKQUBJtyXTySfkqcyKKFPbttGx", + "cid": "QmXMzcQGRE3AqGwwMewP9AL1pADSmcEx29qW8dbofpuqL4", "size": 358079 }, "sig_check_dsc_tbs_1000_rsa_pss_2048_sha1": { "hash": "0x04404f2228c20c87b37b1cbd7e6f2ffe88c79b8633f8e6153bf69e7670a7ab6d", - "cid": "QmctSKdw6iRfrWp9XRB3RFMajMNb1fsLmWQNLhRpVuL3ky", + "cid": "QmQW6hFHQMVtAKeDEYEHg8gxCeuRMwbUFYHQa9T15GWPwB", "size": 386860 }, "sig_check_dsc_tbs_1000_rsa_pss_2048_sha256": { "hash": "0x27b1ab6f0b432315333e63ca28cbedb47be572870d608697d7085dc8852eca5d", - "cid": "QmQv989uQBE3Ap51FbZTphCBFK6AgGyZ9CzXYZtdxrYCfJ", + "cid": "Qme8TQJKbSRm45d4uu2r4q2ephLrY7GSVasUYY2vHgeNCp", "size": 197277 }, "sig_check_dsc_tbs_1000_rsa_pss_2048_sha384": { "hash": "0x26bf6146a3a036029cc07cb1f389a90cdf58c92fae37c8abca8ff209403960f5", - "cid": "Qmbs5wDTrDB21q2fU3GxAsTK8w3EgYj2bot8Vnk1evqwHB", + "cid": "QmNor98ps2dqxfvfwa5QnEUTfrvsXyjug42Bn37tgQ9sYb", "size": 471966 }, "sig_check_dsc_tbs_1000_rsa_pss_2048_sha512": { "hash": "0x29067438a37ec3ecaaef27c6b21e83f8660e3c2c538daa050eb15dd10834e28f", - "cid": "QmVz3nZ9UsttU1McrUaChUU9kgjPztnjetpRgkQP92U9pE", + "cid": "QmaKQVvesFbbEbA2F9jHa8C4K1L6PH1YbqSWTCu3eKuA4K", "size": 451195 }, "sig_check_dsc_tbs_1000_rsa_pss_3072_sha1": { "hash": "0x14968b16f6dfe92944d19cfcd1a0564fedbd36b8385a23f52ef148ada0565855", - "cid": "QmfWzyMGWaGnkSRQKWsGB7rHSaKc1t86KQMtt4U4wDMnzw", + "cid": "Qmdag8QGVJAH31Wsp4JbAosGDbRZTxfJfwU9LjuEe9vQ4T", "size": 496176 }, "sig_check_dsc_tbs_1000_rsa_pss_3072_sha256": { "hash": "0x0bd015b69bb219734b64825d676a0c45d0eb25047033c06b669d917aef808866", - "cid": "QmQtP9qsKbxNszXyJ9jB4KfFy1jE19CKAsGarHTggnHHQn", + "cid": "QmQaQqWh9NvS9KMk3Wv9t7GrJS65u83CDhuk4okwW4iEVo", "size": 263893 }, "sig_check_dsc_tbs_1000_rsa_pss_3072_sha384": { "hash": "0x0d33cad668e45c6c5e002c5dfed4fefacf1fa38ec73d58b73724b3a549f4e9cf", - "cid": "QmPxjrEKPCpX72nRaPrSEFd1AkjwTzEagHy22mhKa9dpj1", + "cid": "QmQkF5ibiVXjLTesDEB2Et3SyXcYz2U1D4jgjsHdLpZVZt", "size": 570318 }, "sig_check_dsc_tbs_1000_rsa_pss_3072_sha512": { "hash": "0x29ee475c52567c9f8ee6d45d63d8ae2ba5dde79dac125d56f15cc2c9c3b308e4", - "cid": "QmdawARcoCbcYJPPXMx3KEoqzvtTjSkYdafvYYwvtcBB4i", + "cid": "QmSFB2FUgzo5ADbi8yByGymp2w7TF1e27PBB3oWU1su6ky", "size": 548137 }, "sig_check_dsc_tbs_1000_rsa_pss_4096_sha1": { "hash": "0x124a904dcdcd05149f20466d8a5f76de5ece05a388b2f89b3f4e0574d01902de", - "cid": "QmWx3tPKKKYK4MqAuJM4id5GMFsyWgp8yqRDsXuk6fqJXg", + "cid": "QmcS3q8wQuVnV9QoUvKttk314kxW8XDsQNdHD1CLY5g7FQ", "size": 616648 }, "sig_check_dsc_tbs_1000_rsa_pss_4096_sha256": { "hash": "0x069070d0e97e941b66c1acab8abeeaee62e7ad9ed8594155454e347a279cb6cd", - "cid": "QmUAVcjJJaESS9uKCkM9GTrsLLgD6sM17DykFXHTKJdvwc", + "cid": "QmdaCVPHei3X4QV7ork7n25Brwx81VeA6Q2CM7PcdSuzjt", "size": 350115 }, "sig_check_dsc_tbs_1000_rsa_pss_4096_sha384": { "hash": "0x2a93fb13fbc03f282611c2f5142d797f8d43166f8373dd49594401afb8ddb8f9", - "cid": "QmV2UACy4fgDou7sV41xkoqjEBFZqzPK6gLmUwTnxGDYw9", + "cid": "QmQx9DTqhEDA2HY1LEhCdkBo8LhVYVkV4r3HUeDGJAu3ff", "size": 712222 }, "sig_check_dsc_tbs_1000_rsa_pss_4096_sha512": { "hash": "0x13635e19bffb076f1e9e48c71006d3573027ec39e59bb2f11a1534c098cc88ff", - "cid": "QmXJmZkNvbiivehJ2DXzd1nCSLXpwKwe3kwo3UgRLByENv", + "cid": "QmWVa8mPAvWwqoYXsB6E8qhnxLUGvo8Drty6hFumLy8FZx", "size": 664654 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_192r1_sha1": { "hash": "0x244ae6e4fc608ca83fbe2fe6a29b13e8bd8a0b7edde1a59d06449348705c6cd1", - "cid": "QmbZFb7fS4sd7GgV75v24B9CN1JKbj9vMQbtcWSumLjjdK", + "cid": "QmaY5pnwPmqdRgCcNRAJ3LrkXw5q4S3C7mSNNdCLUWKUiU", "size": 269949 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_192r1_sha256": { "hash": "0x0a49ff3e1c1e7ed1ecce5f1370862b88ded0ab51b68792a2637b1aecfea89e72", - "cid": "QmV97jwZGwJmUr9R95tP7Rmtwcx2CxmkZBzewVYCmtTysA", + "cid": "QmQCh4HfdkPBS1vkmqhWsHatWK96YxgqfgpYiSa8wkkP3Z", "size": 143430 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_192r1_sha384": { "hash": "0x13fbe4810443dbdfec19b3f317b8073c86b3a37b9c01fb39cca9348701e46922", - "cid": "QmVoByb6Cc1kyRuVoPVwajjxXM87YCRy45ohAmtvNatEGK", + "cid": "QmWdvoxkeULhrCg7rkaoDmwQv2XVhuDyYtyrg7XRQSLCgH", "size": 353287 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_192r1_sha512": { "hash": "0x2561d8d36e8f800aa3228bc26c5c044cbc7c33e0838c093a79c98ee9820390be", - "cid": "QmSHpa7xrLsGQW1eMwoL2tJry7aQeiZHyuYXymWtrnasPV", + "cid": "QmVyfBgwGYgNwGtGGPPapGC81iJ8MmZdQwgrkGiCgRUqbF", "size": 353287 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_224r1_sha1": { "hash": "0x1cbe5aec5d2512330e0d63560839270f0a677701e50333ff86ff8430aa9daa1a", - "cid": "Qmep2mzw48YRp79gegPbrdEpsngtUu8qdAN28f9YRetNMg", + "cid": "QmXP8f5CvaHub7cjSMrDtLgNHDXYKvGWvK3Rq6G19whMLe", "size": 280190 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_224r1_sha256": { "hash": "0x0de8c77dbfd37710b032dd1cf15b17aaaff4598311f0cda345df3289411debd8", - "cid": "QmZmEejXhhb4QSrF3DXX7SCysj63R5ZCpheLrH3WGurpg3", + "cid": "QmWTRgMvnWs5FWrfLCtnYH4NLRF7iGbUkK8UoHN2bhRuoi", "size": 153672 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_224r1_sha384": { "hash": "0x0c20b6c495b15dda898b820a201081ebe1fc53a2e1d7988c2bb89e8241d5b9ba", - "cid": "Qmd3zjJwCgmp5E3HB38234PPnAVCh9ZoDKyRtUiRNDdZGF", + "cid": "QmW3NSHdYYsH3VFYoXo16busXKdDHMDjbR9gMBkUuvQLjk", "size": 364233 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_224r1_sha512": { "hash": "0x1855333eb017ce15504807ee9362ba02f849fdef2f6b47f23b6bcf1ce7081385", - "cid": "QmRohHwxQ7X8ZbhHFVrTzmbPdtP754m5YCohKCXngFwBG3", + "cid": "QmRFFQe4diYypzHrKhAC3gne5qhaXnQwZNPyxAsofjDgJ5", "size": 364233 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_256r1_sha1": { "hash": "0x0dec64df9df7d68d18862fbf05b44cb01ad0b55af6ff08f297d314b983be5d07", - "cid": "QmSTThYfVStEULc15oyNsWBWhiTYYyu4MZ1HzU6KyUSSjf", + "cid": "QmYNYZqhQBknNwcAug3NaPtyzSAiAEwPqY3HkvcQsE6fpx", "size": 319480 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_256r1_sha256": { "hash": "0x301d6c84ef32ea2c2b4851cd69904038832baa070d1273cc2b1c499ff2aa5bad", - "cid": "QmYhNtffrsV8N2xvVDaiDTZHcN3DmTi4LajcTys3wM4NFC", + "cid": "Qme6dzbbNa5THabLpChkn4WZch9bnGTVCNRfjEgRB9ZEPo", "size": 192968 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_256r1_sha384": { "hash": "0x0e7bf426e3b668228902fcea17c961983b4665d7be00c1602a110c814f1e613f", - "cid": "QmdLQj5PhaviCeEaGbtVaw92AunZcAWsQsPMWgCF3NQrQn", + "cid": "QmdUB1QnRgB3YgFzJRsAAzrn33KdERWZUCsWBEy4N6uzHa", "size": 402825 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_256r1_sha512": { "hash": "0x22c3775b7f5325c59769d80fa8c35b397b6a2fb05dfeac5cb186632885c5f4be", - "cid": "QmaxVMMFVRiMz4sedCpUx5z2YNzfyvE4aiU2qyrtBWF1wC", + "cid": "QmX2UMfz7giB2QJeEgjLRurXWcjMPVM5mzdnqQt2PgwpUz", "size": 402825 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_384r1_sha1": { "hash": "0x0d6e7523e2e133f9815b599ea68ee6660901da4328df8c1d10a126237ba59080", - "cid": "QmVGxgi219Mxdich5C6nokTAP1AimrvELHVPb5wHsSBbYP", + "cid": "QmX4rBCYgm3P9VEhyCm3SeSLPcGgr7ck6dbRMwnQGZ45eQ", "size": 431115 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_384r1_sha256": { "hash": "0x08370960ffc3ceb0fe495b4a0792cca68b29cac02e7d340f1abcf9d8b1421304", - "cid": "QmPiv5G1XXMu2FHAbvLzk7iZ4HByLdhEydtnE4Dm9MUjbx", + "cid": "Qmbp8SFhGkMmfBpPi7eeqhiDpNBu8gHBozwiqXyxCcfyy2", "size": 304609 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_384r1_sha384": { "hash": "0x00d9f5bd9987d2e407bdbd0f572720a56150ed1c3a6d3eccfddebe680557732b", - "cid": "QmeirVUaPXmEbgYgU4iCceDDc6Y2jKsH2FcUtxWMaazvMf", + "cid": "QmPwYDJMmPyq7Kenq2s6ccp9WbPwdePt7pB2s3crmmDHZ4", "size": 514473 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_384r1_sha512": { "hash": "0x0386d9c06e98a612b63030fbb90b6ad4d15bf7d24f6b442635405edcd8ef308c", - "cid": "QmRXA1EkcTAvbarXDAJgBeB8yyr99fw97kQqne22p99f7m", + "cid": "QmYznm9w2bxaLJK7sxpaHggYicXMhSzYjHVmd6jCXTBd3V", "size": 514473 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_512r1_sha1": { "hash": "0x13da0acc601e2ce13d2cc21c72f24d62a53de81523adc415b3cff1748ce71470", - "cid": "QmW4XDzUv69VHT5vxiAyrvPzbLgTDZ3QxKaizyJn56rA29", + "cid": "QmPBCX1CizjGA81WG6Sjsh3aadZVKHLxJqTin9d1GhedJF", "size": 591051 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_512r1_sha256": { "hash": "0x0ba29e8e20be665031508d92a3b30b9a37aeea009f46c9525154191b867a4b08", - "cid": "QmQy9rregQT4ZNcSyQhTY4MGh7FDPUPuo6VogYxrEgcezp", + "cid": "QmST3SZnZz8koRRz4dBHajdz38KGwpKSMa14CVMFSHx7zt", "size": 464545 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_512r1_sha384": { "hash": "0x1083ed89e4290d2e82a356f3c480ad2abfb969711dd782e9840457dc65061486", - "cid": "QmP6V4bTZJdCmSJU71VNb9DRQt8m6J9TRyo2yQqWR41aMf", + "cid": "Qmaxy7pD2CSbK4VRuYJprjLkYYJuGk5m6CjZ856c9aHbWG", "size": 674416 }, "sig_check_dsc_tbs_1200_ecdsa_brainpool_512r1_sha512": { "hash": "0x2d9e74e2699ca9dbe7e3f4d4d56d53e4246543a7c5a40f56581bfdb078e22dcb", - "cid": "QmSYWw1DZCenPgzcQJjbLoskQqNzP3oRQx1NSoeWLoJBrD", + "cid": "QmTRRUt8czUXxaQNRNnT2AdMZqHAeLfCvfmjXh7rDACvqS", "size": 674426 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p192_sha1": { "hash": "0x102d82a397016c73e719147aa9fcf3141af11967f77271413d8fc7206fbd1c77", - "cid": "QmQMWTtHcwdZEdcPUS1FZoMftt6oFgjxZ9zcwjqkQpCDaW", + "cid": "QmcWHu9c71nz13biG7ZevgbaGDNu2NABCZ2s7DjRh3kkZX", "size": 269949 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p192_sha256": { "hash": "0x21506b60c98b14fc90268c4c884adfaa303fcfd4451c7d743ae61fcac7eb3f45", - "cid": "QmV69puPPHRphSJz7zo1ebAExUnWSGW9rvPatSbQcHSVVr", + "cid": "QmXD5EwTogRpLHa6vxY2V7VU7ubgL7nskG8ML7ztf27Qgu", "size": 143430 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p192_sha384": { "hash": "0x035a8bae0fb6aee5d216b81de4aae665e14a285ce69dbc488758a6a0e3a889f2", - "cid": "QmeX1DMP2Mo3KkDb2Z3VbYgBk3sJEBgHq7qPGwmdKyfxZA", + "cid": "QmWzLHZMqDTp1qu77dR73BuXnutbHs1ZYYLsDpj7rgWTX3", "size": 353287 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p192_sha512": { "hash": "0x2c7f94520b882326ea42cbe26730cd3ac4e48ce8a92fcf4fc8025d284b7c76ef", - "cid": "QmNcXNppNzcr4r2EnTwsrdh49NxdAKgYf95y81ihktLtuU", + "cid": "QmVXDxTWgd3Re9HJt6esX2Fw7rV3TAzGfcQUSAuoxJ7PeJ", "size": 353287 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p224_sha1": { "hash": "0x2aae719c06ac6eb970d612d6c27b27b2b0720e1d942e425f4cb2d7f6785d60e3", - "cid": "QmeUt1QoVYnu8mpfXKizQfcAHDhaLw3fssNiyWNy7ZwjcU", + "cid": "QmUCvb9DNm1yeLoespsMgz4C7oRFKiBzKWo1ZCELioi5Kn", "size": 280190 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p224_sha256": { "hash": "0x12c422a7eb64c3309c3cf9f28f9d492a1db0962c9b204e0ff6e5b3488f1e8257", - "cid": "QmT8L64RsohMzRAKYMrMqETqXL71KU8RwwNzSAkyJNArXP", + "cid": "QmZEx6jxA4KhiZxQn882oYFgg6Pr35c6daNEEFosMbMpUR", "size": 153672 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p224_sha384": { "hash": "0x08069f3b404575cd96e8b88194181089daf62a4af33d9aefff0e7a3ba3a4082d", - "cid": "QmQr9BFWfAxRDEaFacwBSVXmiCVgkCw9ga4oeqT2GBsDNp", + "cid": "QmNapqizQ8xtYsHRzhkoUPZwnbmrgnx1aiLHzA3L3qRySu", "size": 364233 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p224_sha512": { "hash": "0x16fdd88ceaff6f88a6afc2cb603999cae5b3963cd15308f1095b893011ded6d9", - "cid": "QmW3k8vThFgJxwSXQYPLXStZz2cWT9yFtJ22hsjV8aLxUe", + "cid": "QmYkwxkCPXzgi6e67ufDBH8aURnGLHcBqnBgmpE54q1463", "size": 364233 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p256_sha1": { "hash": "0x018e6011e5a40359d02c3805b9c952c0319837bda55316c9244057d2bfd74150", - "cid": "QmNvX3TSrqN7zVzQcyyWfrqpSzUHfaGsm3gwxbK8bqgyjH", + "cid": "QmQ2nvKRpCaXKNNrkGkr5TtdMcndL6dBf2a4upsPYF5vt6", "size": 319480 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p256_sha256": { "hash": "0x09928e369aaa276bd18776c4a04d18bf8d125d7e26103b5103457a4f6b2d747a", - "cid": "QmYMv7vmPe9c4B5NsFjzmB8sDkM6x8yCUb5sdzeUVjxNGV", + "cid": "QmS57tRo3SQXjBY1yXuABi4YEBC4iwXN3ufwvWjEXzbpjE", "size": 192968 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p256_sha384": { "hash": "0x0c09bde2558a797b11cde363928f4fc0de1afde494bade2f86027d246c2c0927", - "cid": "QmZTiiKM26DxTZv3oXGhUL7J14YU66K65DTbjQiHxDsYKN", + "cid": "QmTEb5FSFyd4LKHPC9pEXyhSrgzAJocHYgWgayzdRAWyAW", "size": 402825 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p256_sha512": { "hash": "0x231e6520d90142345aee9c938ee6e7c3955c906fb9178e901041d4c8fad47ec9", - "cid": "QmPMgbGkzkyD3k2oggHxJH28igbhwYbFLCufndxtimizX6", + "cid": "QmNP22cZUtDghRNKtQQS5kS9mE2aRbRHcxRnkw2PgncBbX", "size": 402825 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p384_sha1": { "hash": "0x059f089b5a9e9ae79ba764cc6180f5eb0013e5f8538538c29c8295a1d1fb24bb", - "cid": "QmUzFvGbt2SomGMqf1QyQqRfk3aNPaKKEisio5EZehzf4v", + "cid": "QmfQbjNzzKz6jMxCwB1HAnYpDuc5Pa4ofrEA5Xgf3vQSyt", "size": 431115 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p384_sha256": { "hash": "0x1e94ead31d9dd375442b06672f4599b2918186bacb1768f2da897a624349b3f2", - "cid": "QmYjodJ5dcJymh2RYQyyP42JBhL6vGb2qM1r36Te8eZFEU", + "cid": "QmYt1uAcXhmgEZqYCcxo3qzZ9GitoKtdruU24EnUm7dnN8", "size": 304609 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p384_sha384": { "hash": "0x1ac45dccf13b824ab8c60bb7e05bdadbcacb08a21052a9d59cc9e468e1c06e70", - "cid": "QmPv7rzdGoS8gtuAWkxB1W9SpnivsvvHw1xiupCoDE59iH", + "cid": "QmZiyfo64PVkpakdTDEyCt4ZWYo1BtZyinNLYSh31AmGJK", "size": 514473 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p384_sha512": { "hash": "0x2bc8f3bc63e7aac0df2c5c63807ba0705c2d11cff2c2873ef4d7de8f4261df7c", - "cid": "QmV8ycVPnjXQV88Aqxvtxtc8f4WKtzRFD87JvscdGQwAKZ", + "cid": "QmWGcHRsZmEMy9u5Mbop9KrADBR9wYD3DDNHMr4jQrpJ7u", "size": 514473 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p521_sha1": { "hash": "0x02281a71fe1cd079dcb7859476d672c38bed002da09417bea4dde54d6886afdb", - "cid": "QmSJRfq3r5mG2sUNKzDGkA8mwnZdiPKV6ufY1nDzFbN6tn", + "cid": "QmbQyuuADjU258LAn464d9dv4oghUfEw9r3sjZeuTfgTeb", "size": 599389 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p521_sha256": { "hash": "0x2002f5975dd64ec3dbd914952317469c4785439f6e5ebfdd02ed64ae6a202dca", - "cid": "QmRxHXPRZDaaWfPvpWDwuDi7aDsUL72gvtzaKpohypJjKv", + "cid": "QmYi1UZ1r6NrTjGfpCqsjW3hXFLvSycJ12tWJiRwe63rWS", "size": 474261 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p521_sha384": { "hash": "0x192218888f2c86c35d4dbc97612f0c619b04cc46b9847556fb63cdac98163af0", - "cid": "QmcA3xKkGFdnHPVPkVyVvkdSevJiDku5ahHQN3DUXPbgHx", + "cid": "QmRACn3EZvcCrKpERtBpBpT2jdjQgh5rxPJ1uFVKKx8cyk", "size": 684133 }, "sig_check_dsc_tbs_1200_ecdsa_nist_p521_sha512": { "hash": "0x2f9610f9609664378e62cc359c82e2d27ff41114800b1390d881725e447e3d76", - "cid": "QmSGbDtd28KisWZtSdQE2sjqQ32gMXz9E4UWZqd4owa6go", + "cid": "QmUPMt3o94eZgj2Ek5vusPfJu1R9K1oB7Q3cW3kPyKSZeg", "size": 684143 }, "sig_check_dsc_tbs_1200_rsa_pkcs_1024_sha1": { "hash": "0x16446a1bf04139b60493dfceec73601be9e62478301c5da4d209287cc9c718d1", - "cid": "QmUxKto3vnaZ4Wsec6y5wJeqSY9UtrUzSWF7LydQSKXt8S", + "cid": "QmdNY8whDEesyVs6BGMyJrdhY2QBQWfpj5kFCu1pDe7qUN", "size": 252808 }, "sig_check_dsc_tbs_1200_rsa_pkcs_1024_sha256": { "hash": "0x1f89b1146024807fac1ce48b7f1ad0307e844f89156d136419e0ee58b43e17c7", - "cid": "QmZVo5PVTMu7zTh1jeQC4VxotYiuEQptSCiPD6hhBzzCCd", + "cid": "QmPBicoJqS9xbpnwgRQAzGtikELhcQ8e7iaw1etxSrnVKd", "size": 126304 }, "sig_check_dsc_tbs_1200_rsa_pkcs_1024_sha384": { "hash": "0x2d137e0200d7a9a73ffe1bbf1515738ed05451ebfffa16e5c3904fbe1a840f50", - "cid": "QmQUwbubpbaAFZJpjjqYA6Yr8cVcF5BTmDGRRyvwvcfY9N", + "cid": "QmZB9o37cunLQKvr3rPc4cGT39hDWL1j7PJj8ENCKPNuJS", "size": 336185 }, "sig_check_dsc_tbs_1200_rsa_pkcs_2048_sha1": { "hash": "0x25ac6e55366fb7128ba357fb62d3696d796822ffd0f9bfc801c2ecb219374979", - "cid": "QmX6S3ScgMoM2kENC14udABDHtzMMF9QEfWAVm4nUQKcHz", + "cid": "QmPhw9ASCRhL1BLNrr4VogAWivmrJoy6yL2YBEfARGgazD", "size": 293099 }, "sig_check_dsc_tbs_1200_rsa_pkcs_2048_sha256": { "hash": "0x07a50877f5ea86a55886c92b93cd17c242c1284b9d872fbdae1cd79a6af2b714", - "cid": "QmWgHmxvXvR7D4ACbdfhp8Vg4sCaSRW1BXS4PSYJSdpgsW", + "cid": "QmfF4xVd8TDTwVbYNxEVShf9d9JFL8CBLy4Dj64n57YCB9", "size": 166595 }, "sig_check_dsc_tbs_1200_rsa_pkcs_2048_sha384": { "hash": "0x0c3000254d6fc3be0fae1984f616079914182ffd085bdf286130906983525b25", - "cid": "QmbeSwnfYTdFbFPxdQViTMjAQinN7egBtFEH6ivNfh99RL", + "cid": "QmVV21SnNpBrgybfD23cBziehqytDFv98oMC6PACFYxrPg", "size": 376476 }, "sig_check_dsc_tbs_1200_rsa_pkcs_2048_sha512": { "hash": "0x00f625bb85f09b56fa05174b6bb32f99dd0219ecf2754fee25f175db8ab8671c", - "cid": "QmVH2c8Bm8S1z1jcYt5hirWp1GhEPUpogtzFrziJZ4KhJ4", + "cid": "QmNdxR3QKwhUdSA4SDgmMnjAwLMRuNJBnbotgFNhokxi89", "size": 376496 }, "sig_check_dsc_tbs_1200_rsa_pkcs_3072_sha1": { "hash": "0x1a637ff1544199eef1a2e98f34a71fbafaaae266c58cec73e22d10c217fd90b6", - "cid": "QmNprif9T6pi2oLXWReoL3ebE5a1LK3uUcLju6u7BDcm2B", + "cid": "QmTHJcW7xC252chvEswSmA6vms434eosLrDNUtXfxagxWZ", "size": 341833 }, "sig_check_dsc_tbs_1200_rsa_pkcs_3072_sha256": { "hash": "0x0b4e6e5c7d08225ae19e40e08c82c8a50ae52fb04f595e405edfd60b2cfb151a", - "cid": "QmQodZ5MfgUZ97Lh947dVzVUBxCgYqFTSYBdr8NgaurGbK", + "cid": "QmXbrnpDtRhStRcgC3QL8bM7ULZhDXDK34BXcNoWhxvXhn", "size": 215328 }, "sig_check_dsc_tbs_1200_rsa_pkcs_3072_sha384": { "hash": "0x1492abb0cc812a8189cdde5df7846902d2343b56a46c36f3ce77b1d7afea69de", - "cid": "Qmd9KYWqGE2yMybi2pnJ47Cq2NmNZyuJxDjHSw499aRNr4", + "cid": "QmWPDW2p6RNQ7orEAAWeqZg3kmjj6Vjhfy3iecCZ4sB6VY", "size": 425211 }, "sig_check_dsc_tbs_1200_rsa_pkcs_3072_sha512": { "hash": "0x064e6d3968aaa0d87bb3390229a33e1660970de4b7d5886a3f1e79864d7437ee", - "cid": "QmU5SqA5eewLNWmBMRzfj5xxYH9944igVSsWY4tnEmRLEx", + "cid": "QmTm8MWRRivTB3C6i7ZYKjQKB911RkrEBtG4Un65jgHHTF", "size": 425231 }, "sig_check_dsc_tbs_1200_rsa_pkcs_4096_sha1": { "hash": "0x07d1683823f901c6bd13f2136832225d65acd360eb4ca99193ac72c8890bfcc1", - "cid": "QmWQTyXuodAwpq1sp3dcdKcPQetJWSxd3jsQjcb2xaYKKN", + "cid": "QmPvr7TghHfXnqPtdiuFVXL2LAP9tgFWyS8uafzPZfRvLk", "size": 410143 }, "sig_check_dsc_tbs_1200_rsa_pkcs_4096_sha256": { "hash": "0x1cd4ac4af9411b7dfe1348b7478369426fc2bc567dacab0cd2df448a93ff0b23", - "cid": "QmQW4vYR15zE4F3ELUZm9GHrsWFfpiVG3LyCsXJTBrSyLh", + "cid": "QmNbePuvypDxheSHjijd2WUiUTy3Y17Ym2zmejGfiv1KQS", "size": 283639 }, "sig_check_dsc_tbs_1200_rsa_pkcs_4096_sha384": { "hash": "0x2f64f8bda48a1afd9331ef4b431cf9f17c5efb80b2c691afa0b80762028200ff", - "cid": "QmSxWopfsWotcfhzVggiG7qZhtypK7KHcAZ969vVgCuama", + "cid": "Qmf4TGCBdMV1tq6Ew8tnwAARYH8mAPxYPZ82tNq5RkPgCs", "size": 493520 }, "sig_check_dsc_tbs_1200_rsa_pkcs_4096_sha512": { "hash": "0x0c4cb19f75732c4ec12863d9a918f5c96f79ca0d498565ab3fe44ef7602e5a24", - "cid": "QmYSSEnuwEhXESdyWWTAPVTJqMnGTSq49y2JLU9Qf9LLQV", + "cid": "QmVd36t8e48qEFJ8NkqGB1SLpNW9AqcwNtfqfExCtavihb", "size": 493540 }, "sig_check_dsc_tbs_1200_rsa_pkcs_6144_sha1": { "hash": "0x15de6d4c6fb9d74a74b1e410f7ce749d3dc82a5fbe50812dcebaf545694a5d51", - "cid": "QmVfumxEXtWTCNsormqRttMMDnMucFKbsnCumefDrKET5i", + "cid": "QmX3m12ZTZA4H1Ys61hyhy7VN3FEz5By9aanMiaNiLgzW9", "size": 580036 }, "sig_check_dsc_tbs_1200_rsa_pkcs_6144_sha256": { "hash": "0x283cf594342c834c6532b52e2a393b2023eda6c3dae5b33c9d8187b2f2c09a45", - "cid": "Qmc3YUdu1DcjPdyUuubBqFCJmKW8bX7dPM98ow8WmV4jtk", + "cid": "QmeqSq2DMamxBWjXVxJ2WdeXERyb8eZkzuZwTWJuHNsQji", "size": 453532 }, "sig_check_dsc_tbs_1200_rsa_pss_1024_sha1": { "hash": "0x1eaabe2d58d64da09e584fbe7e2af581ba6f3d5084ca84cf7876a0b30d12bf9c", - "cid": "Qmf4rzsYmX51DsAFhGRcVP7NRYy8Ub3arAv4jSjaHHnhHM", + "cid": "QmUsgSNQAvCBvpQU9KAp5Hd1RvfMCLMuuJYr4g8V9aBHa5", "size": 327913 }, "sig_check_dsc_tbs_1200_rsa_pss_1024_sha256": { "hash": "0x02825e83622acbbf2fe8b226e807dafaf755dcd66aba384cac5b2fabb465f2ff", - "cid": "QmbdU2zPVWcpM4NbQKobMYyJU5J3zJaovwV5vD66MSjsr2", + "cid": "QmVRtWHShjDHUsJxHqc5u2YuF6tmSqhVT8W8kt2nue9oXt", "size": 153678 }, "sig_check_dsc_tbs_1200_rsa_pss_1024_sha384": { "hash": "0x22ce2f10616e87e924692f136cae781c6e002cc25930d3e0180686ab35eeb475", - "cid": "QmNmQ7vukThMJ9FuCvnY8auZUKfKyzvK6TJ9iqUXTgqQ39", + "cid": "QmTHEqsP41oPqn9UpwthUHcQkFMDhM1eqmM3bUnaXokfL9", "size": 417245 }, "sig_check_dsc_tbs_1200_rsa_pss_2048_sha1": { "hash": "0x132aa6500e5383b7c8a00ac9b4d3230f5c2b1117987dae841aa7fbcf94ecdf5b", - "cid": "QmUtfVz6D2edV1xAT9EHLQsbtKh7vuP4mARkHMdVXBYN6e", + "cid": "QmWsry4j3RAc8hteh2nPsQpyLMJdez4nC7ojv8unBTm99J", "size": 420368 }, "sig_check_dsc_tbs_1200_rsa_pss_2048_sha256": { "hash": "0x057e2c129e564afa1b38f6abb93339f1ec51db7644356eaf6976f5416b61c449", - "cid": "QmTnt1EdqDBFLBaYiha85JkXqRTcQcbWum3NuEbJMFmxXX", + "cid": "QmSSz1pYpYx5QZYGDg4hDem46RgTq4x1eHeoAwh61Ue9i4", "size": 211753 }, "sig_check_dsc_tbs_1200_rsa_pss_2048_sha384": { "hash": "0x24ba4bc788b6fa4b5715b13c396579286825178fb0e0f6570ab0027eedb05fe9", - "cid": "QmQbzWwbianc591ENwWbGzb95QwrBXV7fL7ryAqGiUC3WH", + "cid": "QmTUyKsw9zAEKhRP5PE4CsqkyvFfXUsnt9dabxF2rJ3zMf", "size": 531132 }, "sig_check_dsc_tbs_1200_rsa_pss_2048_sha512": { "hash": "0x1ccc803b0df0cedefe45ca4e54ace94e23a30d454ed3c469f7ad0507a1f56ab7", - "cid": "QmSYo6ur88CGAua12XidCY15aXr17ptAM2APsdYXxvQNTv", + "cid": "QmdaARdsjGQ7mXVVWGQ59uq68brETzxo6RJKZkz6YydJSp", "size": 510361 }, "sig_check_dsc_tbs_1200_rsa_pss_3072_sha1": { "hash": "0x1b22915685b061251aee12f6f79e3c3c8f41a977253a550da2dc04723e694436", - "cid": "Qmci15RmeqTe3xqs6Vtk71u3xQMPE2ePCgbPnr6A6vuQ2H", + "cid": "QmTr8SCzmEWV4WRsrfW77xR4uHU3XhxHXqUmret8YWjUcu", "size": 529682 }, "sig_check_dsc_tbs_1200_rsa_pss_3072_sha256": { "hash": "0x220e65b6376de67f5a601745fc2eb7118cfd266e2d6c3f96346d6f8a9e4541ae", - "cid": "QmUJgAYBMqfanrqm3Cdf3KAYRgtmBjfMTHgT12SsYUixUo", + "cid": "QmZoGpu4JqDWSmbyFLmFJBMwznnqHFWDr66YRq5RXsZ2d3", "size": 278321 }, "sig_check_dsc_tbs_1200_rsa_pss_3072_sha384": { "hash": "0x2569fbf5ef35d8ab819ea1d0c41cabf329060c490a49770c8812a40252f29e30", - "cid": "QmQ9hEqgKLPsd9jD7gt2ymTdAYWufroqcuUoXfVtT5CbwN", + "cid": "QmYLiBixMEPuv8rTWvLim5iRWisHuSM9WFJLAy5DADHxy2", "size": 629484 }, "sig_check_dsc_tbs_1200_rsa_pss_3072_sha512": { "hash": "0x074ab88c110d7e7f22950387f6c0284a938d2c97bbccac334dabbcbf8c12f423", - "cid": "QmSATYCCRkbDWPnQTc6MQB4i3HDGCNdjo88d6cpJbaDyPU", + "cid": "QmSLek76mkgWNyC9xupJkE4ebfsFq9JXv2oRXwozECVKbe", "size": 607303 }, "sig_check_dsc_tbs_1200_rsa_pss_4096_sha1": { "hash": "0x10c316be844226b740cfa988b55fe7150470bb41446c720666c59c951dfe08c0", - "cid": "QmbXHDEsUYFF8tVykxD8HeacSxhs9nTZGiQh6dR5r1DCHj", + "cid": "QmPB5N1MoFxbgwmUunKXHVLCx6DfUE9ad1u8soWHuBUFoe", "size": 650156 }, "sig_check_dsc_tbs_1200_rsa_pss_4096_sha256": { "hash": "0x12ef8596b4fa0c4e0e97373765a7a165319e3a2b4ee59b3ad199e6a91892cca3", - "cid": "Qmf7CrAkqeEc3xgpQtEWxNxKwu1iwSdV9EmSPGcb7n7k3Q", + "cid": "QmXvreyU2SmVZNUnG9DkV5zdV1Tteung61TN9Ch1DkgM5U", "size": 364543 }, "sig_check_dsc_tbs_1200_rsa_pss_4096_sha384": { "hash": "0x26091e28a87c091b7b29c6a83ca27a5cdbac7acdb46e6a88d2e7bdc8c4b69867", - "cid": "QmYdtqHQa6mB6fk9XGTycdi5APjajZZjmwniE5guxE1LKT", + "cid": "QmNSaTHXMqMitDZgDeMARkvfDquRxX8k1i1v2vnWu8FTt7", "size": 771388 }, "sig_check_dsc_tbs_1200_rsa_pss_4096_sha512": { "hash": "0x0dab6aebb7b9b974ff99e7c709d0605b80c5b8c76651c487cee4c12a8c4b291e", - "cid": "QmWqw8EJU1iYNk6e7AZtkmvmLouKMcaQcorfQKBKJzGPMa", + "cid": "QmbxJH1PUGbULBMtdYFwaNJNcb7fBFhBRWHarpXTHpT7Dm", "size": 723820 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_192r1_sha1": { "hash": "0x06a445db3fe4484a7338e60a538b79441ea2c5a75238fe80b8686c56e816355c", - "cid": "QmY3wtCqgnBZDPVdQx5rJGmPFwu5TWuZttwJbx9EU9w5bo", + "cid": "QmQ26RjDDhsFQkYPhqkwWMjhoXJYnYJpHEnkpJRGuL72Gt", "size": 347680 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_192r1_sha256": { "hash": "0x2eb62ebb2b2ea73406d8890c6b820d6c7671b433facb326d160805b20a979efa", - "cid": "QmekC8oFXhwwUp6NE6KXGBp9dtJ88bxCUt5wjjckzLRNRP", + "cid": "Qmez9gbFsJiMvnuRevbBMH4GiyEYmP1XgKjvqCx5rWKthk", "size": 176387 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_192r1_sha384": { "hash": "0x0e17c9a1317edb18f108b6bbe1e36f74be0b811e3e9d17380f8fd6a8161332d6", - "cid": "QmYLWrayqTPtLuEh4YWQUJsWv19A8SFBw6grMH2QMKhwoL", + "cid": "QmTxUCgcGXs8PKrKgCK3HWuEinvsNqVPW96z68QZC4EtR7", "size": 442755 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_192r1_sha512": { "hash": "0x0c25ea6e9d6d790e49af5c3b9aea28e64881d630708d53e594deb354eb817ea2", - "cid": "Qmck9ntvJ7qnKCCKX6RNyHVURQ8zdKG5PEBBhEg1kqv3MY", + "cid": "QmZDjHdgyrof75QPNNRMGBa92T8n4hk5Jp5YgsAux9MTrz", "size": 442755 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_224r1_sha1": { "hash": "0x1cfed69b947289bcaccd9d33c19115f7322c00a656c79e5a9831117c971738db", - "cid": "QmRoWCQchUZyajCWnFs8phC7Vvp16ZrWdozhMQYBvsEu5H", + "cid": "QmXTaUzWeH16WPWdPaE7akx6hMLRc3XDc3sJRynF1ESwC9", "size": 357922 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_224r1_sha256": { "hash": "0x0561867fb54ba1eae0d992b8a30be2e459adabb2ff362bd1d0b2da135ed345d8", - "cid": "QmUgjtKzMuxnrcpEU1tUXGgkiJvc6LoNjhSGS3MsM1C61v", + "cid": "QmPeRyQgoQrute6MsdCq8dQEe2tqoXPkiEKgTcXmvy2FeF", "size": 186629 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_224r1_sha384": { "hash": "0x0ff45d6013182a545edccbb8dad8645e4df9406bbad1e6b236115b56db19affa", - "cid": "QmWNhqqJP6CSzUkCq6YqcRsy5RopkiAz9RJCWrrUub3bvU", + "cid": "QmU3tDYkTMAYWnR9DrUvc7RuzjNBVesNTA9D3XTuhxmRsj", "size": 453700 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_224r1_sha512": { "hash": "0x2498e894d6f05f543ec615da9a33055ed41db8a2c2ec56007622c4f537f4fd74", - "cid": "QmdqehZKrMMytPdivoy4HcRQizBAoAuLDiSxFJ8f62Fxca", + "cid": "QmdPtcnrNiKH5f8ab4zYKjvu4HALHdXBETLy6JWktexJMc", "size": 453700 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_256r1_sha1": { "hash": "0x0032604dd1a83e7f6cb8adb07a3ea82b76942ac811406667b06ed29ef2dcc636", - "cid": "QmQEaLCNxi5XHkFC7jkdRn6KfQhoE6s95Cf5p1zAArzTd8", + "cid": "QmeApvmEYSN1Ypr6sWURrY1AwXLSrjFF1msZ2dWPRvSJm4", "size": 397212 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_256r1_sha256": { "hash": "0x0f71a47f7a1ed3b7bc4c731891b7571711fc84446e88e87ea6e5543c1790f021", - "cid": "QmaVZkmKzrv7oBKZiDEBgbsmVtnrxhn7pCP4RbDdmZbkvt", + "cid": "QmU1N4V9yUNkB6NoL1q52BNuv9DN21gTS37MFY1Wga4hcK", "size": 225925 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_256r1_sha384": { "hash": "0x14a6e2ac00ee2da66f0c8754bd12c6008212ad8b8e94c07b40f0c8ccaf2f0147", - "cid": "QmcZPbCutyBd6VRzpkyY3jY2xaBxqdL2mtL4JtrVADaEHg", + "cid": "QmZbJkuWzBEetDZbaR1kV3PDqGEDo6BGUynL5Kwb5VSURV", "size": 492293 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_256r1_sha512": { "hash": "0x287085a0bfa734e09dc3c76020e10bbfdb1c6edecbe7dbaffe1b933270a8830c", - "cid": "QmNPNuKNAkwtgtCzAoLM1iSx3J2Qfog5wqhWgaNntpWJXg", + "cid": "QmRSbksam6iTT6GjRpEsNVceGaDt7Ks5fudSkYeiRgKzoK", "size": 492293 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_384r1_sha1": { "hash": "0x05407e7e8ce0ec42807319357832d2e045c21c62a153f08799b7172c43037e96", - "cid": "QmamPVqjynAQ9FhWRJTA9yfo6DnaMPJ7SJoN9V8xhNcU6B", + "cid": "QmYPHbHJkb1MTDYbToBhQt7RGPHPw3VEvLs5hbTZUQBTU3", "size": 508846 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_384r1_sha256": { "hash": "0x1663cd3ff35f3fa56823812d5477316b01dd18b6291a8fb77a71cb3e7c8a6cce", - "cid": "QmWBjY5adDJx8YdXoyvVP4XHxgBiGK7gHSxHFek72uocbi", + "cid": "QmWWrqq3QNbrdVkoscecpV1AfRFUABSzDqAiVWyofY8ccH", "size": 337566 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_384r1_sha384": { "hash": "0x170849339c0ff1e3e50632a7a99b9b6093af0c7519dfaa1bd06721f84601dc56", - "cid": "QmagRWWZdfdHjKnYr26AW5ML6defAhK18sDCDi9Phi8Z6F", + "cid": "QmSDZkC7fpT3WeCgAhSmPJaYwGtYfTi6p59yJr9Pj3Et2X", "size": 603941 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_384r1_sha512": { "hash": "0x1904d5fa8326093ef1ac6c40a07ecbc3a92f71f8f958471e99b0743591a023a4", - "cid": "QmXViZ3b4MBY3FsTxzBmqudZrRKnFjovFzbzyqtF3hHVMh", + "cid": "QmWVnTkxG9cqrf3uY5Agr7PLgaBtBhQymyDp1N6ysGC5RT", "size": 603941 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_512r1_sha1": { "hash": "0x2ad4e405cf8e3c12d5009150def6c06d35008fef4bd5ebda8b8cbf9bb507ec3b", - "cid": "QmabZcNVMKdFSar5DpVkdE3xCQ8zu7B3mM5AwTTqh6XYpJ", + "cid": "QmQFFzK4GS6NNgQYPTYDA6mUdgpnhbmhzYjivK1FGKgq27", "size": 668783 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_512r1_sha256": { "hash": "0x1c6ce4194797737029c72a264f2912451e693264172afec7f1bb19e776af498c", - "cid": "QmbNzrGr6HSMSz67TxsEb4crjED6o9BnMEMZmnSD8jzH2B", + "cid": "QmRPukTmCuDhrbaHVoNRoBvrt7axyFUxKMZvkgkRtXveEv", "size": 497501 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_512r1_sha384": { "hash": "0x160c35d976b0e8dd612b1a984e99fa497428cc467c7aac95a1f8fda49689115c", - "cid": "QmWJo5aG3HXfDqi6krGYqH1gniJhwYCWpQxmdDHdEdxg7c", + "cid": "QmZvXJprY5PPykJQoTsBersM4rB1pJwUK1SGWpqcWxHktD", "size": 763884 }, "sig_check_dsc_tbs_1600_ecdsa_brainpool_512r1_sha512": { "hash": "0x208b16eb8281bacabae748d26a27039c50210f5251b33a6bf6f011904ed4ebf5", - "cid": "QmdzprTmUuCyQxbwZUH6Q3eZBV42NoBJG7DqLhUtHy9ytG", + "cid": "QmXqB9fj9SVVgt4a2WtwfRvRUzQi9sr4e3x7e8XTMJkQHe", "size": 763896 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p192_sha1": { "hash": "0x1c7f86b99bf38370f0b8b57d7146f92761bb9a23855d692a692b7ca61b694dc4", - "cid": "QmaxWdbrFbEnaNsPNzL1CbGtpZcbJ6NzhHcrEAE5QfytQu", + "cid": "QmcWt8EeU6Sr1FfmYxcSNGFLntSsYqqFt3muafP4YGhGCo", "size": 347680 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p192_sha256": { "hash": "0x1624ab7e7930ad6f8a86c429b291654a78bbdf780a32b00ba4c783e68b1df4d3", - "cid": "QmPw5JW7YMR6eJRRr46tEPP4keQuqFUowjQth3KpD6FZvB", + "cid": "QmSRAwohzKBFXFHoK5USqLPjXj8MQAA3UbBNksP149Sqaf", "size": 176387 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p192_sha384": { "hash": "0x2b5f85aa449f0d1bed2448497f5d3a436f4119e5256cffb092839da6484161fc", - "cid": "QmfHgESQsktZNoFHeDqUeNM9rCMxxWvncrFdz4wLQ34K4m", + "cid": "QmRrguzqT6omztVnEgPnGRk1krd3n5t4hysacTREG1Yuqj", "size": 442755 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p192_sha512": { "hash": "0x27de6511fe474a9604fc662204a8a7f25d3e8a5b7aca40fb321dcadbabe289ea", - "cid": "QmSvfghX6Utq1MoqpNzRypLB8ST2XPJ3TxRJj5LGKwJkzN", + "cid": "QmaKboFpUxFDxs9LdE6yW2AmtG2DA6DmNLEHESnt8qRKBL", "size": 442755 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p224_sha1": { "hash": "0x168ad9fe05ae7a23b32d3415b9707f42994cc74a848d8e57dc4fe9f8bc4d518d", - "cid": "QmRMtm7ouuTFkiBC6Tfda7bJg1wbd4kiW8NTYWQxcBNu9u", + "cid": "Qma7RsYM9mmE96pjMjLVf31XY3dELSaPxWEHRqAB41Bv2F", "size": 357922 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p224_sha256": { "hash": "0x108eb3da0fbd64d05f4ff026fb4dd64dda90fabc0146f8041912c710d8bba470", - "cid": "QmVx2rLWw3tayiVFAGkqPizvHhPjw4sFEddbkWZPW3e74j", + "cid": "Qmdu195q5UYoiwWFhQAj9UL5pL9jRqg2qnyxx8rLVoz4Dt", "size": 186629 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p224_sha384": { "hash": "0x27eafcea542f10d124a6990d8c0371b81b58580a9927708b34f1e9939b1b0e05", - "cid": "QmT2M2AUtrBjJKqu9ALLXj6uLWRVNJ4yzKJpwjKBNXVVRu", + "cid": "QmNa3P4nTcEXkUep4sC948LwZrXh3tEoCR21gJHjnrT79M", "size": 453700 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p224_sha512": { "hash": "0x14d10468a0d8e24ce095bd22c1237998a5ceb86ab0cacc6360eb304efdde87bc", - "cid": "QmWGAVgdkx8wHkjpAvZKxPLt2pXBF43w95sdupH1cPAP1y", + "cid": "QmZbYACh9JaKSSBhGz2xFPA8x6kaVRGXcf4LYUEE6rJ6AG", "size": 453700 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p256_sha1": { "hash": "0x15fa3b2cead35b5e8efbb5ea1c97b6877494db6171d52431a46e1a5899cb2939", - "cid": "QmTnLLCeM8DgezqZkLk7sEP4uyHqwNqXDjtvAegDNSazMD", + "cid": "QmWjiWmX5To5CGi7Kj8YcP7zXiAANt2mKXDtgURebH9NWG", "size": 397212 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p256_sha256": { "hash": "0x2be464fd103243d4d11eeb8cfe8ffa52e2ca8de79c1d817fb375d278530baeb4", - "cid": "QmUGTHbaYrpmpznvWofv8KUEfiuKyDUZPrNTf7YrwhLRvW", + "cid": "QmeLvrJksBMALSvMcfZCSKYT7Z29VF1qEE5Rubk2mkxL2W", "size": 225925 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p256_sha384": { "hash": "0x17ec4eaca7727e52cf297ded6af339492c6fa7a4594e53959fcf4f764774f14b", - "cid": "QmWjyLrTi3zbwzKoj2KCifwuFjYXQykBZhyWRVLMxsxp22", + "cid": "QmPDw5HWCkddtFtXiApVwyt69eswYXsMzDVcbDxyZaXMRP", "size": 492293 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p256_sha512": { "hash": "0x01e811afb8ddd3c50b2728dc0ec23ca8f7548dffa915c7d8ba62bfd299c285c5", - "cid": "QmWM6RdBZf12GMLkL8EyHuCRK5ahN7VXnrNnf1UBzkPDoK", + "cid": "QmSic9RaaoYwra9qFPEhk8E7CXkRuLBiLnq1YJRscH1A9m", "size": 492293 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p384_sha1": { "hash": "0x2131339cec4b5eedbf2300b17ecc902bd705f288c45d4330084a235bb924e817", - "cid": "QmVjh1AA1qi7zptZR6co5hRSX5xFz2TiNvHfoeabzViDEk", + "cid": "QmYhFkXxSbrksdHEKq7ah8FcBuZK7eHG7DhPAJtAkmo6np", "size": 508846 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p384_sha256": { "hash": "0x209716b615fac699a22abac999618edeb541629f1be72ef09fbc5da8b113454d", - "cid": "QmWZRx4H76DQCZGYc8mb98B2RFfUTHPpKFSXLoeYtWMQLa", + "cid": "QmRauQx5yxVYs4mzdR8DqzWDFodW687qyC3khmJ1aqWmnd", "size": 337566 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p384_sha384": { "hash": "0x00031d71a6db8b57fa4cb36e8eedc69e458bbd6b90088e0c55e9b67125aa4d7d", - "cid": "QmTH5FQG8MVDuVZsHqsjpocTRRYV9EMNaWMKDWSyoRSyNV", + "cid": "QmaStHb5tZ5iEd4RVicfsZ1SDkcCSQjH4b5ZquvNCmcQf4", "size": 603941 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p384_sha512": { "hash": "0x124fed963f02ff77b27d5ca22b690bddcf08412fcfe73da7ff7ffa1a00327b00", - "cid": "QmQA5G5nmrzMYqDHnaGQyKjEuaKtEy3DLtuSn5SPB8PVcD", + "cid": "QmXrmn5DsvHrk9PESvxoZZKwW5CM8v5T5F3xhDZ54qPnZs", "size": 603941 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p521_sha1": { "hash": "0x1e8db697f2713511aaba401c9eaf2cf88f782b5b8cc3544e027b2a003d00bc1b", - "cid": "QmZXhR1wDaqFHNoRBhgUeKgvRVtw18GJxU97HsQnmdAk8s", + "cid": "QmfZf5iKTm3QJN6nbtyE3UePsMJuAsiT8eJTTMH4cAKszh", "size": 677121 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p521_sha256": { "hash": "0x2801b1c23a47f23f354e386c15742b0de3832434e085dd092ba468d666181a74", - "cid": "QmPXRGsL4eG5d3UANmGkUxbr6s58biz2MkdBuWk1LL3i6F", + "cid": "QmZxrfa4pKyrrgoWT6RMvG6pHct5pkpDgcEVDndhNbT4Yy", "size": 507218 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p521_sha384": { "hash": "0x1f6fe7427b07994bcdd608bf8984035046f684613335e45d1786cd1119c6dc86", - "cid": "QmY8ZdHnpUdq5sDrAZ7KwTPunyRiQUqn3G3U8cD9f9c5zT", + "cid": "QmX89PYaYAfy3yEUVPMqiZmDFs1MYGv24YUQk8S4uRihuT", "size": 773600 }, "sig_check_dsc_tbs_1600_ecdsa_nist_p521_sha512": { "hash": "0x1e0b588237f4ee259f3eca32946abd56e5acd3a3aaeb275865867fc3e8445846", - "cid": "QmWP15upnP8ND86oH6paQSLrxPeP8BEbWNXHBer7cFwCfJ", + "cid": "QmWSmc1BirhVp4fBFrCd2jhM1Ux4GZLMELYiehoF6ZFgRP", "size": 773611 }, "sig_check_dsc_tbs_1600_rsa_pkcs_1024_sha1": { "hash": "0x21e209c19c681ea0f5344bdd34a10a8ca0f23f6ab4b352d5f7a91c22b17463cd", - "cid": "Qmd6cESg3m29qyx4A8Cw5rG3qrXmfMHuskhDi4ZJZUXsTz", + "cid": "QmRSkZrNVLHnKqSVMnPiTFLR3YVCCbmsAFYFQpaJ8XTFS6", "size": 330539 }, "sig_check_dsc_tbs_1600_rsa_pkcs_1024_sha256": { "hash": "0x1688e345a2ffde46a75f7fd2ce0461be3a4c2f24b3b26dcc6cab88174760e4ed", - "cid": "QmTJauqRUwdEtAAWu9WdVDAfMLvUj1JS8131mWjcf1MmcQ", + "cid": "QmeHmBCpPL2uqe2wGBiLeR2my7xNjKJAqfxurkFoMbrbzk", "size": 159261 }, "sig_check_dsc_tbs_1600_rsa_pkcs_1024_sha384": { "hash": "0x0ec982a83b1bc0a87d94707bf72f3b26392e7e3ff6dcd5f4e2c14e773961ce5f", - "cid": "QmRmbJth8fCQ5r5zzuqYicA8NTeaEQvg8mL4VR1BaCjPkN", + "cid": "QmZoiPnxyGe96EGCzzw4fa1shzbj1L8TMhMmRirCUiSEa3", "size": 425653 }, "sig_check_dsc_tbs_1600_rsa_pkcs_2048_sha1": { "hash": "0x0206e2a406bb7b54b0c89801863685fd37db2ed04c8b2b2ea90f6e4b343c955f", - "cid": "Qmbxdeg8LMwXwoT57HwPMfFiPbH18qbZr6BgsaLYW6qkpm", + "cid": "QmZE7yRPNYFcYkbQah573NoYWS4uB7rrPKjnhAZYTYP2Fv", "size": 370830 }, "sig_check_dsc_tbs_1600_rsa_pkcs_2048_sha256": { "hash": "0x1c72509856aee6206a2512a3408f622d3848d74ae7782c90769edde4bfd1e327", - "cid": "QmXVNB2QaLtR76b9HoMbbsWHWFjhvMpk1ixZfZ7GC6Qpjw", + "cid": "QmY9eect3xiRD75JAnurdZPPfYyqaEfVzze8kSMccLj5A8", "size": 199552 }, "sig_check_dsc_tbs_1600_rsa_pkcs_2048_sha384": { "hash": "0x1ac830bc411a4f1edf43043b17684e26d5e21710a0a632e988b9c27104015dc8", - "cid": "QmaToyWRUcJ1qCCWvAp6Kuyeh65j2856yyZsGnuZefSPr7", + "cid": "QmbCTyrPqfNorxuZ9USc2G7NcPHdCcYGd4gYg7VR7hTHb7", "size": 465944 }, "sig_check_dsc_tbs_1600_rsa_pkcs_2048_sha512": { "hash": "0x1e5f8f1a7aaf7a05ed3467e8555de9a2e97f8ab698029681a4c0750b3203c580", - "cid": "QmdQd5vPFy3QoQLU7XvFoJUhxPK6T6HMuTRe8Bm9ZsAJXu", + "cid": "QmajLAGhxQaeXkpjbQiKdRhUrkqNRccM7MciVzq5rkaUmd", "size": 465964 }, "sig_check_dsc_tbs_1600_rsa_pkcs_3072_sha1": { "hash": "0x192995746feaa668b4183ac582794408a6b2312f252c9f2c231f1d42751c951c", - "cid": "QmY3odJ9idurxt8UqJTCKfZjW34eqascpiEQ1p2gYt5T5U", + "cid": "QmSPkUdwwoaxgRpnrHZMcJyxshPnAqMVdRHJ8JbEvhnMxu", "size": 419565 }, "sig_check_dsc_tbs_1600_rsa_pkcs_3072_sha256": { "hash": "0x1767131da4d6053860e7acc9248072745bee464a15c1088b1138788fee0cad20", - "cid": "QmWWG5T7yM8AfFZnZLeV81QCsgwNyWBRWDfUsm383fuUHL", + "cid": "QmSA2KsPcs4hsSZuturcWk8Sw7dCyPkZeJoKUogaz8ybMC", "size": 248285 }, "sig_check_dsc_tbs_1600_rsa_pkcs_3072_sha384": { "hash": "0x19e4d6862077f1f7e79ab6c3d76ae586af5cc41fd676bf9488318a8988b0dfc8", - "cid": "QmTdaZpBkvCyfkdQH4uSvWStAxaFD5rMKmjKDfW8jnDfzd", + "cid": "QmV9z3J3Xee8ZiHDfTyQfJ88REBaitcGwtvDve4qg9xP6a", "size": 514678 }, "sig_check_dsc_tbs_1600_rsa_pkcs_3072_sha512": { "hash": "0x25b6934290bbafe58d32a1fde07345314be7a4babf24c2a9a33623b68869578b", - "cid": "QmdqtaLGuvKm5DmMyWdgLEghs6NFe74CUKLWvRWSfpEnmA", + "cid": "QmSy6sHYg63nYmpYtL27vv24ttTWJXY4LkTojvoZ8ZbSUH", "size": 514698 }, "sig_check_dsc_tbs_1600_rsa_pkcs_4096_sha1": { "hash": "0x1e26dff0fedc7b4e88b3353738d476a48f52fa3b4dff7b1a866eb8d207226765", - "cid": "QmNh5UQcakkZxpPZjY6FD6fWydLAG9VkTL3r5pHpsgK5o6", + "cid": "QmRUfKS8kUpgWv71iKYmBEBsbvMC4W5gSm995S7TNFy1hG", "size": 487874 }, "sig_check_dsc_tbs_1600_rsa_pkcs_4096_sha256": { "hash": "0x1dba69dfb64c7897e618cda3ca6c2dc681c9d2a93f5e4f9957ac1e3d6586f2c3", - "cid": "QmVdFgUiLaKW4v3HZb9hjgBbmctQQFhBFFmRZh2c2j9eB7", + "cid": "Qma1YgzXurToGKfeJx3rinSTmm44HqwAB9mzj6W8WX2XiD", "size": 316596 }, "sig_check_dsc_tbs_1600_rsa_pkcs_4096_sha384": { "hash": "0x10a90dec38431792f3e96efd5fcbc0c5fcc2f3f5dc375a9257d932543d8b91d7", - "cid": "QmPjZAVtUhzLMT5eeZVuSXqk6qcpFQfMz34JeR8ZMrrcgv", + "cid": "QmVF24PRNsfmzAEYLKi7xGwHqjVobbDa68mGY8qHRDvmdS", "size": 582988 }, "sig_check_dsc_tbs_1600_rsa_pkcs_4096_sha512": { "hash": "0x2b74575acf4f8d7fbf1e31c02efc133e71a1e608d0aeef907dd7709999ae9c31", - "cid": "QmaBKZfKZgi1MsVpLuAusbxBwmu3uMDvXpPFZNZWTXyzfv", + "cid": "QmTnq7sjUgn86bthAfkRXyUHfoggMR6izgGRvuQe7gfEFp", "size": 583008 }, "sig_check_dsc_tbs_1600_rsa_pss_1024_sha1": { "hash": "0x14c38a9443aac1ad17788dd1d022a80e2e0102739d84be84f98982b0ffa732ce", - "cid": "QmUzzgwydj5EgTXgBttSdm6DoRniQgyhKGEwdtXz8pg8cU", + "cid": "QmbPDJUPXndxHPnH7PeQu4Wbq3tdSjkWCywBzJA7nGn8cv", "size": 405645 }, "sig_check_dsc_tbs_1600_rsa_pss_1024_sha256": { "hash": "0x17e760d58b9974fce220e1dbf3b64e9329dc1b4c75976dc83acbb3f91bc26c86", - "cid": "QmNLhKJC5gz8XtkC7D8gGzs3zpYoG9MkVYfWDmygYYy7mn", + "cid": "QmNTfJ8wacXbB15RJ136KJh3Mx9vkFgzfqzQxtyHfNTBvn", "size": 186635 }, "sig_check_dsc_tbs_1600_rsa_pss_1024_sha384": { "hash": "0x14c10c7244198faf5775b47655a777ea19b151ee2e9b3d3919813b2ad77b04e7", - "cid": "QmaFfpcLtgAWBoQua6zEAFxJzeL4CmYbW56ZbXpxMRjdNL", + "cid": "QmPtdhtcpYCNjYFRC4mhK5m9uYSuZ8nm7EWrnRxpEdDLaU", "size": 506712 }, "sig_check_dsc_tbs_1600_rsa_pss_2048_sha1": { "hash": "0x27b09fdca78e44bed8252c0aaf36eaf0a5a0b0c68e5812ebb49f1dc7b01ceec2", - "cid": "QmXKZaKiZqEB3y6aB36Q2VbYVBe5WsZnoQQm72Pv7yLaP2", + "cid": "QmVNd5pnakiKahVYU4aUTYpaotchfRGcX6msA3xtZw2PDN", "size": 498098 }, "sig_check_dsc_tbs_1600_rsa_pss_2048_sha256": { "hash": "0x2b10198fe0551fbc04db5e5b97f8bb64cb464301e4563ad2a79fa64faa3a7398", - "cid": "Qmbeok9By8dMjWnFbv3bTKkygWLzmehh7J6RGBjYoauMDx", + "cid": "QmaHjST5A4T9cfNLVsUWk6UV9kF3Di1qt6UzLkjBRjKzQG", "size": 244710 }, "sig_check_dsc_tbs_1600_rsa_pss_2048_sha384": { "hash": "0x296058622f0218ee553d9e116624d0b31f95a8962c9ebd787718fcbedaa6635a", - "cid": "QmWKxGw2sWToj5aGAdSryqYA5TaXy4TimXr4UoJEifkGyC", + "cid": "QmRAR3PBVDWRrDqzpjdiQXkqdB8WE7PfyTsKM139Ra62GA", "size": 620600 }, "sig_check_dsc_tbs_1600_rsa_pss_2048_sha512": { "hash": "0x242cdb51aebbc9720dcb74830c179815c54a16ac151b663a3b567f04f86f0c0e", - "cid": "QmNnQQXKUjdFgRFmXasFcyFgRYcaX5DjTFFuzXCpunCBmQ", + "cid": "QmchEsSrj2NqFLY3RNp6CMoPvfyh3FAaE9N5zjzVK6ao9G", "size": 599829 }, "sig_check_dsc_tbs_1600_rsa_pss_3072_sha1": { "hash": "0x1ac2fbaa5940af635229ce31e47e3cab736ca5806dc56699f470eb3f6c9bddd9", - "cid": "QmRXJMsNkgZgA6Ktm9Q9VU9X7xd6hgg5A46aqoysZqSqF4", + "cid": "QmfGPAdreYvJ1GcSymZJU7RiBeG1rJjEGDpshUvtuFqncC", "size": 607414 }, "sig_check_dsc_tbs_1600_rsa_pss_3072_sha256": { "hash": "0x027fb24db4fef217c9101e72611417b6b473d595e8d150891bba6a53acd7cf4e", - "cid": "Qmem1J4JSXHbu7h6sHpUxNJXNK6rgf9b7U4xeKLjfXMgrc", + "cid": "QmSx6sepUMCE6ZyLce2tAsDffNr1wdx1qCWrkiw7tYYfU3", "size": 311231 }, "sig_check_dsc_tbs_1600_rsa_pss_3072_sha384": { "hash": "0x1fe6630a3143173886555a3fc8d07a941ae0942d90c294b1063092b1e961e631", - "cid": "QmRoEdyM2gR1tiU2LZJ9jjWnXo89m63A8b2ytV5aSbxKLd", + "cid": "QmWUF4j8Tm4Zxv8X8Kpm8RyLGHLGj9Bprc9aaTVsfDGziC", "size": 718952 }, "sig_check_dsc_tbs_1600_rsa_pss_3072_sha512": { "hash": "0x0c2b46d865ae4fc2c96922f1d73c903f27cbb1f4ba6a16304d96881e785a583b", - "cid": "QmWeS1BoeQZXDPRDSuFJGptr8oE32QnFYnEEdBPShx9Vxr", + "cid": "Qmb9rzZs9U9jdYY7gmE2R65CAVzAqwWb8FkECRBjCj2Pe2", "size": 696771 }, "sig_check_dsc_tbs_1600_rsa_pss_4096_sha1": { "hash": "0x16f91be64ecb2c6583388bb9e5b3368de3591a2685b53d3c77c86a5b9728542a", - "cid": "QmbdiXKAfWK22D8WPGxQdF6dN57LCducKN26pec18BL1eg", + "cid": "QmXFFGi4DPrzzawaJV8e9ypLm1CZnsNfY6RdBfQcux9MED", "size": 727887 }, "sig_check_dsc_tbs_1600_rsa_pss_4096_sha256": { "hash": "0x062797690006e0d61337981e9f5efb503912c2f9095fabbb0f6af93dcfdca424", - "cid": "QmahXSzo88r6grKT464dxrmqvLk3NhywvLcr1TpLNxkQPB", + "cid": "QmUQ93TMfQ5iu7S26QK7fZR3mDKHvD4fGuKonUz3wApkY8", "size": 397388 }, "sig_check_dsc_tbs_1600_rsa_pss_4096_sha384": { "hash": "0x103d0f4589491f8e3f4e18a7964c5229fb6d00601595a9d44bda588b0beebf0e", - "cid": "QmYHHUvecRfLVJUgmNd6ivd1fp3Mor4LE7LUDzFRYnKfZS", + "cid": "QmXesYyQuuZLMBA4Eaf3QubFiHe8SaCabHhHDJZfpzaPNe", "size": 860855 }, "sig_check_dsc_tbs_1600_rsa_pss_4096_sha512": { "hash": "0x22988a8891be203693212572d57294f90802ccdd972ce7f0f2d24e2a87fc5bb4", - "cid": "QmRWu5qT9HVwavuLBjJaSavMYGdp2fWJRqvzAvdGmdjtus", + "cid": "QmTZu33W3AF37L8GfUN39mbeYVzkQFTDY5imv8W4YhMCRq", "size": 813288 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_192r1_sha1": { "hash": "0x22eda4a2a8b1de10f4dec41073a3cd76448b1449ba7eeeb54e3b5755ab4a42af", - "cid": "QmRiJfRAams2N9wYYwRnX2ZPixw43g9iXyJKxJBKDcG8tg", + "cid": "QmeKYe8RBmtWFV82aJFcMN39RuYZbjjjvWc4gM2PpUyu4T", "size": 191508 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_192r1_sha256": { "hash": "0x02d4f3483b22af6e80f080f46d08788faa967ccfcbb13be7c0272ae0fd3e58ef", - "cid": "QmUrLALTgLJLumKZWVyCv9ndbzN3Jttd6xdLpTKZCaodAj", + "cid": "QmaUdAyoEi1iyGUJbg31G9AFREQnWdzjiivZ69jERbiPK7", "size": 105101 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_192r1_sha384": { "hash": "0x2d7bbb492539e0e14a0fe7822ff9b048f5da1bc080465eb6d9da932751aafa03", - "cid": "QmPDPk3rb7nM26RCNyPVgtpeUqhRQpnRx7pXuhhDLgnam7", + "cid": "QmSDjGayCVpHXwqXDMNBu8sVaPY9zRMKP1rjJhatwhRqjR", "size": 234228 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_192r1_sha512": { "hash": "0x0bf2a49d665652f5eb4ff394e4df5d74cabef6280b521a91c50410b41fd21b04", - "cid": "QmadFGiBXptiKyVfkr3LWdySCXbBC2zhgf5QrocLiH4eBK", + "cid": "QmQ699iegAKPmAUQW228HgM48kSocEbE8928PBvzYbqj7n", "size": 234228 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_224r1_sha1": { "hash": "0x2b4812f54ecc1ddc290ab61b62508ca6ccbcab577c441eebaaa8003b8bea9a7b", - "cid": "QmWWyo3HcYR3xwmA7QhDcb4ZAEvDo4nhYX5SE2guLTcsrd", + "cid": "QmVgrTNDNWmadaRZ5GNZAiPZs4b8cMvxA8Swb1MruDBscg", "size": 201750 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_224r1_sha256": { "hash": "0x1ef3610924da572f50138dddd496de59fee1e927a3a2814e75ac54e130a679ee", - "cid": "QmZTqZCUKdJN9UGvPYyZsv8b7NLPJs3tRscUDAPQWDMzFu", + "cid": "QmTDVZkhs7oornAi9PW6rfNLDZa2FKeNVztoDb79wxYZ7d", "size": 115344 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_224r1_sha384": { "hash": "0x11cecd0eb64b87fd318add734d6b598c6531d4646baf77c8db62228eda62bcbf", - "cid": "QmZScucbTvoAwapV4Cfg1Kt7tYgwmYBXFiRARJFazzu7TS", + "cid": "QmViGpmuLwZy8CgoTJrdbX2hdLkaof8z31S26fs2toTNNZ", "size": 245174 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_224r1_sha512": { "hash": "0x18c34f5adb12e61e9f7c907088da3a23b42e2ca2a42f010b07b86efe577a84f9", - "cid": "QmdacofimpvejR4rgoVfyhVNJA2wJVYPo1XUPdKyGmXRyj", + "cid": "QmVHxqzBZa1zY2tcMp93ooqjYpc6WBn6bYt6XnogArgTSw", "size": 245174 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_256r1_sha1": { "hash": "0x04ac7df91b38d28510a88a99e3102dbed9106d6edf72794b0da655f77cc3d11a", - "cid": "QmW4ZX4hk9dc92pVCvADcvTKhLXBezo4X81BGyMvpEZpfS", + "cid": "QmNfCgEYYCXHt4PPWTgJ4kd5zBTN79tRK3sej1oNeGnf27", "size": 241040 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_256r1_sha256": { "hash": "0x2a1f300e9cbf6e032bce6a14f3648c749b69f2b8c5290d1016e09aff14cb9098", - "cid": "QmWqWUxoYEdik5nwqU1mqjJsDoHHH4stoBPfHMxwqrJVyh", + "cid": "QmV7tHwH1n4PuxYfLeB9cunnLgfBE18PkWZCbqqAVUABhT", "size": 154640 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_256r1_sha384": { "hash": "0x1722fb80c6fb58732dfecc4ea22e1a79fddca95e72ab282b249341b60b5bf36b", - "cid": "QmNmmLJXqwkDQcxBiqt6EDa25bf23QLmwMVMaygyscAGRN", + "cid": "QmXjjtb5Khq2wDPBzqrF1ix9JMtaMCgjVQH3Kqa1F9D3iP", "size": 283766 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_256r1_sha512": { "hash": "0x07f7c57753885aeaf101f82663a04a1cee8c4d926177f52759e10106de7c90fd", - "cid": "QmV8K27HPJmNgycWFFdhZJH2GhpkQsAnFP43HpXDjNcwU2", + "cid": "QmfGxVKmHKZBJyh2Swo22Z94bijBixSDb1WUU9pGJ8721s", "size": 283766 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_384r1_sha1": { "hash": "0x2f9e18cec22b56453c432e95119c1fca3ebfcb6bace74fedaa63b201b584c7f8", - "cid": "QmWxvTcfgndozDBiNXU7untrfCuzkvfAocuKS3KUrERAfW", + "cid": "Qmb6xBaVzQuq4bfbRAoErybQFvvyZM62wC4P5jH8YVqzAW", "size": 352674 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_384r1_sha256": { "hash": "0x1f2830d36bc281037ae57b44d71be27f576b9cfc6fe1591b3ef434a57079a905", - "cid": "QmYthFK7y4d4y2sbesakPearg2ebNw1ZuusDqTtbuZbcJ6", + "cid": "QmY5bHGi36AmWCHqweu5PFLaxTebjdVBxDkLm7jvJhvFtx", "size": 266280 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_384r1_sha384": { "hash": "0x2818b507451ed3d74e59b24e78636eb528b93428ec2ea8279e8494990ac506cb", - "cid": "QmdcrEi9ML3qMf6S2yCirop4gL2NypSgnw5WDWAxpFG4hs", + "cid": "QmWExyaaqLjraFCeKq9s7oi7iKzrF5nqHjwREjWfGuapjJ", "size": 395414 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_384r1_sha512": { "hash": "0x2a5ccf8a87cc59adb37135096872d75e93b83bbc91940b5d617d54f0fd8b9222", - "cid": "QmW3UCM3S7cxJe8c7Mvwb4kHAhjpnTfoM95rAXat2ULNsQ", + "cid": "QmZw5k6Yh2pGuPGGh2hZrPySZFyEtQYBH4LN9FMuKuSLo4", "size": 395414 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_512r1_sha1": { "hash": "0x2b63054d2e32b64265b03d4bbb66cbb1f418b90910ba4851e6ff690d2d9c175c", - "cid": "QmXNemaUYH9H43NtCpQLHVZ9DjkqZ9sWoHbGzpANDLRs78", + "cid": "QmQomn3uLH74SLMv77co65cTCBDvPBWJFU25Nsud5BqTzG", "size": 512610 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_512r1_sha256": { "hash": "0x29bada94b94c9afc8e6bd775f0c3eb7c8b616dcce4b2c998e7cec9df76c987b1", - "cid": "QmeFCn3yMZupNPAs9CKSgbBDxWFzHNEu3P5HHSMvCoqwYB", + "cid": "QmaC29k3WjV1KhX5ztrCnPU4DLaz2wr4XFLy94kpe2vvsX", "size": 426217 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_512r1_sha384": { "hash": "0x1c8ad97b200c59eb083b1155c58612c773ebfdf05437a3fe9190bcd1511259cd", - "cid": "QmbctDFnFNrYwVGVQGp544iNMmt8EzsSzdPaWXYHMPCPxf", + "cid": "QmXUybrMhmNwRFt41CZU6PunnL81pBTre5SnwLcz1SrtCB", "size": 555357 }, "sig_check_dsc_tbs_700_ecdsa_brainpool_512r1_sha512": { "hash": "0x1f8df076abda1dc794d00bf49b5bac3293052ede053264e520047b49cb9d0d6b", - "cid": "QmPYA8Lew32q1tCZGSBzxHnL6PKy6YJgcgvR5ptptbSZau", + "cid": "QmVMvHefaGvXtNdFMW5f3iCgev4PC2rS2yFsYzUJU77WeA", "size": 555367 }, "sig_check_dsc_tbs_700_ecdsa_nist_p192_sha1": { "hash": "0x16035baa0c7aaebcf2a48dad77a4ac5a69fc908c4653b95ceca4f3be4571e66a", - "cid": "QmdonoKt1p9btcfaAQNbn2xwFAkM1sNgZrpGVuYYdr7aRw", + "cid": "QmRjbviDcL5xyWAtYYdeJCVJ2FemgQWoAoqbzYUm4vvf2s", "size": 191508 }, "sig_check_dsc_tbs_700_ecdsa_nist_p192_sha256": { "hash": "0x0f136af86852d999ef64015311e55a91746021d1749245937236d64aa03b112f", - "cid": "QmWCfwfNRPJ3knajjUs3JPynVGJN3Zy5G3c1Q3RAeAN6q4", + "cid": "QmWk6jDtZxhtZEdfCsVsFvEgeCtp5b4Cvx4CBWE9Lo4LEb", "size": 105101 }, "sig_check_dsc_tbs_700_ecdsa_nist_p192_sha384": { "hash": "0x16020ea71972dcb67f778a0e84359c094fff82307450151ee193bd6ce6a056f8", - "cid": "QmbsAXYwZX3zrfRgpTwrQLm3gLoz6kjxj4EGTZfTdQmM4R", + "cid": "QmVudPkb4Haz9qCYeTMvd2MhjVP9gt9JnQRSGmHVUm4QUZ", "size": 234228 }, "sig_check_dsc_tbs_700_ecdsa_nist_p192_sha512": { "hash": "0x26ceec3d66de65c74aacc5102892571defbd2f37be1015d64c35c99bb5e0001f", - "cid": "QmWnnzB1QbKAV6dGX84YHLVQ2KWtBqZ3QdLkqDQ3ayyH6B", + "cid": "QmcH7v2yceqzVK7DrV1Puuqn5wArer6vJpTgA5ENR7hN7V", "size": 234228 }, "sig_check_dsc_tbs_700_ecdsa_nist_p224_sha1": { "hash": "0x093707ef093e0dbc92cc61b3d3ca64e0b6257b1e72a05ba3fd5ad652e68fc451", - "cid": "QmUHVvpKBWBnCMDWLt4nbtBjnMWtzUb7mRJqQ8GnYc2u6M", + "cid": "QmdRpsp6t8d1rs4ce5M6L2CfsQA58Qucs2CzaASghnivYf", "size": 201750 }, "sig_check_dsc_tbs_700_ecdsa_nist_p224_sha256": { "hash": "0x07b841abaae7e6faf27871a84e0a246d24252c7bcd36458e1742746864f23da1", - "cid": "QmXoE5PPD8n2z46W2YTNgetcqUtnernVBs3zmWEKWZWAmH", + "cid": "QmPjZpBRHzqKN99vWcQcrPeZXCffffBjCBFRR5gAUPwaQa", "size": 115344 }, "sig_check_dsc_tbs_700_ecdsa_nist_p224_sha384": { "hash": "0x28ad17a9bf7a98f26520fa760a2f027e5d49e0c26f862c0740b6fabcafcbed04", - "cid": "QmUNz7fwWnVbKJfetG6w26HEsxLp4LMT75wLjABkjQq4Yy", + "cid": "QmRv8gm8dLJd7jc29S2vNcFX4QCg2pmzkFn24zVYX5wE6z", "size": 245174 }, "sig_check_dsc_tbs_700_ecdsa_nist_p224_sha512": { "hash": "0x1c46eae72ccf4b136ad2c08c0fcc6dcb764117aaa65e5edce24ff1c71b047c27", - "cid": "QmWt6UATHd75NgcxeypUok3Tr348V6R7ijcC7icCPG4eUb", + "cid": "QmXaLhgXDNPcYC57q3jYBKMwbfY5ZFivpQWpKt9TP5wdyK", "size": 245174 }, "sig_check_dsc_tbs_700_ecdsa_nist_p256_sha1": { "hash": "0x10832d731b2311ce681b4a28ea86763f5902daf14df5562e66f5a7913f3a2201", - "cid": "QmQ2PAM7M3NZpjr13W4dvkFyLBCY9Yf2y4tni4mApw3Ry4", + "cid": "QmaXFvvXxA35SaVHSV5m9ZUVf84n9jRtrcBCCBssjhY9qQ", "size": 241040 }, "sig_check_dsc_tbs_700_ecdsa_nist_p256_sha256": { "hash": "0x1d2916b972e1b76906cd370f5a958e5f93fd6df3155c1727b488e2b966d640ab", - "cid": "QmWcotnEDF3USVvm4KnUuXwm4rRQGhZSGKHoJKiQoraQxT", + "cid": "QmbsMfb958ju1oQXNJHg2Hj521R8jNKjmQhjk35FhPexiv", "size": 154640 }, "sig_check_dsc_tbs_700_ecdsa_nist_p256_sha384": { "hash": "0x2df750626d5742c5079ac75f9a59be3180b04ad98c14074bfd36694e4890e6ab", - "cid": "QmeDVhj19vwbGPj3bXwCDUQQwmcW8hBQvrnLKh4G37GpJ2", + "cid": "QmU1jxywEzjAkjUiQBCZ46C6LS2h9ziiZAzw65YMNJD6o3", "size": 283766 }, "sig_check_dsc_tbs_700_ecdsa_nist_p256_sha512": { "hash": "0x25f731549320a513f84ddc6d19262db35d767810bdacce77f51b9d66d2b5a5ab", - "cid": "QmWTaBaQ3esYGXkLCWtx5dHCArjFrbCzFqEpkcDNoXsSF1", + "cid": "QmVp6GpsctjMhgfmzVCeyZzaZp1u7nNDKs8i8ge32gsZ1E", "size": 283766 }, "sig_check_dsc_tbs_700_ecdsa_nist_p384_sha1": { "hash": "0x147a997607da7ca57b1c6adc5f27ad189d77d329f1643bbe8197228b873673cd", - "cid": "QmZdoNNkdEP2vnVXxK7Yq3uHEQat9jHLBVDyP5LLPHC7R4", + "cid": "QmaWA1QckAhuMksAUe9jH7DoRKJQgVANdM5AxT8yRGJVcy", "size": 352674 }, "sig_check_dsc_tbs_700_ecdsa_nist_p384_sha256": { "hash": "0x100fc0ae89322388b655f277396fba748bd2541f71cec66fd8ed0b65847877b5", - "cid": "QmXJhfJxrfquUfXWXEbEoox8v58D6iRNFM3CrbfFuVjPJz", + "cid": "QmSMCp1fdpajoptTZfV2rEDpmDUjUDg3NP5oKeVfQp79Ey", "size": 266280 }, "sig_check_dsc_tbs_700_ecdsa_nist_p384_sha384": { "hash": "0x1b2133b635bd9cd64e4c6c9bbb17c5c7e21e5641387b63347e6d9408b63d2ccd", - "cid": "Qmbcibjd9oVSzs5eErBNwUnjzYns8AQuaHVK4i3Vtc24Zg", + "cid": "QmQKbKkFFMTnaitFeERF9kNy7AJGGjMWSrnKuGkdkHDJUi", "size": 395414 }, "sig_check_dsc_tbs_700_ecdsa_nist_p384_sha512": { "hash": "0x05072c6b3cfc2651075a6ed9fc2254a38268a0d4a2e08082713f896225162151", - "cid": "QmdGntU8ZVdk92s12GjbnYmQZKgrQRMTjVrUAeuHhVtCsc", + "cid": "QmQawJr53n5JYdCQbSsxRmRAAx5EwYyLgPpvbe4SwyTYfA", "size": 395414 }, "sig_check_dsc_tbs_700_ecdsa_nist_p521_sha1": { "hash": "0x15031248e7e52d812e501b00b17b018cd260a0aae55b4dc951e8540be1883dd6", - "cid": "QmYNZYPAkSCpq5GfWmQzcL4EywLcfhwiUEDgyXR6EEAS3N", + "cid": "QmfPDqAKYfi6hyjNJEhrBYwTv7KoyCNDVpkpWNa4aQvDMn", "size": 520949 }, "sig_check_dsc_tbs_700_ecdsa_nist_p521_sha256": { "hash": "0x0a9baedcd0493053def158c62bf367b908535affcf2a2c5fd11ddf3b9b61040a", - "cid": "QmbkXPEBkwVnuupBgeGqxwAZsGruq5rWaaytKEkEpgjwN8", + "cid": "QmUzxbmMXra3hpdrSAVs8wtwWoee8qbUgBCcmWAKr9q2zC", "size": 435933 }, "sig_check_dsc_tbs_700_ecdsa_nist_p521_sha384": { "hash": "0x18c5193c945ff68f94156bc361d76693f943f043d27ea1df7eb9d78cda8f6e19", - "cid": "QmfVhehhX6fgrLCDs52cKwwi5XRBAbwHJwMZjp1K3GujDP", + "cid": "QmbqcQqn8v75dfqufxgNHHLW5G6ZB9B7h5TMR4wqkpR6kx", "size": 565074 }, "sig_check_dsc_tbs_700_ecdsa_nist_p521_sha512": { "hash": "0x0c9854269d9568d5c9a0a0983893639ea92843cf8709300cefb4a3f365807710", - "cid": "QmSK5ReL2fyrG4P3rAsnrzQ7UVd8Zhq49YhBkDUSSV7btK", + "cid": "QmbPpbjRmrQMTjroFgE3vzxcKwjVu4qeLKfHjXdEcxNrYV", "size": 565084 }, "sig_check_dsc_tbs_700_rsa_pkcs_1024_sha1": { "hash": "0x266d2986b3fd9424d90848d8fb5d72c81e848ecb06f6932f9aa8430d2a615d99", - "cid": "QmQnFSonVy6kRMCp5bRBgfFCKmBXuvG5qPqUSVxXkjfq3k", + "cid": "Qmex9TwSWh2YWZZ9g6uXpwfSPzzCKsbskL1Dg6begnuGrA", "size": 174367 }, "sig_check_dsc_tbs_700_rsa_pkcs_1024_sha256": { "hash": "0x272931697e024d1dd4851ca8c0d34f685f390201026b1a18c751bec36b6804fa", - "cid": "QmdzjATEwdfdqNbntZ3hA5nUdQwbvt6FhNtxugehgQXx9t", + "cid": "QmfEjS163BhBDYs5cNUFhDiyyv4UaShxecg6LBoZqLSKEa", "size": 87975 }, "sig_check_dsc_tbs_700_rsa_pkcs_1024_sha384": { "hash": "0x2b87f284fd916b6481d40fd3a71cdade4a40ad772b868ec98fbd0898075bd6df", - "cid": "QmbFuKzgFVq1euwd3yqd2h9YPMAYsgNoZQK9aPgyQ2GU54", + "cid": "QmPKdZhd1bGUWAnLzWvaSY6GMzdtmH6FnxPBHA5wKoj4JP", "size": 217126 }, "sig_check_dsc_tbs_700_rsa_pkcs_2048_sha1": { "hash": "0x23fb994e5f0128f281e9321f546d1ac5311f3c4e364fcd8ba55660d5492bb631", - "cid": "QmeDQtmA5taScRUsR74HMsZUrWNbEQivi4hDKTMKeRJfpp", + "cid": "QmNpXaXAHp4zhRe85Ztmq2kmjbYr82orvE5mDGvxcAJy5C", "size": 214658 }, "sig_check_dsc_tbs_700_rsa_pkcs_2048_sha256": { "hash": "0x097bd664baa94d31d0b8451dae504e20e3a630ecf5be0bc0107ba6fecb22f9da", - "cid": "QmZ5nTvmd1Yha6k3HS3TJd32hF9ntw1jG2Ni7CbwxYfs1z", + "cid": "QmQt7QpE6MiPvnNrx5vivYHLBgi95HctCcyGn1sFUxgPRE", "size": 128266 }, "sig_check_dsc_tbs_700_rsa_pkcs_2048_sha384": { "hash": "0x0822a5f4f2c0988695981970f9dbedb82f3af27c288b9223b8396455296c0068", - "cid": "Qma5gnJkLzy7zcQd4c5J2CHfUsUW19TCcE2W86Xwsy8qvj", + "cid": "QmaxG5aFdWDK1quCQmNvaHcgfdkPvXNDYiQjSLWUYJxotp", "size": 257417 }, "sig_check_dsc_tbs_700_rsa_pkcs_2048_sha512": { "hash": "0x21459b1ad4054b5490621b04457211f629cae5763f52f0612fd96f80a1f2aa83", - "cid": "QmdoQzPEuKvMMYn9oivknUvc6msYzeZkw4ektb7BoixSvB", + "cid": "QmVzEjfugfDZ7raFDxad7h2M8NCVhc1b6dsVzENm8BPCK2", "size": 257437 }, "sig_check_dsc_tbs_700_rsa_pkcs_3072_sha1": { "hash": "0x1320528d1c5bcc1c3066831ae9a0da5675a2adf5fb26cd5ceb20751916ebb087", - "cid": "QmZAyaJSuuRA5goXCpqPRDBAXGBAEYaPsVdLsBjmEvFucy", + "cid": "QmTyHCZRsEiVqeVX9tJ1VG6UiyGaTFzEQfrHsMXC1E7sKi", "size": 263393 }, "sig_check_dsc_tbs_700_rsa_pkcs_3072_sha256": { "hash": "0x1db4fa5c61490f3ebf145ef7315bb7b8b993377629ae24dbbdbca506674b2e0d", - "cid": "QmNmyCqcFE6mEPcfFAQ9vGaJCbYUYt6AFn4iiZ9e4xAr9e", + "cid": "QmfUJKHNFbUdJin7pPs7mdF6HwBfaQhNuJtPsKe3jMkEZj", "size": 177000 }, "sig_check_dsc_tbs_700_rsa_pkcs_3072_sha384": { "hash": "0x15500e6f11a108c100148c42e3f5ffaa1f7ff74f37421eb0930075468cc96945", - "cid": "QmYuaCHFi7Bj1j6veU2DMUL1i6ZntmHke6wfkNWipE9dQB", + "cid": "QmSs3f2e12fcfzZeegQ4ixznmCtLMwZXK7z1kBRzKfgvEu", "size": 306152 }, "sig_check_dsc_tbs_700_rsa_pkcs_3072_sha512": { "hash": "0x2916d874fad9bed33d5bd796ac2214ce4544047aabd280e380ab1ce056416ef3", - "cid": "Qmcg2Scip9EXefgK3tYtibBGwhdSZMNUHAN3Q1FbJfNKVV", + "cid": "QmYbRBFZfGz8LtWxjmxFjVkS6MfFanzRSBAujqxj4cJ7y3", "size": 306172 }, "sig_check_dsc_tbs_700_rsa_pkcs_4096_sha1": { "hash": "0x0f2cc240bd2b729cde49bf3bba6d8632967012ff13adb8497da21edb6dd4a92f", - "cid": "QmQCo63Tqjtkb4bQyoeokDKvtYxWzzx4heAcaB2B24CY45", + "cid": "QmSfMHUP7EhFwxxUYHe4Ptpn2XXjaKgubnhmJ6uTEEWcpk", "size": 331702 }, "sig_check_dsc_tbs_700_rsa_pkcs_4096_sha256": { "hash": "0x20999e2a618cb0bf6fc727be505f6ab608609ca337d0e68be2dd9e9b779d3c1c", - "cid": "QmRCVbNBCPS5emQVTxkv7yVXBZXCDpZE3tQX19Uu5qgMRq", + "cid": "QmeujRLyKD68BTRY6gV3dTfnGvLSxxkmKRFskeJUoQkGXK", "size": 245310 }, "sig_check_dsc_tbs_700_rsa_pkcs_4096_sha384": { "hash": "0x07162d38ac19fa2ebe3b9286d99ad7dab394163a0f80d867cdc60102f523c96f", - "cid": "QmT7Ri2HVUJ7gugi7vMCc2hDv8ro8tmKaR2mGYDAruLFhq", + "cid": "QmZSEzsEMk1GgGkgJT1f3nDiDSLXDDWtS4xNduoh3zpkbh", "size": 374461 }, "sig_check_dsc_tbs_700_rsa_pkcs_4096_sha512": { "hash": "0x24bf137328226537376a9dca912e5eb7cbc87115b65be2ffd85d6cac3e0a6d0b", - "cid": "QmaLdWieQ4HTJ85hHSwPwvcKAeL58ZhSuQ5p54WKB8LFFM", + "cid": "Qmbe48zQmM3B88L4YCZFybsjZABm5N3jMerXTqACSBDFQV", "size": 374481 }, "sig_check_dsc_tbs_700_rsa_pss_1024_sha1": { "hash": "0x078f1407230ae313981e4cf2c0d91ce13a8d7a3c9aad93ec8e4c912aefd3362e", - "cid": "QmNSwDh12sWH9HQLKf2giP86cLY2DnbDkkvco82qGrQvSS", + "cid": "QmXEnULobtFvBacHhZ1brXdei7ZkZD6gSxx2123wVYczq5", "size": 249472 }, "sig_check_dsc_tbs_700_rsa_pss_1024_sha256": { "hash": "0x2f46ab5b68d7bc4600d754558a28037ab4aca7a8656ac1896e2061ba897a7ce8", - "cid": "QmekGoDym5Q16hJgmzE4hPnZvwsH5pQKwUH2sSyYzAUrqA", + "cid": "QmSCThYPZdUwmREaaqgdpfjRUtDQnQzDStDnzcWq5i5tN5", "size": 115350 }, "sig_check_dsc_tbs_700_rsa_pss_1024_sha384": { "hash": "0x2fb9e717196790aaf375c0e3e45620660df294cf32554e486a45fde4d656a822", - "cid": "QmPuvxeJxDSCyf4b3Ren2pfkV2Yi4MmiSqnSQVw4u41bMD", + "cid": "QmSWoe26mUZDCGz2N5Qf919rXrgtYazvEgrMZ9Nuy75SjL", "size": 298186 }, "sig_check_dsc_tbs_700_rsa_pss_2048_sha1": { "hash": "0x26239687142b074af0ed342498a0ba87a2f096779e260a9c50e1e50f369ac603", - "cid": "QmSX6PAALpoPSdLs9gKPCq4BCoqwn3keZQGuksPLNGsVAT", + "cid": "QmQNqRAFZ1czbK5SPZJ9bruEyFoLWucDJLFUhzUkKPFLCz", "size": 341926 }, "sig_check_dsc_tbs_700_rsa_pss_2048_sha256": { "hash": "0x26a6c8c4d851f5f345c2ea3be6eb75841603c394ee0f560b7e5b3d690ef60ff8", - "cid": "QmeJHf6YnXGsYwVuPZRgae6jdyE2qSLhZPvTtTYv2yvhpD", + "cid": "Qmbu3CqvZiuhjf975j34F21DDWkqVTePhnqjjSFcy5BUhW", "size": 173472 }, "sig_check_dsc_tbs_700_rsa_pss_2048_sha384": { "hash": "0x1c8a00861a650db2b3e32c977138490f3798f538848b410a101f1934a83358c7", - "cid": "QmeV2e2q9cYpXacoVdyVxBrNqFkB1tsJbBNuMGmagcuoWc", + "cid": "QmZwYykwufCr6MyVEHNF5xY1UfdzAqyHDMW2nGcN2PUuJY", "size": 412073 }, "sig_check_dsc_tbs_700_rsa_pss_2048_sha512": { "hash": "0x10988b831b5a8f774f10c7d6a92aea046be713dc0dd9e1fa072e44f60f827a16", - "cid": "QmcjfUfJVFjpWzqQ9XGkV7aZQhcsRZo6hR2GULh5WDZDEW", + "cid": "QmQQiEuxnGJ75nSKfF26M1Zjywsmx9VHkGSh4sQSATRKFP", "size": 391302 }, "sig_check_dsc_tbs_700_rsa_pss_3072_sha1": { "hash": "0x127f585025a6a38d39a843238eddce6af581029d912c5514581864b9849bb261", - "cid": "QmPuQtCNhoQrwD4L3B5NmJnCZ1iHv6uhkeVs15tDu3urXW", + "cid": "QmR34vzoUbMn3WpnpK3hg63zcXg4rmoPXrgoEdD1dQDLq7", "size": 451242 }, "sig_check_dsc_tbs_700_rsa_pss_3072_sha256": { "hash": "0x1143f664bd52b38ee649922d18135a0c44de6e3bcf45a9ead65a6ea25298124e", - "cid": "QmZZGrGMLneYkN5yorWSrddMdxofuYEYVTCwFkMWdqvL9U", + "cid": "QmeV8vA5b1gViFfHdQpfoCVBcJkVqM34uHbbvJqMikYx4e", "size": 240120 }, "sig_check_dsc_tbs_700_rsa_pss_3072_sha384": { "hash": "0x0655c830f4aff35f9418f9a4a0c871f2a31a6e64999d5a6ae593149fdeb1bca5", - "cid": "Qmdm38qH5yNJr4TAmN9SxtXZiDK9ARmzs4EBZ7e4Z3NeJo", + "cid": "QmQuoahcCCaLjYz1SWivaTH3jBHGXmNuNvPYt8a9X2x696", "size": 510425 }, "sig_check_dsc_tbs_700_rsa_pss_3072_sha512": { "hash": "0x0719b15277d1c69f0648ec431d5891cfcdb984d9e193f89ccda6945d1135682d", - "cid": "QmZsmGTmEwKhaEpy9QqcYV7z4h6WMUjam4JxR4NK37AABh", + "cid": "QmYoqN6Wx5tB6nf4K8vtgwGJfF8A8ULrLCzLHmun47jyA4", "size": 488244 }, "sig_check_dsc_tbs_700_rsa_pss_4096_sha1": { "hash": "0x2ad585c89ac9f06647c545c0683683c8d8ce95fbf9b95563711893cacdc44add", - "cid": "QmR2kQzyVzcmXLe9KcXmYPkYH5Ytm2CUZJKUqYizBThzBB", + "cid": "QmNXqShDVPEGFuyPNXNhDpKq2kuzH5amuGbFv5eK3iXyu9", "size": 571714 }, "sig_check_dsc_tbs_700_rsa_pss_4096_sha256": { "hash": "0x23e3bbf4b0c96a3291803033419e128568d91784c843d85ce4472f83b5ef4d0f", - "cid": "QmQAzVBkbSiwgE9EHo9msMbb4qdsQCpnwskHMsLQC3Dtah", + "cid": "QmUpjnqCto8gGfNcpVoEGPVHW85BvSQTXPfJf8VFyK1bJx", "size": 326343 }, "sig_check_dsc_tbs_700_rsa_pss_4096_sha384": { "hash": "0x17c97ae6983749baea89fbf813ce24f70826ec0817a6d67d6bdc69c0ff788476", - "cid": "QmTDUkQ76EE4UGrupbH1hWgjK3S4dj9Vqd8xJFMGjg9LkE", + "cid": "QmVrnQx66SDZA5pTzzv6UgPVAEe7d8USYFydzfHHChsVtr", "size": 652329 }, "sig_check_dsc_tbs_700_rsa_pss_4096_sha512": { "hash": "0x1755fc9c22d167295b651944280efca2b6f57d9e3f3a47e4b49440159c95a5fd", - "cid": "QmXKxmYWNWkdJ3iRXWPgG3VBLioUXwd7RcPqRxGnUWU7uN", + "cid": "QmYRcdn2b9up93Z9L95quLgim2HsXjkHgMf6Pg2wJJy3RN", "size": 604761 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_192r1_sha1": { "hash": "0x1f721487293e649697be508498a6fb116e0ffed85804529792838dcf06555d19", - "cid": "QmdcoyVB4PEbN24bfDDRXobE7XURWkeKYFhRy3QJju8RX1", + "cid": "Qmenp7xaWuPWpeHGApE2Hm38213x5VAooHci4mPYQtxBmN", "size": 119662 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_192r1_sha256": { "hash": "0x2fe480bc05aa45e42b443561dd1ac32082cbfdadca94bd712cbb6828d65b4240", - "cid": "QmWANXZkCEnaa415RhchfWguV1wR5pSWDygkLrsWcnaQDt", + "cid": "QmWxqcChq7P29ZwBkS32eyiJaHUJxkrFowK2du26t17qh6", "size": 82263 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_192r1_sha384": { "hash": "0x05435cec060b8503af09ccf82c2d1f77e16c30cf70861a40a655427b7f6ed00e", - "cid": "QmZ7djZFgqv2Nt7rUBFRGsVXDEsxwpsXXxBFDmNWozrYGk", + "cid": "Qmem1QzpMQpssoAQa1QvecmRtKQd78UoqiebTxLahc4afq", "size": 150510 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_192r1_sha512": { "hash": "0x2e26aace45a25958c0d0986cab6499d6c2bfe209223e69da13ae41de5c91182c", - "cid": "QmQ9u995uRhyfCCPx6jhzQcRp9QTVW4BahsQtAubnzVmF5", + "cid": "QmV2jk9CUC22RVhTB7nBuoFe5QT4bd8MNQbfZescpMpxqK", "size": 150510 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_224r1_sha1": { "hash": "0x08b7a5dd2e1ad3e3dd149ce48428da8278a6181530c9b936e3a924cd00cda123", - "cid": "QmV2sKuvyxBhcmSDdqRVisPbcyQYasSCMqrqrtfC6npFvq", + "cid": "QmWaK233EvEAodp1KWb22tUHEvycRx9WKXAbyE5tZB2zPt", "size": 129978 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_224r1_sha256": { "hash": "0x29b25cfdf165cc5bc8afa75ed3c7306670f85aa344efc642306bc80e56d03879", - "cid": "QmNguH17YHbm6nhQCMDY6UVqMCwkNZ9kejK5HDvuKPD9cV", + "cid": "QmXYRXoZGjzrmWDhE8xmAp1DWZ6kfGzKbAWDZ4BpUPLvZ7", "size": 92579 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_224r1_sha384": { "hash": "0x19b77b7759b8d4f19e07ac9c70787a0e166f34d272c98b4870960609e190851f", - "cid": "QmbdDmSQcKVAwWpqSRiRiAzAackeJq1WAhm8NLT38ZqH9d", + "cid": "QmXRoPebqhjavK14kpdBzqEDmvVSMa5U5V7pttrA87DWXB", "size": 161531 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_224r1_sha512": { "hash": "0x2d2bf4fa77c128a2f00d6b7f76e4050004b8acfed9bf0b48b29b548656e3f791", - "cid": "QmPQa3FsSjU3A9z4CC31BscmSHwxTBhXArTvMMWavND1hi", + "cid": "QmVs8BtAHjgTPLY4SbCr1Dhbefke2kNkTrKAcL7yYMA5yZ", "size": 161531 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_256r1_sha1": { "hash": "0x04950970340a24ec51c1c5ada8beabee980db609f139591e171ebe4d4588f4ce", - "cid": "QmWRD76MCCitEj3XVgvpshHwdvBPe7rbXQca33ADvgB7uv", + "cid": "QmeeqKJ37Q7gAzoGPoxaYft1z4M5mZefKmFc41eUhhVLHW", "size": 169342 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_256r1_sha256": { "hash": "0x21ea1bb914522f428606046caca323e5a6c8f389a466511207d2c2968d1d3014", - "cid": "Qma87VwA8Tn5HKBRKgBt95dNizxmrnywP88WScjd3oU7Br", + "cid": "QmZo11qDi3CtzmAN8CxTyxDa4LiYu3yhqMs3R22xbp11PG", "size": 131950 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_256r1_sha384": { "hash": "0x18f4b7107cdb7f9d1113bf48956b32a4c7a6be7b25728fddb292c1b224d784ea", - "cid": "Qmd4DRtkytJzms2Ha73Ys8aGtzV8qCVGKvwMTRYPo7yASc", + "cid": "QmYSEatKxR4Acn4DsC7rYeqUGzmHHB3jWxDcjDq2CVKXvA", "size": 200197 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_256r1_sha512": { "hash": "0x19e9408d8880ea5c207968397355182fb7ed9898bb1a66014ae00fc102c349de", - "cid": "Qmdx7RroosvcefWkvkzM4YAn6pBcbmn5SojGWSMBSwaRYy", + "cid": "QmbK9ZBUyD75BYGYtkVf22yi3Zb2w8ZceojY8jb1o4g3bs", "size": 200197 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_384r1_sha1": { "hash": "0x1a5026942578515a0e6246cec39a788e7faf6c98e7b4b6809f2b27e1cf6377cb", - "cid": "QmZcVMihuhcGdcNqhmWvEbJCEAA9ihu9cY2x7BzzHfEkw6", + "cid": "QmRfTAfUY6yTymiZFrcuN4MuZY7Apf9UbsQi5iqfPnMsYL", "size": 281521 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_384r1_sha256": { "hash": "0x224bfdc898a716e35f8b2706862d2bb1e9ae675d24721160044ecb5e31740678", - "cid": "QmQDYbqRA9QE3jPGCDraJ1SznJC8uYQqvCTGnjS5z7sHb6", + "cid": "QmfKtvvezqR5LBG4Ln6qJBu6GT3s5PS8VHi6raYXQLnCZT", "size": 244134 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_384r1_sha384": { "hash": "0x248f90739fe79cdc5d67f275ea8bac2273e309004738f5f8a7b287c425b34d94", - "cid": "Qmdgd27kUbMSQzstB3CLiozzKjSfpDwsacaydeTXcFJudH", + "cid": "QmPxVM89mYND7sgpvMQ2Rwtg6YCLoUcaQoxsKpXTWDk6qy", "size": 312390 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_384r1_sha512": { "hash": "0x129f29a327b6a9a6f4647a91be3918eb1c4d383d1dcdcabd175c06f1967d747c", - "cid": "Qmaj88suGiboikdoV1zjLFx6E5Hpm3U2jUWdhbjTnzCqRp", + "cid": "QmcWfjmSn5JWUT2KxYhHWBZERE4Sp32WEmTwKYhJuYUSRa", "size": 312390 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_512r1_sha1": { "hash": "0x0dbab18c2c177a87223c3c5ef53f585ab66c2546d4a982d1990c86208722d89c", - "cid": "QmfSsY9kmaSFbK11o1TFmGc2VVFrhi4a1PCBc6GdeUspAs", + "cid": "Qmaku776xMeEQ6uonJeDLaGzVaL61Pt5CBhBb5ViPajxTz", "size": 441679 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_512r1_sha256": { "hash": "0x2f3f43f55564ee9c5cc43ec2374d0bf002fe94c68a5eae557d75b2acdee76f32", - "cid": "QmYVwnBQwys7YU9Dr1voocXm5WxyAqNzJYRruys5MyYLqf", + "cid": "QmfTbvjjHr6Qf1QmAtuL6QaAa4ttDdGwB3N6SZxxbqVE52", "size": 404291 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_512r1_sha384": { "hash": "0x118b56bb8f1dac5c9dcca4ee9ba4f757f5cb887fe25b04638439695e9442e9cf", - "cid": "QmYpNUStfHNLXkL8Vw4Md6Yqyg43YPawkVSyqrohbG31AZ", + "cid": "QmcCAVrsB5GLoJLFLFXf7FWo2XRdQWyvVxDtr1vt1VpLrh", "size": 472556 }, "sig_check_id_data_tbs_1000_ecdsa_brainpool_512r1_sha512": { "hash": "0x07e1041c1a6fdb594777ba1aa54f56ab853341728afeea157da899cdc08bc811", - "cid": "QmbUrhYhyciy3CmwMqayjSmJib7LB8bkfvxXJjjWCniypa", + "cid": "QmQnEjGY72eUjuJcyyzQPxs9VeEodbn27i7FAriweiHYvH", "size": 472566 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p192_sha1": { "hash": "0x0a93a23cf70425dbce3b42c291c872cfc6e18428f68f07d10d892744ef108f71", - "cid": "QmZqpsSyd79u5hWrGwovFiNrXuRiBphMnvHYr1XezoeMaf", + "cid": "QmUcCRoaLWpM5FjvwN6RFyvtaLP9FgFZSzoqWgTdGb4Xfc", "size": 119662 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p192_sha256": { "hash": "0x2247791ea4b2916241eba0a316062272c9d1166471d0b9bdc898fb0d55bd36a2", - "cid": "QmdaDcMJLzr4UbLiVQ2QMYy6wfWVDrvhf8LtV2TkwFB8tJ", + "cid": "Qmf77MJ4VTQbqHW8dauyCex8FoT29jJKQsXzdP3PEM954C", "size": 82263 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p192_sha384": { "hash": "0x1ddd5fd96786d21c34ba4b2b83ecd74fb7e1943707f2f37bdda57a8dcda5e84e", - "cid": "QmT2u9ANn5vAksy4TCupvQqasn5EaKWA2S5PYNWjC9gmkW", + "cid": "QmTkQbmkszNwESjYX8tt8bFKSosVb3umrAw3dRSWFWydgv", "size": 150510 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p192_sha512": { "hash": "0x2f02e3dd7c69fa4d3f0201b7e116e44687a59baf195efa9c7918ff24575ede70", - "cid": "QmS9A55FTxS2otmVCtAAGDeZbprFqaS7bucrFZxYVzPmtq", + "cid": "QmXpUDWBDHnT8rCTkjGEnmyxuXDVFSYcUEQLXsJ1GwCksF", "size": 150510 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p224_sha1": { "hash": "0x118c2411a761c7375bd628b4e6525c935e27289eda0e79809ee8f0465d493825", - "cid": "QmRKr58rG6VNUQGfFhriLT3HyCHmSXJgG79AVgYfiNwmSt", + "cid": "QmRF5QT4eFwsASp86xroeyDy5UTcQJYKQ8uVuvGzPrSM5X", "size": 129978 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p224_sha224": { "hash": "0x1b84c4ed1dae0f6bf50265e04b3b2f0e3b1b6bea8b3b0b01df0b81c309c53f22", - "cid": "QmUaGZZcXDaCgkj4MJD1GgnoPHkvBsrro7EZ55RNWM9nVf", + "cid": "QmSMh3Vxnfx6rT1zmpF6pEym9vfnTkXyMfXMGGb5EwTLBV", "size": 92579 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p224_sha256": { "hash": "0x2a610690accddb53281defcc34f5f3bab749ad9317e907e40151ae7190925fab", - "cid": "QmSrCTfxwtSrZ7a6GyTwuHLBHY93w7qBpTUCGvMYooDSFm", + "cid": "QmfV6Ze8p4VVKhpa1pBADZ6A8vsM4achvyTEsnEvwaRkFP", "size": 92579 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p224_sha384": { "hash": "0x03863dfda893679579bc23a8a1035dc815b36d700c92a86f4ce2f469572c598d", - "cid": "QmXUVQTCBQMbSgJ7zsUX6LE4QXUPTmozW5QcJNp2Fvcijh", + "cid": "QmYmH3nXVJ3ARf131cDQNH5WJVwvtNVT3tYvmYtbq7K6xN", "size": 161531 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p224_sha512": { "hash": "0x2611531eea8378d084410a213e8d972616130ea48c7d572c0d95f02017b8ceaf", - "cid": "QmWANn2NQ5kx54kzaGbKyaE3kxNwRfo49gXis2YeTBNsAu", + "cid": "QmfB61HRJrzCMX5Mp5muU5gSpNYJpzsAGcaqRSqSdcK4e4", "size": 161531 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p256_sha1": { "hash": "0x19e32ec5e8b76405ccab36f8c4d64b9af743055d9a47436fcb38e9e5d5d66feb", - "cid": "QmfZqHx7nVKbVqoPUEAwn7LxxuA9Lt32NcX4qeNt7taQrG", + "cid": "QmSpQnep4hfegmfuW7MWpotx7HcsdSvXg9w2kozLU854tP", "size": 169342 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p256_sha256": { "hash": "0x1e11a548aa95ee12ac9a9e7fcff7474b2bc29a4c32f061f1c2d28b12d059f552", - "cid": "QmRpT4FTE3Nt7rLt1qYjJLniRqQiGhLLgf9VTPXqNadXDc", + "cid": "QmQLYW133sR2RrN3sLhyjeXFPhLRaCionudLU9v3oUgeTK", "size": 131950 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p256_sha384": { "hash": "0x0e33d8fb62b8466b3bf45b8faf43588582999c596e86ad5c509427ef63e7e082", - "cid": "Qmb8Hmpqn4zbmtZuAZQMwCe3CKPPoxTt4Hi3XijFAzvQ1s", + "cid": "QmRPykWcqeLigXcpdJwhHNwtu4qcKHnZuhLFYTyucNkPqW", "size": 200197 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p256_sha512": { "hash": "0x2a811340de52c5e1d14de3a8f17bb4fe76d9f3c7b9ec70bf188c30a34116377d", - "cid": "Qmf7wasz7JYpmuzCus5xVYMbf3tX8pCY1CPW9ChXweYZQy", + "cid": "QmVxyWDfkDXmHEvZG2voAdgzRxyor5XbheLRbWDLzvEc8M", "size": 200197 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p384_sha1": { "hash": "0x00f2aae55d9b8948d5a20d12876b4938599a1da2605d2ac2a788a25764a557bc", - "cid": "Qmbg1qrwQTwvSBX4H2mp9MYmMSAzBoHY71MiWNA1fq8GvL", + "cid": "QmcQMtyrMKBR97MEFzvGN1WcABYrhUyd54zAYbPQawxX6N", "size": 281521 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p384_sha256": { "hash": "0x1de0efc3aad54b3f96e5e0007746d6956664b3c2cbff69711f44581f78b5d213", - "cid": "QmQVZXDuhhtuh3TCu8Xr5DW44qtwW2VSgcsAKMv4iSTYWa", + "cid": "QmQ2RsPcXJxVeaCHwa7nxU9GA9mQP36tny2ujfKQWEmt6J", "size": 244134 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p384_sha384": { "hash": "0x2866a46c68329998bc2a7a1eb98409e4d15caced9fcdcfec6a7ca46414a5a34b", - "cid": "QmVL8HCeUjkjjmAoxCC26DpyvGzinmSdSZ2DYgXtjiGwfL", + "cid": "QmPueYtmRSSQ763SZyPDYcLn3HnuFfPQTJdBjU2i3pND4R", "size": 312390 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p384_sha512": { "hash": "0x1f1d1503cf7791ee26b9ad29f33c57178f97237e378e7819d9c69c15f3ee6917", - "cid": "QmfFA1UozcYCeNHSzBzEjJJtxyBXDTUn5zHsbFDc9Yyn5u", + "cid": "QmTw3MwQZv1yuYtuELWgYkKibYXUUZ8evjYRGn9UDKpjNe", "size": 312390 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p521_sha1": { "hash": "0x27c021bc921bae431dd26735d807d32748a242ca899c0b1aaefa1bfefb0b888e", - "cid": "QmSQfdXnYJtaamShyUcHE4fzaQQ9UAv4bQGQGF1bWqtj3J", + "cid": "QmQhZCU7eNPD96HnEVGEwJvSAUfg2zewX5QmBMZh218qnX", "size": 449879 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p521_sha256": { "hash": "0x043ec533a3f405c83b659772d7d9c23a626eda847e3565df8693ad5e0f12675b", - "cid": "QmVsQhQzGMEDCBJx3u4yyuTBbs321gn7hekQpngf7RjJtF", + "cid": "QmPi999H1FkkDPNq53B2wmy1JYrkw2sFkhgiPvATnSQa7b", "size": 413869 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p521_sha384": { "hash": "0x299ff18f0088a1c29a805eb9385dbe2fb55881a5ee633977b2f78e7f19951682", - "cid": "QmdGqDp9xccjy5LhgvKXpsi3t2RY48Kub9szjwcHeJJ5v4", + "cid": "QmRVz4UXyXY2yhk1GyS2Cupr8RN8fDGdBadxvStdbgbGta", "size": 482134 }, "sig_check_id_data_tbs_1000_ecdsa_nist_p521_sha512": { "hash": "0x02f0e0699b6cbab5730b65e7ef8f08a4649360b9f19238fa9009481cc60cc2a5", - "cid": "QmWPYCkH3Mt8LV9QBwXi11msTScFCQr4vyaMnBz9oo5cQt", + "cid": "QmNj1LaNHxsPebwBDnJf4siyVdtmTJ5juCxSWYP1v5TNLs", "size": 482144 }, "sig_check_id_data_tbs_1000_rsa_pkcs_1024_sha1": { "hash": "0x1d5aa43897bf641efd8848e3a7a0caa6bc4060cfdbe8cdc0983b2fd63d0f6c6a", - "cid": "QmPWPJdd71dcgFSyWaAx4mzB9BbgXsXoKsBi1W7UX6Bs2q", + "cid": "QmQoBMrJcawnLNGRVPvWqhRBzJgTAPqNbyeSDBoELRcdop", "size": 104179 }, "sig_check_id_data_tbs_1000_rsa_pkcs_1024_sha256": { "hash": "0x0b1bab40a905882438260ad5b1bf9b0e60ab47b987a10465796fcb4ff67c4b9a", - "cid": "QmX5uvz7JDCSzM5vExEcWS9RnymTbW8AXXwhEUETwaq7tS", + "cid": "QmQZc3ZbqWZSkxyEodEgxRzFD4ALSRXahennW3QofSAhKD", "size": 66794 }, "sig_check_id_data_tbs_1000_rsa_pkcs_1024_sha384": { "hash": "0x01ba256006e7a3aa25b3d512e89490023e1090a8c9e952186d4965ea3158b836", - "cid": "QmeZ96JBYessE2ZgvnvQqnQX1hwBG7irSPDK4C6akAPgBR", + "cid": "QmZgvPJ2EGjvaeQTnu1vnjgy3zJfpBgM3XB6AZG4rbwjXz", "size": 135066 }, "sig_check_id_data_tbs_1000_rsa_pkcs_2048_sha1": { "hash": "0x08a9619f9dae3a12e87d478f9f0dcb07da93af56de9929635395833af06188bc", - "cid": "QmbbTs99VZGzJtwfaXq1pnzv3rNf6SERZSxJ189yGNyCCa", + "cid": "QmcxXrtewi9qwkPjWXWBCXusEwGgebz4d6ABo5TDx5ZTnG", "size": 146485 }, "sig_check_id_data_tbs_1000_rsa_pkcs_2048_sha256": { "hash": "0x24ac7277f61ba99590aa183b40b16bef556116d54ef92641294c84287334838e", - "cid": "QmbAkARERhtVHvdsFFyt8Vxz6otibP5oYCPbwc3rZsTv32", + "cid": "QmewPf56waNS5xyDntWaR2r4roJHJNwYpwWSytY3gQtxbs", "size": 109099 }, "sig_check_id_data_tbs_1000_rsa_pkcs_2048_sha384": { "hash": "0x1d55efd07c6befbe777be1a24a2cefd5003785465e3cc1a5b1121fcbc4de6aa7", - "cid": "QmcVRZcidopNKcxvAwnArMykomq3ZphD52qLTvknmbKn9f", + "cid": "QmSDPHGAuiNwaGdUEWwDL5PeFDzpKMYG1CegkrDWUGMf4j", "size": 177372 }, "sig_check_id_data_tbs_1000_rsa_pkcs_2048_sha512": { "hash": "0x2bb2300502a0754fce919650f74c96069315c0783a98da24a4248373df964a6d", - "cid": "QmPNMcfNALxXTtS8xpi8NU3JaRvXTf7DDw3AMrypBzcJQB", + "cid": "QmNb7VWsRg5FxP4GF54ZfTobnhqtvZqWLkmkEPKRz3iSJ2", "size": 177392 }, "sig_check_id_data_tbs_1000_rsa_pkcs_3072_sha1": { "hash": "0x26e8a53b9e3ed8e4938bf0bb0f15a80610df4fb98c1008085250a971518b5f13", - "cid": "QmPJ3xcZvJSixvdUwYg88yDUZVrGXpRkEFctEZoo1cdB1a", + "cid": "QmdU5BrURNwzqwzzD6Z8HDK6Gmh3mja6GuYxAnagvvsBdK", "size": 197308 }, "sig_check_id_data_tbs_1000_rsa_pkcs_3072_sha256": { "hash": "0x02b9a85fbe06c841b943e756c406688e9074d986818a5e6790afe5c97569a5d6", - "cid": "QmcTaZy6pgN6RrGWzibg3UT2TTzNG3RxFThfTLDLD5mcjJ", + "cid": "QmUqJVWAZbRnjZqowyJkQi4BazWnLnU48SkTQmPsp7G8fi", "size": 159922 }, "sig_check_id_data_tbs_1000_rsa_pkcs_3072_sha384": { "hash": "0x18ce64923da6abfca8d0c564c9e9d6500d9833e0aa23f13d776060afb13974db", - "cid": "QmRzUMKeKzFuezSDUAp1WqEdPi4ebcMofjR4SxgrYvL7XT", + "cid": "QmfVzg1VEcCipDauNofLXen97jPuRyJs7QMiJ88mKhzcrh", "size": 228196 }, "sig_check_id_data_tbs_1000_rsa_pkcs_3072_sha512": { "hash": "0x0d3e7df630af049e35f36bd55438333ebf445744ad9828906981d6b60a69a126", - "cid": "QmRjV5o3GXES1tUcsprCccMEgCsDNMgJTPjZ743Bwi26qj", + "cid": "QmfANrfNKF86QrQhHPkhB9zWQ4Eeo5yaDShwpvdFtAvtnS", "size": 228216 }, "sig_check_id_data_tbs_1000_rsa_pkcs_4096_sha1": { "hash": "0x12075d66cafda8ee7ea1a319b9c21f394b8fb0fb2102323583cfdb9c125494cd", - "cid": "QmSdUd4EyZEvzW1xou4P25S7NDabjRKL9QYVGEAvHeCqxs", + "cid": "QmUf63wK322hQZ3JsgpJZ2WfzygqudM3iGqdVjujwHQYar", "size": 267562 }, "sig_check_id_data_tbs_1000_rsa_pkcs_4096_sha256": { "hash": "0x1a97eb53f6de3e7e9932dc00bc5094c753b2dec3f1017ff2c63513d12ab08ceb", - "cid": "QmbZS9aeaGb7QpZFp2BVcP83E1tEdkaLCuY4refeYK4QM9", + "cid": "QmdQ6EkqcEsiNTEf8VjLdvVBhkD3gW3mR757LneQ45kCnV", "size": 230177 }, "sig_check_id_data_tbs_1000_rsa_pkcs_4096_sha384": { "hash": "0x2f64a6319a0ef96df90c549a804c8122d25e50403c1d68d7a96192b17af7d7e0", - "cid": "QmbEG19zB2F6fPsJwRUKEkQWPA2Fmr157Nz6ZjfgKMrg1y", + "cid": "QmfEWy6BtxxmB1eKaUgcXyNBafWAVqJZLiUDegJhJE2nKK", "size": 298449 }, "sig_check_id_data_tbs_1000_rsa_pkcs_4096_sha512": { "hash": "0x18983955669f602a639dfae91b7528b47c854c2bbf2b4f82ec5d3ecbcf6d1837", - "cid": "QmSB1s6RLxvWJgTx5caMToNDqWwZ3pqgDdETXTkgfE4Bhf", + "cid": "QmRc9JbDmdtmZwu43wMqiPq2gNuyvYqKmnSJAbmDxVSA2D", "size": 298469 }, "sig_check_id_data_tbs_1000_rsa_pss_1024_sha1": { "hash": "0x0cbb983a0f4689f365d7c7fadc04cdd2cbf35bbe1597a2db00ea479c3e6cdf13", - "cid": "QmcB2JU2D9Wh8zG4GHAhjSwV5QP3JEiaS3gB2G1toKJi7x", + "cid": "QmPLLyFV3Joe89TRjsrsi2MS1jqCyL1Km2UggUrACayo7v", "size": 179284 }, "sig_check_id_data_tbs_1000_rsa_pss_1024_sha256": { "hash": "0x0d79d9c5af7dac521df64c5aebf56fa2c36ac5db18d0b6e9606773d044695cf1", - "cid": "Qmc1LgB1HRxyGNpfRtcHYSUKr6zWbz6HVTvbe6HGZVQn56", + "cid": "QmWtPsJ2uycdSinKVQkekkpwv19v3WJfFQ7sjU7PedkpJN", "size": 94168 }, "sig_check_id_data_tbs_1000_rsa_pss_1024_sha384": { "hash": "0x1b15e8ce3393ab49a582d18bf7f7b12da2338e909d4e59dcf3c2daf3f183bec5", - "cid": "QmZwv2YXppSd4dB6ZSqapcHPJ3WAKkGxyTSB2EQNQ31Rp7", + "cid": "QmUqGh4RmV6D3h1fBgZfymecdP5wh23Pw1ZXbPdTcPXUvj", "size": 216126 }, "sig_check_id_data_tbs_1000_rsa_pss_2048_sha1": { "hash": "0x2b2d206abbcd9f41371e82b34d4e428fcd813781e87ea80d3cce10b48ef24922", - "cid": "QmWnBBNbrkpzQQDPms9yjqhMFi2ugnun5TSKK7a5q4YK8w", + "cid": "QmR2F5RjjeCLYjk8eGvsgptwt4Jfhvc6fgszzKc7crdkji", "size": 273753 }, "sig_check_id_data_tbs_1000_rsa_pss_2048_sha256": { "hash": "0x2239ed3e5fa97ae31ba2de5ac6b527b376cb95e2c74aa3ad1a967fb3d88c6d24", - "cid": "QmWzfv4FxSZUPKRPceYSj5898o6jbFDDCw7YiRigSSiDgX", + "cid": "QmbcQWM94KaFBX2GjMVfZ87565bYwoRUc4GWXuVAmNUTjq", "size": 154260 }, "sig_check_id_data_tbs_1000_rsa_pss_2048_sha384": { "hash": "0x212fdaa52cae6285d2371c2a0ea66029dba131902a039f57924af02cff84542d", - "cid": "Qmc83cDSe924xWNbeCH8NZ2ZLKp2qACFxvamMoHiL2AMpR", + "cid": "QmZ4VoAUvfvooJDZkL12m2bRdP8yrTHNrMdFYp7FWidcxg", "size": 332030 }, "sig_check_id_data_tbs_1000_rsa_pss_2048_sha512": { "hash": "0x0aac34665dbdbef90c3730b2938b65e639418483d49012b8b2d6dd097d5e9cb4", - "cid": "QmfPZ18KafJYu91EZjjuC59w6UsFbaPk6SkiiaZhvCosGu", + "cid": "QmVzQNbcYJbSftf5i4VEqwcspDriSu6zU8RtRv83EDHxQQ", "size": 311259 }, "sig_check_id_data_tbs_1000_rsa_pss_3072_sha1": { "hash": "0x094107c041adb9d3c864b0024d5dce43c729814f5e01e74362952a1cae875959", - "cid": "QmcxYzPqjJueCUTm9LGkTKnQr1tX5g85fKDxdLHVS79BVx", + "cid": "QmXgAyT83syRqJv7ZwzEaJCYk8FD6cej9FTqqRQ4JrWEh6", "size": 385158 }, "sig_check_id_data_tbs_1000_rsa_pss_3072_sha256": { "hash": "0x0afc6a676c0936ad24ffbfe9e5e35e86c661e15450d5914b05fd168eafcab5b5", - "cid": "QmdsfipSdAGem5jomB7LJXoDjNdYsKJUFh7hkahyzaaUgH", + "cid": "QmUrrnxNkYy6NcdMShxSUZANKytxb46WemTyK6MJioGsXg", "size": 222867 }, "sig_check_id_data_tbs_1000_rsa_pss_3072_sha384": { "hash": "0x2e900ca0a776a7155458771b6bf1284b7b1db9ef7799ebcbe8167dd4335c2da0", - "cid": "QmNusSeoFSj1sXdF3HJVEnKfotZ6w8FmjiTcS5ZfjDqCw4", + "cid": "QmZg6v7r2o3fTaY1NW5W8MiAqKY5vwA68rEofa22zQdSxC", "size": 432470 }, "sig_check_id_data_tbs_1000_rsa_pss_3072_sha512": { "hash": "0x03303e314c7c2fd8aa507e1b660c4fe834f648ea6c763a02e222d950321339ba", - "cid": "QmcUjsqo2R5PCrg9QYcymhzYYENt9NJJS4vYAzexiCsf9v", + "cid": "QmTFH7mRvb6z8nDLAKwCEXAHvVtJU7g9sXVWUvJ1DybHuk", "size": 410289 }, "sig_check_id_data_tbs_1000_rsa_pss_4096_sha1": { "hash": "0x131309bf18843c4c8ea5f5a6798a363f7bc54a15bf48f155bc0e6d20790be15e", - "cid": "QmYyNpEQB1HukcPVdk4asQgEhUBVjryLd5MgsaZqJzX2qE", + "cid": "QmU6ntR7wCfQiUfsCuG8LgtSr3LAJKgiNxXY1h8o2pAYTY", "size": 507574 }, "sig_check_id_data_tbs_1000_rsa_pss_4096_sha256": { "hash": "0x2f179a33dbbe8b3b828b1d844353a1620a396e45aac1fe0886ab3e4b71cf0761", - "cid": "QmePB3AwSetZvXujCXXfZA16j3m4X7eUrfgzXzX8CMncFJ", + "cid": "QmVEgvcrXvBBZ8gXGZd5XX8a5vs1od7GPFPxTZVtC1D8zL", "size": 310906 }, "sig_check_id_data_tbs_1000_rsa_pss_4096_sha384": { "hash": "0x18addb34c7689dba5906b0db2dc89c5bdf7120152a887f247afb5f16822ab879", - "cid": "QmW8qiQdqyZRjMMFEQXuZhbCDtRombv9fcqDFvFfAHunRC", + "cid": "Qmc4usUWDbBVEnJU2WZ1yPsCoNsZB3daHCsXZCnRJUYMKx", "size": 576317 }, "sig_check_id_data_tbs_1000_rsa_pss_4096_sha512": { "hash": "0x0002ca1a3d594acf9fc99e1ab1405436f95d871ebeddf59d8ca3ea2482995987", - "cid": "QmZ1jJwAbjbmF58KBAQqMeoQxm6Kow1Uf8nWA88fR8y5xd", + "cid": "QmezbJChLp5DqmVS1ykXX7q2xEm5ux8Tnha5HQiUfgsWbR", "size": 528749 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_192r1_sha1": { "hash": "0x2bd73491e89cc942d3816c34d12c1bd41361c7456bc4807df1b256f986f420c9", - "cid": "QmUXv5TzhLsbYZTsof6A15xRGY6QUyf8BMHYGZGqUj9AE1", + "cid": "QmWdAd3rsgNR3b7RLMFWriXULgf6w8w5yGhPsMP4EcjLqe", "size": 120705 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_192r1_sha256": { "hash": "0x0d51037555bf0190adb52f1a6193b5bfbb457d4249e4379e4ab0935e4a76049d", - "cid": "QmPM6m3HKVKV9AM5EhMbnHyeHR6ZmGrZYPTqEd3aZcosJT", + "cid": "QmWV5biC3qLyW3CwX9LJHMaAANPzYzpWf7u5wVTVJDytBt", "size": 83330 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_192r1_sha384": { "hash": "0x0b244b08e4797508b79d46639abf52e3468716a297aaa88670bb578977b8dc5a", - "cid": "QmPbVwhHyZfGAfUi3eY8Bm3vaQY6MZzEHxGjeV6CxdypFg", + "cid": "QmaA5vvyGUGLfa3Pgw1pYZnVbZJdLFJ3a8GjdAXwUJcvRV", "size": 151553 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_192r1_sha512": { "hash": "0x213e42399610f57ac377c962fa506dcf99790c08fb51b4d903285df154af1391", - "cid": "QmfE5gtqPFVzq1EzDUtRgYH4B4LQ2AHocvntvAPViEBi4W", + "cid": "QmZNDqheg2XiDqoLSGyzUEhD8foPxR5133bhzKGzZ9u9xX", "size": 151553 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_224r1_sha1": { "hash": "0x16cf02142d962c8fd60b9a4f90a6cbe3b1219e71ea96e359716540af592f122c", - "cid": "QmQJsj8ZP3StF68eysnCENSo3sXLFuMdKQtVJ6SFtheFWQ", + "cid": "QmRDPALLcrW46NytFXfNy1YfnbWAUu3RbH1eaezHD1nK17", "size": 131021 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_224r1_sha256": { "hash": "0x21ae06c8f59e438e47874f1605ef3c533cb76cd7d562d2472e0eac8edafda7fc", - "cid": "QmaTLNL6iLs1tNnNzwvFxFRyNHyJdgsa286yGQ4zK2g3nU", + "cid": "QmYv85nLQsQ92qo22cVs7nfeJgHdiR1o2hyxY38Ab3HUXA", "size": 93646 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_224r1_sha384": { "hash": "0x156ae350118cd1e8796b691165060435a2db4b54a8345016d761468da7da2bef", - "cid": "QmW6jH9tHkmTn1Nc5M9VEeJw4ExJn3E4drXzPG9MGDEoTi", + "cid": "QmXATT6hkvKHqtwWTBnK8Va1i6hozoWhetpCvtbdHTG65Z", "size": 162574 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_224r1_sha512": { "hash": "0x160549ceefa20bdf98b8b1b367e742762f0d560d92efa317fadae1976110bb24", - "cid": "QmUm24JVkFu5PVoPa9pHhK1CxB4uBmcsXPDWyv7J8rATy2", + "cid": "QmP4FYD2kHMDqvhTVZTXVrU382xVAQDkJ7mzU3LjpJAh2p", "size": 162574 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_256r1_sha1": { "hash": "0x1951f9bf11ea9e821497db3d893a034a7771a70a6647e93c71c4fbf0937f2142", - "cid": "QmcCMvs8jeA4cSPB4fPscjTWMhz5Z9fwRN2sg12VQ4119y", + "cid": "QmNwniep9zWA8A7S1o3h4Ce8Sm1ST1oN7C51GipUVpvshX", "size": 170385 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_256r1_sha256": { "hash": "0x0fd2061e3dca67564c583f4959c3308069027f55e412e46559c5356662233970", - "cid": "QmbEQKkZ8UdxonrzwMa2xekq1kYKRfZBh9kM3f7UqnbRz4", + "cid": "QmScDkrKfmsQLGkMK2jEcabw9DfZMxs5pvGhKZ5HYMYXKp", "size": 133017 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_256r1_sha384": { "hash": "0x2bd2396dcbe0cbe5f412bb8534a8c55fcdb857117d6afbd300b01e6109c61f7e", - "cid": "QmPR7MZd6VmPXHnX1Pz5J1SoTdCfAoCgXMcaxXXQ32PUjJ", + "cid": "QmSqKkmqRz3fVKGFHxMsSaS8Y4t5qq2ENoXKxsJXxe5D6w", "size": 201240 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_256r1_sha512": { "hash": "0x04f3ba857acf16ce45024182e98b663c89c67908639a0e298d62e6fc07f07c66", - "cid": "QmdGp4Q3LmdpsjrJ2YPKLWrRE3eHiUbS99oDjHkyDc44Fv", + "cid": "Qma9u1MUSXSgrkq6RiFTtmC2P1HXEYL9HaLsVWzkUbp57d", "size": 201240 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_384r1_sha1": { "hash": "0x167efbe7f111a64c9e0440bc7cf84024a46fd9270684426fee8bc8d0cea29996", - "cid": "QmWGebrnPtw834xfCaQEMqvMsNdHt4fHymsKsEGwxXkG94", + "cid": "QmaXsgawTSxFjuUBejPdAawXapGMZUgdNuapxx5GJF5NpH", "size": 282564 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_384r1_sha256": { "hash": "0x2eaced0de7c47bd7c142c15297bf8b848568c232627edd19db4fd26ee82c482c", - "cid": "Qma5bDwFwUJXDYh9c7TSRhv84dZBFt24HMdZdbQPHnu4LG", + "cid": "QmbmmWNRrgBNtribLMcUMLjmcEJAij1Urh3i55CC6NSLc5", "size": 245201 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_384r1_sha384": { "hash": "0x2f6f01ead99586c8aa8e5870f911cc23d0765abe66ed21df53201bfd93440264", - "cid": "QmeCeD1912iy2Ug8oA27kwk97emgcD4EQ277w5mP9Hbhgi", + "cid": "QmbDvez3vVNgg7AM76BUo1FtMCar1DM3Pc95AXBbRdneZp", "size": 313433 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_384r1_sha512": { "hash": "0x0ecc86d6d7cc43ed7de14c87d07cff87ef5061f447de0ab60e1fa17081511496", - "cid": "QmaVuheMExc1qTBa7CJZhomg1h6oUfNpjv7dYKfMmasbMw", + "cid": "QmegE8xNm7ZzEv6eTyHSk3si19JysxPpRjecu2wZNyKMwJ", "size": 313433 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_512r1_sha1": { "hash": "0x0c3aebcd55d506f0a54b07b03c24e98cc8cca44af197917353a979fbcff84879", - "cid": "QmTXmE7o1vNwwGSbaxVucsGoaxUhJeFKeySr6STvQc4YnM", + "cid": "QmX8bmjwuZAbivz1m9qbVq5VvLMh1gKNBEnvHUJWZwmRLn", "size": 442722 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_512r1_sha256": { "hash": "0x1127b1ed713145b40e8ae06882c783de0fdb5717b607b10a1bb9b029395a5b37", - "cid": "QmeAwMepd4CzDrEKoSSxALqCwMxeANQGazSt8FZU9TjhCJ", + "cid": "QmYiEEaYhoHTSGc145gC7VPiPZpSRHXYvQ2P31vcNpzLSW", "size": 405358 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_512r1_sha384": { "hash": "0x17d3abeceab700d5fb32a83ddd0c65e6b7664418aa619480849292e8f5bb68e3", - "cid": "QmSwUNDXYELiDWdKLwpbL4aTssWs187ZFTXgB74ikdEbqh", + "cid": "Qmc2t2vmsks2hVBQX5risg7e5qs5UzWTxbGUDzQCd2B1wX", "size": 473599 }, "sig_check_id_data_tbs_1200_ecdsa_brainpool_512r1_sha512": { "hash": "0x0636155f8ec05ded7fa17af69873d51e96a7cf175674d177e23cb620e58bcf66", - "cid": "QmXZfrXsDVVhCRFNchXHfFzWDN67cn6JAjHgBP5HuAKrLC", + "cid": "QmdKDUp2KV2Ccw85cbbKjB3YYnpN4PJGGJw5VCs7RCU2Vq", "size": 473609 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p192_sha1": { "hash": "0x043a3456fc0f1091804de99e5a7e3929aaea22ad9bdc1ac10cdd0eaf8fe1f721", - "cid": "QmZmooLcPu6ULiRxH3m9ydqYGfAmF9RAQFXa51A22P58BJ", + "cid": "QmXWniTHUTiT3JiNepH7qDWFvYEa7VRVUdVkkzhd9GuC1E", "size": 120705 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p192_sha256": { "hash": "0x2975e7697810d4265c9e3a00e2cec8bf288c5109890d57955f4c4f7d824d38f8", - "cid": "QmdAnsao4cPQB6zVmDKeHprwPpqXjaWm8vFaQsDDkoXEQU", + "cid": "QmUB2MxhLvNdvESYNbHPEoBKQLzmnM3YD7xtY2CYA1JLJn", "size": 83330 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p192_sha384": { "hash": "0x1a947f5646c6594c3b104b820f64d81dafa1526d1ccff4d40fdcd43d2359287c", - "cid": "QmYopvrozRGGfdicHSMGcHtBboKn3jRjhfropqdr894bai", + "cid": "QmabjWtpUSo6eoZvDxcA8DphUdgZaaexTBTNH3h2ZMDKZc", "size": 151553 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p192_sha512": { "hash": "0x1fa8b951712f636483d771c72cae6fa1a5f1e565c9e91291ef362daf7a73a6c8", - "cid": "QmZkD6kxK4rM7QqN4sUKyKHmkjmD4aawUHHbeVNuPjFgjz", + "cid": "QmSCMJA5SmzhncGKSfJwSKNtx5mY3SLDTMcNCbCuZRhpSZ", "size": 151553 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p224_sha1": { "hash": "0x175a1b5632de31b69aaa835ab82b6cffe614b33c9007dd28056da831c6657725", - "cid": "QmUnR83UoPn2mUobfwbeBmape7YcEdAfETJUeKUFUtovhg", + "cid": "QmbKGzox9BZ7VJYZNWBVnLPE1uq1g5Lpz9Dk6Eb5gzi5MU", "size": 131021 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p224_sha256": { "hash": "0x27b9277985453ef8ae361a5184a0450cd146f3c303df9fbb3bc0831d82539afd", - "cid": "QmXmP3VSTVdDD8trPSMYi7rYNDDLtUrFnMujRPAQ3sendf", + "cid": "QmUxoyiXQKRc6kUW84YV3MrXGTD2ZzANVu9o2KwtUpqA7a", "size": 93646 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p224_sha384": { "hash": "0x1b6e6922ef2583ea9cfb0156c0351ced465624938bf911a799890117a3f70941", - "cid": "QmeT23Z7mGZuMjNJ3gQ5Wc96BYuZ3EBx4PmZhh48XRtDdM", + "cid": "QmPFDPKFuaL7D7GgG1e2P13dS4f71C8hMdM7aKkBSsLgqK", "size": 162574 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p224_sha512": { "hash": "0x0ec96f4fba1190332098a7b21c36f8bbfa11d95db44d0a9afe94d4f7113f8d12", - "cid": "QmfU2Q7z8cwGaFWjSqJNxwL4ZpAW5hynwJSjepEpdw61KH", + "cid": "QmZj4qFMUguFCaCfMPQ7hKtPXFWHctpt3ELdrmEuSSRWVH", "size": 162574 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p256_sha1": { "hash": "0x16adedac93639c33bb733fb5a2bc502d5d99e85a7fbf1a8e9eab98ad4d9492ee", - "cid": "QmbaxwcUqabfubeSmcX3CbMrG7evb9EFKxs7MW2KdiTH2u", + "cid": "QmNbu8HN5sPvFRn5bNyfSkjsGKyWJUCGugw136wdBPPT8X", "size": 170385 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p256_sha256": { "hash": "0x1b003ea60e2981ea612cf045ead48032416b01b220d944c1a43d34c1e101c2d9", - "cid": "QmeczCtDcbD3z3XZzf6a9eUDSucDvbHmPD4dFDJVb4HfRZ", + "cid": "QmVBXBtt1Rbocd7cPXFdgbo9geH8XiFgerWdcFFjpC4Y5n", "size": 133017 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p256_sha384": { "hash": "0x0e251f455712f4a94c13fa26aa3d1e5c6368a5fd33575e1dfcbe2b102116e304", - "cid": "QmT67ywtjrYmXtxqX4bUA6MrngvkLtEVWe1H8osMwjki2M", + "cid": "QmcfttBKri4Q4Sr5NPNQtshHDG3VGN9k1owhLHpidKwfmJ", "size": 201240 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p256_sha512": { "hash": "0x17fc65346eaa9458dbc5b305f95a1edb6df8f529a12a1aee099fa45fc25d55f5", - "cid": "QmW3qm5xje4dKzRBD4DPXK8hU6WuMNCLFTnwCZQeMGSzxZ", + "cid": "QmQN4jZQ1rVVE3FXsDi4EePKtjV3nbcf9h9ANiMHHHALx2", "size": 201240 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p384_sha1": { "hash": "0x24da5ac2a4184853fed1eed085c1b5e27432d496db12fc72504b7426966d5d6f", - "cid": "QmfFPdJcNrtH356EG7TjaUgaA7UajBD3PeXg9gWpi6MpkK", + "cid": "QmSiqWcFgiiSm4sRHKo8cEaFRsRyyNwyYf5dfaKV4N7P4d", "size": 282564 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p384_sha256": { "hash": "0x05852e8961b97021b7bd76e500b53e1eee52b2fe5c94815cb62b3b9f6a37eba5", - "cid": "QmU7GPL27jcmLYJG9VYWJ4Ckj7JuabQdFwk3NvArKGiTDu", + "cid": "QmdLNLFzNUwT5PdBS6s45YJ7VUia2FxBcGqRQGj9bZLwHq", "size": 245201 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p384_sha384": { "hash": "0x1512ca114b508d4b9a514a22b21682a95135e5e462fa45ee7e3b46cf04b241a2", - "cid": "QmactCWtyUzekwscZCX6H6dD6G4JBppA9SAsMbFiSiD7G4", + "cid": "QmTqKkG19bSHBDkpnx9LQ1RX6D9vM4VyGHv2NK5Hr9U67w", "size": 313433 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p384_sha512": { "hash": "0x2913c6cc53f3189665fc2dee83f64cccd33c52e3b7faf6e50989458a57672635", - "cid": "QmeBaCey8JXLWixm3SxLzD7WKLi9sCdbTxvRPA7UEKEKip", + "cid": "QmcA8nYYyG4hzbNhhnPmtW2r6R93oJwu5vWncjVNntgaHf", "size": 313433 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p521_sha1": { "hash": "0x203936b05e3e2452123deb6efa2eb176acbf0cb017f032dd4c1c1b0115ba2dcd", - "cid": "QmS5TReZCC47qVcfFZ5PUZsw8woK4p1ZZQ88FT1JAdiv74", + "cid": "QmUzSB1hzdmcbXWRT4S6hedyJvgpCpmHBFDG21dk8M3pwD", "size": 450922 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p521_sha256": { "hash": "0x169f9d713ca2c4eef606d1b2b01ae80b83fe3717e8bf5ba01c61013419fadd67", - "cid": "QmZ3AzurVFXbAMECABRSZpdULLhg4V52YxtkYjNppNdgSq", + "cid": "QmU2PR2hWK2JJqhZbwTkAgxDqTd7ihKPLRnTw8DJUejv8N", "size": 414936 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p521_sha384": { "hash": "0x18c7360153b5d40a950d828d9d4b6e2c30a032c1bd704d591bf034a8c6414152", - "cid": "QmRdtFpcKm3pfMYAxzbLqKqPsGYZ2FG2pfCoFjQaHkN8MJ", + "cid": "QmZe5AiKRXtQNx3UsQQGHhSJ1Y3gGmQRYSb8XKWugs9XVP", "size": 483177 }, "sig_check_id_data_tbs_1200_ecdsa_nist_p521_sha512": { "hash": "0x1c149a327df7abcd315e79c0bdc177f5c6280648efa40994ceedbd8891b28046", - "cid": "QmT9a7WrA1JiBU4xnBsBAs8uTp6UnYdzfTjtukxT3NBnhN", + "cid": "QmYWtHpPAeQdjUKmHtJEE1KaZakqMLLtXenWfK39CevzWk", "size": 483187 }, "sig_check_id_data_tbs_1200_rsa_pkcs_1024_sha1": { "hash": "0x04075a1a56a7e8ba1609d8bf2eb3ea09e5bdc8db876198b1a83eae6abbbf61d8", - "cid": "QmSkcwZ7uq5vaFBW6P4cTMuhm1i11giRpL1NHHyNXfGBnV", + "cid": "Qmdy2sTrNeQTjHZJ6S2raQdjbB325H8V4WfwRKrqxxPjXd", "size": 105222 }, "sig_check_id_data_tbs_1200_rsa_pkcs_1024_sha256": { "hash": "0x1115b8152c8084791e8825610c046272c641af5b31f44ac5c7e8c1e982443016", - "cid": "QmZcztpSYDTGGtfxmf5mTBgjdLjhiMdatzoKD1wFZqorcr", + "cid": "QmbsKJvM67uWge2F3aqC9LSyG9TaZnZiUFVvRx72cSRHpz", "size": 67861 }, "sig_check_id_data_tbs_1200_rsa_pkcs_1024_sha384": { "hash": "0x0663e6b5576b468ed4714032d7300e700abb72dbd65f9e136fc06c38e114296d", - "cid": "Qmb3W55z3N2sqZnpX7CRYeLv1bSPei4VFyV2tt6Xto3wBY", + "cid": "QmXoDA8fEkbCUSnPHHnYGww8A7tSYrY9xKgdriaW42fWuK", "size": 136109 }, "sig_check_id_data_tbs_1200_rsa_pkcs_2048_sha1": { "hash": "0x097c95be3c2348cdc94640e93fce4ff6a3fd2bc8827bf35057e57c7b4297ffbe", - "cid": "QmTYr9ucFLLvKM3ycfFKP686pVozxiH3ELufQoYmaTgkGn", + "cid": "QmPW88FwW9bBbpdr6WdKKBuWxbd9NK3YDLEDysQ18hbxG3", "size": 147528 }, "sig_check_id_data_tbs_1200_rsa_pkcs_2048_sha256": { "hash": "0x22bd1b98797268768e0a829d082eb9fdc681abb544610e326daa1c99f5268def", - "cid": "QmaHpkQwW5uDEZDb5tpP6WdnRhZrAYvEn7BEiKwGzhryph", + "cid": "QmdebGgov7Dc1iSZwuDG5vHhmZQA5zRYDqc8aZeR2hAx1n", "size": 110166 }, "sig_check_id_data_tbs_1200_rsa_pkcs_2048_sha384": { "hash": "0x01fea8c5bce29d5801ee926d5e4186d44e1b3affffee3618cf0675bfa2624171", - "cid": "QmRnWAhdaAXSHHvuskucbvDhCfVh9XKFq72ivaNxHD8HzB", + "cid": "QmdxBA83WmYfUD9ShF7QsQ5PqUGgeW6nE1KG3nQz83b69b", "size": 178415 }, "sig_check_id_data_tbs_1200_rsa_pkcs_2048_sha512": { "hash": "0x034dbef4273a416496ab32e65ecf2754e481358d3594cec1816c5600b8978a14", - "cid": "QmafA91PKCYZdQGuazH2y8Hf9wtPwHT6WjBAmXpLebzDQ6", + "cid": "QmPe5Sd4qH3pMUkfdNccKNuEpxqPHnuJmW8nsVc5y4vAcR", "size": 178435 }, "sig_check_id_data_tbs_1200_rsa_pkcs_3072_sha1": { "hash": "0x06a78bdca4c9fcb5ee8c42a799b5ca353830216569102cb14699699102b4beac", - "cid": "QmZLxcs2X2DRuGxKWUcSMeon5T2P59jQyLXhsZw15tvEi2", + "cid": "QmToPCcV6JJ6AemFCVG4LaurKqM84QoSWPAMH1yg7t3Qfx", "size": 198351 }, "sig_check_id_data_tbs_1200_rsa_pkcs_3072_sha256": { "hash": "0x1bf58052ec917921daac23eb4934473d4ed54677e6d590b177699572c06cfff7", - "cid": "QmXCKq3rv33Lhn1erX5GT2t6LKXN8qBAN5F99Cc7htBPGu", + "cid": "Qme6uJQjiJCMQJMgM76EDcGpzRpvSF2pChRxCRiUjAJcGT", "size": 160989 }, "sig_check_id_data_tbs_1200_rsa_pkcs_3072_sha384": { "hash": "0x059b6124773b4749b58017172a70d4bea9554c16a5e461cb5a51853ea5a2ca41", - "cid": "Qmf6n44QWoQxYc1GXPt5WpMY35GKNoGGQQim4n4kYtavvP", + "cid": "QmUZFSJZTeun5YCXGzWrdLfvrqWj52UuxP7Uoz7UYGL4LE", "size": 229239 }, "sig_check_id_data_tbs_1200_rsa_pkcs_3072_sha512": { "hash": "0x2a3aa551423b318e86209bbbbb6cfa20090a02c16dd59037931866c111d33402", - "cid": "QmTC639pJT6vQFQ5cMhE9No8i4WthbbfwniFFhm4xBpZLs", + "cid": "QmcnBBhB7L1rPpYq6BnpQeHeSCZWBTz8Fq9oUpY5so5QRr", "size": 229259 }, "sig_check_id_data_tbs_1200_rsa_pkcs_4096_sha1": { "hash": "0x2f09edac230fd206df89d1002bf2fe0210c768d98cecab4b2ce4b62ab9fc8c4e", - "cid": "QmdFo8hguwXbtLARPB7p6vkRL1vZq2gCVZ7vPLAt9xFd6d", + "cid": "QmZyc76wwNqGRFsgEcSoZQ4DwVX9YcPLuUHoj1LqbP1TLV", "size": 268605 }, "sig_check_id_data_tbs_1200_rsa_pkcs_4096_sha256": { "hash": "0x1947bd81c1a2803895ad69eaa3d9d47468c8a21b1c05ad2e1b2cd3da5c28b29a", - "cid": "QmPnESiY8Ci4hcC5qzSxS4PwTyRkHjhWeMQCHJGdcYnZeQ", + "cid": "QmZvwaM3zmXH6BMaMWVDaB7i5gQ6yBxFtLAabDyyNVKLbJ", "size": 231244 }, "sig_check_id_data_tbs_1200_rsa_pkcs_4096_sha384": { "hash": "0x2c12758fbef626b799fb666887fb0f8bd35e609fbb5f51eb38453047444da1e7", - "cid": "QmXUhqBG1HymFWWW4Bmu66FtMZPFY2aReeMTLZ1rBzcsPN", + "cid": "QmSXqvL8nVDZkk8VrVGU74tKoCsG4kWJ3qke2qYDppb5ET", "size": 299492 }, "sig_check_id_data_tbs_1200_rsa_pkcs_4096_sha512": { "hash": "0x192f1a21b5171e9ad63ad8b6fa52cffe661a13f372d1606ba16e59a75910923e", - "cid": "QmaUkLwZPDvRrJSBs3r7zc7Braqro91vaSt4nsr3kkzr4e", + "cid": "QmYAhie3YJTbzTT4GaTzHhcWaBLhYLEbs99oBQAkNV3R8X", "size": 299512 }, "sig_check_id_data_tbs_1200_rsa_pss_1024_sha1": { "hash": "0x151bd6cae500fbf142117539970aa70ba62c13fdd85d68d0709d2b7f9c538ca1", - "cid": "QmaZJri7cQodG2rGCTvEvaRvpW66APu1xA6tSJbZwio4nE", + "cid": "QmabJLy3bA8hUnYwp9rbM4PjWmFzmaB3RJ8podD3Yqvbfo", "size": 180327 }, "sig_check_id_data_tbs_1200_rsa_pss_1024_sha256": { "hash": "0x2262db3fc0348310f19ec3bc23d5e712608760e906440cdd495b370b1ebe234d", - "cid": "QmPvL1moeziDGJkrZSjx4KtJcHht4MeL9wgH8PrGFq2CAh", + "cid": "QmWZtonZnMwUpDParPcsKUUZN8vfpuoFsGyGLfS5t5KEVX", "size": 95235 }, "sig_check_id_data_tbs_1200_rsa_pss_1024_sha384": { "hash": "0x294b7df616213469b76f908f690c03c3cd28e1ae25f6d209a3a95eadb1ee54d2", - "cid": "QmWm3ZxKKuzEgwqo9LaBdPXWm6gY6JN7hSNuqE6mA1z53n", + "cid": "QmY8og1Bnn92quoNk5cScgA6vhMumBtBkbQBrfb6U6G2Rv", "size": 217169 }, "sig_check_id_data_tbs_1200_rsa_pss_2048_sha1": { "hash": "0x0ac5c2167d621c4dfe26ab98ccb509586af10980bf82ae1d4b633b2ff04f83cb", - "cid": "QmfTyWFLQoQbHKtYkEaLw8qBbfkQ7cVfK79JY4u5PLDBzA", + "cid": "QmcQuWzUM2neMLmtoJCDs1JmXSiF7jnM9jLEmFfxZdeM7s", "size": 274796 }, "sig_check_id_data_tbs_1200_rsa_pss_2048_sha256": { "hash": "0x0e830856021f23cbbe401ad915ab90d69b2ad0f7e6bca0d4ad7acc0c1112dbdf", - "cid": "QmeKwgZDYfXLwTGYno9kxWZHNGWQ1dJhBcytVteezjMrhX", + "cid": "QmPMSwDNYrop9SoQRUvR7f1Aah6LnyUEmRxQgYaY2hdEft", "size": 155327 }, "sig_check_id_data_tbs_1200_rsa_pss_2048_sha384": { "hash": "0x1e22efd53e4e2b75635379f2110507684fd26983086efbdf2ebafc75905928e0", - "cid": "QmXa9qFBa1Dy8o7UM47nuPC8qEuV9AK5geoeZG6mVTHC7Q", + "cid": "QmWNXJuuxGWHi3DePCs4fg2TD5k78FMZo74HdhmSdo7D83", "size": 333073 }, "sig_check_id_data_tbs_1200_rsa_pss_2048_sha512": { "hash": "0x0cc3ebb65d06b71bc7984567ec6e090b20a042d7214b9d28d7b5c2ad3f44cbb0", - "cid": "QmT1y8pvRQy9Z5oauRwtzKSFFAksbsmwNpnDFtNf9EhZnv", + "cid": "QmPtzHQZnTtepiEhAyeKRBnyJ1ypph7RfXqbFAeNAXC1nP", "size": 312302 }, "sig_check_id_data_tbs_1200_rsa_pss_3072_sha1": { "hash": "0x0dc5fcfd760099618f8d3a6f76ce839004d79b4f98e97658664b2eb9f6e1def8", - "cid": "QmRE529ZwWESAs7Mr1PTDSg8TwL9vv1FGDpMeKWuuFgMNz", + "cid": "QmfQPYCZmDkX6X4KAV7F8ZWW6E2NRtHnMmaaCSnYEUx1L5", "size": 386201 }, "sig_check_id_data_tbs_1200_rsa_pss_3072_sha256": { "hash": "0x276139ec6dee5f2fc6bfda4e46f06909ad186b84961c71b1a10ac71883a83f7b", - "cid": "QmU8oEKSWaN7RQZPvr8DRymEp6ivKVkDkqmAPhxSTm8t4E", + "cid": "QmVhubmm26vKmENc42PFuEiu2wreH8eTgDcHb2EuZWNUNu", "size": 223934 }, "sig_check_id_data_tbs_1200_rsa_pss_3072_sha384": { "hash": "0x21c9c4acbbe01ef480ad6171c72dcf107b07f4a5ba63b98cf6439cd66ab40f9d", - "cid": "QmRigVtJwkvcwVd1R84Jn279x5G8381F2S6yK4xxBrj1Gd", + "cid": "QmSF7PWrZLuaedD1v7ZNnx9iAcab3nQwkcCJgwxgbDY7hk", "size": 433513 }, "sig_check_id_data_tbs_1200_rsa_pss_3072_sha512": { "hash": "0x20382bab7542a6eb5db65b90b8a5450e1cbe4547702699db4ae8b31fc28dbfa0", - "cid": "QmZy3xL8BDZDqkCyytzaq9sDquhv7aEnNdW46ysa1UsQDJ", + "cid": "QmbwTHz8bJiCyddKqxxj2tGP8jPJtJkKw6Hv9N77KAf4KG", "size": 411332 }, "sig_check_id_data_tbs_1200_rsa_pss_4096_sha1": { "hash": "0x23ea9834447dc1069bee3fbe6a76749f948ffdad9834a9dca48fec56e40ecade", - "cid": "QmTEUHFYgmeRtoVAXBwRTSZ6inXK346khzUybzijTYaNbi", + "cid": "QmPx697S91rhA8j2oyPMubnGwFv9vLZfND1XbCLyW5D76f", "size": 508617 }, "sig_check_id_data_tbs_1200_rsa_pss_4096_sha256": { "hash": "0x2fcfde4445bd9c26022eece4eaa5a077cb47976b4d71f6fb7fc14f4bd21a44a5", - "cid": "QmXM69f3w6zWFhe57kKabtsyqHHPma17Pa9VLZ1mie6V5w", + "cid": "Qmeq1ZVfF9hzUbS5RRSoDcX5t3N7SKBxaGiiYnomb4QXgf", "size": 311973 }, "sig_check_id_data_tbs_1200_rsa_pss_4096_sha384": { "hash": "0x0cdb13cfdaa78411a8ab5b9ff8f57c20691a67c35fbaff70b23fe5b1466bbf2f", - "cid": "QmdY3NuXNMXX2t3YB8rt5YVJzb7towaVq2qF1seEE7X1d9", + "cid": "QmdZ1mvtUst5ahQZ888bg5eXtq4U4iQDC5cz6SoEBYigoA", "size": 577360 }, "sig_check_id_data_tbs_1200_rsa_pss_4096_sha512": { "hash": "0x21a93f9ebe6f30f5bcfabdba8dace68e30de61591bad9d030bae936316982fc9", - "cid": "QmfQEbkZ6Qn2oXgk8CxfFZNWhd5jGb8tGsfRVF5DkZwpoP", + "cid": "Qmb22anS7jrAo6DcHTj16odjbeZT7cPneZijph4f6276CW", "size": 529792 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_192r1_sha1": { "hash": "0x0a284a8ed67402b780c793e3643b6fdeb64dfcb6420d148c747065b08c0b59fc", - "cid": "QmZWdF3sUvpKZFDs5LPuZwXY9xoyc31EQ51LruH5Q2S7Sw", + "cid": "QmRwez2EP5ew9UwVg1k1BW7xTKnQYSogktaKHAc7jXAmUH", "size": 122839 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_192r1_sha256": { "hash": "0x172fc9bbd35c238fe269833190554f34915a86854c47044da24b0ff2a934a321", - "cid": "QmWDMne7v9nxJGFeCJPcRqdMqRJj54jwNCteTqjC2H78PR", + "cid": "QmQ9gADTYfx6yU7SnEwvU68vWeCSta51YKGgzEGApNLCRU", "size": 85464 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_192r1_sha384": { "hash": "0x0ac8b5febbdb5a9d341b36884788e78bd917192d12dc3fa4019af54724969da2", - "cid": "QmQ5LYFqeGNuVL2HyTpBE2DeM2NVSG4LG4rt1isp3WmJ87", + "cid": "QmQvNVcgT237HtYBXe6rSZ79s31Y1Ky8f5MqqCcVrZjCNR", "size": 153687 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_192r1_sha512": { "hash": "0x1cedd26e6bc1cdbf60f579a7c16cfc763d8a730954ec94f355222ec626f39dcf", - "cid": "QmVX3UgBhdgnKwwzdMfYgYHA1Ac1d88kW1Y8mnLmdHyCwf", + "cid": "Qmecu5NDtEHW1tve8YvjzZLsGhBra6puDSMwYM8VyuoqRC", "size": 153687 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_224r1_sha1": { "hash": "0x301867c412db42d6b75e0622d180987b5da511b682828a326f68387e20155d25", - "cid": "QmR3QG4P1usqsQjGthev34bc2qpp9rSHmjKLXFiaMoQX82", + "cid": "QmXa3xMq2Y1opfcEbx4v31bj5V7kSRohEtNEf9F5hbZs3a", "size": 133155 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_224r1_sha256": { "hash": "0x0ef5d66091fad8aa7aa0e62d57e9005c5a9d45d16de225e2e808f62dfb8f16df", - "cid": "QmcNLhU8z28KXXHKrZK76ByEF5SX7xakZf8T6uydACX7u7", + "cid": "QmT3hWsKCxkrxkYLbKhiXTg2JrWcd3UEQQQYqH2v7tw6Vo", "size": 95780 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_224r1_sha384": { "hash": "0x2d4a5d8b68a8b4cac4896e09a5005f5df16d4faef5a8bf148e561dab625c0c35", - "cid": "QmeJvkUunqNNkUKaMA5KkMCjfd8aGxakTWYUg4Su9qRxq2", + "cid": "QmQgUsY79sDW2qeCGjMj13R3RvB4siemRNW1dkb1N1k67m", "size": 164708 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_224r1_sha512": { "hash": "0x1c403d9d31fcef2f3b125fb5018c26e4b67b0fc11971c0b7f2e674e1168cadad", - "cid": "QmfBsSwC3BpCH1EJ1pL7BaLf9dmHX7q6R8uAwepY79rPGc", + "cid": "QmPNfsqADV7qqMVDPUkUdTjTCag3wWDmARuCym8D7ywnEA", "size": 164708 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_256r1_sha1": { "hash": "0x04f931b60f49226571b61b5275201da236267c1322ab3a1dd07c209b3e8472bd", - "cid": "QmRb4fBBQoK5RFDejCgRhyKLpSddqTisyy22ERjs1xHwGH", + "cid": "QmTxeCExoXULSDBbmxzfNxh3j6QvSWzqb7jFEoLyAkdoyc", "size": 172519 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_256r1_sha256": { "hash": "0x16cae35f92d81fbafabd37883c7f35bced862ef769abe1bc085331f96d3ad046", - "cid": "QmS6e3ewLmRkw5Qz4nEfoCBK8hLsJ6yHUkqF1jVQ5FDDY3", + "cid": "QmVXnMRza54CAYXTux7jkqhxGkzeWDqtxowX7qr7jjxb5o", "size": 135151 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_256r1_sha384": { "hash": "0x0057eb25585233d308b4d06c454b4d5121eb3eb30360a7e5f42962dd22fe5e89", - "cid": "QmfVYGKMQErZ7qMDB7XAxXndKsxxuUt9mYiK74MPpuBmev", + "cid": "QmYvFLPN8rDmgx2qnkmrE55Go4BA2mJJUup4WidwMKbQZh", "size": 203374 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_256r1_sha512": { "hash": "0x265a8fa2428a0d11801bdffb7a10392b2d6762fd23feac23b5363a63b63507a5", - "cid": "QmWxGv2annt8mW1An6TEDmaqopAkvx91qq9VKFbbVrnLrm", + "cid": "QmT1i9SKUSb12Pa96acgcr7nRStyvBh3AAaNmWYN5dHwFf", "size": 203374 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_384r1_sha1": { "hash": "0x015cb42923594a7573a7e363e51b5cc1ecdcf3155c5e0ecabf5993ca55c1f300", - "cid": "QmVVXN5QnedhhxxDVQjXy8D1wkhUViT21tfSHhgC5ogqQG", + "cid": "QmYUuMFTpptTdrmPqbrSN6uhRwRuRPEdeapdpEt9jqPAdb", "size": 284698 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_384r1_sha256": { "hash": "0x2c5153ce0bb4f23ad4f65256622d1f3accbb379b059b905fe87b59af2fea1350", - "cid": "QmcfLuSHq4M69XmtRifL8Y5ko5htDaswcaw4p9cvtEc8Pu", + "cid": "QmY7yZjNjSLdDDYtPA7jmm2PAK6zsBeysBXENCaCZMgPMM", "size": 247335 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_384r1_sha384": { "hash": "0x186d13a808cec98cb5abbafbdd343d6f71a07c3bf55638ff3bfdab3a5dfcab5a", - "cid": "QmY95ohahowhWNBpKyun4AHrsU582sMdjiNnkVYGLfwpsH", + "cid": "QmYZpYUa4EWQbdiX4YNez813bTmK2iR2pg7DzVJFeuWAam", "size": 315567 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_384r1_sha512": { "hash": "0x04985a8b00f65a4cc02e0d999f567f02cbdbed5105f9d99f19e4ffe6ad2cdd7c", - "cid": "QmbTkBPfV6DrXfuzfCiqLdAi2bv8fWLf3rC8ChmomctLhM", + "cid": "QmVhEJVNnNSL5irV5Fdomb3rovtB1hxqnnXw3L1E4V4Cha", "size": 315567 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_512r1_sha1": { "hash": "0x19f0967527c11543e789cf96e88bb7d7b5491377693ec2ad85df38d74e57540f", - "cid": "QmZTdEAQGYXwWd3MpHxBbgJfpY2LxCMYKYtUa6QEWcpgkA", + "cid": "QmVVdipRrA4yAKdvS2TghZ1rQNi6FbTCFwRwLZYaHJDxb3", "size": 444856 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_512r1_sha256": { "hash": "0x148b2d520f975731d61fbef718f9fdb975e6452038717a82cbba38604b3475f4", - "cid": "Qmed5tPGBCvt6piHonjmUD5thGhGNdsXa86sNH4qNPkbDr", + "cid": "QmWVpskUKfx3VyStKsQPTpHeEsN1aznZsQJerBGcNP34XC", "size": 407492 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_512r1_sha384": { "hash": "0x14fcefa20e6be4b152bdd90545900a407dfb2a45a3e0670af0fba988237f6a66", - "cid": "QmS7V4esxh5BnGFi7AruoXSMGF78ifd4s9W3yjkLoEdbDF", + "cid": "QmbMpfuFd2MtuF7M6tyqBAQBUHwP9B6ZF69RJPh6bBDwv7", "size": 475733 }, "sig_check_id_data_tbs_1600_ecdsa_brainpool_512r1_sha512": { "hash": "0x168170d9401d8cc62b27fe49bb0e3236d69d2c6f81f74f36cc8cd3163dbfd394", - "cid": "QmTJD4QqWvVcFKQcSLLiJktz5tZyuqz3pYcHAz9NZJaAyQ", + "cid": "QmToLzZhwZZRdVKgtoE1Y3HiPLM2EACM8fFHyAF7xycVvt", "size": 475743 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p192_sha1": { "hash": "0x023241ab8c4268bc7d6c4a3651aea1bbbbd63b695a59f34edeadf7a3a5035d75", - "cid": "QmRD2yVEJDPzZzwAvZy3ZLDjrgVqLSHSeSedVoi6v5FyR3", + "cid": "QmT84HEEVtaiHRdWitqPokof7CvrP88WuyTvsyqvZ7nY87", "size": 122839 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p192_sha256": { "hash": "0x22c8afc30525dfd480dbfb7f14c51be065d5f6f3d5de4bc8f2d8e475fec03fd3", - "cid": "QmNSgv5RFt3gjBZNWKe5KJL9U8AGfxWQesfbKSvwE7KkQ5", + "cid": "QmQmPmVNvc2Pr9hDwnA6L3E6Sd2WcGtVJ7jZBvSjYdwF1X", "size": 85464 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p192_sha384": { "hash": "0x1f66934edacc7f65dfa2c0fc91be4a2ef8d8693c5fa0861b6b2d73f5fdc272f8", - "cid": "QmNfD2UVmaCRbfesfNzAMfPBu5wP8xPrqdBBvU7DSNmJ13", + "cid": "QmQAEQ2Ewk6k1ofkfnu8pggoJLPohMcwYaws49Ai4umLAt", "size": 153687 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p192_sha512": { "hash": "0x0e3a300c71efe026d7b3e2057894a734e513ecebc68baba4582a75f38be7584a", - "cid": "QmPor57XYhkQNgMA6unEoL2mp8so9GBt3pYbUzsNepjq13", + "cid": "QmUR4ci86F7ASEz1byJaePGLrPexL61GU9htNf9BdjYJWt", "size": 153687 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p224_sha1": { "hash": "0x0bbe733c257a013fc01e6314949810f3b71e771cf421aebad231e245443a5f8d", - "cid": "QmeEaofzQJ8VaziqhQU41kvT5wk8fjAz5HzaEwpqGw5gqd", + "cid": "QmUSDpQeJuwydLkkoY8sDjbzE6uDzJyyJ23KrSA8adFM7m", "size": 133155 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p224_sha256": { "hash": "0x03c2869087f9e6825ca1042fca8c8f93c25ba86d6b87b84c17e94b8b84c9ecd5", - "cid": "QmUMv3crFSNZX9SiXL3EzJsQLbwf4YRvfFwbhPTNgdVVac", + "cid": "QmNiEEXLrvb83oWqRuTVgStF3CyxfaFGJa6TdhixWtuWZN", "size": 95780 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p224_sha384": { "hash": "0x0fc1ae06512a86907570db192996498a9e371139980f96db8ecc252b8970a870", - "cid": "QmeJmcNdDQ8s8pZX5dP8bd2Yt4U8ijCkBr8zb5ULJ8p3V8", + "cid": "QmNW4GEkSbdkm429j9xK6Fak4TBV2qceZX75xedJwpVRCw", "size": 164708 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p224_sha512": { "hash": "0x0473fbf4f51070a39885b451a612c8cc20d1b6fdf0f468266286cd2128985074", - "cid": "QmQVJht45892rKHy4CrCJFSCUCjrjg6KxMxp7tTWSkRm1y", + "cid": "QmewikAXAUzriksk8bFYFUsHeexrYGQry8sfgAQGESTK7H", "size": 164708 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p256_sha1": { "hash": "0x2ead37453c49bf8d7917eb3567b4f0cb581d0e3185445573ab96b7d1973d6a61", - "cid": "QmSZE1UmjpzprbndoJFB9pRpKsRPhbe57vgQR9KrEorkoZ", + "cid": "QmQyeh4CFRcrHHz25piLR57yqTBo7TmiQunSy5PQkELYSq", "size": 172519 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p256_sha256": { "hash": "0x0c79ea6c3d645febd034e327955b70ea24af10352b56c6fab9d97dba8befa78b", - "cid": "Qmada6SxYTwDFc6QvYFZ8H6pqsnUhBuY7rGjmUAkkqGMPr", + "cid": "QmVxTGRSsLTPBsp2RbyMmgrnr5TteCTauQnY17h4NTCjMd", "size": 135151 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p256_sha384": { "hash": "0x0daa27da260228a7fc567408eea7fa2c29495b5abd0194be80037167e88b5933", - "cid": "QmWgczRfvY3JpYhV5RoTVVSUVHCy3JXu7dRLUeE3As1wHM", + "cid": "QmZFXk3v92Pme7Ykbj8pZiEc7UqVf7eKKnLvJUfJZbPnt1", "size": 203374 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p256_sha512": { "hash": "0x1ab2503111b42dee7cfd77bf8702731f91c720188832f62da96c9b9a85f44174", - "cid": "QmdncAKARPc9ypBZXm3AghvSowJWjZG75aSA3QnnDX6UC2", + "cid": "QmZZyLkPj6fVzHYTkG8CHTbyfzSS6p6ozQVAGoWWjC8HTP", "size": 203374 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p384_sha1": { "hash": "0x001f6c7fc86b664359a1440941c84e4a7db01ec2c9ed3b8f69317814a911900f", - "cid": "QmboaNLH4ACLG1MmbqEV27E9CmeTNbcXwBUBEzVe2djNnS", + "cid": "QmUL5h3SMKqZYCvB9W22ma6Sr1e7TKKo44TuSBP61yQTNV", "size": 284698 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p384_sha256": { "hash": "0x212eb5247395457236012887380a461248193af40c76742fb50b35e6bf1a784d", - "cid": "QmZ32qeyY4P6ndbVathwMbmc9mLgFWii8mgKD9wpY2STEA", + "cid": "QmRxr2mtB6yszvTNWxn2oixeo7VNadyRPQU1x7EVE5kb7f", "size": 247335 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p384_sha384": { "hash": "0x0008f98593753ef35663011ebf313e167e12559e1fb1455942d4af8fd1d990fb", - "cid": "QmXgFwZCfKd2quQ38sU2Cvc4DAyPdKYYHGJfcEghBeW7M3", + "cid": "QmTUNecbwKhq3raac8NA4EvRPTrTq2J6xZ7JVr5JAMuxoG", "size": 315567 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p384_sha512": { "hash": "0x00bddb3c091aa90b8a3b227d797a2468c969e3a7866099466c62a0414e4a2c3b", - "cid": "QmURnJouy4qQLUi3AcJM9DL1qwMRo27hMRqEUUJZifdZSc", + "cid": "QmeB25MRZDD5NQR87Rs3dzWAApdTc7fCFZUgoQYWvpS8hk", "size": 315567 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p521_sha1": { "hash": "0x1e955d9ae59c578d63b0231dcde0a25091928078a7439b418986249ccbba9108", - "cid": "QmZWK6NwG5PeiNWLjuVpJ7YQUFtQtCbWZYr9whjCFN8Yim", + "cid": "QmfPRB24FXjtrobtU8PtApwrE8bNynmG4PTCg6uo7QjXQL", "size": 453056 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p521_sha256": { "hash": "0x0d85b230101be563681c0b5f04e455a6f6d812f7296a3a33f7b395442166785e", - "cid": "Qmeokoy8shhwL5RUS7Rn3rx4fDpkw7x5dy9afwPsDrz3k8", + "cid": "Qmebprrud2ykzDiSaFCt8fCNmk1ZeDd9j2n1uLKuuKgkue", "size": 417070 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p521_sha384": { "hash": "0x1063ca8c9ade70157dde8c69255e8391240b5ced0c4ddc2a3debfa1605ada131", - "cid": "QmPoy8zhqHb4CsjS2XUeL2uHZ7nKuJVrbWxk7BfJk2sY5D", + "cid": "Qma8ji3t36XVjDESSimu8M7eSQmh11YaxcjLXejoeteJZt", "size": 485311 }, "sig_check_id_data_tbs_1600_ecdsa_nist_p521_sha512": { "hash": "0x1e057f7e173fd772ddecc7d01f40d7755333d1573a5b0628e3be7b3ff45a8e95", - "cid": "QmcmwQ5cE1rvN6pPyYBeHxP73XFZwMzfwQ5q33bn5NjAxR", + "cid": "QmUKuijiSKtmCF6VVmmQdRL71UYgv5csXcZRQEaMtC2Y87", "size": 485321 }, "sig_check_id_data_tbs_1600_rsa_pkcs_1024_sha1": { "hash": "0x2fbaced70b3a9b2834aaf040a7fec12c5da5fd737d2bb279ec5c4ab63390c5d1", - "cid": "QmRhNXiS9SpzeE6hbxvUMQKahvVgXnMjxfvBhhTFWFswL4", + "cid": "QmcfnJHvzYPGawABuUo5q5vzieQ9agvSqsSLhAcm5UcqJA", "size": 107356 }, "sig_check_id_data_tbs_1600_rsa_pkcs_1024_sha256": { "hash": "0x1326cc81595d6661bb5db333b921ee7eb512920557e7e401a7389ca59cfcdfe1", - "cid": "QmePLZfcmKmwDTuiUXiZwzwGzcvxZzjBwLDXCgSRwfmvjY", + "cid": "QmZ3wN3FNSdvKNNRBJrLvASVWCmwZrmbS1ZhfadESh4K3U", "size": 69995 }, "sig_check_id_data_tbs_1600_rsa_pkcs_1024_sha384": { "hash": "0x121c4993cec89f05fbd35152bbfafcaa229791d99c403894893d34f04964507c", - "cid": "QmZS61XL49AD4kqPm2VVVUxs2kG35CLjGE3mWE4jH3D9Uk", + "cid": "QmQfU99t7pEhvMxUuFhChYbj7BFCnbgfCXgnSzfBm1xM18", "size": 138243 }, "sig_check_id_data_tbs_1600_rsa_pkcs_2048_sha1": { "hash": "0x07e7b5c5746e5fa49b64d00e6e10ce9ecc48363633b72e86225e23b090df66c8", - "cid": "QmSr3EqYBVLiaZ5b33FDaG2NXnVmZXmAnGUQnyhtARAfkU", + "cid": "QmPcbDxbZUyXC7mXkPZD1PrjkXmDZQwEdwaLAodBzM1sqx", "size": 149662 }, "sig_check_id_data_tbs_1600_rsa_pkcs_2048_sha256": { "hash": "0x29d48dc97593e3ae4bf19b456feccf182c0beab1728fd84f67e66003f2ddb534", - "cid": "QmPE5SzS3SWJbe9p531aaKqy8Qv4dvVGVsYkBsndaHi81M", + "cid": "QmSxCRffxqdPiLR1bPqKfTBKHRymJES8LgER3aAxGiXy7z", "size": 112300 }, "sig_check_id_data_tbs_1600_rsa_pkcs_2048_sha384": { "hash": "0x1a8a8ed98047037e2502c178400ed869abfa2d07d27624a2c6e8e9fc97b6c6b7", - "cid": "QmZTXcWkC5QUoD1oMYWWsGThVLkeqgLpAALw9bzsTuNBwZ", + "cid": "QmdAZYTuhyhaduZSGJWSinLDc2QYYJatDa58iLvbcuD71E", "size": 180549 }, "sig_check_id_data_tbs_1600_rsa_pkcs_2048_sha512": { "hash": "0x278dbddd0dbe1c2087a851e9af29919289f99422a11bb4456b7b22749dbd1d68", - "cid": "QmcisR2iYzoHbXYEazzsMb3aAAD76WHDeG721iyRwjxwKU", + "cid": "QmPEqtMazuAwg4y5tpb9yHGuNswfpKAzw7XBX1bb2E6NCD", "size": 180569 }, "sig_check_id_data_tbs_1600_rsa_pkcs_3072_sha1": { "hash": "0x0baf31ffcf16cd1077ddfe3591c2fe98770e6e834971257eadcebed7daddbbff", - "cid": "QmRdFYSDuLMdSHa7qH4R8BarSJKojymSbhekvFn7NXE1JF", + "cid": "QmeiozwBKEp9FzQdWSqLgzprnsk1gFKZuQkuc5pVapJpq2", "size": 200485 }, "sig_check_id_data_tbs_1600_rsa_pkcs_3072_sha256": { "hash": "0x1cfd791bb9b773845d010fab2d2f2bce5397da8106a0bd270bc35ddf8c850b94", - "cid": "QmVBr7az7PWdrgxMRfdcNinoHphuTRf1BkpyYwwjQDJUXU", + "cid": "QmQj8VifKHmtsf51RnaVzHSrzeYJaHeLiYYKfE1P34fMkg", "size": 163123 }, "sig_check_id_data_tbs_1600_rsa_pkcs_3072_sha384": { "hash": "0x17cce730b16cf1c8335d4e8eb93e12d706b226100296eee2be057d90ced2c35e", - "cid": "Qmem76eS9HW1dLVN18wKM3teiCJoDnpKyBcvuL4p5YoSK7", + "cid": "QmW9amGTRJ5rre4UnfpTJ1gBWJSLkinXxzksSNdJFSTw8i", "size": 231373 }, "sig_check_id_data_tbs_1600_rsa_pkcs_3072_sha512": { "hash": "0x242faa6bede5193688a56efab7771b75fc4c917634b01bfab62965ceb0d79b01", - "cid": "QmSxDtwmzgB7N5Y64ftXRM6vjSu8Up5qAvSnQioHAvvQpE", + "cid": "QmY5F6idrMyh4S26RCGcNUN7v6nZf42NqPUW9vZ26YGuwR", "size": 231393 }, "sig_check_id_data_tbs_1600_rsa_pkcs_4096_sha1": { "hash": "0x13ede1a17075f22ad4f30bc51e1af2061ce2ba8e74965dfb9d02b24510415e47", - "cid": "QmT5MNrLWPeCvUiso6S8vm5LLsgy7ZxXiLN6NaNpf11A2a", + "cid": "QmQHyDj7T9GuiW25CksHSpqX156fsiWVcFSM6ZauENUzSF", "size": 270739 }, "sig_check_id_data_tbs_1600_rsa_pkcs_4096_sha256": { "hash": "0x0b760c369fbbfe5aa12c58e944f9f88703f2acf7988169657f32498c0394e657", - "cid": "QmSs1dqy6JBv4h3oGrUTcdnhVYRYMQ5KLa1fEP3Z49wmXR", + "cid": "QmajhcWNXKozTyFtN9JL52n773PCHmM5CxgxzbcYzJMn6j", "size": 233378 }, "sig_check_id_data_tbs_1600_rsa_pkcs_4096_sha384": { "hash": "0x1235cf89fe02b3d5c346c33adc9674adc715963ed0b9eb447e98533b6974feed", - "cid": "QmSHjDrVpQYf8BAc9hpvFumQepWjNVuyGEyepqoVbkLyBc", + "cid": "Qmeu7xELrcyB7tGmW82P67MtSRhADXVGJh31dtgVrMSjKz", "size": 301626 }, "sig_check_id_data_tbs_1600_rsa_pkcs_4096_sha512": { "hash": "0x2ba3addd318aa45e0220966dcc623ea4f7f33e1fb1c0545ec78942b056cba90a", - "cid": "QmRHtZrYCgHUjN4CEZHDTsM6n8T5B7JR9s5cqMmDwVF1AH", + "cid": "QmdGq8HdRbEiynCSp5x7gK1rLQKBHvmm2xrLjCsegF6TJr", "size": 301646 }, "sig_check_id_data_tbs_1600_rsa_pss_1024_sha1": { "hash": "0x14b06bb11aa2930ccafbfff2d171d1448a5d46cc4eb65b205fc9969b46def228", - "cid": "QmWSzEB6HjdMR4UPzHrokVhpJyn6BcyiFoDWGCFZYVfPRP", + "cid": "QmcbqqQpNMGQxeULgDG5nRShBYerwWpqMh3nM3yif7UMAz", "size": 182461 }, "sig_check_id_data_tbs_1600_rsa_pss_1024_sha256": { "hash": "0x12dc961b02006a2444bea69418fcb4fa2dcf073deec03c8696c69600bbb04830", - "cid": "QmTwkp1StUj8U2mTiywvNmEAvi5ZZSsVcPqKagzSL7iiCo", + "cid": "QmXRvApvhgGV6TRoC36kpQNy5yBVPantHCMj3h7mV6FJ3q", "size": 97369 }, "sig_check_id_data_tbs_1600_rsa_pss_1024_sha384": { "hash": "0x0f2dbdf1143579eb696c71be6d203e1929c542726bc00b3a602ba66f7d3be599", - "cid": "QmaqVkeqSUy95T3ucEpH91KJfYWtyY1Sv1wBCTD4PJwh79", + "cid": "Qme5fbtAVHD4VE7Z3rFztY7YsxMWbLV4Nz7EKMbgELgSGn", "size": 219303 }, "sig_check_id_data_tbs_1600_rsa_pss_2048_sha1": { "hash": "0x00b621807ee0091b37b2719e9da7328eecc4e592e0968ec14c921127da832070", - "cid": "Qme4DeQmqU7e6zYZYqaHvJLt6rjQdPyTEqsRS8gWtx7aTK", + "cid": "QmNiSrVMhRw1TxUW1Ezfxuhki4Lkyd2zr8P7vyHfCpccne", "size": 276930 }, "sig_check_id_data_tbs_1600_rsa_pss_2048_sha256": { "hash": "0x10bb67422d1f6443b0c2addf33a9da8f95b4c10de3c0e15a6c56c205e5e4d75c", - "cid": "QmPcs3m82cDPPp6NhdkhpDZiTtFPzHc1SfGixn2p1iGcLc", + "cid": "QmUTM9wAwdkyHqDY7cjh4vUuNaPDjC1wFcs5S1TPv1VFjf", "size": 157461 }, "sig_check_id_data_tbs_1600_rsa_pss_2048_sha384": { "hash": "0x1c1c8500721063d6466e52d19cf094ef5fb107447a52a3618921844a1166b410", - "cid": "QmW5XTj3KSckuAj3ZVfNgKADKZdRT1yzguntCpTxZZpiMS", + "cid": "QmZvPdSckvKJCXwKHZL8LND5H2r8f6gFhEERubJMaiCpeH", "size": 335207 }, "sig_check_id_data_tbs_1600_rsa_pss_2048_sha512": { "hash": "0x17d8a837c067981674a328fc52db14d218eae585e07926e7414c2218c8d8b9a3", - "cid": "QmeqzGTeQ54QH5dTtatCVDqiBD4Uni5aK4iqgn4smVUG3Z", + "cid": "QmZcRgGmLpMENQe4UoZWG3XwfH8cqTtSk8JpZfuWN1UYUH", "size": 314436 }, "sig_check_id_data_tbs_1600_rsa_pss_3072_sha1": { "hash": "0x19fefe0f3d5a245213c12a96284f59757c56ca742128fb588c7f37256f199020", - "cid": "QmRM1mU7gjwutLNMLsvzfppmnd1hF26Rmgrm1D9taBjrJ2", + "cid": "QmYjzmk2SkAVUTqNTFLUmCRZLETkbpbzCN3AL8kUc6RgjU", "size": 388335 }, "sig_check_id_data_tbs_1600_rsa_pss_3072_sha256": { "hash": "0x1dd5cd8a7847e8926ea242a4f585fbc89c6afd6231c9708791c5c2b5778c0518", - "cid": "QmTsxhadPUYwxSXVsNwRCTaZMJP5qjBdKEZSBkL9aRuqua", + "cid": "QmNvoWVJN43pPDDAng6iLn14btNTx1gr8XsThnJYAjtZCj", "size": 226068 }, "sig_check_id_data_tbs_1600_rsa_pss_3072_sha384": { "hash": "0x08dec8dbf4b6aa870e982dd0a707c314be04abfedd072224998693910c3dc5b8", - "cid": "QmToSibamqUKkwNZ4SKN5mRyiqvcYERJURim41bd86BYVa", + "cid": "QmeXTBfcbonmE5PwcBG8kJMihJvNVQZMDgAJroMpZd82d9", "size": 435647 }, "sig_check_id_data_tbs_1600_rsa_pss_3072_sha512": { "hash": "0x2dbe4e0bba9ff6a6f85e872022991eda437f1b96a91dfe09426eb4f89e9ad926", - "cid": "QmaJjy8DZTuu3Ngj39EzJPbP6NorcBQTZGqbCdD6SFZueZ", + "cid": "Qmc1cxrBk666vDcjSSa1Xg8WwQd3kKWyZsc3vzDypTGzUA", "size": 413466 }, "sig_check_id_data_tbs_1600_rsa_pss_4096_sha1": { "hash": "0x17faef0c325c0d3de65f832becedfff38d2f234010800014c238ae7b1eeddb4a", - "cid": "QmSvcrzguXaehVP8oxo3e4d5M9LG7Pw6HD4bZJUHDxBRAj", + "cid": "QmRiJRAuE9MmiLnHv8qTEya3MQCT3Lzjzjh3LLXM4P3Pyd", "size": 510751 }, "sig_check_id_data_tbs_1600_rsa_pss_4096_sha256": { "hash": "0x2dca2b446f3b0369efd0109bc143beea5d351d48696760833db5c691cb034be5", - "cid": "QmPArfGUwn8EbkoCMN2PkFnCmNbdPXcwf2PKes646J5LKG", + "cid": "QmfEQVNPyM8VhNcz6miY8Tr4TyuBhhRRqLhCZxauKm1jH5", "size": 314107 }, "sig_check_id_data_tbs_1600_rsa_pss_4096_sha384": { "hash": "0x2b6739a5c10a5d4a4298e262ef21185891ab8e060fbd00675991a570354612f1", - "cid": "QmbADSSHTCzvC3mTyrp5z9Ei6ySydVfk8UFFFRnTYMikPv", + "cid": "QmbqHbmTht44nyEKdLT3mfUaJKXioLbR5nFyWBEtgQZJej", "size": 579494 }, "sig_check_id_data_tbs_1600_rsa_pss_4096_sha512": { "hash": "0x16df27b6a7cc6640b7d3bc9612cc3fe69a615347b78ad20eebc62d74e488ce43", - "cid": "QmSKZpptuBKVe98KQ2sTrRrCF754ABhRrXfjekzXEmuP8W", + "cid": "QmTX1xvALxp9WrnwXKSFvQZuXaK69imM4A9C5Yt5NKbfNa", "size": 531926 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_192r1_sha1": { "hash": "0x25c25d99e09952cdb06979f06941a4411414b48a8cdeeea9305bef3cdfec522f", - "cid": "Qmf2BF9USWHWEgXkWR3ZoCPYtbmPUt1pgoqkvxfCmLqhgb", + "cid": "Qmca2u25PUMT4ycxyW1NMZWnmaqLN7ZRweK7j1tFyyMSwD", "size": 118362 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_192r1_sha256": { "hash": "0x19fbae59ecc181f1532ed73c63767fcb58b3649901ee7be4a02530cde02e636d", - "cid": "QmTzCCAhpmhybnKpekMgK7xK7FtkEtaZvVgcVupSzKbdHu", + "cid": "QmZ2BD1NQ8jnDBpEsNWbRZhRpKH5u1wjNdvfmgiWqEL8HC", "size": 80663 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_192r1_sha384": { "hash": "0x165883010745b363f20f7fdf868bbac5e5e340f8b31cbb6ff22e1dc71189472b", - "cid": "QmXx6AZdr2maTJS7fwiQUgYSuQUjLAZ6i4kjFV5SsSCJcK", + "cid": "QmUJtCrxHrigHXurx1tSnjqCrXEXzXBv9SegvYLTZzJFnD", "size": 149210 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_192r1_sha512": { "hash": "0x26eb4ab269376da0cf40a942a84360f4be680be2bc3c913928e1e97d5930a9f8", - "cid": "QmSJRhHLwxSDM3VtJFBPLogmyipu9SfF3yQ8ECV4aTRzaS", + "cid": "QmZgtncCddo4iBoJEUQvhzxHBATrLjTL2UAgAftZ7pAG6c", "size": 149210 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_224r1_sha1": { "hash": "0x20b00cf998d1d556f860cb2a946ae4336f471060914e2b156c460bec34e09dd5", - "cid": "QmNXdnGW6Gm3ctk4hwNypwwqiDEqhsRexi4B4dhxNPZtes", + "cid": "Qmda8YzdG2hC5nykoSPP89JRP3uApDwCiAMRsAPkv2xFGS", "size": 128678 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_224r1_sha256": { "hash": "0x2116b1000ccb0d7e850cf6c31eae636155c290add3923f61f76a21c5aac013ce", - "cid": "QmVV3xkGeB33PTqxFojfu2fFSFJJkV3de4s2QkT3v78Tt5", + "cid": "QmXpieJhnZjNxrqfhWKLtpkuLx8513kJ35QFooY8orRk55", "size": 90979 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_224r1_sha384": { "hash": "0x1c4231c2d971ff25db66d9c84b41693cd7366314fdd6131e5ed6d0d8d81182da", - "cid": "QmYir61xirPoj2Vu4peuciZwvNRDKd5xa5xnPRnmhP5ZTC", + "cid": "QmVzJCjBjF1SRzjijEANWVgSzwqxuJ5SVfZVi8eWrk6CjY", "size": 160231 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_224r1_sha512": { "hash": "0x2362e7717e90b85f96411b7c19cb86d661da884642bc39a846a7736b66dd136b", - "cid": "QmZz9LaZEb2XwRkbGP1cbaiXGzRsqpERNhKBg4B9F1cbG7", + "cid": "Qmf3rMVT2Vc1CyFpexWcDyCegieENuCD3EXMUtRe1mcbAS", "size": 160231 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_256r1_sha1": { "hash": "0x0b74a5e184a82edb67da311835d9b734daff69d694127adfadc9276ab50707b7", - "cid": "QmZHfgZzY7ghMi8PE1k8xwtadjz524rad3dDgKuDxV61ps", + "cid": "QmX9pbK7ciVUSyTK99TJQTDYTehFXWEdqdmbP2LVcsaebz", "size": 168042 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_256r1_sha256": { "hash": "0x060979333b108271735ca4b4ffb6c4f4f6ca2373da071993156664bc0bbc4c62", - "cid": "QmVcAFfyG9bLzhXVqkiiCqRNNb4hxHs7UbSvbGvU2511Q9", + "cid": "QmefgoujTpY7hgavNk5fs8hm8vkTyVC69ZnatofecjiSGi", "size": 130350 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_256r1_sha384": { "hash": "0x132730676c7042ed6888348dc5dc80ddd61d799a8824ceba6f35b0fcde7359fb", - "cid": "QmbT3yr9YmaUvD9LiW4aqE4HvzcdCfPRheVjaQccTe9pxE", + "cid": "QmZfjsQaF4s2UHEtUpxHhovWQPE78NdUyG3BWpq9gBQ4cc", "size": 198897 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_256r1_sha512": { "hash": "0x04a99c258c1c9f1a1524ab7db8da786e0ae9489041b673a1b4cf339fc4df70a5", - "cid": "QmNp2b2kuUEnCosJ3tE5GyiZ6yN9PdiHrQ1WPGf3E47Kgo", + "cid": "QmXB5DeXx3FB7zdeytiGQ9aYrC94FHqxWtbdKTnGC3P5kr", "size": 198897 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_384r1_sha1": { "hash": "0x2b7f5300bd4d67ffa565ce83553a567b318ec6ced1c187331c37a9411cc5938f", - "cid": "QmcZowz8SvFF9XkqAKiLK96MVSkcEWKv4N62zFzTyQw46d", + "cid": "QmaUxWU9sDreGuZBNCKk4SZmBNzjkEswnFESfUr2Hh5hor", "size": 280221 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_384r1_sha256": { "hash": "0x0c8e5b120be7d5ee22c8e073041801926677319c5f1afd0509737437df410861", - "cid": "QmTyFqDN5pAiqEAVyZ5kks6CYPS1xxQxCQeWzD1mgNHPYX", + "cid": "QmfEKewxUtX9itcmxJG2DbunGaPovx6pVfQx1skeK5Bmvf", "size": 242534 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_384r1_sha384": { "hash": "0x12a2dea6aa7daed07dce4b1fc866dab0429c3d2596144632641549ed0cb40990", - "cid": "QmVDXcVkXFZiSSS81ETss6ceuVJX1XMT2KtwaP3RoVEtEf", + "cid": "QmcT88NRbciv9gGrQBnmqWwe7J1i45WojXKDVdoibos6Yt", "size": 311090 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_384r1_sha512": { "hash": "0x1ee3a5115a649f635ca07df63fcd51c817159a885242b1771820ed286c4449e5", - "cid": "QmQ6TraKsWtvZV8ypghR6Y8esX2PWQBKdfiEEwfWnv5K7h", + "cid": "QmcLkyjwkcvccGwcpJvbAfym7mMC98uNhss9BRKyzwsTD8", "size": 311090 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_512r1_sha1": { "hash": "0x07eeab0c46caf0516bd79844d3d71a6b42006ffc3dcce3fa7ed5a5fcc9251832", - "cid": "Qmbxp9JY4dKYtPGcjcoW87fybQyk5mvTyFYM81Z6VEk77k", + "cid": "QmNNS3nVaUpEp3EW2uiZkFiEFmbR3B9TiLCrBiAR3Q4wDg", "size": 440379 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_512r1_sha256": { "hash": "0x11d5612fc8ce76d1809ddd20cfe62039a30eedb021d913ce68fff6043c6a2730", - "cid": "QmQE6BQrLHkuZ6Z9r7aKfb4BfrWHESwgqiY3vXEPqfkGra", + "cid": "QmT1wro1k7ZRoqnuXUz55sVf7wYwHgXP2ZEU6Too1cYHrK", "size": 402691 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_512r1_sha384": { "hash": "0x18df059101b8b610af7b307ebe8dc5d86cb3ceeff4054297b1df65172460444c", - "cid": "QmV9cqaL4pz4LDqsjyMDQBKwcRfB3FFQTEa3Un77wWp9NP", + "cid": "QmQfw6z8kYDUmmJF6rSdzTgZqLCR82EVRiHgzTLYKv3Hoy", "size": 471256 }, "sig_check_id_data_tbs_700_ecdsa_brainpool_512r1_sha512": { "hash": "0x136cfe7e12a0dbe201a9a6aa3442493a3f7acde956dfed3e6d775fe65d908721", - "cid": "QmPqrqtjAwdaT3snbi7V5vp29a38CdqSFAKR7KgoU1xySa", + "cid": "QmWzFVgZRfCbMBSCkLy4sUgX2VELEbnrEDazHra5r6Tda5", "size": 471266 }, "sig_check_id_data_tbs_700_ecdsa_nist_p192_sha1": { "hash": "0x1b344a18c64bb546c1ed3fad57c7367ea52fcf4e433e4da6d22a241c2f48215a", - "cid": "Qmcrog4A5MR2MGpjNvdzhFxBB2WpD9e7nbrUMMwTYvFMuU", + "cid": "QmcV6rLrnS1Qf6YaEp3dUWn6LVSt7owDyUSF2Vf57SPcqn", "size": 118362 }, "sig_check_id_data_tbs_700_ecdsa_nist_p192_sha256": { "hash": "0x19ba217500b2f55ed95275cad20576b07a3213a0aed6961d940be02084a45c58", - "cid": "QmNzPKJ25ceqb47dCnLq484YpEMeTFS773WsF6v66EjqDT", + "cid": "QmaEVzUYv7UBbR4w6g7nVioEmDWS5u3ueTaGgeEBqfjSRt", "size": 80663 }, "sig_check_id_data_tbs_700_ecdsa_nist_p192_sha384": { "hash": "0x0ac488f15612c94f64a6bd395924392a250aa8a8b9e4729dd21199031c36652b", - "cid": "QmfGabn2hbAGQsXx7H6ot4eFXXtVZnySY3yxHTBdNuY2BX", + "cid": "QmZnehCcnc8K5tLdcAse28ycuNLrCN5qeoj8frndaeAtgX", "size": 149210 }, "sig_check_id_data_tbs_700_ecdsa_nist_p192_sha512": { "hash": "0x18b96a93f57b378d7fd399ccccd72cb4a1b424f8a78e64a555b43c0f05f67150", - "cid": "QmNZ6x9qxRnxmoiE3RpqTBWyxjqunQZr2dRzfS8TqBVDGc", + "cid": "Qmbrr4qmDqgvZrsQN5qnXv6uSJwumRdb6tiu9WqHt9n3z6", "size": 149210 }, "sig_check_id_data_tbs_700_ecdsa_nist_p224_sha1": { "hash": "0x2085b56a3e083b124f736137ff02d2e7fd41a221b1735cf35efb322fe0fc4c78", - "cid": "QmZeH5zn2yZsn4eKEviA4afU3mHebXpFof2RirkV6tTJeV", + "cid": "QmSQoYXbQefpmiKoWX4roiGDSkMicjYJ1nfCXFAhyusrxd", "size": 128678 }, "sig_check_id_data_tbs_700_ecdsa_nist_p224_sha224": { "hash": "0x143e94ae511e787f27009009ec56571e3abe45e764de880483286d3e80d5487d", - "cid": "QmaEYw3s2LxC6dnSaSnbRHDnHKP8QnwgjXigrho1V55hNi", + "cid": "QmThjB5YyxvpJNS959sH3jntMKN3QCzxHPKhPNAeAzS6v9", "size": 90979 }, "sig_check_id_data_tbs_700_ecdsa_nist_p224_sha256": { "hash": "0x196a762b177e76f77595731ce978f42078facb0f1c6e8bc8ad374ba2205ce5f0", - "cid": "QmeyQghsU12w5Qeb5t5rMYNrLwMNia8Di3C6VRRiYfSMFh", + "cid": "QmX7qw9xUupyjcnH22g5wf1sjFMM4u8orWCcNe51KX4PMh", "size": 90979 }, "sig_check_id_data_tbs_700_ecdsa_nist_p224_sha384": { "hash": "0x0e19f6ad020c6075f73bdb6b274b6931f971c091d6152f544f74f156518df936", - "cid": "QmXPUYkk2DnEDdb5LjJAJHyK4Y8rxHnu3wbeZEvCUquZRx", + "cid": "QmcFV4XBVXs5aKinmb1kXkCiUBTDeTbavGMQbNcrsCbsh4", "size": 160231 }, "sig_check_id_data_tbs_700_ecdsa_nist_p224_sha512": { "hash": "0x2e4ced9b093d327164ed5c3301515a45a9a5fc7e611e23f45d2d97aa82690c12", - "cid": "QmWLpXf5rawHbbztyo5rHMoEoL88d8mQh7NF9DuAfQKcft", + "cid": "QmW9PL4ee6iPFZgVoa1fGdfbKV9wsjLbfd4NmNYkX9dGZ5", "size": 160231 }, "sig_check_id_data_tbs_700_ecdsa_nist_p256_sha1": { "hash": "0x1ac982e1940691e392519789668a7cccfbd419540ed9a200154de1d27a141b8c", - "cid": "QmZhECpbszbP7CKFcyn52NyWBKxvdENhuJRw8kQ3b1zREo", + "cid": "Qmd6XXLjoVphvRuhv6CQB79doqQ9KrgbRCkQH7vYAX39gL", "size": 168042 }, "sig_check_id_data_tbs_700_ecdsa_nist_p256_sha256": { "hash": "0x1edb6141638521de2611a11a0b2bb0aa9816dd464734c5907f5dd63e955c7565", - "cid": "QmRmiHB5uTw1wPzXk3ZXjRPjUsMhZNkdN6CX8FbACc4pxi", + "cid": "QmQHpENYzfQPpHkUuKNQRxG8seDXHXfcpRCKMVaYgQDzQj", "size": 130350 }, "sig_check_id_data_tbs_700_ecdsa_nist_p256_sha384": { "hash": "0x17a5cc54be20f70c7f27ae73927dd5441b8a3505834ecef6e9811e48bd9e6c47", - "cid": "QmdpMeSAArNCGZXz2AsQgWBzqPeaA5ehtmXmTXrXZJ4jFL", + "cid": "QmWHJe7jZJ87j21kvPzgNsQX8jHeLTPWjego8xfVwCVxAF", "size": 198897 }, "sig_check_id_data_tbs_700_ecdsa_nist_p256_sha512": { "hash": "0x0bd0278e94ed15458b17b38edf2ba293a66e863a8d7f7d69180880febecc0ef4", - "cid": "QmeyExRTdeDZR7wTiSRh1kpjKyy3e3vun3jPFXohw1ZgUs", + "cid": "QmSCCXXjedg5Weno85FhXNYd3NFqFwindbfB3e6FfrhWXV", "size": 198897 }, "sig_check_id_data_tbs_700_ecdsa_nist_p384_sha1": { "hash": "0x2d2c177248c4563b13c14594cc3b638cc63fa9441a1b501d05052d994e1153ef", - "cid": "QmQmDSLrQwJAPwf9fstM2FVnM1ipcXDm9eVaLq8NomnDZj", + "cid": "QmSESA1ndLxV7ViPh22wiRZoq8q77pt22shM55v8XZRdzN", "size": 280221 }, "sig_check_id_data_tbs_700_ecdsa_nist_p384_sha256": { "hash": "0x179d0c75942288b260edcb702a74fd28773df96d74351f189a666f81d3e2190f", - "cid": "QmeSuEQGasVERDTWKpgmyTcT94Wbz73Hj8Bv9ZCqLxxD5N", + "cid": "QmRRApr18HpRXoyNFbMzF4s24jJzU5JHyADT4DDXbwQTus", "size": 242534 }, "sig_check_id_data_tbs_700_ecdsa_nist_p384_sha384": { "hash": "0x0a4e0f4482b1634a4f51d156373f0b352b49f342b02b1ee2b0a37ca95094d9b8", - "cid": "QmdzRifAywnFxdpMS1n5semTq6tVbkjm38aqaaUmsNprp2", + "cid": "QmSV8mcV7CgvHK7MZH68WvCQeUXFfJVYUQP9aUxodEqWeU", "size": 311090 }, "sig_check_id_data_tbs_700_ecdsa_nist_p384_sha512": { "hash": "0x292d6b0b6c85893097235b8724a89cc233e0361b4c03da8de22d45d3ae2548b1", - "cid": "QmbMUSHDcjHageWMMJRmtnW4h1vyhKGRw5Cs8nYRS9HjXW", + "cid": "QmVrMKXefdMd67azjjf1WExF3mQwQjV5j9KrGuqDKkzmgE", "size": 311090 }, "sig_check_id_data_tbs_700_ecdsa_nist_p521_sha1": { "hash": "0x004e2d30df54b512e94d4f7edcb29f8c770fe235a12d7bba69a736a5cbe026fe", - "cid": "QmUyh4iBsUuSfGATo9zBTtVxhDVsmF3XURQhHGrbG43fYz", + "cid": "Qmb6eZET2JUNVWcQY7KcNqYYTN6doeBd1WgyzARinUBu2f", "size": 448579 }, "sig_check_id_data_tbs_700_ecdsa_nist_p521_sha256": { "hash": "0x2de894f099cbb7c0a100c9a8dbb59b87880960d7640e5dcd79e4c63a497ba679", - "cid": "QmdzSWAqdS4UsCa1HGo6XbnyWhUZm5yGPAqm7o4R8aWHvf", + "cid": "QmWWXaxia64WgjPY1r5cgGNwrQqrqUkpen2MeUKNw2zyb9", "size": 412269 }, "sig_check_id_data_tbs_700_ecdsa_nist_p521_sha384": { "hash": "0x2e308a1c25cbd05c0bc6f4b0857ad3cfd093e3b11cd82774fd1ec5e3226721c7", - "cid": "QmfAPrBqsEtUmco3mcL6Jkbv8jcPvY2mWtaKBiQfXTYmXh", + "cid": "QmdqozmahKRXArQa4mbnGg5FyMSoUJfayoAgUaZSBbz3mL", "size": 480834 }, "sig_check_id_data_tbs_700_ecdsa_nist_p521_sha512": { "hash": "0x0f7719535949975b29c2579997bd5931879096ec388b5cfa999e0e6b0ac108ed", - "cid": "QmaR4E1MP6YGA8aNe7NNUtfsgfDt8YNRHrKDnC1JPJmGCQ", + "cid": "QmYzGh8hjJcrQxXHoYK9sUdCUPjAgZsGfcCxscR6m2jmCv", "size": 480844 }, "sig_check_id_data_tbs_700_rsa_pkcs_1024_sha1": { "hash": "0x230daf3241422c98bef76c2870aaa7a96fbc60b0b4f0bb2a8f76d40e2db6d98f", - "cid": "QmTYgnXBLpidz6j6M5kX6dqg4g3K1izsKUXU3gUniRSY1D", + "cid": "QmYfmfCdo2zwjGh45YQ2uCUB1ViG4az15CtXuNpWgEVbYF", "size": 102879 }, "sig_check_id_data_tbs_700_rsa_pkcs_1024_sha256": { "hash": "0x2371be2bb64ac56ab7c92376a84971ffde377d23a1d3f9daef870184be6abc39", - "cid": "QmWYv5Xmo95hfpmtFArFHUmvqDmtcnEdPrh39gAjqfgVv5", + "cid": "QmZ7Ecns47QzJYcqNoPGsUfFQJTUukkBEa3se3bdpVdbWC", "size": 65194 }, "sig_check_id_data_tbs_700_rsa_pkcs_1024_sha384": { "hash": "0x0138f2472459b2799137e5eae54d4a4bcf28599fe1a38fc337a9134ef1978090", - "cid": "QmQsbodW7jMrLGrSKhorPsXBJ9gYHbAuSomRC7uNBTJtJ9", + "cid": "QmadFhVhzPJgbjDvb91fP6KCn69H5PPrWLVnPzNaTFZ3p7", "size": 133766 }, "sig_check_id_data_tbs_700_rsa_pkcs_2048_sha1": { "hash": "0x0c9a36c495e9bb11648beaf938af3fa82f59d985d0931ceb2da8f547b7190a04", - "cid": "QmTisXntTsVfHP6VjvDkH6fsJHpst1HBSupLQrU65LeQyw", + "cid": "QmdFaBM6bFjg2GvTWeRqJKfx7nW5rWLqURhmCjBso6pCww", "size": 145185 }, "sig_check_id_data_tbs_700_rsa_pkcs_2048_sha256": { "hash": "0x0e4dd27de341a39442503790e4480b92e0998e07cc9bdc6eeba646c6e5edc204", - "cid": "QmfKSVD7zLQsA1dW9yw2PvYHSmZokXuacYuRXH46vc2eck", + "cid": "QmNfX1Us472wPANwC3tCpQVpRiY4rpz5pq8sVs4u69Eo84", "size": 107499 }, "sig_check_id_data_tbs_700_rsa_pkcs_2048_sha384": { "hash": "0x13f9e2813e1fcd4925cab4e52b3ac9d1a94eca93bf08a7cfe5d08d03da073064", - "cid": "QmNWtkySzJ9ZosYZBXDM9B3h6MQJSjhWMwtmccp34ZM1Da", + "cid": "QmX6dkTijzTA3Nkxj1yHjZJPLF1qo5hfzXrJ6jDw4QMEYx", "size": 176072 }, "sig_check_id_data_tbs_700_rsa_pkcs_2048_sha512": { "hash": "0x1d23f55c5481ce5a48559f38a11d431e81a5a43c731d24b886b13e5f5f8ea560", - "cid": "QmR5VSmU5Swe9EjBWLZ7hq11SXowmxEVLeKpsL8UCncqNC", + "cid": "QmQGyQVoDpGteywXsi7pLq1y2vajUCtZkLgk5J83JZq8Tc", "size": 176092 }, "sig_check_id_data_tbs_700_rsa_pkcs_3072_sha1": { "hash": "0x2a698717b83024e0039052a94e24809c0f34752ea21c32cab3e49b83607448a6", - "cid": "QmTuobobyKCX3XScb9A5nGnKpFPjqKyfBPehX8dRwnDaAk", + "cid": "QmbhVGbVNbgY5cshoznhCsWSmeUmigZiMAbiE6YB18oxuR", "size": 196008 }, "sig_check_id_data_tbs_700_rsa_pkcs_3072_sha256": { "hash": "0x2bda21178029c8c54e96b3b33c3b24095779828ccee9f434fc9989e73e431945", - "cid": "QmbAcKf61TXe9JzGhCwKBqYwZMeNcVPKGynrdXQE7nBQL2", + "cid": "QmQvL7eM67qszwYkHHXkP2Yk3wMQ9xvwdu2D2MMZuaE3sL", "size": 158322 }, "sig_check_id_data_tbs_700_rsa_pkcs_3072_sha384": { "hash": "0x056fae87410c8173384d98f76a97c2692a5581d4f7567513d1bb41c9d15cc351", - "cid": "QmWvFqqg6smrsQx9BsrC2Gha6c6MkR9HY7RYo8V8VCprJW", + "cid": "QmdMhTjrwkP8PNTR5FZdJG4F8sb6joUtarqUU1g1M2y3A1", "size": 226896 }, "sig_check_id_data_tbs_700_rsa_pkcs_3072_sha512": { "hash": "0x247e9f572efb133a3021e7471d8ee7c6e33f6ebb12741ce5894976594545853a", - "cid": "QmaKCm23BzNZ57M6CSbftn7tJxQDB3GZwGjc7ApaBkqmDW", + "cid": "QmUU1vxnvJSTGsEkPwNLwRSGuuziKJxGrc8HQssxfFcFHL", "size": 226916 }, "sig_check_id_data_tbs_700_rsa_pkcs_4096_sha1": { "hash": "0x19d3bcfd3161ad6124d5507e0d6b782becc5d992380099bea3bc669e8486fea7", - "cid": "QmSAKUCgPXmSDaLXPxyQyhXEhfNuMA9NNtyAKrEDsnrNdu", + "cid": "QmTRGRAMksCiWcLyrqDwZeQ5MhZhd8VZBWLFaTd5t12qMT", "size": 266262 }, "sig_check_id_data_tbs_700_rsa_pkcs_4096_sha256": { "hash": "0x2243e4be31e73a1c8dfef0ae606f924df7c190e8c0ac6c39d0e492e60e77fc38", - "cid": "QmNa8SCUjJttXXczpDdVp4kor5xU7sjeWkVUEJXw6myvjE", + "cid": "QmcQVwZGupbLe9aWMEXSYR8P1K8DaRtotN6uHsqe4GZySp", "size": 228577 }, "sig_check_id_data_tbs_700_rsa_pkcs_4096_sha384": { "hash": "0x1c977f10b02c745efb6f53f0e626606c0d0a78a276f6f4c9feedc92cd049fd46", - "cid": "QmbX1xGQTNew46YU9vkLUtipbWuj1jCrTXgcZbFZD9qraz", + "cid": "QmVwLhUMchZaWRTW2xZoHu22JtsMzz47LBfPYRnfaZxLvE", "size": 297149 }, "sig_check_id_data_tbs_700_rsa_pkcs_4096_sha512": { "hash": "0x0bac2cbc57d663901bfd0d12100b534ad1d46706c9e34cb56cc2035efa62f802", - "cid": "QmV1VvPy2KZ4pQYpgHFdRujnNvSwK3pPnUd5UcxDTxKAq3", + "cid": "QmXfATH9e5AH5ADZhrxk2aynCAjcoEkXc6eo12yr3wqYRy", "size": 297169 }, "sig_check_id_data_tbs_700_rsa_pss_1024_sha1": { "hash": "0x2719b584fefa9fc4e24686d38e142648281b81413039a7aafa7aac677f80c56f", - "cid": "QmUBA5CUwiPyrVbPSVhEZms4nXXA89nP9nZdwAZ1vfJnL9", + "cid": "QmZZAJTutNThh3CV3kr83D4SEirrLM2Royjby9HYNys9xK", "size": 177984 }, "sig_check_id_data_tbs_700_rsa_pss_1024_sha256": { "hash": "0x1ec3ce055cb04ebfcea61b5e3813b76ac291d34247808b88d463c66fdbd4884f", - "cid": "Qmf671JBtLqgjms5TuYDEMmckD4tpTRgUApTFQagvEkNAz", + "cid": "QmcrDBmjriQ9rYrEvTyCEs4MBjHn1VzVX99z5h7HLWcy9G", "size": 92568 }, "sig_check_id_data_tbs_700_rsa_pss_1024_sha384": { "hash": "0x2176c17004aa6e692d19294d6c5a46d2e1701881d8e867c4881e068ea6fe62a7", - "cid": "QmRCs8E6pvXkeiQHao9PbKaLnGXpjAmZ2BEFh9cfMSaLaX", + "cid": "QmeFNs5bm4eWM1M2G9Yb31dhMtEdWMRFx8Umsv5mYu9BB2", "size": 214826 }, "sig_check_id_data_tbs_700_rsa_pss_2048_sha1": { "hash": "0x1cbdee3f20c9174e5d1f67a651c9898a45210fdf6503c3de80583ad4ffee0b7e", - "cid": "QmV9QM2d3ZL4hniMw5eswLZGxwhMp47hBKmSZvLvAdy5F1", + "cid": "QmdbiAs6ed3GsDhC84Z3HX4u4GfyZELx8XYJqwPMpjstYs", "size": 272453 }, "sig_check_id_data_tbs_700_rsa_pss_2048_sha256": { "hash": "0x2d705de4b7f5553a47b5b65a282b717aecdc20514793e6cfe9e2b03e56e47770", - "cid": "Qmc54Pu9cS7USyf9PqbS34WPNHXvzLYWe61EgMUrxKYwS2", + "cid": "QmUuvBC5PMAvWZWsJ5k6rrjCbSJjxgogjWtVGhJBZzgX4L", "size": 152660 }, "sig_check_id_data_tbs_700_rsa_pss_2048_sha384": { "hash": "0x0ee75e0936f8c5abeaa44ecf64d75d8fe1f22d48fe01791ee045810ae22f34db", - "cid": "QmZoejUjQM6tWqSuDTZcqfSKtoWdZAZ4gZtvDg7ksV1qGh", + "cid": "QmZsasnJQ3BFu1uWHcgzccdN76vugjgUjeAiyi2t22WYpH", "size": 330730 }, "sig_check_id_data_tbs_700_rsa_pss_2048_sha512": { "hash": "0x2a3f5d9b201eb402d4d8c7ea97f909631e067e019162e29f638d581785f94d34", - "cid": "QmfHNQUcS8BRWjLWV2SrmBpAMSY9fsfWy8NSfz9A32keDe", + "cid": "QmVLo7PGwcgBTCgHvcvdc8ZfxxJA7aioWnw2sgio8t4cyg", "size": 309959 }, "sig_check_id_data_tbs_700_rsa_pss_3072_sha1": { "hash": "0x2c6d222b5d61bdb52478ead857906ce4030221d22bd0774f441cc4e4c730faa9", - "cid": "QmcyPgTutZLxMKekngLbkAsR89pdUwXGRkUkC3adRxssmi", + "cid": "QmYy4NX5ZG2oZEuQ5tTrbWupovBeCsFM3BmDYLtdJerZYt", "size": 383858 }, "sig_check_id_data_tbs_700_rsa_pss_3072_sha256": { "hash": "0x10566b0491b0c6d396d1a240f6b02eacc2c24ceab0d4134e60724ff1986ebd4a", - "cid": "QmXCxBxygqTyvQ5apSz3BokRSqkxQUmnqLSLg1VdtKcSFW", + "cid": "QmfKhVSZon6FDbHPvLv56894Be19Wbe9iSccgVMiLwuB3F", "size": 221267 }, "sig_check_id_data_tbs_700_rsa_pss_3072_sha384": { "hash": "0x2084f70fe07c690ba0b4e4488bf2f22cd15ad769850db8e921a92e5dab01125a", - "cid": "QmQV8kVPNNvAPJKDd7RGadhAJFHzXP3tP9ZaTaQjT91o1R", + "cid": "QmXmHB34nrYUEWTdYxa3snpvnTfAgLxrJyUPbESNquvdGz", "size": 431170 }, "sig_check_id_data_tbs_700_rsa_pss_3072_sha512": { "hash": "0x1e7a38ff5808adf0c25b196acaeba1ad6987e8b67e5bf3bc9737c1f43b6ff0ff", - "cid": "QmcncZojCdgkDwRKDuntsGguSURqwmDLYc1sLdReu4Khcj", + "cid": "QmcqxHYTwwWEkuU5yswompqoLrgP1fa7myhmvKGxDkV46H", "size": 408989 }, "sig_check_id_data_tbs_700_rsa_pss_4096_sha1": { "hash": "0x042f1a1db2979536aa934d3b4ea7956227f1acb78453e8564bf77f2d5d84301d", - "cid": "QmRfMLCWiBxn8v91dCmod2ez9TmEGSmiCY8UjRipwzbTZX", + "cid": "QmQmbKsZYYtSj6DvZQuwZ7QBP4jHnb41oDXH55kAo6VjEc", "size": 506274 }, "sig_check_id_data_tbs_700_rsa_pss_4096_sha256": { "hash": "0x1ae0c136ecbb0bce6837797f08281467b6fab8f8306dbbabc1b8b615b9ef3c26", - "cid": "QmUPy8nGvRETPAjL1ovfinr1YLd3yApxTvCuyUqSinwziU", + "cid": "QmTTpUDQd1WsJrsyxGLUmSU1pgL1b46P3XuJfDpESfTmz6", "size": 309306 }, "sig_check_id_data_tbs_700_rsa_pss_4096_sha384": { "hash": "0x2e9b2b4db7e0f01db7e76aff03bb85acc37a40ceb2bd1bb93a06a2318ce688b3", - "cid": "QmUst2A5yDRv6ySQaM2RG7uBfhPUFuX4qnEWnpavNGNjS7", + "cid": "QmVtypPvGnWceiYQo5koTYrxsfFQbVdjQhgysMr21pqQ8X", "size": 575017 }, "sig_check_id_data_tbs_700_rsa_pss_4096_sha512": { "hash": "0x0e4d18bf91c7fbeac8fce306cfa55e0efcf157b8d874499cdeeabafcacd5eac2", - "cid": "QmU65oZPA3NytS3yiDTG1yNWL7EGbRHTr1gVb5HzLgS1Yw", + "cid": "QmUTNSvTvBZrGmrM2fokJQxnCkXWbn9Zr8q8PGa6V813nN", "size": 527449 } }