@pagopa/io-react-native-wallet 2.0.0-next.8 → 2.0.0-next.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js +142 -86
- package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js +142 -86
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
- package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/credential/issuance/07-verify-and-parse-credential.ts +140 -43
@@ -17,15 +17,96 @@ var _converter = require("../../mdoc/converter");
|
|
17
17
|
|
18
18
|
// handy alias
|
19
19
|
|
20
|
-
|
20
|
+
// The data used to create localized names
|
21
|
+
|
22
|
+
// The resulting object of localized names { en: "Name", it: "Nome" }
|
23
|
+
|
24
|
+
// The core structure being built: a node containing the actual value and its localized names
|
25
|
+
|
26
|
+
// A path can consist of object keys, array indices, or null for mapping
|
27
|
+
|
28
|
+
// A union of all possible shapes. It can be a custom PropertyNode or a standard object/array structure
|
29
|
+
|
30
|
+
// Helper to build localized names from the display data.
|
31
|
+
const buildName = display => display.reduce((names, _ref) => {
|
32
|
+
let {
|
33
|
+
locale,
|
34
|
+
name
|
35
|
+
} = _ref;
|
36
|
+
return {
|
37
|
+
...names,
|
38
|
+
[locale]: name
|
39
|
+
};
|
40
|
+
}, {});
|
41
|
+
|
42
|
+
/**
|
43
|
+
* Recursively constructs a nested object with descriptive properties from a path.
|
44
|
+
*
|
45
|
+
* @param currentObject - The object or array being built upon.
|
46
|
+
* @param path - The path segments to follow.
|
47
|
+
* @param sourceValue - The raw value to place at the end of the path.
|
48
|
+
* @param displayData - The data for generating localized names.
|
49
|
+
* @returns The new object or array structure.
|
50
|
+
*/
|
51
|
+
const createNestedProperty = (currentObject, path, sourceValue, displayData) => {
|
52
|
+
const [key, ...rest] = path;
|
53
|
+
|
54
|
+
// Case 1: Map over an array (key is null)
|
55
|
+
if (key === null) {
|
56
|
+
if (!Array.isArray(sourceValue)) return currentObject;
|
57
|
+
|
58
|
+
// We assert the type here because we know this branch handles PropertyNodes
|
59
|
+
const node = currentObject;
|
60
|
+
const existingValue = Array.isArray(node.value) ? node.value : [];
|
61
|
+
const mappedArray = sourceValue.map((item, idx) => createNestedProperty(existingValue[idx] || {}, rest, item, displayData));
|
62
|
+
return {
|
63
|
+
...node,
|
64
|
+
value: mappedArray,
|
65
|
+
name: node.name ?? buildName(displayData)
|
66
|
+
};
|
67
|
+
}
|
68
|
+
|
69
|
+
// Case 2: Handle an object key (key is a string)
|
70
|
+
if (typeof key === "string") {
|
71
|
+
const nextSourceValue = typeof sourceValue === "object" && sourceValue !== null && !Array.isArray(sourceValue) && key in sourceValue ? sourceValue[key] : sourceValue;
|
72
|
+
|
73
|
+
// base case
|
74
|
+
if (rest.length === 0) {
|
75
|
+
return {
|
76
|
+
...currentObject,
|
77
|
+
[key]: {
|
78
|
+
value: nextSourceValue,
|
79
|
+
name: buildName(displayData)
|
80
|
+
}
|
81
|
+
};
|
82
|
+
}
|
83
|
+
|
84
|
+
// recursive step
|
85
|
+
const nextObject = currentObject[key] || {};
|
86
|
+
return {
|
87
|
+
...currentObject,
|
88
|
+
[key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData)
|
89
|
+
};
|
90
|
+
}
|
91
|
+
|
92
|
+
// Case 3: Handle a specific array index (key is a number)
|
93
|
+
if (typeof key === "number") {
|
94
|
+
const newArray = Array.isArray(currentObject) ? [...currentObject] : [];
|
95
|
+
const nextValue = Array.isArray(sourceValue) ? sourceValue[key] : undefined;
|
96
|
+
newArray[key] = createNestedProperty(newArray[key] || {}, rest, nextValue, displayData);
|
97
|
+
return newArray;
|
98
|
+
}
|
99
|
+
return currentObject;
|
100
|
+
};
|
101
|
+
const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
21
102
|
let {
|
22
103
|
sdJwt,
|
23
104
|
disclosures
|
24
|
-
} =
|
105
|
+
} = _ref2;
|
25
106
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
26
107
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
27
108
|
if (credentialConfig.format !== sdJwt.header.typ) {
|
28
|
-
const message = `Received credential is of an
|
109
|
+
const message = `Received credential is of an unknown type. Expected one of [${credentialConfig.format}], received '${sdJwt.header.typ}'`;
|
29
110
|
_logging.Logger.log(_logging.LogLevel.ERROR, message);
|
30
111
|
throw new _errors.IoWalletError(message);
|
31
112
|
}
|
@@ -36,64 +117,39 @@ const parseCredentialSdJwt = function (credentialConfig, _ref) {
|
|
36
117
|
|
37
118
|
const attrDefinitions = credentialConfig.claims;
|
38
119
|
|
39
|
-
//
|
40
|
-
const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(
|
41
|
-
let [, name] =
|
120
|
+
// Validate that all attributes from the config exist in the disclosures
|
121
|
+
const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(_ref3 => {
|
122
|
+
let [, name] = _ref3;
|
42
123
|
return name === definition.path[0];
|
43
|
-
})
|
44
|
-
)
|
45
|
-
|
46
|
-
if (attrsNotInDisclosures.length > 0) {
|
124
|
+
}));
|
125
|
+
if (attrsNotInDisclosures.length > 0 && !ignoreMissingAttributes) {
|
47
126
|
const missing = attrsNotInDisclosures.map(_ => _.path[0]).join(", ");
|
48
|
-
const received = disclosures.map(_ => _[1
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
throw new _errors.IoWalletError(message);
|
53
|
-
}
|
127
|
+
const received = disclosures.map(_ => _[1]).join(", ");
|
128
|
+
const message = `Some attributes are missing in the credential. Missing: [${missing}], received: [${received}]`;
|
129
|
+
_logging.Logger.log(_logging.LogLevel.ERROR, message);
|
130
|
+
throw new _errors.IoWalletError(message);
|
54
131
|
}
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
.map(_ref3 => {
|
132
|
+
const definedValues = {};
|
133
|
+
for (const {
|
134
|
+
path,
|
135
|
+
display
|
136
|
+
} of attrDefinitions) {
|
61
137
|
var _disclosures$find;
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
// example: { "it-IT": "Nome", "en-EN": "Name", "es-ES": "Nombre" }
|
73
|
-
.map(_ref4 => {
|
74
|
-
let [attrKey, {
|
75
|
-
display,
|
76
|
-
...definition
|
77
|
-
}] = _ref4;
|
78
|
-
return [attrKey, {
|
79
|
-
...definition,
|
80
|
-
name: display.reduce((names, _ref5) => {
|
81
|
-
let {
|
82
|
-
locale,
|
83
|
-
name
|
84
|
-
} = _ref5;
|
85
|
-
return {
|
86
|
-
...names,
|
87
|
-
[locale]: name
|
88
|
-
};
|
89
|
-
}, {})
|
90
|
-
}];
|
91
|
-
}));
|
138
|
+
const attrKey = path[0];
|
139
|
+
const disclosureValue = (_disclosures$find = disclosures.find(_ref4 => {
|
140
|
+
let [, name] = _ref4;
|
141
|
+
return name === attrKey;
|
142
|
+
})) === null || _disclosures$find === void 0 ? void 0 : _disclosures$find[2];
|
143
|
+
if (disclosureValue !== undefined) {
|
144
|
+
const enriched = createNestedProperty(definedValues, path, disclosureValue, display);
|
145
|
+
Object.assign(definedValues, enriched);
|
146
|
+
}
|
147
|
+
}
|
92
148
|
if (includeUndefinedAttributes) {
|
93
149
|
// attributes that are in the disclosure set
|
94
150
|
// but are not defined in the issuer configuration
|
95
|
-
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(
|
96
|
-
let [, key, value] =
|
151
|
+
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(_ref5 => {
|
152
|
+
let [, key, value] = _ref5;
|
97
153
|
return [key, {
|
98
154
|
value,
|
99
155
|
name: key
|
@@ -106,10 +162,10 @@ const parseCredentialSdJwt = function (credentialConfig, _ref) {
|
|
106
162
|
}
|
107
163
|
return definedValues;
|
108
164
|
};
|
109
|
-
const parseCredentialMDoc = function (credentialConfig,
|
165
|
+
const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
110
166
|
let {
|
111
167
|
issuerSigned
|
112
|
-
} =
|
168
|
+
} = _ref6;
|
113
169
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
114
170
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
115
171
|
if (!credentialConfig) {
|
@@ -118,37 +174,37 @@ const parseCredentialMDoc = function (credentialConfig, _ref7) {
|
|
118
174
|
if (!credentialConfig.claims) {
|
119
175
|
throw new _errors.IoWalletError("Missing claims in the credential subject");
|
120
176
|
}
|
121
|
-
const attrDefinitions = credentialConfig.claims.map(
|
177
|
+
const attrDefinitions = credentialConfig.claims.map(_ref7 => {
|
122
178
|
let {
|
123
179
|
path: [namespace, attribute],
|
124
180
|
display
|
125
|
-
} =
|
181
|
+
} = _ref7;
|
126
182
|
return [namespace, attribute, display];
|
127
183
|
});
|
128
184
|
if (!issuerSigned.nameSpaces) {
|
129
185
|
throw new _errors.IoWalletError("Missing claims in the credential");
|
130
186
|
}
|
131
|
-
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(
|
132
|
-
let [namespace, values] =
|
187
|
+
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(_ref8 => {
|
188
|
+
let [namespace, values] = _ref8;
|
133
189
|
return values.map(v => [namespace, v.elementIdentifier, v.elementValue]);
|
134
190
|
});
|
135
191
|
|
136
192
|
// Check that all mandatory attributes defined in the issuer configuration are present in the disclosure set
|
137
193
|
// and filter the non present ones
|
138
|
-
const attrsNotInDisclosures = attrDefinitions.filter(
|
139
|
-
let [attrDefNamespace, attrKey] =
|
140
|
-
return !flatNamespaces.some(
|
141
|
-
let [namespace, claim] =
|
194
|
+
const attrsNotInDisclosures = attrDefinitions.filter(_ref9 => {
|
195
|
+
let [attrDefNamespace, attrKey] = _ref9;
|
196
|
+
return !flatNamespaces.some(_ref10 => {
|
197
|
+
let [namespace, claim] = _ref10;
|
142
198
|
return attrDefNamespace === namespace && attrKey === claim;
|
143
199
|
});
|
144
200
|
});
|
145
201
|
if (attrsNotInDisclosures.length > 0) {
|
146
|
-
const missing = attrsNotInDisclosures.map(
|
147
|
-
let [, attrKey] =
|
202
|
+
const missing = attrsNotInDisclosures.map(_ref11 => {
|
203
|
+
let [, attrKey] = _ref11;
|
148
204
|
return attrKey;
|
149
205
|
}).join(", ");
|
150
|
-
const received = flatNamespaces.map(
|
151
|
-
let [, attrKey] =
|
206
|
+
const received = flatNamespaces.map(_ref12 => {
|
207
|
+
let [, attrKey] = _ref12;
|
152
208
|
return attrKey;
|
153
209
|
}).join(", ");
|
154
210
|
if (!ignoreMissingAttributes) {
|
@@ -159,38 +215,38 @@ const parseCredentialMDoc = function (credentialConfig, _ref7) {
|
|
159
215
|
// Attributes defined in the issuer configuration and present in the disclosure set
|
160
216
|
const definedValues = attrDefinitions
|
161
217
|
// Retrieve the value from the corresponding disclosure
|
162
|
-
.map(
|
218
|
+
.map(_ref13 => {
|
163
219
|
var _flatNamespaces$find;
|
164
|
-
let [attrDefNamespace, attrKey, display] =
|
220
|
+
let [attrDefNamespace, attrKey, display] = _ref13;
|
165
221
|
return [attrDefNamespace, attrKey, {
|
166
222
|
display,
|
167
|
-
value: (_flatNamespaces$find = flatNamespaces.find(
|
168
|
-
let [namespace, name] =
|
223
|
+
value: (_flatNamespaces$find = flatNamespaces.find(_ref14 => {
|
224
|
+
let [namespace, name] = _ref14;
|
169
225
|
return attrDefNamespace === namespace && name === attrKey;
|
170
226
|
})) === null || _flatNamespaces$find === void 0 ? void 0 : _flatNamespaces$find[2]
|
171
227
|
}];
|
172
228
|
})
|
173
229
|
//filter the not found elements
|
174
|
-
.filter(
|
175
|
-
let [_, __, definition] =
|
230
|
+
.filter(_ref15 => {
|
231
|
+
let [_, __, definition] = _ref15;
|
176
232
|
return definition.value !== undefined;
|
177
233
|
})
|
178
234
|
// Add a human-readable attribute name, with i18n, in the form { locale: name }
|
179
235
|
// Example: { "it-IT": "Nome", "en-EN": "Name", "es-ES": "Nombre" }
|
180
|
-
.reduce((acc,
|
236
|
+
.reduce((acc, _ref16) => {
|
181
237
|
let [attrDefNamespace, attrKey, {
|
182
238
|
display,
|
183
239
|
value
|
184
|
-
}] =
|
240
|
+
}] = _ref16;
|
185
241
|
return {
|
186
242
|
...acc,
|
187
243
|
[(0, _utils.getParsedCredentialClaimKey)(attrDefNamespace, attrKey)]: {
|
188
244
|
value,
|
189
|
-
name: display.reduce((names,
|
245
|
+
name: display.reduce((names, _ref17) => {
|
190
246
|
let {
|
191
247
|
locale,
|
192
248
|
name
|
193
|
-
} =
|
249
|
+
} = _ref17;
|
194
250
|
return {
|
195
251
|
...names,
|
196
252
|
[locale]: name
|
@@ -200,11 +256,11 @@ const parseCredentialMDoc = function (credentialConfig, _ref7) {
|
|
200
256
|
};
|
201
257
|
}, {});
|
202
258
|
if (includeUndefinedAttributes) {
|
203
|
-
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(
|
204
|
-
let [namespace, key] =
|
259
|
+
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(_ref18 => {
|
260
|
+
let [namespace, key] = _ref18;
|
205
261
|
return !definedValues[(0, _utils.getParsedCredentialClaimKey)(namespace, key)];
|
206
|
-
}).map(
|
207
|
-
let [namespace, key, value] =
|
262
|
+
}).map(_ref19 => {
|
263
|
+
let [namespace, key, value] = _ref19;
|
208
264
|
return [(0, _utils.getParsedCredentialClaimKey)(namespace, key), {
|
209
265
|
value,
|
210
266
|
name: key
|
@@ -274,12 +330,12 @@ async function verifyCredentialMDoc(rawCredential, x509CertRoot, holderBindingCo
|
|
274
330
|
}
|
275
331
|
return decodedCredential;
|
276
332
|
}
|
277
|
-
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId,
|
333
|
+
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId, _ref20) => {
|
278
334
|
let {
|
279
335
|
credentialCryptoContext,
|
280
336
|
ignoreMissingAttributes,
|
281
337
|
includeUndefinedAttributes
|
282
|
-
} =
|
338
|
+
} = _ref20;
|
283
339
|
const decoded = await verifyCredentialSdJwt(credential, issuerConf.openid_credential_issuer.jwks.keys, credentialCryptoContext);
|
284
340
|
_logging.Logger.log(_logging.LogLevel.DEBUG, `Decoded credential: ${JSON.stringify(decoded)}`);
|
285
341
|
const credentialConfig = issuerConf.openid_credential_issuer.credential_configurations_supported[credentialConfigurationId];
|
@@ -296,12 +352,12 @@ const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialC
|
|
296
352
|
issuedAt: typeof maybeIssuedAt === "number" ? new Date(maybeIssuedAt * 1000) : undefined
|
297
353
|
};
|
298
354
|
};
|
299
|
-
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId,
|
355
|
+
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId, _ref21, x509CertRoot) => {
|
300
356
|
var _parsedCredential$get, _parsedCredential$get2;
|
301
357
|
let {
|
302
358
|
credentialCryptoContext,
|
303
359
|
ignoreMissingAttributes
|
304
|
-
} =
|
360
|
+
} = _ref21;
|
305
361
|
if (!x509CertRoot) {
|
306
362
|
throw new _errors.IoWalletError("Missing x509CertRoot");
|
307
363
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_errors","require","_sdJwt","_converters","_jwk","_mdoc","_const","_utils","_logging","_converter","parseCredentialSdJwt","credentialConfig","_ref","sdJwt","disclosures","ignoreMissingAttributes","arguments","length","undefined","includeUndefinedAttributes","format","header","typ","message","Logger","log","LogLevel","ERROR","IoWalletError","claims","attrDefinitions","attrsNotInDisclosures","filter","definition","some","_ref2","name","path","missing","map","_","join","received","definedValues","Object","fromEntries","_ref3","_disclosures$find","value","find","_ref4","attrKey","display","reduce","names","_ref5","locale","undefinedValues","keys","includes","_ref6","key","parseCredentialMDoc","_ref7","issuerSigned","_ref8","namespace","attribute","nameSpaces","flatNamespaces","entries","flatMap","_ref9","values","v","elementIdentifier","elementValue","_ref10","attrDefNamespace","_ref11","claim","_ref12","_ref13","_ref14","_flatNamespaces$find","_ref15","_ref16","__","acc","_ref17","getParsedCredentialClaimKey","_ref18","_ref19","_ref20","verifyCredentialSdJwt","rawCredential","issuerKeys","holderBindingContext","decodedCredential","holderBindingKey","Promise","all","verifySdJwt","SdJwt4VC","getPublicKey","cnf","payload","isSameThumbprint","jwk","kid","verifyCredentialMDoc","x509CertRoot","verifyMdoc","issuerAuth","deviceKeyInfo","deviceKey","verifyAndParseCredentialSdJwt","issuerConf","credential","credentialConfigurationId","_ref21","credentialCryptoContext","decoded","openid_credential_issuer","jwks","DEBUG","JSON","stringify","credential_configurations_supported","parsedCredential","maybeIssuedAt","getValueFromDisclosures","expiration","Date","exp","issuedAt","verifyAndParseCredentialMDoc","_ref22","_parsedCredential$get","_parsedCredential$get2","expirationDate","extractElementValueAsDate","MDOC_DEFAULT_NAMESPACE","setDate","getDate","verifyAndParseCredential","context","_issuerConf$openid_cr","exports"],"sourceRoot":"../../../../src","sources":["credential/issuance/07-verify-and-parse-credential.ts"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,IAAA,GAAAH,OAAA;AAEA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AACA,IAAAQ,UAAA,GAAAR,OAAA;AAkCA;;AAeA;;AAKA,MAAMS,oBAAoB,GAAG,SAAAA,CAE3BC,gBAAgC,EAAAC,IAAA,EAIX;EAAA,IAHrB;IAAEC,KAAK;IAAEC;EAAoC,CAAC,GAAAF,IAAA;EAAA,IAC9CG,uBAAgC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACxCG,0BAAmC,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAE3C,IAAIL,gBAAgB,CAACS,MAAM,KAAKP,KAAK,CAACQ,MAAM,CAACC,GAAG,EAAE;IAChD,MAAMC,OAAO,GAAI,gEAA+DZ,gBAAgB,CAACS,MAAO,gBAAeP,KAAK,CAACQ,MAAM,CAACC,GAAI,GAAE;IAC1IE,eAAM,CAACC,GAAG,CAACC,iBAAQ,CAACC,KAAK,EAAEJ,OAAO,CAAC;IACnC,MAAM,IAAIK,qBAAa,CAACL,OAAO,CAAC;EAClC;EAEA,IAAI,CAACZ,gBAAgB,CAACkB,MAAM,EAAE;IAC5BL,eAAM,CAACC,GAAG,CAACC,iBAAQ,CAACC,KAAK,EAAE,0CAA0C,CAAC;IACtE,MAAM,IAAIC,qBAAa,CAAC,0CAA0C,CAAC,CAAC,CAAC;EACvE;;EACA,MAAME,eAAe,GAAGnB,gBAAgB,CAACkB,MAAM;;EAE/C;EACA,MAAME,qBAAqB,GAAGD,eAAe,CAACE,MAAM,CACjDC,UAAU,IAAK,CAACnB,WAAW,CAACoB,IAAI,CAACC,KAAA;IAAA,IAAC,GAAGC,IAAI,CAAC,GAAAD,KAAA;IAAA,OAAKC,IAAI,KAAKH,UAAU,CAACI,IAAI,CAAC,CAAC,CAAC;EAAA,EAAC,CAAC;EAC/E,CAAC;;EACD,IAAIN,qBAAqB,CAACd,MAAM,GAAG,CAAC,EAAE;IACpC,MAAMqB,OAAO,GAAGP,qBAAqB,CAACQ,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACH,IAAI,CAAC,CAAC,CAAC,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;IACtE,MAAMC,QAAQ,GAAG5B,WAAW,CAACyB,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACnE,IAAI,CAAC1B,uBAAuB,EAAE;MAC5B,MAAMQ,OAAO,GAAI,4DAA2De,OAAQ,iBAAgBI,QAAS,GAAE;MAC/GlB,eAAM,CAACC,GAAG,CAACC,iBAAQ,CAACC,KAAK,EAAEJ,OAAO,CAAC;MACnC,MAAM,IAAIK,qBAAa,CAACL,OAAO,CAAC;IAClC;EACF;;EAEA;EACA;EACA,MAAMoB,aAAa,GAAGC,MAAM,CAACC,WAAW,CACtCf;EACE;EAAA,CACCS,GAAG,CACFO,KAAA;IAAA,IAAAC,iBAAA;IAAA,IAAC;MAAEV,IAAI;MAAE,GAAGJ;IAAW,CAAC,GAAAa,KAAA;IAAA,OACtB,CACET,IAAI,CAAC,CAAC,CAAC,EACP;MACE,GAAGJ,UAAU;MACbe,KAAK,GAAAD,iBAAA,GAAEjC,WAAW,CAACmC,IAAI,CACpBT,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,WAAW,KAAKH,IAAI,CAAC,CAAC,CACnC,CAAC,cAAAU,iBAAA,uBAFMA,iBAAA,CAEH,CAAC,CAAC;IACR,CAAC,CACF;EAAA,CACL;EACA;EACA;EAAA,CACCR,GAAG,CACFW,KAAA;IAAA,IAAC,CAACC,OAAO,EAAE;MAAEC,OAAO;MAAE,GAAGnB;IAAW,CAAC,CAAC,GAAAiB,KAAA;IAAA,OACpC,CACEC,OAAO,EACP;MACE,GAAGlB,UAAU;MACbG,IAAI,EAAEgB,OAAO,CAACC,MAAM,CAClB,CAACC,KAAK,EAAAC,KAAA;QAAA,IAAE;UAAEC,MAAM;UAAEpB;QAAK,CAAC,GAAAmB,KAAA;QAAA,OAAM;UAAE,GAAGD,KAAK;UAAE,CAACE,MAAM,GAAGpB;QAAK,CAAC;MAAA,CAAC,EAC3D,CAAC,CACH;IACF,CAAC,CACF;EAAA,CACL,CACJ,CAAC;EAED,IAAIjB,0BAA0B,EAAE;IAC9B;IACA;IACA,MAAMsC,eAAe,GAAGb,MAAM,CAACC,WAAW,CACxC/B,WAAW,CACRkB,MAAM,CAAEQ,CAAC,IAAK,CAACI,MAAM,CAACc,IAAI,CAACf,aAAa,CAAC,CAACgB,QAAQ,CAACnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzDD,GAAG,CAACqB,KAAA;MAAA,IAAC,GAAGC,GAAG,EAAEb,KAAK,CAAC,GAAAY,KAAA;MAAA,OAAK,CAACC,GAAG,EAAE;QAAEb,KAAK;QAAEZ,IAAI,EAAEyB;MAAI,CAAC,CAAC;IAAA,EACxD,CAAC;IACD,OAAO;MACL,GAAGlB,aAAa;MAChB,GAAGc;IACL,CAAC;EACH;EAEA,OAAOd,aAAa;AACtB,CAAC;AACD,MAAMmB,mBAAmB,GAAG,SAAAA,CAE1BnD,gBAAgC,EAAAoD,KAAA,EAKX;EAAA,IAHrB;IAAEC;EAAoC,CAAC,GAAAD,KAAA;EAAA,IACvChD,uBAAgC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACxCG,0BAAmC,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAE3C,IAAI,CAACL,gBAAgB,EAAE;IACrB,MAAM,IAAIiB,qBAAa,CAAC,6CAA6C,CAAC;EACxE;EAEA,IAAI,CAACjB,gBAAgB,CAACkB,MAAM,EAAE;IAC5B,MAAM,IAAID,qBAAa,CAAC,0CAA0C,CAAC;EACrE;EAEA,MAAME,eAAe,GAAGnB,gBAAgB,CAACkB,MAAM,CAACU,GAAG,CAEjD0B,KAAA;IAAA,IAAC;MAAE5B,IAAI,EAAE,CAAC6B,SAAS,EAAEC,SAAS,CAAC;MAAEf;IAAQ,CAAC,GAAAa,KAAA;IAAA,OAAK,CAC/CC,SAAS,EACTC,SAAS,EACTf,OAAO,CACR;EAAA,EAAC;EAEF,IAAI,CAACY,YAAY,CAACI,UAAU,EAAE;IAC5B,MAAM,IAAIxC,qBAAa,CAAC,kCAAkC,CAAC;EAC7D;EAEA,MAAMyC,cAAc,GAAGzB,MAAM,CAAC0B,OAAO,CAACN,YAAY,CAACI,UAAU,CAAC,CAACG,OAAO,CACpEC,KAAA;IAAA,IAAC,CAACN,SAAS,EAAEO,MAAM,CAAC,GAAAD,KAAA;IAAA,OAClBC,MAAM,CAAClC,GAAG,CAA4BmC,CAAC,IAAK,CAC1CR,SAAS,EACTQ,CAAC,CAACC,iBAAiB,EACnBD,CAAC,CAACE,YAAY,CACf,CAAC;EAAA,CACN,CAAC;;EAED;EACA;EACA,MAAM7C,qBAAqB,GAAGD,eAAe,CAACE,MAAM,CAClD6C,MAAA;IAAA,IAAC,CAACC,gBAAgB,EAAE3B,OAAO,CAAC,GAAA0B,MAAA;IAAA,OAC1B,CAACR,cAAc,CAACnC,IAAI,CAClB6C,MAAA;MAAA,IAAC,CAACb,SAAS,EAAEc,KAAK,CAAC,GAAAD,MAAA;MAAA,OACjBD,gBAAgB,KAAKZ,SAAS,IAAIf,OAAO,KAAK6B,KAAK;IAAA,CACvD,CAAC;EAAA,CACL,CAAC;EAED,IAAIjD,qBAAqB,CAACd,MAAM,GAAG,CAAC,EAAE;IACpC,MAAMqB,OAAO,GAAGP,qBAAqB,CAClCQ,GAAG,CAAC0C,MAAA;MAAA,IAAC,GAAG9B,OAAO,CAAC,GAAA8B,MAAA;MAAA,OAAK9B,OAAO;IAAA,EAAC,CAC7BV,IAAI,CAAC,IAAI,CAAC;IACb,MAAMC,QAAQ,GAAG2B,cAAc,CAAC9B,GAAG,CAAC2C,MAAA;MAAA,IAAC,GAAG/B,OAAO,CAAC,GAAA+B,MAAA;MAAA,OAAK/B,OAAO;IAAA,EAAC,CAACV,IAAI,CAAC,IAAI,CAAC;IAExE,IAAI,CAAC1B,uBAAuB,EAAE;MAC5B,MAAM,IAAIa,qBAAa,CACpB,4DAA2DU,OAAQ,iBAAgBI,QAAS,GAC/F,CAAC;IACH;EACF;;EAEA;EACA,MAAMC,aAAa,GAAGb;EACpB;EAAA,CACCS,GAAG,CACF4C,MAAA;IAAA,IAAAC,oBAAA;IAAA,IAAC,CAACN,gBAAgB,EAAE3B,OAAO,EAAEC,OAAO,CAAC,GAAA+B,MAAA;IAAA,OACnC,CACEL,gBAAgB,EAChB3B,OAAO,EACP;MACEC,OAAO;MACPJ,KAAK,GAAAoC,oBAAA,GAAEf,cAAc,CAACpB,IAAI,CACxBoC,MAAA;QAAA,IAAC,CAACnB,SAAS,EAAE9B,IAAI,CAAC,GAAAiD,MAAA;QAAA,OAChBP,gBAAgB,KAAKZ,SAAS,IAAI9B,IAAI,KAAKe,OAAO;MAAA,CACtD,CAAC,cAAAiC,oBAAA,uBAHMA,oBAAA,CAGH,CAAC;IACP,CAAC,CACF;EAAA,CACL;EACA;EAAA,CACCpD,MAAM,CAACsD,MAAA;IAAA,IAAC,CAAC9C,CAAC,EAAE+C,EAAE,EAAEtD,UAAU,CAAC,GAAAqD,MAAA;IAAA,OAAKrD,UAAU,CAACe,KAAK,KAAK9B,SAAS;EAAA;EAC/D;EACA;EAAA,CACCmC,MAAM,CACL,CAACmC,GAAG,EAAAC,MAAA;IAAA,IAAE,CAACX,gBAAgB,EAAE3B,OAAO,EAAE;MAAEC,OAAO;MAAEJ;IAAM,CAAC,CAAC,GAAAyC,MAAA;IAAA,OAAM;MACzD,GAAGD,GAAG;MACN,CAAC,IAAAE,kCAA2B,EAACZ,gBAAgB,EAAE3B,OAAO,CAAC,GAAG;QACxDH,KAAK;QACLZ,IAAI,EAAEgB,OAAO,CAACC,MAAM,CAClB,CAACC,KAAK,EAAAqC,MAAA;UAAA,IAAE;YAAEnC,MAAM;YAAEpB;UAAK,CAAC,GAAAuD,MAAA;UAAA,OAAM;YAC5B,GAAGrC,KAAK;YACR,CAACE,MAAM,GAAGpB;UACZ,CAAC;QAAA,CAAC,EACF,CAAC,CACH;MACF;IACF,CAAC;EAAA,CAAC,EACF,CAAC,CACH,CAAC;EAEH,IAAIjB,0BAA0B,EAAE;IAC9B,MAAMsC,eAAiC,GAAGb,MAAM,CAACC,WAAW,CAC1DD,MAAM,CAAC6B,MAAM,CAACJ,cAAc,CAAC,CAC1BrC,MAAM,CACL4D,MAAA;MAAA,IAAC,CAAC1B,SAAS,EAAEL,GAAG,CAAC,GAAA+B,MAAA;MAAA,OACf,CAACjD,aAAa,CAAC,IAAA+C,kCAA2B,EAACxB,SAAS,EAAEL,GAAG,CAAC,CAAC;IAAA,CAC/D,CAAC,CACAtB,GAAG,CAACsD,MAAA;MAAA,IAAC,CAAC3B,SAAS,EAAEL,GAAG,EAAEb,KAAK,CAAC,GAAA6C,MAAA;MAAA,OAAK,CAChC,IAAAH,kCAA2B,EAACxB,SAAS,EAAEL,GAAG,CAAC,EAC3C;QAAEb,KAAK;QAAEZ,IAAI,EAAEyB;MAAI,CAAC,CACrB;IAAA,EACL,CAAC;IACD,OAAO;MACL,GAAGlB,aAAa;MAChB,GAAGc;IACL,CAAC;EACH;EAEA,OAAOd,aAAa;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAemD,qBAAqBA,CAClCC,aAAqB,EACrBC,UAAiB,EACjBC,oBAAmC,EACF;EACjC,MAAM,CAACC,iBAAiB,EAAEC,gBAAgB,CAAC;EACzC;EACA,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChB,IAAAC,aAAW,EAACP,aAAa,EAAEC,UAAU,EAAEO,eAAQ,CAAC,EAChDN,oBAAoB,CAACO,YAAY,CAAC,CAAC,CACpC,CAAC;EAEJ,MAAM;IAAEC;EAAI,CAAC,GAAGP,iBAAiB,CAACrF,KAAK,CAAC6F,OAAO;EAC/C,IAAI,EAAE,MAAM,IAAAC,qBAAgB,EAACF,GAAG,CAACG,GAAG,EAAET,gBAAuB,CAAC,CAAC,EAAE;IAC/D,MAAM5E,OAAO,GAAI,kDAAiD4E,gBAAgB,CAACU,GAAI,UAASX,iBAAiB,CAACrF,KAAK,CAAC6F,OAAO,CAACD,GAAG,CAACG,GAAG,CAACC,GAAI,EAAC;IAC7IrF,eAAM,CAACC,GAAG,CAACC,iBAAQ,CAACC,KAAK,EAAEJ,OAAO,CAAC;IACnC,MAAM,IAAIK,qBAAa,CAACL,OAAO,CAAC;EAClC;EAEA,OAAO2E,iBAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeY,oBAAoBA,CACjCf,aAAqB,EACrBgB,YAAoB,EACpBd,oBAAmC,EACH;EAChC,MAAM,CAACC,iBAAiB,EAAEC,gBAAgB,CAAC;EACzC;EACA,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChB,IAAAW,YAAU,EAACjB,aAAa,EAAEgB,YAAY,CAAC,EACvCd,oBAAoB,CAACO,YAAY,CAAC,CAAC,CACpC,CAAC;EAEJ,IAAI,CAACN,iBAAiB,EAAE;IACtB,MAAM,IAAItE,qBAAa,CAAC,4BAA4B,CAAC;EACvD;EAEA,MAAMiC,GAAG,GACPqC,iBAAiB,CAAClC,YAAY,CAACiD,UAAU,CAACP,OAAO,CAACQ,aAAa,CAACC,SAAS;EAE3E,IAAI,EAAE,MAAM,IAAAR,qBAAgB,EAAC9C,GAAG,EAAEsC,gBAA6B,CAAC,CAAC,EAAE;IACjE,MAAM,IAAIvE,qBAAa,CACpB,oFACH,CAAC;EACH;EAEA,OAAOsE,iBAAiB;AAC1B;AAEA,MAAMkB,6BAAuD,GAAG,MAAAA,CAC9DC,UAAU,EACVC,UAAU,EACVC,yBAAyB,EAAAC,MAAA,KAMtB;EAAA,IALH;IACEC,uBAAuB;IACvB1G,uBAAuB;IACvBI;EACF,CAAC,GAAAqG,MAAA;EAED,MAAME,OAAO,GAAG,MAAM5B,qBAAqB,CACzCwB,UAAU,EACVD,UAAU,CAACM,wBAAwB,CAACC,IAAI,CAAClE,IAAI,EAC7C+D,uBACF,CAAC;EAEDjG,eAAM,CAACC,GAAG,CAACC,iBAAQ,CAACmG,KAAK,EAAG,uBAAsBC,IAAI,CAACC,SAAS,CAACL,OAAO,CAAE,EAAC,CAAC;EAE5E,MAAM/G,gBAAgB,GACpB0G,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CAC1B;EAEH,IAAI,CAAC5G,gBAAgB,EAAE;IACrBa,eAAM,CAACC,GAAG,CACRC,iBAAQ,CAACC,KAAK,EACb,gDAA+C4F,yBAA0B,EAC5E,CAAC;IACD,MAAM,IAAI3F,qBAAa,CAAC,6CAA6C,CAAC;EACxE;EAEA,MAAMqG,gBAAgB,GAAGvH,oBAAoB,CAC3CC,gBAAgB,EAChB+G,OAAO,EACP3G,uBAAuB,EACvBI,0BACF,CAAC;EACD,MAAM+G,aAAa,GAAG,IAAAC,mCAAuB,EAACT,OAAO,CAAC5G,WAAW,EAAE,KAAK,CAAC;EAEzEU,eAAM,CAACC,GAAG,CACRC,iBAAQ,CAACmG,KAAK,EACb,sBAAqBC,IAAI,CAACC,SAAS,CAACE,gBAAgB,CAAE,gBAAeC,aAAc,EACtF,CAAC;EAED,OAAO;IACLD,gBAAgB;IAChBG,UAAU,EAAE,IAAIC,IAAI,CAACX,OAAO,CAAC7G,KAAK,CAAC6F,OAAO,CAAC4B,GAAG,GAAG,IAAI,CAAC;IACtDC,QAAQ,EACN,OAAOL,aAAa,KAAK,QAAQ,GAC7B,IAAIG,IAAI,CAACH,aAAa,GAAG,IAAI,CAAC,GAC9BhH;EACR,CAAC;AACH,CAAC;AAED,MAAMsH,4BAAsD,GAAG,MAAAA,CAC7DnB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EAAAkB,MAAA,EAEzB1B,YAAY,KACT;EAAA,IAAA2B,qBAAA,EAAAC,sBAAA;EAAA,IAFH;IAAElB,uBAAuB;IAAE1G;EAAwB,CAAC,GAAA0H,MAAA;EAGpD,IAAI,CAAC1B,YAAY,EAAE;IACjB,MAAM,IAAInF,qBAAa,CAAC,sBAAsB,CAAC;EACjD;EAEA,MAAM8F,OAAO,GAAG,MAAMZ,oBAAoB,CACxCQ,UAAU,EACVP,YAAY,EACZU,uBACF,CAAC;EAED,MAAM9G,gBAAgB,GACpB0G,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CACzB;EACJ,MAAMU,gBAAgB,GAAGnE,mBAAmB,CAC1CnD,gBAAgB,EAChB+G,OAAO,EACP3G,uBAAuB,EACvBA,uBACF,CAAC;EAED,MAAM6H,cAAc,GAAG,IAAAC,oCAAyB,EAC9CZ,gBAAgB,aAAhBA,gBAAgB,gBAAAS,qBAAA,GAAhBT,gBAAgB,CACd,IAAAvC,kCAA2B,EAACoD,6BAAsB,EAAE,aAAa,CAAC,CACnE,cAAAJ,qBAAA,uBAFDA,qBAAA,CAEG1F,KACL,CAAC;EACD,IAAI,CAAC4F,cAAc,EAAE;IACnB,MAAM,IAAIhH,qBAAa,CAAE,kCAAiC,CAAC;EAC7D;EACAgH,cAAc,CAACG,OAAO,CAACH,cAAc,CAACI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAEpD,MAAMd,aAAa,GAAG,IAAAW,oCAAyB,EAC7CZ,gBAAgB,aAAhBA,gBAAgB,gBAAAU,sBAAA,GAAhBV,gBAAgB,CACd,IAAAvC,kCAA2B,EAACoD,6BAAsB,EAAE,YAAY,CAAC,CAClE,cAAAH,sBAAA,uBAFDA,sBAAA,CAEG3F,KACL,CAAC;EACDkF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEa,OAAO,CAACb,aAAa,CAACc,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAEnD,OAAO;IACLf,gBAAgB;IAChBX,UAAU;IACVC,yBAAyB;IACzBa,UAAU,EAAEQ,cAAc;IAC1BL,QAAQ,EAAEL,aAAa,IAAIhH;EAC7B,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM+H,wBAAkD,GAAG,MAAAA,CAChE5B,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzB2B,OAAO,EACPnC,YAAY,KACT;EAAA,IAAAoC,qBAAA;EACH,MAAM/H,MAAM,IAAA+H,qBAAA,GACV9B,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CAC1B,cAAA4B,qBAAA,uBAFDA,qBAAA,CAEG/H,MAAM;EAEX,QAAQA,MAAM;IACZ,KAAK,WAAW;MAAE;QAChBI,eAAM,CAACC,GAAG,CAACC,iBAAQ,CAACmG,KAAK,EAAE,wCAAwC,CAAC;QACpE,OAAOT,6BAA6B,CAClCC,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzB2B,OACF,CAAC;MACH;IACA,KAAK,UAAU;MAAE;QACf1H,eAAM,CAACC,GAAG,CAACC,iBAAQ,CAACmG,KAAK,EAAE,uCAAuC,CAAC;QACnE,OAAOW,4BAA4B,CACjCnB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzB2B,OAAO,EACPnC,YACF,CAAC;MACH;IAEA;MAAS;QACP,MAAMxF,OAAO,GAAI,kCAAiCH,MAAO,EAAC;QAC1DI,eAAM,CAACC,GAAG,CAACC,iBAAQ,CAACC,KAAK,EAAEJ,OAAO,CAAC;QACnC,MAAM,IAAIK,qBAAa,CAACL,OAAO,CAAC;MAClC;EACF;AACF,CAAC;AAAC6H,OAAA,CAAAH,wBAAA,GAAAA,wBAAA"}
|
1
|
+
{"version":3,"names":["_errors","require","_sdJwt","_converters","_jwk","_mdoc","_const","_utils","_logging","_converter","buildName","display","reduce","names","_ref","locale","name","createNestedProperty","currentObject","path","sourceValue","displayData","key","rest","Array","isArray","node","existingValue","value","mappedArray","map","item","idx","nextSourceValue","length","nextObject","newArray","nextValue","undefined","parseCredentialSdJwt","credentialConfig","_ref2","sdJwt","disclosures","ignoreMissingAttributes","arguments","includeUndefinedAttributes","format","header","typ","message","Logger","log","LogLevel","ERROR","IoWalletError","claims","attrDefinitions","attrsNotInDisclosures","filter","definition","some","_ref3","missing","_","join","received","definedValues","_disclosures$find","attrKey","disclosureValue","find","_ref4","enriched","Object","assign","undefinedValues","fromEntries","keys","includes","_ref5","parseCredentialMDoc","_ref6","issuerSigned","_ref7","namespace","attribute","nameSpaces","flatNamespaces","entries","flatMap","_ref8","values","v","elementIdentifier","elementValue","_ref9","attrDefNamespace","_ref10","claim","_ref11","_ref12","_ref13","_flatNamespaces$find","_ref14","_ref15","__","acc","_ref16","getParsedCredentialClaimKey","_ref17","_ref18","_ref19","verifyCredentialSdJwt","rawCredential","issuerKeys","holderBindingContext","decodedCredential","holderBindingKey","Promise","all","verifySdJwt","SdJwt4VC","getPublicKey","cnf","payload","isSameThumbprint","jwk","kid","verifyCredentialMDoc","x509CertRoot","verifyMdoc","issuerAuth","deviceKeyInfo","deviceKey","verifyAndParseCredentialSdJwt","issuerConf","credential","credentialConfigurationId","_ref20","credentialCryptoContext","decoded","openid_credential_issuer","jwks","DEBUG","JSON","stringify","credential_configurations_supported","parsedCredential","maybeIssuedAt","getValueFromDisclosures","expiration","Date","exp","issuedAt","verifyAndParseCredentialMDoc","_ref21","_parsedCredential$get","_parsedCredential$get2","expirationDate","extractElementValueAsDate","MDOC_DEFAULT_NAMESPACE","setDate","getDate","verifyAndParseCredential","context","_issuerConf$openid_cr","exports"],"sourceRoot":"../../../../src","sources":["credential/issuance/07-verify-and-parse-credential.ts"],"mappings":"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"}
|
@@ -12,15 +12,96 @@ import { extractElementValueAsDate } from "../../mdoc/converter";
|
|
12
12
|
|
13
13
|
// handy alias
|
14
14
|
|
15
|
-
|
15
|
+
// The data used to create localized names
|
16
|
+
|
17
|
+
// The resulting object of localized names { en: "Name", it: "Nome" }
|
18
|
+
|
19
|
+
// The core structure being built: a node containing the actual value and its localized names
|
20
|
+
|
21
|
+
// A path can consist of object keys, array indices, or null for mapping
|
22
|
+
|
23
|
+
// A union of all possible shapes. It can be a custom PropertyNode or a standard object/array structure
|
24
|
+
|
25
|
+
// Helper to build localized names from the display data.
|
26
|
+
const buildName = display => display.reduce((names, _ref) => {
|
27
|
+
let {
|
28
|
+
locale,
|
29
|
+
name
|
30
|
+
} = _ref;
|
31
|
+
return {
|
32
|
+
...names,
|
33
|
+
[locale]: name
|
34
|
+
};
|
35
|
+
}, {});
|
36
|
+
|
37
|
+
/**
|
38
|
+
* Recursively constructs a nested object with descriptive properties from a path.
|
39
|
+
*
|
40
|
+
* @param currentObject - The object or array being built upon.
|
41
|
+
* @param path - The path segments to follow.
|
42
|
+
* @param sourceValue - The raw value to place at the end of the path.
|
43
|
+
* @param displayData - The data for generating localized names.
|
44
|
+
* @returns The new object or array structure.
|
45
|
+
*/
|
46
|
+
const createNestedProperty = (currentObject, path, sourceValue, displayData) => {
|
47
|
+
const [key, ...rest] = path;
|
48
|
+
|
49
|
+
// Case 1: Map over an array (key is null)
|
50
|
+
if (key === null) {
|
51
|
+
if (!Array.isArray(sourceValue)) return currentObject;
|
52
|
+
|
53
|
+
// We assert the type here because we know this branch handles PropertyNodes
|
54
|
+
const node = currentObject;
|
55
|
+
const existingValue = Array.isArray(node.value) ? node.value : [];
|
56
|
+
const mappedArray = sourceValue.map((item, idx) => createNestedProperty(existingValue[idx] || {}, rest, item, displayData));
|
57
|
+
return {
|
58
|
+
...node,
|
59
|
+
value: mappedArray,
|
60
|
+
name: node.name ?? buildName(displayData)
|
61
|
+
};
|
62
|
+
}
|
63
|
+
|
64
|
+
// Case 2: Handle an object key (key is a string)
|
65
|
+
if (typeof key === "string") {
|
66
|
+
const nextSourceValue = typeof sourceValue === "object" && sourceValue !== null && !Array.isArray(sourceValue) && key in sourceValue ? sourceValue[key] : sourceValue;
|
67
|
+
|
68
|
+
// base case
|
69
|
+
if (rest.length === 0) {
|
70
|
+
return {
|
71
|
+
...currentObject,
|
72
|
+
[key]: {
|
73
|
+
value: nextSourceValue,
|
74
|
+
name: buildName(displayData)
|
75
|
+
}
|
76
|
+
};
|
77
|
+
}
|
78
|
+
|
79
|
+
// recursive step
|
80
|
+
const nextObject = currentObject[key] || {};
|
81
|
+
return {
|
82
|
+
...currentObject,
|
83
|
+
[key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData)
|
84
|
+
};
|
85
|
+
}
|
86
|
+
|
87
|
+
// Case 3: Handle a specific array index (key is a number)
|
88
|
+
if (typeof key === "number") {
|
89
|
+
const newArray = Array.isArray(currentObject) ? [...currentObject] : [];
|
90
|
+
const nextValue = Array.isArray(sourceValue) ? sourceValue[key] : undefined;
|
91
|
+
newArray[key] = createNestedProperty(newArray[key] || {}, rest, nextValue, displayData);
|
92
|
+
return newArray;
|
93
|
+
}
|
94
|
+
return currentObject;
|
95
|
+
};
|
96
|
+
const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
16
97
|
let {
|
17
98
|
sdJwt,
|
18
99
|
disclosures
|
19
|
-
} =
|
100
|
+
} = _ref2;
|
20
101
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
21
102
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
22
103
|
if (credentialConfig.format !== sdJwt.header.typ) {
|
23
|
-
const message = `Received credential is of an
|
104
|
+
const message = `Received credential is of an unknown type. Expected one of [${credentialConfig.format}], received '${sdJwt.header.typ}'`;
|
24
105
|
Logger.log(LogLevel.ERROR, message);
|
25
106
|
throw new IoWalletError(message);
|
26
107
|
}
|
@@ -31,64 +112,39 @@ const parseCredentialSdJwt = function (credentialConfig, _ref) {
|
|
31
112
|
|
32
113
|
const attrDefinitions = credentialConfig.claims;
|
33
114
|
|
34
|
-
//
|
35
|
-
const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(
|
36
|
-
let [, name] =
|
115
|
+
// Validate that all attributes from the config exist in the disclosures
|
116
|
+
const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(_ref3 => {
|
117
|
+
let [, name] = _ref3;
|
37
118
|
return name === definition.path[0];
|
38
|
-
})
|
39
|
-
)
|
40
|
-
|
41
|
-
if (attrsNotInDisclosures.length > 0) {
|
119
|
+
}));
|
120
|
+
if (attrsNotInDisclosures.length > 0 && !ignoreMissingAttributes) {
|
42
121
|
const missing = attrsNotInDisclosures.map(_ => _.path[0]).join(", ");
|
43
|
-
const received = disclosures.map(_ => _[1
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
throw new IoWalletError(message);
|
48
|
-
}
|
122
|
+
const received = disclosures.map(_ => _[1]).join(", ");
|
123
|
+
const message = `Some attributes are missing in the credential. Missing: [${missing}], received: [${received}]`;
|
124
|
+
Logger.log(LogLevel.ERROR, message);
|
125
|
+
throw new IoWalletError(message);
|
49
126
|
}
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
.map(_ref3 => {
|
127
|
+
const definedValues = {};
|
128
|
+
for (const {
|
129
|
+
path,
|
130
|
+
display
|
131
|
+
} of attrDefinitions) {
|
56
132
|
var _disclosures$find;
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
// example: { "it-IT": "Nome", "en-EN": "Name", "es-ES": "Nombre" }
|
68
|
-
.map(_ref4 => {
|
69
|
-
let [attrKey, {
|
70
|
-
display,
|
71
|
-
...definition
|
72
|
-
}] = _ref4;
|
73
|
-
return [attrKey, {
|
74
|
-
...definition,
|
75
|
-
name: display.reduce((names, _ref5) => {
|
76
|
-
let {
|
77
|
-
locale,
|
78
|
-
name
|
79
|
-
} = _ref5;
|
80
|
-
return {
|
81
|
-
...names,
|
82
|
-
[locale]: name
|
83
|
-
};
|
84
|
-
}, {})
|
85
|
-
}];
|
86
|
-
}));
|
133
|
+
const attrKey = path[0];
|
134
|
+
const disclosureValue = (_disclosures$find = disclosures.find(_ref4 => {
|
135
|
+
let [, name] = _ref4;
|
136
|
+
return name === attrKey;
|
137
|
+
})) === null || _disclosures$find === void 0 ? void 0 : _disclosures$find[2];
|
138
|
+
if (disclosureValue !== undefined) {
|
139
|
+
const enriched = createNestedProperty(definedValues, path, disclosureValue, display);
|
140
|
+
Object.assign(definedValues, enriched);
|
141
|
+
}
|
142
|
+
}
|
87
143
|
if (includeUndefinedAttributes) {
|
88
144
|
// attributes that are in the disclosure set
|
89
145
|
// but are not defined in the issuer configuration
|
90
|
-
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(
|
91
|
-
let [, key, value] =
|
146
|
+
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(_ref5 => {
|
147
|
+
let [, key, value] = _ref5;
|
92
148
|
return [key, {
|
93
149
|
value,
|
94
150
|
name: key
|
@@ -101,10 +157,10 @@ const parseCredentialSdJwt = function (credentialConfig, _ref) {
|
|
101
157
|
}
|
102
158
|
return definedValues;
|
103
159
|
};
|
104
|
-
const parseCredentialMDoc = function (credentialConfig,
|
160
|
+
const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
105
161
|
let {
|
106
162
|
issuerSigned
|
107
|
-
} =
|
163
|
+
} = _ref6;
|
108
164
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
109
165
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
110
166
|
if (!credentialConfig) {
|
@@ -113,37 +169,37 @@ const parseCredentialMDoc = function (credentialConfig, _ref7) {
|
|
113
169
|
if (!credentialConfig.claims) {
|
114
170
|
throw new IoWalletError("Missing claims in the credential subject");
|
115
171
|
}
|
116
|
-
const attrDefinitions = credentialConfig.claims.map(
|
172
|
+
const attrDefinitions = credentialConfig.claims.map(_ref7 => {
|
117
173
|
let {
|
118
174
|
path: [namespace, attribute],
|
119
175
|
display
|
120
|
-
} =
|
176
|
+
} = _ref7;
|
121
177
|
return [namespace, attribute, display];
|
122
178
|
});
|
123
179
|
if (!issuerSigned.nameSpaces) {
|
124
180
|
throw new IoWalletError("Missing claims in the credential");
|
125
181
|
}
|
126
|
-
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(
|
127
|
-
let [namespace, values] =
|
182
|
+
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(_ref8 => {
|
183
|
+
let [namespace, values] = _ref8;
|
128
184
|
return values.map(v => [namespace, v.elementIdentifier, v.elementValue]);
|
129
185
|
});
|
130
186
|
|
131
187
|
// Check that all mandatory attributes defined in the issuer configuration are present in the disclosure set
|
132
188
|
// and filter the non present ones
|
133
|
-
const attrsNotInDisclosures = attrDefinitions.filter(
|
134
|
-
let [attrDefNamespace, attrKey] =
|
135
|
-
return !flatNamespaces.some(
|
136
|
-
let [namespace, claim] =
|
189
|
+
const attrsNotInDisclosures = attrDefinitions.filter(_ref9 => {
|
190
|
+
let [attrDefNamespace, attrKey] = _ref9;
|
191
|
+
return !flatNamespaces.some(_ref10 => {
|
192
|
+
let [namespace, claim] = _ref10;
|
137
193
|
return attrDefNamespace === namespace && attrKey === claim;
|
138
194
|
});
|
139
195
|
});
|
140
196
|
if (attrsNotInDisclosures.length > 0) {
|
141
|
-
const missing = attrsNotInDisclosures.map(
|
142
|
-
let [, attrKey] =
|
197
|
+
const missing = attrsNotInDisclosures.map(_ref11 => {
|
198
|
+
let [, attrKey] = _ref11;
|
143
199
|
return attrKey;
|
144
200
|
}).join(", ");
|
145
|
-
const received = flatNamespaces.map(
|
146
|
-
let [, attrKey] =
|
201
|
+
const received = flatNamespaces.map(_ref12 => {
|
202
|
+
let [, attrKey] = _ref12;
|
147
203
|
return attrKey;
|
148
204
|
}).join(", ");
|
149
205
|
if (!ignoreMissingAttributes) {
|
@@ -154,38 +210,38 @@ const parseCredentialMDoc = function (credentialConfig, _ref7) {
|
|
154
210
|
// Attributes defined in the issuer configuration and present in the disclosure set
|
155
211
|
const definedValues = attrDefinitions
|
156
212
|
// Retrieve the value from the corresponding disclosure
|
157
|
-
.map(
|
213
|
+
.map(_ref13 => {
|
158
214
|
var _flatNamespaces$find;
|
159
|
-
let [attrDefNamespace, attrKey, display] =
|
215
|
+
let [attrDefNamespace, attrKey, display] = _ref13;
|
160
216
|
return [attrDefNamespace, attrKey, {
|
161
217
|
display,
|
162
|
-
value: (_flatNamespaces$find = flatNamespaces.find(
|
163
|
-
let [namespace, name] =
|
218
|
+
value: (_flatNamespaces$find = flatNamespaces.find(_ref14 => {
|
219
|
+
let [namespace, name] = _ref14;
|
164
220
|
return attrDefNamespace === namespace && name === attrKey;
|
165
221
|
})) === null || _flatNamespaces$find === void 0 ? void 0 : _flatNamespaces$find[2]
|
166
222
|
}];
|
167
223
|
})
|
168
224
|
//filter the not found elements
|
169
|
-
.filter(
|
170
|
-
let [_, __, definition] =
|
225
|
+
.filter(_ref15 => {
|
226
|
+
let [_, __, definition] = _ref15;
|
171
227
|
return definition.value !== undefined;
|
172
228
|
})
|
173
229
|
// Add a human-readable attribute name, with i18n, in the form { locale: name }
|
174
230
|
// Example: { "it-IT": "Nome", "en-EN": "Name", "es-ES": "Nombre" }
|
175
|
-
.reduce((acc,
|
231
|
+
.reduce((acc, _ref16) => {
|
176
232
|
let [attrDefNamespace, attrKey, {
|
177
233
|
display,
|
178
234
|
value
|
179
|
-
}] =
|
235
|
+
}] = _ref16;
|
180
236
|
return {
|
181
237
|
...acc,
|
182
238
|
[getParsedCredentialClaimKey(attrDefNamespace, attrKey)]: {
|
183
239
|
value,
|
184
|
-
name: display.reduce((names,
|
240
|
+
name: display.reduce((names, _ref17) => {
|
185
241
|
let {
|
186
242
|
locale,
|
187
243
|
name
|
188
|
-
} =
|
244
|
+
} = _ref17;
|
189
245
|
return {
|
190
246
|
...names,
|
191
247
|
[locale]: name
|
@@ -195,11 +251,11 @@ const parseCredentialMDoc = function (credentialConfig, _ref7) {
|
|
195
251
|
};
|
196
252
|
}, {});
|
197
253
|
if (includeUndefinedAttributes) {
|
198
|
-
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(
|
199
|
-
let [namespace, key] =
|
254
|
+
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(_ref18 => {
|
255
|
+
let [namespace, key] = _ref18;
|
200
256
|
return !definedValues[getParsedCredentialClaimKey(namespace, key)];
|
201
|
-
}).map(
|
202
|
-
let [namespace, key, value] =
|
257
|
+
}).map(_ref19 => {
|
258
|
+
let [namespace, key, value] = _ref19;
|
203
259
|
return [getParsedCredentialClaimKey(namespace, key), {
|
204
260
|
value,
|
205
261
|
name: key
|
@@ -269,12 +325,12 @@ async function verifyCredentialMDoc(rawCredential, x509CertRoot, holderBindingCo
|
|
269
325
|
}
|
270
326
|
return decodedCredential;
|
271
327
|
}
|
272
|
-
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId,
|
328
|
+
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId, _ref20) => {
|
273
329
|
let {
|
274
330
|
credentialCryptoContext,
|
275
331
|
ignoreMissingAttributes,
|
276
332
|
includeUndefinedAttributes
|
277
|
-
} =
|
333
|
+
} = _ref20;
|
278
334
|
const decoded = await verifyCredentialSdJwt(credential, issuerConf.openid_credential_issuer.jwks.keys, credentialCryptoContext);
|
279
335
|
Logger.log(LogLevel.DEBUG, `Decoded credential: ${JSON.stringify(decoded)}`);
|
280
336
|
const credentialConfig = issuerConf.openid_credential_issuer.credential_configurations_supported[credentialConfigurationId];
|
@@ -291,12 +347,12 @@ const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialC
|
|
291
347
|
issuedAt: typeof maybeIssuedAt === "number" ? new Date(maybeIssuedAt * 1000) : undefined
|
292
348
|
};
|
293
349
|
};
|
294
|
-
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId,
|
350
|
+
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId, _ref21, x509CertRoot) => {
|
295
351
|
var _parsedCredential$get, _parsedCredential$get2;
|
296
352
|
let {
|
297
353
|
credentialCryptoContext,
|
298
354
|
ignoreMissingAttributes
|
299
|
-
} =
|
355
|
+
} = _ref21;
|
300
356
|
if (!x509CertRoot) {
|
301
357
|
throw new IoWalletError("Missing x509CertRoot");
|
302
358
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["IoWalletError","SdJwt4VC","verify","verifySdJwt","getValueFromDisclosures","isSameThumbprint","verifyMdoc","MDOC_DEFAULT_NAMESPACE","getParsedCredentialClaimKey","LogLevel","Logger","extractElementValueAsDate","parseCredentialSdJwt","credentialConfig","_ref","sdJwt","disclosures","ignoreMissingAttributes","arguments","length","undefined","includeUndefinedAttributes","format","header","typ","message","log","ERROR","claims","attrDefinitions","attrsNotInDisclosures","filter","definition","some","_ref2","name","path","missing","map","_","join","received","definedValues","Object","fromEntries","_ref3","_disclosures$find","value","find","_ref4","attrKey","display","reduce","names","_ref5","locale","undefinedValues","keys","includes","_ref6","key","parseCredentialMDoc","_ref7","issuerSigned","_ref8","namespace","attribute","nameSpaces","flatNamespaces","entries","flatMap","_ref9","values","v","elementIdentifier","elementValue","_ref10","attrDefNamespace","_ref11","claim","_ref12","_ref13","_ref14","_flatNamespaces$find","_ref15","_ref16","__","acc","_ref17","_ref18","_ref19","_ref20","verifyCredentialSdJwt","rawCredential","issuerKeys","holderBindingContext","decodedCredential","holderBindingKey","Promise","all","getPublicKey","cnf","payload","jwk","kid","verifyCredentialMDoc","x509CertRoot","issuerAuth","deviceKeyInfo","deviceKey","verifyAndParseCredentialSdJwt","issuerConf","credential","credentialConfigurationId","_ref21","credentialCryptoContext","decoded","openid_credential_issuer","jwks","DEBUG","JSON","stringify","credential_configurations_supported","parsedCredential","maybeIssuedAt","expiration","Date","exp","issuedAt","verifyAndParseCredentialMDoc","_ref22","_parsedCredential$get","_parsedCredential$get2","expirationDate","setDate","getDate","verifyAndParseCredential","context","_issuerConf$openid_cr"],"sourceRoot":"../../../../src","sources":["credential/issuance/07-verify-and-parse-credential.ts"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["IoWalletError","SdJwt4VC","verify","verifySdJwt","getValueFromDisclosures","isSameThumbprint","verifyMdoc","MDOC_DEFAULT_NAMESPACE","getParsedCredentialClaimKey","LogLevel","Logger","extractElementValueAsDate","buildName","display","reduce","names","_ref","locale","name","createNestedProperty","currentObject","path","sourceValue","displayData","key","rest","Array","isArray","node","existingValue","value","mappedArray","map","item","idx","nextSourceValue","length","nextObject","newArray","nextValue","undefined","parseCredentialSdJwt","credentialConfig","_ref2","sdJwt","disclosures","ignoreMissingAttributes","arguments","includeUndefinedAttributes","format","header","typ","message","log","ERROR","claims","attrDefinitions","attrsNotInDisclosures","filter","definition","some","_ref3","missing","_","join","received","definedValues","_disclosures$find","attrKey","disclosureValue","find","_ref4","enriched","Object","assign","undefinedValues","fromEntries","keys","includes","_ref5","parseCredentialMDoc","_ref6","issuerSigned","_ref7","namespace","attribute","nameSpaces","flatNamespaces","entries","flatMap","_ref8","values","v","elementIdentifier","elementValue","_ref9","attrDefNamespace","_ref10","claim","_ref11","_ref12","_ref13","_flatNamespaces$find","_ref14","_ref15","__","acc","_ref16","_ref17","_ref18","_ref19","verifyCredentialSdJwt","rawCredential","issuerKeys","holderBindingContext","decodedCredential","holderBindingKey","Promise","all","getPublicKey","cnf","payload","jwk","kid","verifyCredentialMDoc","x509CertRoot","issuerAuth","deviceKeyInfo","deviceKey","verifyAndParseCredentialSdJwt","issuerConf","credential","credentialConfigurationId","_ref20","credentialCryptoContext","decoded","openid_credential_issuer","jwks","DEBUG","JSON","stringify","credential_configurations_supported","parsedCredential","maybeIssuedAt","expiration","Date","exp","issuedAt","verifyAndParseCredentialMDoc","_ref21","_parsedCredential$get","_parsedCredential$get2","expirationDate","setDate","getDate","verifyAndParseCredential","context","_issuerConf$openid_cr"],"sourceRoot":"../../../../src","sources":["credential/issuance/07-verify-and-parse-credential.ts"],"mappings":"AAGA,SAASA,aAAa,QAAQ,oBAAoB;AAClD,SAASC,QAAQ,EAAEC,MAAM,IAAIC,WAAW,QAAQ,cAAc;AAC9D,SAASC,uBAAuB,QAAQ,yBAAyB;AACjE,SAASC,gBAAgB,QAAkB,iBAAiB;AAE5D,SAASH,MAAM,IAAII,UAAU,QAAQ,YAAY;AACjD,SAASC,sBAAsB,QAAQ,kBAAkB;AACzD,SAASC,2BAA2B,QAAQ,kBAAkB;AAC9D,SAASC,QAAQ,EAAEC,MAAM,QAAQ,qBAAqB;AACtD,SAASC,yBAAyB,QAAQ,sBAAsB;;AAkChE;;AAeA;;AAKA;;AAGA;;AAGA;;AAMA;;AAGA;;AAGA;AACA,MAAMC,SAAS,GAAIC,OAAoB,IACrCA,OAAO,CAACC,MAAM,CACZ,CAACC,KAAK,EAAAC,IAAA;EAAA,IAAE;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAAF,IAAA;EAAA,OAAM;IAAE,GAAGD,KAAK;IAAE,CAACE,MAAM,GAAGC;EAAK,CAAC;AAAA,CAAC,EAC3D,CAAC,CACH,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAGA,CAC3BC,aAA8B,EAC9BC,IAAU,EACVC,WAAoB,EACpBC,WAAwB,KACJ;EACpB,MAAM,CAACC,GAAG,EAAE,GAAGC,IAAI,CAAC,GAAGJ,IAAI;;EAE3B;EACA,IAAIG,GAAG,KAAK,IAAI,EAAE;IAChB,IAAI,CAACE,KAAK,CAACC,OAAO,CAACL,WAAW,CAAC,EAAE,OAAOF,aAAa;;IAErD;IACA,MAAMQ,IAAI,GAAGR,aAAiD;IAC9D,MAAMS,aAAa,GAAGH,KAAK,CAACC,OAAO,CAACC,IAAI,CAACE,KAAK,CAAC,GAAGF,IAAI,CAACE,KAAK,GAAG,EAAE;IAEjE,MAAMC,WAAW,GAAGT,WAAW,CAACU,GAAG,CAAC,CAACC,IAAI,EAAEC,GAAG,KAC5Cf,oBAAoB,CAACU,aAAa,CAACK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAET,IAAI,EAAEQ,IAAI,EAAEV,WAAW,CACxE,CAAC;IAED,OAAO;MACL,GAAGK,IAAI;MACPE,KAAK,EAAEC,WAAW;MAClBb,IAAI,EAAEU,IAAI,CAACV,IAAI,IAAIN,SAAS,CAACW,WAAW;IAC1C,CAAC;EACH;;EAEA;EACA,IAAI,OAAOC,GAAG,KAAK,QAAQ,EAAE;IAC3B,MAAMW,eAAe,GACnB,OAAOb,WAAW,KAAK,QAAQ,IAC/BA,WAAW,KAAK,IAAI,IACpB,CAACI,KAAK,CAACC,OAAO,CAACL,WAAW,CAAC,IAC3BE,GAAG,IAAIF,WAAW,GACbA,WAAW,CAA6BE,GAAG,CAAC,GAC7CF,WAAW;;IAEjB;IACA,IAAIG,IAAI,CAACW,MAAM,KAAK,CAAC,EAAE;MACrB,OAAO;QACL,GAAGhB,aAAa;QAChB,CAACI,GAAG,GAAG;UAAEM,KAAK,EAAEK,eAAe;UAAEjB,IAAI,EAAEN,SAAS,CAACW,WAAW;QAAE;MAChE,CAAC;IACH;;IAEA;IACA,MAAMc,UAAU,GACbjB,aAAa,CAAqCI,GAAG,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;MACL,GAAGJ,aAAa;MAChB,CAACI,GAAG,GAAGL,oBAAoB,CACzBkB,UAAU,EACVZ,IAAI,EACJU,eAAe,EACfZ,WACF;IACF,CAAC;EACH;;EAEA;EACA,IAAI,OAAOC,GAAG,KAAK,QAAQ,EAAE;IAC3B,MAAMc,QAAQ,GAAGZ,KAAK,CAACC,OAAO,CAACP,aAAa,CAAC,GAAG,CAAC,GAAGA,aAAa,CAAC,GAAG,EAAE;IACvE,MAAMmB,SAAS,GAAGb,KAAK,CAACC,OAAO,CAACL,WAAW,CAAC,GAAGA,WAAW,CAACE,GAAG,CAAC,GAAGgB,SAAS;IAE3EF,QAAQ,CAACd,GAAG,CAAC,GAAGL,oBAAoB,CAClCmB,QAAQ,CAACd,GAAG,CAAC,IAAI,CAAC,CAAC,EACnBC,IAAI,EACJc,SAAS,EACThB,WACF,CAAC;IACD,OAAOe,QAAQ;EACjB;EAEA,OAAOlB,aAAa;AACtB,CAAC;AAED,MAAMqB,oBAAoB,GAAG,SAAAA,CAE3BC,gBAAgC,EAAAC,KAAA,EAIX;EAAA,IAHrB;IAAEC,KAAK;IAAEC;EAAoC,CAAC,GAAAF,KAAA;EAAA,IAC9CG,uBAAgC,GAAAC,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IACxCC,0BAAmC,GAAAD,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAE3C,IAAIL,gBAAgB,CAACO,MAAM,KAAKL,KAAK,CAACM,MAAM,CAACC,GAAG,EAAE;IAChD,MAAMC,OAAO,GAAI,+DAA8DV,gBAAgB,CAACO,MAAO,gBAAeL,KAAK,CAACM,MAAM,CAACC,GAAI,GAAE;IACzIzC,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAEF,OAAO,CAAC;IACnC,MAAM,IAAIpD,aAAa,CAACoD,OAAO,CAAC;EAClC;EAEA,IAAI,CAACV,gBAAgB,CAACa,MAAM,EAAE;IAC5B7C,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAE,0CAA0C,CAAC;IACtE,MAAM,IAAItD,aAAa,CAAC,0CAA0C,CAAC,CAAC,CAAC;EACvE;;EAEA,MAAMwD,eAAe,GAAGd,gBAAgB,CAACa,MAAM;;EAE/C;EACA,MAAME,qBAAqB,GAAGD,eAAe,CAACE,MAAM,CACjDC,UAAU,IAAK,CAACd,WAAW,CAACe,IAAI,CAACC,KAAA;IAAA,IAAC,GAAG3C,IAAI,CAAC,GAAA2C,KAAA;IAAA,OAAK3C,IAAI,KAAKyC,UAAU,CAACtC,IAAI,CAAC,CAAC,CAAC;EAAA,EAC7E,CAAC;EAED,IAAIoC,qBAAqB,CAACrB,MAAM,GAAG,CAAC,IAAI,CAACU,uBAAuB,EAAE;IAChE,MAAMgB,OAAO,GAAGL,qBAAqB,CAACzB,GAAG,CAAE+B,CAAC,IAAKA,CAAC,CAAC1C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC2C,IAAI,CAAC,IAAI,CAAC;IACtE,MAAMC,QAAQ,GAAGpB,WAAW,CAACb,GAAG,CAAE+B,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACxD,MAAMZ,OAAO,GAAI,4DAA2DU,OAAQ,iBAAgBG,QAAS,GAAE;IAC/GvD,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAEF,OAAO,CAAC;IACnC,MAAM,IAAIpD,aAAa,CAACoD,OAAO,CAAC;EAClC;EAEA,MAAMc,aAA+B,GAAG,CAAC,CAAC;EAE1C,KAAK,MAAM;IAAE7C,IAAI;IAAER;EAAQ,CAAC,IAAI2C,eAAe,EAAE;IAAA,IAAAW,iBAAA;IAC/C,MAAMC,OAAO,GAAG/C,IAAI,CAAC,CAAC,CAAC;IACvB,MAAMgD,eAAe,IAAAF,iBAAA,GAAGtB,WAAW,CAACyB,IAAI,CACtCC,KAAA;MAAA,IAAC,GAAGrD,IAAI,CAAC,GAAAqD,KAAA;MAAA,OAAKrD,IAAI,KAAKkD,OAAO;IAAA,CAChC,CAAC,cAAAD,iBAAA,uBAFuBA,iBAAA,CAEpB,CAAC,CAAC;IAEN,IAAIE,eAAe,KAAK7B,SAAS,EAAE;MACjC,MAAMgC,QAAQ,GAAGrD,oBAAoB,CACnC+C,aAAa,EACb7C,IAAI,EACJgD,eAAe,EACfxD,OACF,CAAC;MACD4D,MAAM,CAACC,MAAM,CAACR,aAAa,EAAEM,QAAQ,CAAC;IACxC;EACF;EAEA,IAAIxB,0BAA0B,EAAE;IAC9B;IACA;IACA,MAAM2B,eAAe,GAAGF,MAAM,CAACG,WAAW,CACxC/B,WAAW,CACRa,MAAM,CAAEK,CAAC,IAAK,CAACU,MAAM,CAACI,IAAI,CAACX,aAAa,CAAC,CAACY,QAAQ,CAACf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD/B,GAAG,CAAC+C,KAAA;MAAA,IAAC,GAAGvD,GAAG,EAAEM,KAAK,CAAC,GAAAiD,KAAA;MAAA,OAAK,CAACvD,GAAG,EAAE;QAAEM,KAAK;QAAEZ,IAAI,EAAEM;MAAI,CAAC,CAAC;IAAA,EACxD,CAAC;IAED,OAAO;MACL,GAAG0C,aAAa;MAChB,GAAGS;IACL,CAAC;EACH;EAEA,OAAOT,aAAa;AACtB,CAAC;AACD,MAAMc,mBAAmB,GAAG,SAAAA,CAE1BtC,gBAAgC,EAAAuC,KAAA,EAKX;EAAA,IAHrB;IAAEC;EAAoC,CAAC,GAAAD,KAAA;EAAA,IACvCnC,uBAAgC,GAAAC,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IACxCC,0BAAmC,GAAAD,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAE3C,IAAI,CAACL,gBAAgB,EAAE;IACrB,MAAM,IAAI1C,aAAa,CAAC,6CAA6C,CAAC;EACxE;EAEA,IAAI,CAAC0C,gBAAgB,CAACa,MAAM,EAAE;IAC5B,MAAM,IAAIvD,aAAa,CAAC,0CAA0C,CAAC;EACrE;EAEA,MAAMwD,eAAe,GAAGd,gBAAgB,CAACa,MAAM,CAACvB,GAAG,CAEjDmD,KAAA;IAAA,IAAC;MAAE9D,IAAI,EAAE,CAAC+D,SAAS,EAAEC,SAAS,CAAC;MAAExE;IAAQ,CAAC,GAAAsE,KAAA;IAAA,OAAK,CAC/CC,SAAS,EACTC,SAAS,EACTxE,OAAO,CACR;EAAA,EAAC;EAEF,IAAI,CAACqE,YAAY,CAACI,UAAU,EAAE;IAC5B,MAAM,IAAItF,aAAa,CAAC,kCAAkC,CAAC;EAC7D;EAEA,MAAMuF,cAAc,GAAGd,MAAM,CAACe,OAAO,CAACN,YAAY,CAACI,UAAU,CAAC,CAACG,OAAO,CACpEC,KAAA;IAAA,IAAC,CAACN,SAAS,EAAEO,MAAM,CAAC,GAAAD,KAAA;IAAA,OAClBC,MAAM,CAAC3D,GAAG,CAA4B4D,CAAC,IAAK,CAC1CR,SAAS,EACTQ,CAAC,CAACC,iBAAiB,EACnBD,CAAC,CAACE,YAAY,CACf,CAAC;EAAA,CACN,CAAC;;EAED;EACA;EACA,MAAMrC,qBAAqB,GAAGD,eAAe,CAACE,MAAM,CAClDqC,KAAA;IAAA,IAAC,CAACC,gBAAgB,EAAE5B,OAAO,CAAC,GAAA2B,KAAA;IAAA,OAC1B,CAACR,cAAc,CAAC3B,IAAI,CAClBqC,MAAA;MAAA,IAAC,CAACb,SAAS,EAAEc,KAAK,CAAC,GAAAD,MAAA;MAAA,OACjBD,gBAAgB,KAAKZ,SAAS,IAAIhB,OAAO,KAAK8B,KAAK;IAAA,CACvD,CAAC;EAAA,CACL,CAAC;EAED,IAAIzC,qBAAqB,CAACrB,MAAM,GAAG,CAAC,EAAE;IACpC,MAAM0B,OAAO,GAAGL,qBAAqB,CAClCzB,GAAG,CAACmE,MAAA;MAAA,IAAC,GAAG/B,OAAO,CAAC,GAAA+B,MAAA;MAAA,OAAK/B,OAAO;IAAA,EAAC,CAC7BJ,IAAI,CAAC,IAAI,CAAC;IACb,MAAMC,QAAQ,GAAGsB,cAAc,CAACvD,GAAG,CAACoE,MAAA;MAAA,IAAC,GAAGhC,OAAO,CAAC,GAAAgC,MAAA;MAAA,OAAKhC,OAAO;IAAA,EAAC,CAACJ,IAAI,CAAC,IAAI,CAAC;IAExE,IAAI,CAAClB,uBAAuB,EAAE;MAC5B,MAAM,IAAI9C,aAAa,CACpB,4DAA2D8D,OAAQ,iBAAgBG,QAAS,GAC/F,CAAC;IACH;EACF;;EAEA;EACA,MAAMC,aAAa,GAAGV;EACpB;EAAA,CACCxB,GAAG,CACFqE,MAAA;IAAA,IAAAC,oBAAA;IAAA,IAAC,CAACN,gBAAgB,EAAE5B,OAAO,EAAEvD,OAAO,CAAC,GAAAwF,MAAA;IAAA,OACnC,CACEL,gBAAgB,EAChB5B,OAAO,EACP;MACEvD,OAAO;MACPiB,KAAK,GAAAwE,oBAAA,GAAEf,cAAc,CAACjB,IAAI,CACxBiC,MAAA;QAAA,IAAC,CAACnB,SAAS,EAAElE,IAAI,CAAC,GAAAqF,MAAA;QAAA,OAChBP,gBAAgB,KAAKZ,SAAS,IAAIlE,IAAI,KAAKkD,OAAO;MAAA,CACtD,CAAC,cAAAkC,oBAAA,uBAHMA,oBAAA,CAGH,CAAC;IACP,CAAC,CACF;EAAA,CACL;EACA;EAAA,CACC5C,MAAM,CAAC8C,MAAA;IAAA,IAAC,CAACzC,CAAC,EAAE0C,EAAE,EAAE9C,UAAU,CAAC,GAAA6C,MAAA;IAAA,OAAK7C,UAAU,CAAC7B,KAAK,KAAKU,SAAS;EAAA;EAC/D;EACA;EAAA,CACC1B,MAAM,CACL,CAAC4F,GAAG,EAAAC,MAAA;IAAA,IAAE,CAACX,gBAAgB,EAAE5B,OAAO,EAAE;MAAEvD,OAAO;MAAEiB;IAAM,CAAC,CAAC,GAAA6E,MAAA;IAAA,OAAM;MACzD,GAAGD,GAAG;MACN,CAAClG,2BAA2B,CAACwF,gBAAgB,EAAE5B,OAAO,CAAC,GAAG;QACxDtC,KAAK;QACLZ,IAAI,EAAEL,OAAO,CAACC,MAAM,CAClB,CAACC,KAAK,EAAA6F,MAAA;UAAA,IAAE;YAAE3F,MAAM;YAAEC;UAAK,CAAC,GAAA0F,MAAA;UAAA,OAAM;YAC5B,GAAG7F,KAAK;YACR,CAACE,MAAM,GAAGC;UACZ,CAAC;QAAA,CAAC,EACF,CAAC,CACH;MACF;IACF,CAAC;EAAA,CAAC,EACF,CAAC,CACH,CAAC;EAEH,IAAI8B,0BAA0B,EAAE;IAC9B,MAAM2B,eAAiC,GAAGF,MAAM,CAACG,WAAW,CAC1DH,MAAM,CAACkB,MAAM,CAACJ,cAAc,CAAC,CAC1B7B,MAAM,CACLmD,MAAA;MAAA,IAAC,CAACzB,SAAS,EAAE5D,GAAG,CAAC,GAAAqF,MAAA;MAAA,OACf,CAAC3C,aAAa,CAAC1D,2BAA2B,CAAC4E,SAAS,EAAE5D,GAAG,CAAC,CAAC;IAAA,CAC/D,CAAC,CACAQ,GAAG,CAAC8E,MAAA;MAAA,IAAC,CAAC1B,SAAS,EAAE5D,GAAG,EAAEM,KAAK,CAAC,GAAAgF,MAAA;MAAA,OAAK,CAChCtG,2BAA2B,CAAC4E,SAAS,EAAE5D,GAAG,CAAC,EAC3C;QAAEM,KAAK;QAAEZ,IAAI,EAAEM;MAAI,CAAC,CACrB;IAAA,EACL,CAAC;IACD,OAAO;MACL,GAAG0C,aAAa;MAChB,GAAGS;IACL,CAAC;EACH;EAEA,OAAOT,aAAa;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe6C,qBAAqBA,CAClCC,aAAqB,EACrBC,UAAiB,EACjBC,oBAAmC,EACF;EACjC,MAAM,CAACC,iBAAiB,EAAEC,gBAAgB,CAAC;EACzC;EACA,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChBnH,WAAW,CAAC6G,aAAa,EAAEC,UAAU,EAAEhH,QAAQ,CAAC,EAChDiH,oBAAoB,CAACK,YAAY,CAAC,CAAC,CACpC,CAAC;EAEJ,MAAM;IAAEC;EAAI,CAAC,GAAGL,iBAAiB,CAACvE,KAAK,CAAC6E,OAAO;EAC/C,IAAI,EAAE,MAAMpH,gBAAgB,CAACmH,GAAG,CAACE,GAAG,EAAEN,gBAAuB,CAAC,CAAC,EAAE;IAC/D,MAAMhE,OAAO,GAAI,kDAAiDgE,gBAAgB,CAACO,GAAI,UAASR,iBAAiB,CAACvE,KAAK,CAAC6E,OAAO,CAACD,GAAG,CAACE,GAAG,CAACC,GAAI,EAAC;IAC7IjH,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAEF,OAAO,CAAC;IACnC,MAAM,IAAIpD,aAAa,CAACoD,OAAO,CAAC;EAClC;EAEA,OAAO+D,iBAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeS,oBAAoBA,CACjCZ,aAAqB,EACrBa,YAAoB,EACpBX,oBAAmC,EACH;EAChC,MAAM,CAACC,iBAAiB,EAAEC,gBAAgB,CAAC;EACzC;EACA,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChBhH,UAAU,CAAC0G,aAAa,EAAEa,YAAY,CAAC,EACvCX,oBAAoB,CAACK,YAAY,CAAC,CAAC,CACpC,CAAC;EAEJ,IAAI,CAACJ,iBAAiB,EAAE;IACtB,MAAM,IAAInH,aAAa,CAAC,4BAA4B,CAAC;EACvD;EAEA,MAAMwB,GAAG,GACP2F,iBAAiB,CAACjC,YAAY,CAAC4C,UAAU,CAACL,OAAO,CAACM,aAAa,CAACC,SAAS;EAE3E,IAAI,EAAE,MAAM3H,gBAAgB,CAACmB,GAAG,EAAE4F,gBAA6B,CAAC,CAAC,EAAE;IACjE,MAAM,IAAIpH,aAAa,CACpB,oFACH,CAAC;EACH;EAEA,OAAOmH,iBAAiB;AAC1B;AAEA,MAAMc,6BAAuD,GAAG,MAAAA,CAC9DC,UAAU,EACVC,UAAU,EACVC,yBAAyB,EAAAC,MAAA,KAMtB;EAAA,IALH;IACEC,uBAAuB;IACvBxF,uBAAuB;IACvBE;EACF,CAAC,GAAAqF,MAAA;EAED,MAAME,OAAO,GAAG,MAAMxB,qBAAqB,CACzCoB,UAAU,EACVD,UAAU,CAACM,wBAAwB,CAACC,IAAI,CAAC5D,IAAI,EAC7CyD,uBACF,CAAC;EAED5H,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAACiI,KAAK,EAAG,uBAAsBC,IAAI,CAACC,SAAS,CAACL,OAAO,CAAE,EAAC,CAAC;EAE5E,MAAM7F,gBAAgB,GACpBwF,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CAC1B;EAEH,IAAI,CAAC1F,gBAAgB,EAAE;IACrBhC,MAAM,CAAC2C,GAAG,CACR5C,QAAQ,CAAC6C,KAAK,EACb,gDAA+C8E,yBAA0B,EAC5E,CAAC;IACD,MAAM,IAAIpI,aAAa,CAAC,6CAA6C,CAAC;EACxE;EAEA,MAAM8I,gBAAgB,GAAGrG,oBAAoB,CAC3CC,gBAAgB,EAChB6F,OAAO,EACPzF,uBAAuB,EACvBE,0BACF,CAAC;EACD,MAAM+F,aAAa,GAAG3I,uBAAuB,CAACmI,OAAO,CAAC1F,WAAW,EAAE,KAAK,CAAC;EAEzEnC,MAAM,CAAC2C,GAAG,CACR5C,QAAQ,CAACiI,KAAK,EACb,sBAAqBC,IAAI,CAACC,SAAS,CAACE,gBAAgB,CAAE,gBAAeC,aAAc,EACtF,CAAC;EAED,OAAO;IACLD,gBAAgB;IAChBE,UAAU,EAAE,IAAIC,IAAI,CAACV,OAAO,CAAC3F,KAAK,CAAC6E,OAAO,CAACyB,GAAG,GAAG,IAAI,CAAC;IACtDC,QAAQ,EACN,OAAOJ,aAAa,KAAK,QAAQ,GAC7B,IAAIE,IAAI,CAACF,aAAa,GAAG,IAAI,CAAC,GAC9BvG;EACR,CAAC;AACH,CAAC;AAED,MAAM4G,4BAAsD,GAAG,MAAAA,CAC7DlB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EAAAiB,MAAA,EAEzBxB,YAAY,KACT;EAAA,IAAAyB,qBAAA,EAAAC,sBAAA;EAAA,IAFH;IAAEjB,uBAAuB;IAAExF;EAAwB,CAAC,GAAAuG,MAAA;EAGpD,IAAI,CAACxB,YAAY,EAAE;IACjB,MAAM,IAAI7H,aAAa,CAAC,sBAAsB,CAAC;EACjD;EAEA,MAAMuI,OAAO,GAAG,MAAMX,oBAAoB,CACxCO,UAAU,EACVN,YAAY,EACZS,uBACF,CAAC;EAED,MAAM5F,gBAAgB,GACpBwF,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CACzB;EACJ,MAAMU,gBAAgB,GAAG9D,mBAAmB,CAC1CtC,gBAAgB,EAChB6F,OAAO,EACPzF,uBAAuB,EACvBA,uBACF,CAAC;EAED,MAAM0G,cAAc,GAAG7I,yBAAyB,CAC9CmI,gBAAgB,aAAhBA,gBAAgB,gBAAAQ,qBAAA,GAAhBR,gBAAgB,CACdtI,2BAA2B,CAACD,sBAAsB,EAAE,aAAa,CAAC,CACnE,cAAA+I,qBAAA,uBAFDA,qBAAA,CAEGxH,KACL,CAAC;EACD,IAAI,CAAC0H,cAAc,EAAE;IACnB,MAAM,IAAIxJ,aAAa,CAAE,kCAAiC,CAAC;EAC7D;EACAwJ,cAAc,CAACC,OAAO,CAACD,cAAc,CAACE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAEpD,MAAMX,aAAa,GAAGpI,yBAAyB,CAC7CmI,gBAAgB,aAAhBA,gBAAgB,gBAAAS,sBAAA,GAAhBT,gBAAgB,CACdtI,2BAA2B,CAACD,sBAAsB,EAAE,YAAY,CAAC,CAClE,cAAAgJ,sBAAA,uBAFDA,sBAAA,CAEGzH,KACL,CAAC;EACDiH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEU,OAAO,CAACV,aAAa,CAACW,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAEnD,OAAO;IACLZ,gBAAgB;IAChBX,UAAU;IACVC,yBAAyB;IACzBY,UAAU,EAAEQ,cAAc;IAC1BL,QAAQ,EAAEJ,aAAa,IAAIvG;EAC7B,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMmH,wBAAkD,GAAG,MAAAA,CAChEzB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OAAO,EACP/B,YAAY,KACT;EAAA,IAAAgC,qBAAA;EACH,MAAM5G,MAAM,IAAA4G,qBAAA,GACV3B,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CAC1B,cAAAyB,qBAAA,uBAFDA,qBAAA,CAEG5G,MAAM;EAEX,QAAQA,MAAM;IACZ,KAAK,WAAW;MAAE;QAChBvC,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAACiI,KAAK,EAAE,wCAAwC,CAAC;QACpE,OAAOT,6BAA6B,CAClCC,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OACF,CAAC;MACH;IACA,KAAK,UAAU;MAAE;QACflJ,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAACiI,KAAK,EAAE,uCAAuC,CAAC;QACnE,OAAOU,4BAA4B,CACjClB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OAAO,EACP/B,YACF,CAAC;MACH;IAEA;MAAS;QACP,MAAMzE,OAAO,GAAI,kCAAiCH,MAAO,EAAC;QAC1DvC,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAEF,OAAO,CAAC;QACnC,MAAM,IAAIpD,aAAa,CAACoD,OAAO,CAAC;MAClC;EACF;AACF,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"07-verify-and-parse-credential.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/07-verify-and-parse-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAS/D,KAAK,UAAU,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC;AAQzD,MAAM,MAAM,wBAAwB,GAAG,CACrC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,yBAAyB,EAAE,MAAM,EACjC,OAAO,EAAE;IACP,uBAAuB,EAAE,aAAa,CAAC;IACvC;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,EACD,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC;IACX,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;CAC5B,CAAC,CAAC;AAGH,KAAK,gBAAgB,GAAG;IACtB,oBAAoB;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,IAAI,EACA,yBAAyB,CAAC,MAAM,CAC9B,MAAM,EACN,MAAM,CACP,GACD,4BAA4B,CAAC,MAAM,GACnC,SAAS,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,CAAC;
|
1
|
+
{"version":3,"file":"07-verify-and-parse-credential.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/07-verify-and-parse-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAS/D,KAAK,UAAU,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC;AAQzD,MAAM,MAAM,wBAAwB,GAAG,CACrC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,yBAAyB,EAAE,MAAM,EACjC,OAAO,EAAE;IACP,uBAAuB,EAAE,aAAa,CAAC;IACvC;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,EACD,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC;IACX,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;CAC5B,CAAC,CAAC;AAGH,KAAK,gBAAgB,GAAG;IACtB,oBAAoB;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,IAAI,EACA,yBAAyB,CAAC,MAAM,CAC9B,MAAM,EACN,MAAM,CACP,GACD,4BAA4B,CAAC,MAAM,GACnC,SAAS,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,CAAC;AA4eF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,EAAE,wBAuCtC,CAAC"}
|
package/package.json
CHANGED
@@ -64,6 +64,117 @@ type DecodedSdJwtCredential = Out<typeof verifySdJwt> & {
|
|
64
64
|
sdJwt: SdJwt4VC;
|
65
65
|
};
|
66
66
|
|
67
|
+
// The data used to create localized names
|
68
|
+
type DisplayData = { locale: string; name: string }[];
|
69
|
+
|
70
|
+
// The resulting object of localized names { en: "Name", it: "Nome" }
|
71
|
+
type LocalizedNames = Record<string, string>;
|
72
|
+
|
73
|
+
// The core structure being built: a node containing the actual value and its localized names
|
74
|
+
type PropertyNode<T> = {
|
75
|
+
value: T;
|
76
|
+
name: LocalizedNames;
|
77
|
+
};
|
78
|
+
|
79
|
+
// A path can consist of object keys, array indices, or null for mapping
|
80
|
+
type Path = (string | number | null)[];
|
81
|
+
|
82
|
+
// A union of all possible shapes. It can be a custom PropertyNode or a standard object/array structure
|
83
|
+
type NodeOrStructure = Partial<PropertyNode<any>> | Record<string, any> | any[];
|
84
|
+
|
85
|
+
// Helper to build localized names from the display data.
|
86
|
+
const buildName = (display: DisplayData): LocalizedNames =>
|
87
|
+
display.reduce(
|
88
|
+
(names, { locale, name }) => ({ ...names, [locale]: name }),
|
89
|
+
{}
|
90
|
+
);
|
91
|
+
|
92
|
+
/**
|
93
|
+
* Recursively constructs a nested object with descriptive properties from a path.
|
94
|
+
*
|
95
|
+
* @param currentObject - The object or array being built upon.
|
96
|
+
* @param path - The path segments to follow.
|
97
|
+
* @param sourceValue - The raw value to place at the end of the path.
|
98
|
+
* @param displayData - The data for generating localized names.
|
99
|
+
* @returns The new object or array structure.
|
100
|
+
*/
|
101
|
+
const createNestedProperty = (
|
102
|
+
currentObject: NodeOrStructure,
|
103
|
+
path: Path,
|
104
|
+
sourceValue: unknown, // Use `unknown` for type-safe input
|
105
|
+
displayData: DisplayData
|
106
|
+
): NodeOrStructure => {
|
107
|
+
const [key, ...rest] = path;
|
108
|
+
|
109
|
+
// Case 1: Map over an array (key is null)
|
110
|
+
if (key === null) {
|
111
|
+
if (!Array.isArray(sourceValue)) return currentObject;
|
112
|
+
|
113
|
+
// We assert the type here because we know this branch handles PropertyNodes
|
114
|
+
const node = currentObject as Partial<PropertyNode<unknown[]>>;
|
115
|
+
const existingValue = Array.isArray(node.value) ? node.value : [];
|
116
|
+
|
117
|
+
const mappedArray = sourceValue.map((item, idx) =>
|
118
|
+
createNestedProperty(existingValue[idx] || {}, rest, item, displayData)
|
119
|
+
);
|
120
|
+
|
121
|
+
return {
|
122
|
+
...node,
|
123
|
+
value: mappedArray,
|
124
|
+
name: node.name ?? buildName(displayData),
|
125
|
+
};
|
126
|
+
}
|
127
|
+
|
128
|
+
// Case 2: Handle an object key (key is a string)
|
129
|
+
if (typeof key === "string") {
|
130
|
+
const nextSourceValue =
|
131
|
+
typeof sourceValue === "object" &&
|
132
|
+
sourceValue !== null &&
|
133
|
+
!Array.isArray(sourceValue) &&
|
134
|
+
key in sourceValue
|
135
|
+
? (sourceValue as Record<string, unknown>)[key]
|
136
|
+
: sourceValue;
|
137
|
+
|
138
|
+
// base case
|
139
|
+
if (rest.length === 0) {
|
140
|
+
return {
|
141
|
+
...currentObject,
|
142
|
+
[key]: { value: nextSourceValue, name: buildName(displayData) },
|
143
|
+
};
|
144
|
+
}
|
145
|
+
|
146
|
+
// recursive step
|
147
|
+
const nextObject =
|
148
|
+
(currentObject as Record<string, NodeOrStructure>)[key] || {};
|
149
|
+
|
150
|
+
return {
|
151
|
+
...currentObject,
|
152
|
+
[key]: createNestedProperty(
|
153
|
+
nextObject,
|
154
|
+
rest,
|
155
|
+
nextSourceValue,
|
156
|
+
displayData
|
157
|
+
),
|
158
|
+
};
|
159
|
+
}
|
160
|
+
|
161
|
+
// Case 3: Handle a specific array index (key is a number)
|
162
|
+
if (typeof key === "number") {
|
163
|
+
const newArray = Array.isArray(currentObject) ? [...currentObject] : [];
|
164
|
+
const nextValue = Array.isArray(sourceValue) ? sourceValue[key] : undefined;
|
165
|
+
|
166
|
+
newArray[key] = createNestedProperty(
|
167
|
+
newArray[key] || {},
|
168
|
+
rest,
|
169
|
+
nextValue,
|
170
|
+
displayData
|
171
|
+
);
|
172
|
+
return newArray;
|
173
|
+
}
|
174
|
+
|
175
|
+
return currentObject;
|
176
|
+
};
|
177
|
+
|
67
178
|
const parseCredentialSdJwt = (
|
68
179
|
// The credential configuration to use to parse the provided credential
|
69
180
|
credentialConfig: CredentialConf,
|
@@ -72,7 +183,7 @@ const parseCredentialSdJwt = (
|
|
72
183
|
includeUndefinedAttributes: boolean = false
|
73
184
|
): ParsedCredential => {
|
74
185
|
if (credentialConfig.format !== sdJwt.header.typ) {
|
75
|
-
const message = `Received credential is of an
|
186
|
+
const message = `Received credential is of an unknown type. Expected one of [${credentialConfig.format}], received '${sdJwt.header.typ}'`;
|
76
187
|
Logger.log(LogLevel.ERROR, message);
|
77
188
|
throw new IoWalletError(message);
|
78
189
|
}
|
@@ -81,55 +192,40 @@ const parseCredentialSdJwt = (
|
|
81
192
|
Logger.log(LogLevel.ERROR, "Missing claims in the credential subject");
|
82
193
|
throw new IoWalletError("Missing claims in the credential subject"); // TODO [SIW-1268]: should not be optional
|
83
194
|
}
|
195
|
+
|
84
196
|
const attrDefinitions = credentialConfig.claims;
|
85
197
|
|
86
|
-
//
|
198
|
+
// Validate that all attributes from the config exist in the disclosures
|
87
199
|
const attrsNotInDisclosures = attrDefinitions.filter(
|
88
|
-
(definition) => !disclosures.some(([, name]) => name === definition.path[0])
|
200
|
+
(definition) => !disclosures.some(([, name]) => name === definition.path[0])
|
89
201
|
);
|
90
|
-
|
202
|
+
|
203
|
+
if (attrsNotInDisclosures.length > 0 && !ignoreMissingAttributes) {
|
91
204
|
const missing = attrsNotInDisclosures.map((_) => _.path[0]).join(", ");
|
92
|
-
const received = disclosures.map((_) => _[1
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
throw new IoWalletError(message);
|
97
|
-
}
|
205
|
+
const received = disclosures.map((_) => _[1]).join(", ");
|
206
|
+
const message = `Some attributes are missing in the credential. Missing: [${missing}], received: [${received}]`;
|
207
|
+
Logger.log(LogLevel.ERROR, message);
|
208
|
+
throw new IoWalletError(message);
|
98
209
|
}
|
99
210
|
|
100
|
-
|
101
|
-
|
102
|
-
const
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
// example: { "it-IT": "Nome", "en-EN": "Name", "es-ES": "Nombre" }
|
119
|
-
.map(
|
120
|
-
([attrKey, { display, ...definition }]) =>
|
121
|
-
[
|
122
|
-
attrKey,
|
123
|
-
{
|
124
|
-
...definition,
|
125
|
-
name: display.reduce(
|
126
|
-
(names, { locale, name }) => ({ ...names, [locale]: name }),
|
127
|
-
{} as Record<string, string>
|
128
|
-
),
|
129
|
-
},
|
130
|
-
] as const
|
131
|
-
)
|
132
|
-
);
|
211
|
+
const definedValues: ParsedCredential = {};
|
212
|
+
|
213
|
+
for (const { path, display } of attrDefinitions) {
|
214
|
+
const attrKey = path[0];
|
215
|
+
const disclosureValue = disclosures.find(
|
216
|
+
([, name]) => name === attrKey
|
217
|
+
)?.[2];
|
218
|
+
|
219
|
+
if (disclosureValue !== undefined) {
|
220
|
+
const enriched = createNestedProperty(
|
221
|
+
definedValues,
|
222
|
+
path,
|
223
|
+
disclosureValue,
|
224
|
+
display
|
225
|
+
);
|
226
|
+
Object.assign(definedValues, enriched);
|
227
|
+
}
|
228
|
+
}
|
133
229
|
|
134
230
|
if (includeUndefinedAttributes) {
|
135
231
|
// attributes that are in the disclosure set
|
@@ -139,6 +235,7 @@ const parseCredentialSdJwt = (
|
|
139
235
|
.filter((_) => !Object.keys(definedValues).includes(_[1]))
|
140
236
|
.map(([, key, value]) => [key, { value, name: key }])
|
141
237
|
);
|
238
|
+
|
142
239
|
return {
|
143
240
|
...definedValues,
|
144
241
|
...undefinedValues,
|