Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions script/HelperConfig.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@ pragma solidity ^0.8.20;

import {Script, console} from "forge-std/Script.sol";
import {VerifierProveRSA65537SHA256} from "../src/verifiers/prove/Verifier_prove_rsa_65537_sha256.sol";
import {IProofOfPassportRegister} from "../src/interfaces/IProofOfPassportRegister.sol";

abstract contract CodeConstants {
uint256 public constant MAINNET_ETH_CHAIN_ID = 1;
uint256 public constant ETH_SEPOLIA_CHAIN_ID = 11155111;
uint256 public constant LOCAL_CHAIN_ID = 31337;

uint256 public constant SIGNATURE_ALGORITHM = 0;
uint256 public constant SIGNATURE_ALGORITHM_RSA_65537_SHA256 = 1;
uint256 public constant SIGNATURE_ALGORITHM_RSA_65537_SHA1 = 3;
uint256 public constant SIGNATURE_ALGORITHM_RSA_PSS_65537_SHA256 = 4;

uint256 public constant NULLIFIER_INDEX_IN_PUB_SIGNAL = 4;

uint256 public constant SIGNATURE_ALGORITHM_INDEX_IN_PUB_SIGNALS = 0;

uint256 public constant NULLIFIER = uint256(0);

uint256[] public initialSignatureAlgorithms;

address[] public initialVerifiers;
uint256[] public initialNullifiersIndexesInPubSigArray;
address[] public initialSigners;
Expand Down Expand Up @@ -65,7 +65,7 @@ contract HelperConfig is CodeConstants, Script {
return networkConfig;
}

initialSignatureAlgorithms.push(SIGNATURE_ALGORITHM);
initialSignatureAlgorithms.push(SIGNATURE_ALGORITHM_RSA_65537_SHA256);

// Get Signer
address SIGNER = makeAddr("signer");
Expand All @@ -75,10 +75,10 @@ contract HelperConfig is CodeConstants, Script {

// Deploy the verifier contract
vm.startBroadcast();
VerifierProveRSA65537SHA256 verifier = new VerifierProveRSA65537SHA256();
VerifierProveRSA65537SHA256 verifierProveRSA65537SHA256 = new VerifierProveRSA65537SHA256();
vm.stopBroadcast();

initialVerifiers.push(address(verifier));
initialVerifiers.push(address(verifierProveRSA65537SHA256));

networkConfig = NetworkConfig({
signatureAlgorithms: initialSignatureAlgorithms,
Expand Down
210 changes: 210 additions & 0 deletions script/TestHelperConfig.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {IProofOfPassportRegister} from "../src/interfaces/IProofOfPassportRegister.sol";

abstract contract TestCodeConstants {
IProofOfPassportRegister.Proof internal SHA256_RSA_65537_PROOF = IProofOfPassportRegister.Proof({
a: [
uint256(0x01b78f980b8152fe9cd995ec2a8eae33ac2917d9d726ede095a7e6b65b644556),
uint256(0x1862a51302535bf2a1276688483e6a136816ac192ca864a4b7f6597ce6a34f3f)
],
b: [
[
uint256(0x19fb8b0a5f7219b0ff67346f295dd3c2fd920ed3f5d8236c4afb3335ef30aeaf),
uint256(0x0366809df7b10b9da74bdd45817f46c7224c510d9bf7445f06ac933a6f9b84d9)
],
[
uint256(0x0a456c23cc546dff592a3cf495a63ed30e3b4bcee867b73b325ad324e12f1f7d),
uint256(0x2b966e64d1e60f9a286bbf894730fac55dcf406c0a310c17e7adf896ed90fb5d)
]
],
c: [
uint256(0x0af4668a831fc08c2ec65ef262be1b14b14e2391185c718ede19744743db98c3),
uint256(0x230b621b8105f5aef21ddaa9d25065e61de68acb8a7130d17f602234d6a590d1)
],
pubSignals: [
uint256(0x0000000000000000000000000000000000000000000000000000000000000001),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000038310000000000000000000000000000000000000000000000000000),
uint256(0x2ced155025b295d20bb504520d5d9d6072a11ed3c7637768a194ac06e9e21766),
uint256(0x00000000000000000000000000000000000000000000000053411f824698fa2f),
uint256(0x000000000000000000000000000000000000000000000000ff1d688bd8e828cb),
uint256(0x000000000000000000000000000000000000000000000000bd8326134c5a6786),
uint256(0x0000000000000000000000000000000000000000000000000afe5ec7730a32f4),
uint256(0x0000000000000000000000000000000000000000000000002a0e6a5ec80d4fce),
uint256(0x000000000000000000000000000000000000000000000000f2fe65e24f796c82),
uint256(0x000000000000000000000000000000000000000000000000f003e5f6e0fb76f5),
uint256(0x000000000000000000000000000000000000000000000000f7f0b8b4f7d16ba1),
uint256(0x000000000000000000000000000000000000000000000000c0a50b9f9a009b2c),
uint256(0x000000000000000000000000000000000000000000000000aa4b7930bc60289b),
uint256(0x000000000000000000000000000000000000000000000000ee44f0d84ddcfd28),
uint256(0x0000000000000000000000000000000000000000000000003d192c791c3d8393),
uint256(0x000000000000000000000000000000000000000000000000940fdda1df29a07a),
uint256(0x000000000000000000000000000000000000000000000000b2cb8508124d8a7c),
uint256(0x000000000000000000000000000000000000000000000000e11251c45d7bbb8e),
uint256(0x00000000000000000000000000000000000000000000000071257465ea50c505),
uint256(0x0000000000000000000000000000000000000000000000001ad23eb19cfa74b5),
uint256(0x000000000000000000000000000000000000000000000000085050985a12e3b6),
uint256(0x000000000000000000000000000000000000000000000000cd67cb092d9e8b18),
uint256(0x0000000000000000000000000000000000000000000000006453346761251ae4),
uint256(0x00000000000000000000000000000000000000000000000076cceeb03dd248fa),
uint256(0x000000000000000000000000000000000000000000000000832d5907c2ad2ce9),
uint256(0x000000000000000000000000000000000000000000000000a277cc8ca629bee5),
uint256(0x00000000000000000000000000000000000000000000000049ac2c66b33ce9d6),
uint256(0x000000000000000000000000000000000000000000000000ed637fc977dbb3cd),
uint256(0x000000000000000000000000000000000000000000000000c9fd54e162a1ca3f),
uint256(0x0000000000000000000000000000000000000000000000003a4330c1fec63b6b),
uint256(0x000000000000000000000000000000000000000000000000ad24b71325166d44),
uint256(0x0000000000000000000000000000000000000000000000006dfc0e830acc6b6f),
uint256(0x00000000000000000000000000000000000000000000000004f4b44e0821e867),
uint256(0x000000000000000000000000000000000000000000000000a7161769a43e3175),
uint256(0x000000000000000000000000000000000000000000000000db99fbc3b7a9901c),
uint256(0x0000000000000000000000000000000000000000000000000000000000000418),
uint256(0x0000000000000000000000000000000000000000000000000000000000000002),
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
uint256(0x0000000000000000000000000000000000000000000000000000000000000001),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000)
]
});

IProofOfPassportRegister.Proof internal SHA1_RSA_65537_PROOF = IProofOfPassportRegister.Proof({
a: [
uint256(0x08b0e0749791c83fbf8799201760166157f994769db329a8ccbe057e958a7086),
uint256(0x1b885f343e8b494eba3f5e06325eea4a3b1a058da71bc20a05f2ef299e7edd17)
],
b: [
[
uint256(0x00e5ebb2cf0dedb1fb9e427dc71d182ac63033210ae4e2d6c211d385234d542e),
uint256(0x22724162db0bc26f9b89a1cbeb9f3bf6f5ba47483748ec594468a64fb7698e31)
],
[
uint256(0x13c989822253a7710afafdb59c0c8e9e88baecf4ced3355f2c83448e966312da),
uint256(0x09cfcde3693b89e48bbaffcb52783f00280143d858a1a06ae557144c0233dffa)
]
],
c: [
uint256(0x1e76251112f971be6c165624042f6088c6ec7350e0d567647e0de51396219f8c),
uint256(0x297601715dc24dd2236d65513946561605f01e818920ac2d7aee6ed2ca4f462b)
],
pubSignals: [
uint256(0x0000000000000000000000000000000000000000000000000000000000000003),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000038310000000000000000000000000000000000000000000000000000),
uint256(0x12a5ee265d9b4ac6990f5116299dffb04c76b5afbedc85d9f0f5032942596e38),
uint256(0x0000000000000000000000000000000000000000000000004a42acd329876dc3),
uint256(0x0000000000000000000000000000000000000000000000008a0c30f2e8aef697),
uint256(0x0000000000000000000000000000000000000000000000007b6165f92860301e),
uint256(0x000000000000000000000000000000000000000000000000479934def26b69b6),
uint256(0x000000000000000000000000000000000000000000000000bc54c0eb61a2e77b),
uint256(0x000000000000000000000000000000000000000000000000cc5a5391770db266),
uint256(0x000000000000000000000000000000000000000000000000dc6192745bb0da12),
uint256(0x00000000000000000000000000000000000000000000000082a7fad0268fc98c),
uint256(0x000000000000000000000000000000000000000000000000bca5851380f4f0ec),
uint256(0x000000000000000000000000000000000000000000000000c6de00864055128b),
uint256(0x00000000000000000000000000000000000000000000000003e9e516ae41f5ad),
uint256(0x000000000000000000000000000000000000000000000000f29efd222eb1251e),
uint256(0x0000000000000000000000000000000000000000000000009f0edd33e35f68d2),
uint256(0x0000000000000000000000000000000000000000000000005e4c5a0ae5e07606),
uint256(0x000000000000000000000000000000000000000000000000e59f242de9fc6d4b),
uint256(0x000000000000000000000000000000000000000000000000010e743255401f25),
uint256(0x0000000000000000000000000000000000000000000000001c1e907b7a0526d9),
uint256(0x00000000000000000000000000000000000000000000000026b4d2f93b8d7400),
uint256(0x000000000000000000000000000000000000000000000000309dc1c691b869ea),
uint256(0x00000000000000000000000000000000000000000000000064ac68b6ae86ca59),
uint256(0x000000000000000000000000000000000000000000000000248f2beddf4689c1),
uint256(0x000000000000000000000000000000000000000000000000160f21275532f287),
uint256(0x000000000000000000000000000000000000000000000000771ec9057be8e47b),
uint256(0x00000000000000000000000000000000000000000000000043915dd0028addd1),
uint256(0x0000000000000000000000000000000000000000000000002dd771374ee5d86e),
uint256(0x0000000000000000000000000000000000000000000000005e2a5817e19e50ed),
uint256(0x000000000000000000000000000000000000000000000000c25f285d4ceef999),
uint256(0x000000000000000000000000000000000000000000000000234229c7008ccf51),
uint256(0x000000000000000000000000000000000000000000000000e0dd64eb3c89f343),
uint256(0x000000000000000000000000000000000000000000000000e953c6158a1aa7fd),
uint256(0x0000000000000000000000000000000000000000000000009fed398611efc871),
uint256(0x000000000000000000000000000000000000000000000000b215658e3dcd3d73),
uint256(0x0000000000000000000000000000000000000000000000000000000000000418),
uint256(0x0000000000000000000000000000000000000000000000000000000000000002),
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
uint256(0x0000000000000000000000000000000000000000000000000000000000000001),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000007),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000)
]
});

