refactor some code, allow dsc verification with mock passport data

This commit is contained in:
turnoffthiscomputer
2024-06-30 12:58:00 +02:00
parent f24d78fa87
commit f433bf84ce
7 changed files with 547 additions and 435 deletions

View File

@@ -0,0 +1,63 @@
export const mock_dsc_sha256_rsa_4096 = `-----BEGIN CERTIFICATE-----
MIIEkDCCAnigAwIBAgIUVWuy5jJJ5sj+QZfD5gWs3rESlFswDQYJKoZIhvcNAQEL
BQAwYzELMAkGA1UEBhMCWFgxEjAQBgNVBAgMCU1vY2tTdGF0ZTERMA8GA1UEBwwI
TW9ja0NpdHkxGTAXBgNVBAoMEE1vY2tPcmdhbml6YXRpb24xEjAQBgNVBAMMCW1v
Y2tfY3NjYTAeFw0yNDA2MTgxOTA4NTRaFw0yNTA2MTgxOTA4NTRaMF0xCzAJBgNV
BAYTAlhYMRIwEAYDVQQIDAlNb2NrU3RhdGUxETAPBgNVBAcMCE1vY2tDaXR5MRkw
FwYDVQQKDBBNb2NrT3JnYW5pemF0aW9uMQwwCgYDVQQDDANkc2MwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDbmfvDt6mQHKcWF2mkPjF1BPS0Tggh6Gdt
/A6DCsxrb60ktxMlFm1EOkMwwf7GO2vJ/VThYqHKP+1jf8l327PNSawsZrM86dai
d8yMpim+5YMtWQfCrSzpdszusD3SSPpkUzRnYSUa5M1nywktnosYCFBQmFoS47Ya
0j6xnPp0tXEldGXqUMUF4RJRxF17u46yy4UIEk2KfJQP3aHfKaB6PRkseRw9g5Pu
RPDYTdz9KKpLeTC8YCibwKULn5oAmyz38Li099FrofAD5fbg+3b18v5l4k95bIIq
DmpeyA1Pzgr+XsdzCjL0vYMmE0xaZ4b/HWiL2Ogoy1NBH4JGmPovAgMBAAGjQjBA
MB0GA1UdDgQWBBQvTV8qsxZT6yjcGTfPp/G1g+eQkDAfBgNVHSMEGDAWgBRUaGBM
XQcIm9LEq0TQG9W1A0y3RzANBgkqhkiG9w0BAQsFAAOCAgEADYR3J1O45bTBx73a
o45qJJQAJhHAe3VhajphGPm3hpBeM2VewEZU0NIMon0Ov1dHvYudFniYiFdZMefe
CuqE9Deb39egDO1lCd2dGjybRbhg4Zr8vLqRwsG3bjdYGl6PXwyg0OsB0QbdKpm4
tVRT970BF2LefC5vdlQpeCuLas7gkxL469+LJicXotYlO3Le+CknMYEdALjvEapc
1u7jlJFlD2xx3l8+Exkon3EzgRokp3fu9ztU4Y2j3KGdieSDJ4rYfPoyDR7HCcEd
HDYCsjBAYi6Zrjz5M0Nm99/O+4vCma7MnGkBtA63ABTDjjxIv6eeu5JxhrI8PXwE
VQ9CAmM6Wh52QebRMx1adxUqTe/rwCAwuA4v1jXSlb1BTfL+7ra1k7PYYczmnskc
jVscaxnKBVq12Pg1D03LkeMPQiqWTQ7pOPz1AKQ3TIlhsuf/jXner4cYQbeIpGwf
WatGH8+eROdlpTfF/xaAUbCJ2UYjRUupGkrpU5KkS9FxrJSVS44PO3xuJwQJN1fC
x2clYiqOEhyESrTp6c5XAGK78S0dwBP2R9o7GqY5xNI+kXBJakqyVpwIPRDq4HVo
y9QRS1jM1G/2Y1XAE9pMdMjdhfYCCp/lO48swOQDty137gzfffo0Bn0039VKzhgi
nUCb8Z7CclWppvFAVjnJruJbGp4=
-----END CERTIFICATE-----
`
export const mock_csca_sha256_rsa_4096 = `-----BEGIN CERTIFICATE-----
MIIFpzCCA4+gAwIBAgIUVGoAk38qsh7YYIE2eANMIeZkr+IwDQYJKoZIhvcNAQEL
BQAwYzELMAkGA1UEBhMCWFgxEjAQBgNVBAgMCU1vY2tTdGF0ZTERMA8GA1UEBwwI
TW9ja0NpdHkxGTAXBgNVBAoMEE1vY2tPcmdhbml6YXRpb24xEjAQBgNVBAMMCW1v
Y2tfY3NjYTAeFw0yNDA2MTgxOTA4MzJaFw0yNTA2MTgxOTA4MzJaMGMxCzAJBgNV
BAYTAlhYMRIwEAYDVQQIDAlNb2NrU3RhdGUxETAPBgNVBAcMCE1vY2tDaXR5MRkw
FwYDVQQKDBBNb2NrT3JnYW5pemF0aW9uMRIwEAYDVQQDDAltb2NrX2NzY2EwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDE0JWh/kOzueMgFHwqLHYabpx4
T0OV58DPuJObuMIKugw8/5l1VLg/Zq2II8/FoATn0Is3JYOidHnFskgkKjW89gxv
RYRlYFPcvRfAxy+3+AO2f3xCnavkNTUI3Jl9q3jBz05SqHgM1cHiYr61ZX5sA980
OveugRWBbT1mEUNhXTnegfPI9K3b+6YL0QXUePXGpRD9f5lTiCoE/mW8wGkieBYx
QEEskwVpV3cvqwoLCkbdZkRZmIsYE6u7HeAPw2p/yAK6DhqY/vH3svj3LpWvdzBi
Av1wBuuZ6IDgoB0tbgCPOUuc+btezBKhmZXDau0UZc9Y3ND+bMCQEWieXSwCWFYg
y41/onaCaLdT+kcvwdOENNVNvHpaYVDnZGWdt8A95w/dl4Dl19wcL3KkqxoFGB8e
wG+/SDnYTuuGWY3zaROJQ3KYlCqNi3+OuzZTBiJTujaL3Eb/+7Smhy/qtdd6bVUg
mpf3fdBHw+jjl2st+n1rfIYY8rYY7HGrJdome9jXS8pCNfnptp+J8urzgXfEXGFM
qHwMKu/vtfiBt4a1+GC/i2ssaXRcGABiI4xG4BQYXT+4U3p0pAA7cDNH5jN0Wny7
J5DuEyXzcrRQVFD9hiFmDJfAsc35UwHKpayu9F7JJC4EfWVdahgA9VLhxVIE+eTi
HPRHFyMaVaeqmjrBLQIDAQABo1MwUTAdBgNVHQ4EFgQUVGhgTF0HCJvSxKtE0BvV
tQNMt0cwHwYDVR0jBBgwFoAUVGhgTF0HCJvSxKtE0BvVtQNMt0cwDwYDVR0TAQH/
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAtyt8sirr9jc8i5xEnpV3YM6m0poY
bl2S5hDu+xmMRnl8r3lv3v1KE2XrZD0cldV8plYz6oXfWBkCj3j6RUbsNx8w1q27
Qsb2NC1KZljYG+kHavIIdJty9FOknhgYSYW+UKixSHPuAS+iJxEmGBN8GxhMPpzM
KRzWbpQuPZuBgyKRSeR5ytGqyZrEje9zhkdSg/aFYn3EzLw93CfzrDLrKmXc/dra
vEDyP34ts0Cy7UadCGkJN/SPuZpvF9Fy5f7l8ymHE319ipNZHIMhw50h0l/Puzjd
vn3iHWtwpFw5r+nJTr5zO+3yL4dPcp8XfX3Daa5nDfCJ7dd1wSOf+/1cvBLB5aKc
kyZ/ppvTc3oJAmFHAD2NXf15CUWE18Te/Vy9X2qI8LkFtea6GDF4VBewT2PATg12
r03xZWa6KFVbgTIq3GUvtZ8UHm+cluTFKX90rFtbzFo658mxQGw5RnE2zp340NzP
v9tNSlP4Tyzr2b1VoQcgmpQ987afINJG39lq2OsSrlK87p9bB4yoFSZwOfqok0nM
IICRxBuTUHLqP3Nhvo+tAl+iK848LDJVf87ZVQHl72JX4lkVvOo5LCXnOQPyowaP
D++J2c6tUj6gs9HAKVX7fH06m/2T5fJHae/OYx36O242yBXPQdHx6qloF/DNvGyM
EHC3NCCjLG5m6G0=
-----END CERTIFICATE-----
`

