Skip to content

Commit cff2d76

Browse files
authored
Merge pull request #5 from JustaName-id/test/integration-test
Test/integration test
2 parents ddbb823 + 3e03164 commit cff2d76

10 files changed

+418
-234
lines changed

script/HelperConfig.s.sol

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@ pragma solidity ^0.8.20;
33

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

78
abstract contract CodeConstants {
89
uint256 public constant MAINNET_ETH_CHAIN_ID = 1;
910
uint256 public constant ETH_SEPOLIA_CHAIN_ID = 11155111;
1011
uint256 public constant LOCAL_CHAIN_ID = 31337;
1112

12-
uint256 public constant SIGNATURE_ALGORITHM = 0;
13+
uint256 public constant SIGNATURE_ALGORITHM_RSA_65537_SHA256 = 1;
14+
uint256 public constant SIGNATURE_ALGORITHM_RSA_65537_SHA1 = 3;
15+
uint256 public constant SIGNATURE_ALGORITHM_RSA_PSS_65537_SHA256 = 4;
1316

1417
uint256 public constant NULLIFIER_INDEX_IN_PUB_SIGNAL = 4;
1518

1619
uint256 public constant SIGNATURE_ALGORITHM_INDEX_IN_PUB_SIGNALS = 0;
1720

18-
uint256 public constant NULLIFIER = uint256(0);
19-
2021
uint256[] public initialSignatureAlgorithms;
21-
2222
address[] public initialVerifiers;
2323
uint256[] public initialNullifiersIndexesInPubSigArray;
2424
address[] public initialSigners;
@@ -65,7 +65,7 @@ contract HelperConfig is CodeConstants, Script {
6565
return networkConfig;
6666
}
6767

68-
initialSignatureAlgorithms.push(SIGNATURE_ALGORITHM);
68+
initialSignatureAlgorithms.push(SIGNATURE_ALGORITHM_RSA_65537_SHA256);
6969

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

7676
// Deploy the verifier contract
7777
vm.startBroadcast();
78-
VerifierProveRSA65537SHA256 verifier = new VerifierProveRSA65537SHA256();
78+
VerifierProveRSA65537SHA256 verifierProveRSA65537SHA256 = new VerifierProveRSA65537SHA256();
7979
vm.stopBroadcast();
8080

81-
initialVerifiers.push(address(verifier));
81+
initialVerifiers.push(address(verifierProveRSA65537SHA256));
8282

8383
networkConfig = NetworkConfig({
8484
signatureAlgorithms: initialSignatureAlgorithms,

script/TestHelperConfig.s.sol

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.20;
3+
4+
import {IProofOfPassportRegister} from "../src/interfaces/IProofOfPassportRegister.sol";
5+
6+
abstract contract TestCodeConstants {
7+
IProofOfPassportRegister.Proof internal SHA256_RSA_65537_PROOF = IProofOfPassportRegister.Proof({
8+
a: [
9+
uint256(0x01b78f980b8152fe9cd995ec2a8eae33ac2917d9d726ede095a7e6b65b644556),
10+
uint256(0x1862a51302535bf2a1276688483e6a136816ac192ca864a4b7f6597ce6a34f3f)
11+
],
12+
b: [
13+
[
14+
uint256(0x19fb8b0a5f7219b0ff67346f295dd3c2fd920ed3f5d8236c4afb3335ef30aeaf),
15+
uint256(0x0366809df7b10b9da74bdd45817f46c7224c510d9bf7445f06ac933a6f9b84d9)
16+
],
17+
[
18+
uint256(0x0a456c23cc546dff592a3cf495a63ed30e3b4bcee867b73b325ad324e12f1f7d),
19+
uint256(0x2b966e64d1e60f9a286bbf894730fac55dcf406c0a310c17e7adf896ed90fb5d)
20+
]
21+
],
22+
c: [
23+
uint256(0x0af4668a831fc08c2ec65ef262be1b14b14e2391185c718ede19744743db98c3),
24+
uint256(0x230b621b8105f5aef21ddaa9d25065e61de68acb8a7130d17f602234d6a590d1)
25+
],
26+
pubSignals: [
27+
uint256(0x0000000000000000000000000000000000000000000000000000000000000001),
28+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
29+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
30+
uint256(0x0000000038310000000000000000000000000000000000000000000000000000),
31+
uint256(0x2ced155025b295d20bb504520d5d9d6072a11ed3c7637768a194ac06e9e21766),
32+
uint256(0x00000000000000000000000000000000000000000000000053411f824698fa2f),
33+
uint256(0x000000000000000000000000000000000000000000000000ff1d688bd8e828cb),
34+
uint256(0x000000000000000000000000000000000000000000000000bd8326134c5a6786),
35+
uint256(0x0000000000000000000000000000000000000000000000000afe5ec7730a32f4),
36+
uint256(0x0000000000000000000000000000000000000000000000002a0e6a5ec80d4fce),
37+
uint256(0x000000000000000000000000000000000000000000000000f2fe65e24f796c82),
38+
uint256(0x000000000000000000000000000000000000000000000000f003e5f6e0fb76f5),
39+
uint256(0x000000000000000000000000000000000000000000000000f7f0b8b4f7d16ba1),
40+
uint256(0x000000000000000000000000000000000000000000000000c0a50b9f9a009b2c),
41+
uint256(0x000000000000000000000000000000000000000000000000aa4b7930bc60289b),
42+
uint256(0x000000000000000000000000000000000000000000000000ee44f0d84ddcfd28),
43+
uint256(0x0000000000000000000000000000000000000000000000003d192c791c3d8393),
44+
uint256(0x000000000000000000000000000000000000000000000000940fdda1df29a07a),
45+
uint256(0x000000000000000000000000000000000000000000000000b2cb8508124d8a7c),
46+
uint256(0x000000000000000000000000000000000000000000000000e11251c45d7bbb8e),
47+
uint256(0x00000000000000000000000000000000000000000000000071257465ea50c505),
48+
uint256(0x0000000000000000000000000000000000000000000000001ad23eb19cfa74b5),
49+
uint256(0x000000000000000000000000000000000000000000000000085050985a12e3b6),
50+
uint256(0x000000000000000000000000000000000000000000000000cd67cb092d9e8b18),
51+
uint256(0x0000000000000000000000000000000000000000000000006453346761251ae4),
52+
uint256(0x00000000000000000000000000000000000000000000000076cceeb03dd248fa),
53+
uint256(0x000000000000000000000000000000000000000000000000832d5907c2ad2ce9),
54+
uint256(0x000000000000000000000000000000000000000000000000a277cc8ca629bee5),
55+
uint256(0x00000000000000000000000000000000000000000000000049ac2c66b33ce9d6),
56+
uint256(0x000000000000000000000000000000000000000000000000ed637fc977dbb3cd),
57+
uint256(0x000000000000000000000000000000000000000000000000c9fd54e162a1ca3f),
58+
uint256(0x0000000000000000000000000000000000000000000000003a4330c1fec63b6b),
59+
uint256(0x000000000000000000000000000000000000000000000000ad24b71325166d44),
60+
uint256(0x0000000000000000000000000000000000000000000000006dfc0e830acc6b6f),
61+
uint256(0x00000000000000000000000000000000000000000000000004f4b44e0821e867),
62+
uint256(0x000000000000000000000000000000000000000000000000a7161769a43e3175),
63+
uint256(0x000000000000000000000000000000000000000000000000db99fbc3b7a9901c),
64+
uint256(0x0000000000000000000000000000000000000000000000000000000000000418),
65+
uint256(0x0000000000000000000000000000000000000000000000000000000000000002),
66+
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
67+
uint256(0x0000000000000000000000000000000000000000000000000000000000000001),
68+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
69+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
70+
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
71+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000)
72+
]
73+
});
74+
75+
IProofOfPassportRegister.Proof internal SHA1_RSA_65537_PROOF = IProofOfPassportRegister.Proof({
76+
a: [
77+
uint256(0x08b0e0749791c83fbf8799201760166157f994769db329a8ccbe057e958a7086),
78+
uint256(0x1b885f343e8b494eba3f5e06325eea4a3b1a058da71bc20a05f2ef299e7edd17)
79+
],
80+
b: [
81+
[
82+
uint256(0x00e5ebb2cf0dedb1fb9e427dc71d182ac63033210ae4e2d6c211d385234d542e),
83+
uint256(0x22724162db0bc26f9b89a1cbeb9f3bf6f5ba47483748ec594468a64fb7698e31)
84+
],
85+
[
86+
uint256(0x13c989822253a7710afafdb59c0c8e9e88baecf4ced3355f2c83448e966312da),
87+
uint256(0x09cfcde3693b89e48bbaffcb52783f00280143d858a1a06ae557144c0233dffa)
88+
]
89+
],
90+
c: [
91+
uint256(0x1e76251112f971be6c165624042f6088c6ec7350e0d567647e0de51396219f8c),
92+
uint256(0x297601715dc24dd2236d65513946561605f01e818920ac2d7aee6ed2ca4f462b)
93+
],
94+
pubSignals: [
95+
uint256(0x0000000000000000000000000000000000000000000000000000000000000003),
96+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
97+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
98+
uint256(0x0000000038310000000000000000000000000000000000000000000000000000),
99+
uint256(0x12a5ee265d9b4ac6990f5116299dffb04c76b5afbedc85d9f0f5032942596e38),
100+
uint256(0x0000000000000000000000000000000000000000000000004a42acd329876dc3),
101+
uint256(0x0000000000000000000000000000000000000000000000008a0c30f2e8aef697),
102+
uint256(0x0000000000000000000000000000000000000000000000007b6165f92860301e),
103+
uint256(0x000000000000000000000000000000000000000000000000479934def26b69b6),
104+
uint256(0x000000000000000000000000000000000000000000000000bc54c0eb61a2e77b),
105+
uint256(0x000000000000000000000000000000000000000000000000cc5a5391770db266),
106+
uint256(0x000000000000000000000000000000000000000000000000dc6192745bb0da12),
107+
uint256(0x00000000000000000000000000000000000000000000000082a7fad0268fc98c),
108+
uint256(0x000000000000000000000000000000000000000000000000bca5851380f4f0ec),
109+
uint256(0x000000000000000000000000000000000000000000000000c6de00864055128b),
110+
uint256(0x00000000000000000000000000000000000000000000000003e9e516ae41f5ad),
111+
uint256(0x000000000000000000000000000000000000000000000000f29efd222eb1251e),
112+
uint256(0x0000000000000000000000000000000000000000000000009f0edd33e35f68d2),
113+
uint256(0x0000000000000000000000000000000000000000000000005e4c5a0ae5e07606),
114+
uint256(0x000000000000000000000000000000000000000000000000e59f242de9fc6d4b),
115+
uint256(0x000000000000000000000000000000000000000000000000010e743255401f25),
116+
uint256(0x0000000000000000000000000000000000000000000000001c1e907b7a0526d9),
117+
uint256(0x00000000000000000000000000000000000000000000000026b4d2f93b8d7400),
118+
uint256(0x000000000000000000000000000000000000000000000000309dc1c691b869ea),
119+
uint256(0x00000000000000000000000000000000000000000000000064ac68b6ae86ca59),
120+
uint256(0x000000000000000000000000000000000000000000000000248f2beddf4689c1),
121+
uint256(0x000000000000000000000000000000000000000000000000160f21275532f287),
122+
uint256(0x000000000000000000000000000000000000000000000000771ec9057be8e47b),
123+
uint256(0x00000000000000000000000000000000000000000000000043915dd0028addd1),
124+
uint256(0x0000000000000000000000000000000000000000000000002dd771374ee5d86e),
125+
uint256(0x0000000000000000000000000000000000000000000000005e2a5817e19e50ed),
126+
uint256(0x000000000000000000000000000000000000000000000000c25f285d4ceef999),
127+
uint256(0x000000000000000000000000000000000000000000000000234229c7008ccf51),
128+
uint256(0x000000000000000000000000000000000000000000000000e0dd64eb3c89f343),
129+
uint256(0x000000000000000000000000000000000000000000000000e953c6158a1aa7fd),
130+
uint256(0x0000000000000000000000000000000000000000000000009fed398611efc871),
131+
uint256(0x000000000000000000000000000000000000000000000000b215658e3dcd3d73),
132+
uint256(0x0000000000000000000000000000000000000000000000000000000000000418),
133+
uint256(0x0000000000000000000000000000000000000000000000000000000000000002),
134+
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
135+
uint256(0x0000000000000000000000000000000000000000000000000000000000000001),
136+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
137+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
138+
uint256(0x0000000000000000000000000000000000000000000000000000000000000007),
139+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000)
140+
]
141+
});
142+
143+
IProofOfPassportRegister.Proof internal SHA256_RSA_PSS_65537_PROOF = IProofOfPassportRegister.Proof({
144+
a: [
145+
uint256(0x09393822b5b9ca72fc0d792745a917b02885e7e556105c0af4b8b600ffdd604d),
146+
uint256(0x058870211c773b3589b691e9eac8500cf9df1d975535700ad087133d59184dba)
147+
],
148+
b: [
149+
[
150+
uint256(0x15fb4ed8da619edc89e5f9ccda7f7170493e124eda65ec1332473035c01ee506),
151+
uint256(0x013b4b4feaea415202953af9b64cadc62ed70205a7f880cfa4fa8068d5f78e09)
152+
],
153+
[
154+
uint256(0x200e585e89f06fdf1c9c9ab380b023d421390ea3642512f9e930142c6054b2b4),
155+
uint256(0x2b84e14bbe536c3d1b7ebabd8b88b6a6552aa28a3d0dd0ae46d289f396ac20f7)
156+
]
157+
],
158+
c: [
159+
uint256(0x22ecde64a97408174cd740929d5335b8eec935579f6b466546b21c91434956dc),
160+
uint256(0x04b04877fa089aa78636be24142a4b5eee5d28478581cb52c53cde9907d5586f)
161+
],
162+
pubSignals: [
163+
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
164+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
165+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
166+
uint256(0x0000000038310000000000000000000000000000000000000000000000000000),
167+
uint256(0x19605cc642747f3b686cdc0cf0ddcf636deb10db3fb8b7a9209200c866e67a62),
168+
uint256(0x0000000000000000000000000000000000000000000000001402946428b4f511),
169+
uint256(0x000000000000000000000000000000000000000000000000f7888e17e6334b03),
170+
uint256(0x000000000000000000000000000000000000000000000000c3af317e70a9ebb4),
171+
uint256(0x000000000000000000000000000000000000000000000000751dc3fdf81cf16e),
172+
uint256(0x0000000000000000000000000000000000000000000000004fc85174df3c0ebb),
173+
uint256(0x000000000000000000000000000000000000000000000000715f1893c4c90ef0),
174+
uint256(0x0000000000000000000000000000000000000000000000006e1382bd0c8064cd),
175+
uint256(0x000000000000000000000000000000000000000000000000d63bb36b91452753),
176+
uint256(0x000000000000000000000000000000000000000000000000fc6d05970c9bca91),
177+
uint256(0x0000000000000000000000000000000000000000000000008d84084f0043acd2),
178+
uint256(0x00000000000000000000000000000000000000000000000045681a0cf06c6f83),
179+
uint256(0x000000000000000000000000000000000000000000000000becc8d6fd1499aec),
180+
uint256(0x000000000000000000000000000000000000000000000000acfef338044f482d),
181+
uint256(0x000000000000000000000000000000000000000000000000e9d8b428337c0404),
182+
uint256(0x000000000000000000000000000000000000000000000000e90dfe55fd68fb90),
183+
uint256(0x000000000000000000000000000000000000000000000000a5149589a795b7c4),
184+
uint256(0x0000000000000000000000000000000000000000000000007a006a746be3726b),
185+
uint256(0x000000000000000000000000000000000000000000000000aff4cb7688e522b3),
186+
uint256(0x000000000000000000000000000000000000000000000000d57df3abd6eb1170),
187+
uint256(0x000000000000000000000000000000000000000000000000fd3d6124bc10dfe3),
188+
uint256(0x00000000000000000000000000000000000000000000000066835ce3dbe6b647),
189+
uint256(0x000000000000000000000000000000000000000000000000a22beda540d1f620),
190+
uint256(0x000000000000000000000000000000000000000000000000095e5aa9405be553),
191+
uint256(0x000000000000000000000000000000000000000000000000f3685db5b6bd48ea),
192+
uint256(0x000000000000000000000000000000000000000000000000ccdbc40af2feb0f9),
193+
uint256(0x000000000000000000000000000000000000000000000000a3b62190ca1a2308),
194+
uint256(0x0000000000000000000000000000000000000000000000008347e60d171c42f5),
195+
uint256(0x000000000000000000000000000000000000000000000000740a3806f568f057),
196+
uint256(0x000000000000000000000000000000000000000000000000557e6eb412cc5857),
197+
uint256(0x0000000000000000000000000000000000000000000000009465792fb0488b44),
198+
uint256(0x000000000000000000000000000000000000000000000000c078c4ae20ffc713),
199+
uint256(0x000000000000000000000000000000000000000000000000c1c7212416c29d43),
200+
uint256(0x0000000000000000000000000000000000000000000000000000000000000418),
201+
uint256(0x0000000000000000000000000000000000000000000000000000000000000002),
202+
uint256(0x0000000000000000000000000000000000000000000000000000000000000004),
203+
uint256(0x0000000000000000000000000000000000000000000000000000000000000001),
204+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
205+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
206+
uint256(0x0000000000000000000000000000000000000000000000000000000000000009),
207+
uint256(0x0000000000000000000000000000000000000000000000000000000000000000)
208+
]
209+
});
210+
}

src/ProofOfPassportRegister.sol

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ contract ProofOfPassportRegister is IProofOfPassportRegister, Ownable {
6363
function registerWithProof(Proof calldata proof, address recipient) external onlySigner(msg.sender) {
6464
uint256 nullifier = _getNullifierFromProof(proof);
6565

66+
if (recipient == address(0)) {
67+
revert ProofOfPassportRegister__ZeroAddress();
68+
}
69+
6670
if (isRegistered(nullifier, recipient)) {
6771
revert ProofOfPassportRegister__ProofAlreadyRegistered();
6872
}
@@ -84,6 +88,10 @@ contract ProofOfPassportRegister is IProofOfPassportRegister, Ownable {
8488
function validateProof(Proof calldata proof, address recipient) external view returns (bool) {
8589
uint256 nullifier = _getNullifierFromProof(proof);
8690

91+
if (recipient == address(0)) {
92+
revert ProofOfPassportRegister__ZeroAddress();
93+
}
94+
8795
if (isRegistered(nullifier, recipient) == false) {
8896
revert ProofOfPassportRegister__NullifierDoesNotExist();
8997
}

src/verifiers/prove/Verifier_prove_rsa_65537_sha1.sol

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ contract VerifierProveRSA65537SHA1 {
3737
uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781;
3838
uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531;
3939
uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930;
40-
uint256 constant deltax1 = 10307116547489622597738156369714102094519364849093995034304585752674722910788;
41-
uint256 constant deltax2 = 16254237959699302792608859767424174478310117179748207262526467096133196630689;
42-
uint256 constant deltay1 = 3801389598907281534867533786900906266457469474641015818640237471864795362996;
43-
uint256 constant deltay2 = 17904290990162931104031426381598025672676358511373496820768035079819665204316;
40+
uint256 constant deltax1 = 11167907892841666403957832356709520977293970158634866882392265166345265068363;
41+
uint256 constant deltax2 = 16872392223821572764936649764287784781718944131099315676209776095837569117904;
42+
uint256 constant deltay1 = 7205763782730227201846667395610645266636559758386923441626130457858150205593;
43+
uint256 constant deltay2 = 21431575462002591770323513073526746494975434587702590833550841061588079840688;
4444

45-
uint256 constant IC0x = 409655855396890563592627698574200318992001508800725708585016802008730462062;
46-
uint256 constant IC0y = 1354678002464178124779860967007493173844610080517630734326101011060281136811;
45+
uint256 constant IC0x = 5372146671465980857288451423793809619909428509419807288054761024072806425490;
46+
uint256 constant IC0y = 12507707583912320547867629488254742663263624728953540104953275308315599792266;
4747

4848
uint256 constant IC1x = 13128368587403711033616720538514787971492577895133840365050402463264270362516;
4949
uint256 constant IC1y = 18152013960841164845501873266912377061458336470519091262434617532900267751206;

0 commit comments

Comments
 (0)