IProofOfPassportRegister.Proof internal SHA256_RSA_PSS_65537_PROOF = IProofOfPassportRegister.Proof({
a: [
uint256(0x09393822b5b9ca72fc0d792745a917b02885e7e556105c0af4b8b600ffdd604d),
uint256(0x058870211c773b3589b691e9eac8500cf9df1d975535700ad087133d59184dba)
],
b: [
[
uint256(0x15fb4ed8da619edc89e5f9ccda7f7170493e124eda65ec1332473035c01ee506),
uint256(0x013b4b4feaea415202953af9b64cadc62ed70205a7f880cfa4fa8068d5f78e09)
],
[
uint256(0x200e585e89f06fdf1c9c9ab380b023d421390ea3642512f9e930142c6054b2b4),
uint256(0x2b84e14bbe536c3d1b7ebabd8b88b6a6552aa28a3d0dd0ae46d289f396ac20f7)
]
],
c: [
uint256(0x22ecde64a97408174cd740929d5335b8eec935579f6b466546b21c91434956dc),
uint256(0x04b04877fa089aa78636be24142a4b5eee5d28478581cb52c53cde9907d5586f)
],
pubSignals: [
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000038310000000000000000000000000000000000000000000000000000),
uint256(0x19605cc642747f3b686cdc0cf0ddcf636deb10db3fb8b7a9209200c866e67a62),
uint256(0x0000000000000000000000000000000000000000000000001402946428b4f511),
uint256(0x000000000000000000000000000000000000000000000000f7888e17e6334b03),
uint256(0x000000000000000000000000000000000000000000000000c3af317e70a9ebb4),
uint256(0x000000000000000000000000000000000000000000000000751dc3fdf81cf16e),
uint256(0x0000000000000000000000000000000000000000000000004fc85174df3c0ebb),
uint256(0x000000000000000000000000000000000000000000000000715f1893c4c90ef0),
uint256(0x0000000000000000000000000000000000000000000000006e1382bd0c8064cd),
uint256(0x000000000000000000000000000000000000000000000000d63bb36b91452753),
uint256(0x000000000000000000000000000000000000000000000000fc6d05970c9bca91),
uint256(0x0000000000000000000000000000000000000000000000008d84084f0043acd2),
uint256(0x00000000000000000000000000000000000000000000000045681a0cf06c6f83),
uint256(0x000000000000000000000000000000000000000000000000becc8d6fd1499aec),
uint256(0x000000000000000000000000000000000000000000000000acfef338044f482d),
uint256(0x000000000000000000000000000000000000000000000000e9d8b428337c0404),
uint256(0x000000000000000000000000000000000000000000000000e90dfe55fd68fb90),
uint256(0x000000000000000000000000000000000000000000000000a5149589a795b7c4),
uint256(0x0000000000000000000000000000000000000000000000007a006a746be3726b),
uint256(0x000000000000000000000000000000000000000000000000aff4cb7688e522b3),
uint256(0x000000000000000000000000000000000000000000000000d57df3abd6eb1170),
uint256(0x000000000000000000000000000000000000000000000000fd3d6124bc10dfe3),
uint256(0x00000000000000000000000000000000000000000000000066835ce3dbe6b647),
uint256(0x000000000000000000000000000000000000000000000000a22beda540d1f620),
uint256(0x000000000000000000000000000000000000000000000000095e5aa9405be553),
uint256(0x000000000000000000000000000000000000000000000000f3685db5b6bd48ea),
uint256(0x000000000000000000000000000000000000000000000000ccdbc40af2feb0f9),
uint256(0x000000000000000000000000000000000000000000000000a3b62190ca1a2308),
uint256(0x0000000000000000000000000000000000000000000000008347e60d171c42f5),
uint256(0x000000000000000000000000000000000000000000000000740a3806f568f057),
uint256(0x000000000000000000000000000000000000000000000000557e6eb412cc5857),
uint256(0x0000000000000000000000000000000000000000000000009465792fb0488b44),
uint256(0x000000000000000000000000000000000000000000000000c078c4ae20ffc713),
uint256(0x000000000000000000000000000000000000000000000000c1c7212416c29d43),
uint256(0x0000000000000000000000000000000000000000000000000000000000000418),
uint256(0x0000000000000000000000000000000000000000000000000000000000000002),
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
uint256(0x0000000000000000000000000000000000000000000000000000000000000001),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000009),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000)
]
});
}
8 changes: 8 additions & 0 deletions src/ProofOfPassportRegister.sol
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ contract ProofOfPassportRegister is IProofOfPassportRegister, Ownable {
function registerWithProof(Proof calldata proof, address recipient) external onlySigner(msg.sender) {
uint256 nullifier = _getNullifierFromProof(proof);

if (recipient == address(0)) {
revert ProofOfPassportRegister__ZeroAddress();
}

if (isRegistered(nullifier, recipient)) {
revert ProofOfPassportRegister__ProofAlreadyRegistered();
}
Expand All @@ -84,6 +88,10 @@ contract ProofOfPassportRegister is IProofOfPassportRegister, Ownable {
function validateProof(Proof calldata proof, address recipient) external view returns (bool) {
uint256 nullifier = _getNullifierFromProof(proof);

if (recipient == address(0)) {
revert ProofOfPassportRegister__ZeroAddress();
}

if (isRegistered(nullifier, recipient) == false) {
revert ProofOfPassportRegister__NullifierDoesNotExist();
}
Expand Down
12 changes: 6 additions & 6 deletions src/verifiers/prove/Verifier_prove_rsa_65537_sha1.sol
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ contract VerifierProveRSA65537SHA1 {
uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781;
uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531;
uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930;
uint256 constant deltax1 = 10307116547489622597738156369714102094519364849093995034304585752674722910788;
uint256 constant deltax2 = 16254237959699302792608859767424174478310117179748207262526467096133196630689;
uint256 constant deltay1 = 3801389598907281534867533786900906266457469474641015818640237471864795362996;
uint256 constant deltay2 = 17904290990162931104031426381598025672676358511373496820768035079819665204316;
uint256 constant deltax1 = 11167907892841666403957832356709520977293970158634866882392265166345265068363;
uint256 constant deltax2 = 16872392223821572764936649764287784781718944131099315676209776095837569117904;
uint256 constant deltay1 = 7205763782730227201846667395610645266636559758386923441626130457858150205593;
uint256 constant deltay2 = 21431575462002591770323513073526746494975434587702590833550841061588079840688;

uint256 constant IC0x = 409655855396890563592627698574200318992001508800725708585016802008730462062;
uint256 constant IC0y = 1354678002464178124779860967007493173844610080517630734326101011060281136811;
uint256 constant IC0x = 5372146671465980857288451423793809619909428509419807288054761024072806425490;
uint256 constant IC0y = 12507707583912320547867629488254742663263624728953540104953275308315599792266;

uint256 constant IC1x = 13128368587403711033616720538514787971492577895133840365050402463264270362516;
uint256 constant IC1y = 18152013960841164845501873266912377061458336470519091262434617532900267751206;
Expand Down
Loading