View File

@@ -1,10 +1,11 @@
import { sha1Pad, sha256Pad } from "./shaPad";
import * as forge from "node-forge";
import { splitToWords } from "./utils";
import { CSCA_AKI_MODULUS, CSCA_TREE_DEPTH, PUBKEY_TREE_DEPTH } from "../constants/constants";
import { CSCA_AKI_MODULUS, CSCA_TREE_DEPTH, MODAL_SERVER_ADDRESS, PUBKEY_TREE_DEPTH } from "../constants/constants";
import { poseidon1, poseidon16, poseidon2, poseidon3, poseidon4 } from "poseidon-lite";
import { IMT } from "@zk-kit/imt";
import serialized_csca_tree from "../../pubkeys/serialized_csca_tree.json"
import { castCSCAProof } from "./types";
export function findStartIndex(modulus: string, messagePadded: Uint8Array): number {
@@ -206,3 +207,4 @@ export function getCSCAModulusProof(leaf, n, k) {
}

View File

@@ -7,37 +7,37 @@ export const mockPassportData_sha256WithRSAEncryption_65537 = {
"exponent": "65537"
},
"dataGroupHashes": [
-52,
-92,
-119,
-8,
3,
-27,
62,
-97,
31,
-29,
113,
11,
73,
13,
-123,
39,
-100,
-81,
-123,
24,
65,
-31,
-59,
-101,
-13,
-34,
-49,
45,
77,
82,
2,
-125,
-22,
-69,
1,
116,
119,
-60,
-92,
-53,
-72,
-24,
-60,
3,
126,
-25,
4,
-1,
-47,
47,
40,
-85,
44,
126,
-128,
74,
-69,
53,
51,
-122,
-6,
-80,
-33,
31,
@@ -336,296 +336,296 @@ export const mockPassportData_sha256WithRSAEncryption_65537 = {
34,
4,
32,
82,
37,
85,
108,
-122,
103,
-49,
-10,
-119,
80,
-62,
-7,
40,
-76,
-3,
51,
-81,
58,
60,
-97,
-70,
-118,
-86,
-16,
-94,
-16,
-28,
-28,
24,
43,
126,
-57,
99,
55,
-6,
-53,
-92,
-60,
16,
98,
88,
6,
59
-88,
126,
0,
-37,
12,
-44,
-125,
-2,
18,
-123,
-17,
-23,
71,
120,
-5,
32,
70,
-4,
-27
],
"encryptedDigest": [
64,
21,
191,
83,
67,
159,
136,
29,
40,
85,
113,
187,
241,
12,
36,
106,
186,
122,
114,
235,
135,
128,
188,
59,
108,
175,
170,
72,
22,
177,
134,
149,
22,
15,
245,
101,
128,
18,
226,
144,
48,
93,
199,
117,
121,
0,
2,
30,
96,
129,
85,
114,
218,
22,
198,
115,
180,
129,
15,
220,
102,
73,
24,
17,
37,
246,
166,
135,
123,
84,
56,
159,
26,
125,
154,
47,
25,
220,
142,
55,
27,
147,
8,
37,
9,
225,
26,
104,
100,
13,
240,
28,
154,
228,
97,
234,
108,
31,
64,
177,
38,
21,
196,
127,
90,
166,
163,
141,
250,
114,
199,
132,
202,
229,
237,
102,
85,
98,
103,
183,
69,
94,
233,
41,
171,
235,
121,
183,
179,
251,
229,
28,
137,
167,
78,
121,
81,
23,
205,
165,
241,
255,
123,
60,
196,
218,
116,
125,
50,
59,
82,
117,
9,
186,
76,
20,
91,
170,
224,
74,
102,
175,
170,
119,
88,
54,
55,
202,
127,
134,
52,
10,
126,
105,
108,
102,
5,
186,
210,
233,
5,
26,
42,
225,
142,
180,
220,
46,
10,
133,
54,
135,
210,
218,
232,
144,
72,
160,
237,
119,
249,
115,
116,
19,
167,
42,
252,
125,
245,
165,
130,
129,
224,
91,
208,
253,
97,
149,
139,
1,
208,
41,
140,
34,
31,
153,
144,
193,
215,
204,
115,
246,
85,
242,
137,
55,
22,
95,
28,
163,
16,
254,
176,
19,
142,
248,
7,
146,
81,
180,
36,
87,
230,
103,
145,
143,
226,
133,
105,
10,
164,
30,
135,
61,
175,
5,
179,
119,
56,
42,
145,
111,
1,
57,
158,
176,
216,
174,
38,
91,
244,
126,
112,
255,
165,
188,
14,
98,
51,
74,
23,
33,
138,
88,
182,
178,
114,
21,
26,
193,
10,
11,
190,
46,
88,
111,
126,
250,
93,
70,
51,
240,
94,
23,
168,
153,
118,
51,
103,
88,
15,
216,
171,
134,
160,
35,
242,
62,
151,
213,
203,
138,
165,
64,
118,
153,
249,
102,
183,
30,
91,
43,
33,
152,
252,
222,
62,
252,
16,
3,
99,
157,
145,
140,
18,
46,
223,
47,
208,
48,
84,
214,
36,
255,
162,
107,
109,
190,
137,
182,
164,
163,
197,
119,
190,
120,
226,
42,
9,
73,
65,
60,
14,
213,
101,
6,
31,
142,
209,
7,
209,
101,
203,
254,
95,
241,
52,
57,
59,
20,
6,
82,
35,
118,
222,
135,
120,
54,
69,
122,
19,
185,
110,
225,
130,
207,
108,
122,
168,
50,
222,
75,
198,
18,
204,
27,
219,
79,
97,
134,
164,
170,
206,
9,
227,
121,
130,
211,
145,
184,
119,
128,
15,
114,
44,
242,
52,
136,
113,
221,
6
17,
145,
113,
95,
213,
210,
238,
137,
189,
103,
62,
86,
141,
53,
182,
22,
238,
77,
79,
237,
147,
51,
249,
230,
158,
152,
29,
219,
234,
170,
102,
152,
245,
96,
76,
28,
103,
254,
115,
141,
135,
173,
148,
77,
236,
89,
173,
213,
69,
87,
204,
162,
56
],
"photoBase64": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABjElEQVR42mL8//8/AyUYiBQYmIw3..."
};