@pagopa/io-react-native-wallet 2.0.0 → 2.1.0
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 +42 -128
- package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
- package/lib/commonjs/sd-jwt/__test__/types.test.js +40 -0
- package/lib/commonjs/sd-jwt/__test__/types.test.js.map +1 -1
- package/lib/commonjs/sd-jwt/types.js +2 -1
- package/lib/commonjs/sd-jwt/types.js.map +1 -1
- package/lib/commonjs/utils/nestedProperty.js +142 -0
- package/lib/commonjs/utils/nestedProperty.js.map +1 -0
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js +41 -127
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
- package/lib/module/sd-jwt/__test__/types.test.js +41 -1
- package/lib/module/sd-jwt/__test__/types.test.js.map +1 -1
- package/lib/module/sd-jwt/types.js +2 -1
- package/lib/module/sd-jwt/types.js.map +1 -1
- package/lib/module/utils/nestedProperty.js +136 -0
- package/lib/module/utils/nestedProperty.js.map +1 -0
- package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts.map +1 -1
- package/lib/typescript/sd-jwt/types.d.ts +5 -5
- package/lib/typescript/sd-jwt/types.d.ts.map +1 -1
- package/lib/typescript/utils/nestedProperty.d.ts +23 -0
- package/lib/typescript/utils/nestedProperty.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/credential/issuance/07-verify-and-parse-credential.ts +2 -113
- package/src/sd-jwt/__test__/types.test.ts +49 -1
- package/src/sd-jwt/types.ts +2 -1
- package/src/utils/nestedProperty.ts +198 -0
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.verifyAndParseCredential = void 0;
|
7
|
-
var _misc = require("../../utils/misc");
|
8
7
|
var _errors = require("../../utils/errors");
|
9
8
|
var _sdJwt = require("../../sd-jwt");
|
10
9
|
var _converters = require("../../sd-jwt/converters");
|
@@ -14,101 +13,16 @@ var _const = require("../../mdoc/const");
|
|
14
13
|
var _utils = require("../../mdoc/utils");
|
15
14
|
var _logging = require("../../utils/logging");
|
16
15
|
var _converter = require("../../mdoc/converter");
|
16
|
+
var _nestedProperty = require("../../utils/nestedProperty");
|
17
17
|
// The credential as a collection of attributes in plain value
|
18
18
|
|
19
19
|
// handy alias
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
// The resulting object of localized names { en: "Name", it: "Nome" }
|
24
|
-
|
25
|
-
// The core structure being built: a node containing the actual value and its localized names
|
26
|
-
|
27
|
-
// A path can consist of object keys, array indices, or null for mapping
|
28
|
-
|
29
|
-
// A union of all possible shapes. It can be a custom PropertyNode or a standard object/array structure
|
30
|
-
|
31
|
-
// Helper to build localized names from the display data.
|
32
|
-
const buildName = display => display.reduce((names, _ref) => {
|
33
|
-
let {
|
34
|
-
locale,
|
35
|
-
name
|
36
|
-
} = _ref;
|
37
|
-
return {
|
38
|
-
...names,
|
39
|
-
[locale]: name
|
40
|
-
};
|
41
|
-
}, {});
|
42
|
-
|
43
|
-
/**
|
44
|
-
* Recursively constructs a nested object with descriptive properties from a path.
|
45
|
-
*
|
46
|
-
* @param currentObject - The object or array being built upon.
|
47
|
-
* @param path - The path segments to follow.
|
48
|
-
* @param sourceValue - The raw value to place at the end of the path.
|
49
|
-
* @param displayData - The data for generating localized names.
|
50
|
-
* @returns The new object or array structure.
|
51
|
-
*/
|
52
|
-
const createNestedProperty = (currentObject, path, sourceValue, displayData) => {
|
53
|
-
const [key, ...rest] = path;
|
54
|
-
|
55
|
-
// Case 1: Map over an array (key is null)
|
56
|
-
if (key === null) {
|
57
|
-
if (!Array.isArray(sourceValue)) return currentObject;
|
58
|
-
|
59
|
-
// We assert the type here because we know this branch handles PropertyNodes
|
60
|
-
const node = currentObject;
|
61
|
-
const existingValue = Array.isArray(node.value) ? node.value : [];
|
62
|
-
const mappedArray = sourceValue.map((item, idx) => createNestedProperty(existingValue[idx] || {}, rest, item, displayData));
|
63
|
-
return {
|
64
|
-
...node,
|
65
|
-
value: mappedArray,
|
66
|
-
name: node.name ?? buildName(displayData)
|
67
|
-
};
|
68
|
-
}
|
69
|
-
|
70
|
-
// Case 2: Handle an object key (key is a string)
|
71
|
-
if (typeof key === "string") {
|
72
|
-
let nextSourceValue = sourceValue;
|
73
|
-
if ((0, _misc.isObject)(sourceValue)) {
|
74
|
-
// Skip processing when the key is not found within the claim object
|
75
|
-
if (!(key in sourceValue)) return currentObject;
|
76
|
-
nextSourceValue = sourceValue[key];
|
77
|
-
}
|
78
|
-
|
79
|
-
// base case
|
80
|
-
if (rest.length === 0) {
|
81
|
-
return {
|
82
|
-
...currentObject,
|
83
|
-
[key]: {
|
84
|
-
value: nextSourceValue,
|
85
|
-
name: buildName(displayData)
|
86
|
-
}
|
87
|
-
};
|
88
|
-
}
|
89
|
-
|
90
|
-
// recursive step
|
91
|
-
const nextObject = currentObject[key] || {};
|
92
|
-
return {
|
93
|
-
...currentObject,
|
94
|
-
[key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData)
|
95
|
-
};
|
96
|
-
}
|
97
|
-
|
98
|
-
// Case 3: Handle a specific array index (key is a number)
|
99
|
-
if (typeof key === "number") {
|
100
|
-
const newArray = Array.isArray(currentObject) ? [...currentObject] : [];
|
101
|
-
const nextValue = Array.isArray(sourceValue) ? sourceValue[key] : undefined;
|
102
|
-
newArray[key] = createNestedProperty(newArray[key] || {}, rest, nextValue, displayData);
|
103
|
-
return newArray;
|
104
|
-
}
|
105
|
-
return currentObject;
|
106
|
-
};
|
107
|
-
const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
21
|
+
const parseCredentialSdJwt = function (credentialConfig, _ref) {
|
108
22
|
let {
|
109
23
|
sdJwt,
|
110
24
|
disclosures
|
111
|
-
} =
|
25
|
+
} = _ref;
|
112
26
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
113
27
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
114
28
|
if (credentialConfig.format !== sdJwt.header.typ) {
|
@@ -124,8 +38,8 @@ const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
|
124
38
|
const attrDefinitions = credentialConfig.claims;
|
125
39
|
|
126
40
|
// Validate that all attributes from the config exist in the disclosures
|
127
|
-
const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(
|
128
|
-
let [, name] =
|
41
|
+
const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(_ref2 => {
|
42
|
+
let [, name] = _ref2;
|
129
43
|
return name === definition.path[0];
|
130
44
|
}));
|
131
45
|
if (attrsNotInDisclosures.length > 0 && !ignoreMissingAttributes) {
|
@@ -142,20 +56,20 @@ const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
|
142
56
|
} of attrDefinitions) {
|
143
57
|
var _disclosures$find;
|
144
58
|
const attrKey = path[0];
|
145
|
-
const disclosureValue = (_disclosures$find = disclosures.find(
|
146
|
-
let [, name] =
|
59
|
+
const disclosureValue = (_disclosures$find = disclosures.find(_ref3 => {
|
60
|
+
let [, name] = _ref3;
|
147
61
|
return name === attrKey;
|
148
62
|
})) === null || _disclosures$find === void 0 ? void 0 : _disclosures$find[2];
|
149
63
|
if (disclosureValue !== undefined) {
|
150
|
-
const enriched = createNestedProperty(definedValues, path, disclosureValue, display);
|
64
|
+
const enriched = (0, _nestedProperty.createNestedProperty)(definedValues, path, disclosureValue, display);
|
151
65
|
Object.assign(definedValues, enriched);
|
152
66
|
}
|
153
67
|
}
|
154
68
|
if (includeUndefinedAttributes) {
|
155
69
|
// attributes that are in the disclosure set
|
156
70
|
// but are not defined in the issuer configuration
|
157
|
-
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(
|
158
|
-
let [, key, value] =
|
71
|
+
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(_ref4 => {
|
72
|
+
let [, key, value] = _ref4;
|
159
73
|
return [key, {
|
160
74
|
value,
|
161
75
|
name: key
|
@@ -168,10 +82,10 @@ const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
|
168
82
|
}
|
169
83
|
return definedValues;
|
170
84
|
};
|
171
|
-
const parseCredentialMDoc = function (credentialConfig,
|
85
|
+
const parseCredentialMDoc = function (credentialConfig, _ref5) {
|
172
86
|
let {
|
173
87
|
issuerSigned
|
174
|
-
} =
|
88
|
+
} = _ref5;
|
175
89
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
176
90
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
177
91
|
if (!credentialConfig) {
|
@@ -180,37 +94,37 @@ const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
|
180
94
|
if (!credentialConfig.claims) {
|
181
95
|
throw new _errors.IoWalletError("Missing claims in the credential subject");
|
182
96
|
}
|
183
|
-
const attrDefinitions = credentialConfig.claims.map(
|
97
|
+
const attrDefinitions = credentialConfig.claims.map(_ref6 => {
|
184
98
|
let {
|
185
99
|
path: [namespace, attribute],
|
186
100
|
display
|
187
|
-
} =
|
101
|
+
} = _ref6;
|
188
102
|
return [namespace, attribute, display];
|
189
103
|
});
|
190
104
|
if (!issuerSigned.nameSpaces) {
|
191
105
|
throw new _errors.IoWalletError("Missing claims in the credential");
|
192
106
|
}
|
193
|
-
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(
|
194
|
-
let [namespace, values] =
|
107
|
+
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(_ref7 => {
|
108
|
+
let [namespace, values] = _ref7;
|
195
109
|
return values.map(v => [namespace, v.elementIdentifier, v.elementValue]);
|
196
110
|
});
|
197
111
|
|
198
112
|
// Check that all mandatory attributes defined in the issuer configuration are present in the disclosure set
|
199
113
|
// and filter the non present ones
|
200
|
-
const attrsNotInDisclosures = attrDefinitions.filter(
|
201
|
-
let [attrDefNamespace, attrKey] =
|
202
|
-
return !flatNamespaces.some(
|
203
|
-
let [namespace, claim] =
|
114
|
+
const attrsNotInDisclosures = attrDefinitions.filter(_ref8 => {
|
115
|
+
let [attrDefNamespace, attrKey] = _ref8;
|
116
|
+
return !flatNamespaces.some(_ref9 => {
|
117
|
+
let [namespace, claim] = _ref9;
|
204
118
|
return attrDefNamespace === namespace && attrKey === claim;
|
205
119
|
});
|
206
120
|
});
|
207
121
|
if (attrsNotInDisclosures.length > 0) {
|
208
|
-
const missing = attrsNotInDisclosures.map(
|
209
|
-
let [, attrKey] =
|
122
|
+
const missing = attrsNotInDisclosures.map(_ref10 => {
|
123
|
+
let [, attrKey] = _ref10;
|
210
124
|
return attrKey;
|
211
125
|
}).join(", ");
|
212
|
-
const received = flatNamespaces.map(
|
213
|
-
let [, attrKey] =
|
126
|
+
const received = flatNamespaces.map(_ref11 => {
|
127
|
+
let [, attrKey] = _ref11;
|
214
128
|
return attrKey;
|
215
129
|
}).join(", ");
|
216
130
|
if (!ignoreMissingAttributes) {
|
@@ -221,38 +135,38 @@ const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
|
221
135
|
// Attributes defined in the issuer configuration and present in the disclosure set
|
222
136
|
const definedValues = attrDefinitions
|
223
137
|
// Retrieve the value from the corresponding disclosure
|
224
|
-
.map(
|
138
|
+
.map(_ref12 => {
|
225
139
|
var _flatNamespaces$find;
|
226
|
-
let [attrDefNamespace, attrKey, display] =
|
140
|
+
let [attrDefNamespace, attrKey, display] = _ref12;
|
227
141
|
return [attrDefNamespace, attrKey, {
|
228
142
|
display,
|
229
|
-
value: (_flatNamespaces$find = flatNamespaces.find(
|
230
|
-
let [namespace, name] =
|
143
|
+
value: (_flatNamespaces$find = flatNamespaces.find(_ref13 => {
|
144
|
+
let [namespace, name] = _ref13;
|
231
145
|
return attrDefNamespace === namespace && name === attrKey;
|
232
146
|
})) === null || _flatNamespaces$find === void 0 ? void 0 : _flatNamespaces$find[2]
|
233
147
|
}];
|
234
148
|
})
|
235
149
|
//filter the not found elements
|
236
|
-
.filter(
|
237
|
-
let [_, __, definition] =
|
150
|
+
.filter(_ref14 => {
|
151
|
+
let [_, __, definition] = _ref14;
|
238
152
|
return definition.value !== undefined;
|
239
153
|
})
|
240
154
|
// Add a human-readable attribute name, with i18n, in the form { locale: name }
|
241
155
|
// Example: { "it-IT": "Nome", "en-EN": "Name", "es-ES": "Nombre" }
|
242
|
-
.reduce((acc,
|
156
|
+
.reduce((acc, _ref15) => {
|
243
157
|
let [attrDefNamespace, attrKey, {
|
244
158
|
display,
|
245
159
|
value
|
246
|
-
}] =
|
160
|
+
}] = _ref15;
|
247
161
|
return {
|
248
162
|
...acc,
|
249
163
|
[(0, _utils.getParsedCredentialClaimKey)(attrDefNamespace, attrKey)]: {
|
250
164
|
value,
|
251
|
-
name: display.reduce((names,
|
165
|
+
name: display.reduce((names, _ref16) => {
|
252
166
|
let {
|
253
167
|
locale,
|
254
168
|
name
|
255
|
-
} =
|
169
|
+
} = _ref16;
|
256
170
|
return {
|
257
171
|
...names,
|
258
172
|
[locale]: name
|
@@ -262,11 +176,11 @@ const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
|
262
176
|
};
|
263
177
|
}, {});
|
264
178
|
if (includeUndefinedAttributes) {
|
265
|
-
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(
|
266
|
-
let [namespace, key] =
|
179
|
+
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(_ref17 => {
|
180
|
+
let [namespace, key] = _ref17;
|
267
181
|
return !definedValues[(0, _utils.getParsedCredentialClaimKey)(namespace, key)];
|
268
|
-
}).map(
|
269
|
-
let [namespace, key, value] =
|
182
|
+
}).map(_ref18 => {
|
183
|
+
let [namespace, key, value] = _ref18;
|
270
184
|
return [(0, _utils.getParsedCredentialClaimKey)(namespace, key), {
|
271
185
|
value,
|
272
186
|
name: key
|
@@ -336,12 +250,12 @@ async function verifyCredentialMDoc(rawCredential, x509CertRoot, holderBindingCo
|
|
336
250
|
}
|
337
251
|
return decodedCredential;
|
338
252
|
}
|
339
|
-
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId,
|
253
|
+
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId, _ref19) => {
|
340
254
|
let {
|
341
255
|
credentialCryptoContext,
|
342
256
|
ignoreMissingAttributes,
|
343
257
|
includeUndefinedAttributes
|
344
|
-
} =
|
258
|
+
} = _ref19;
|
345
259
|
const decoded = await verifyCredentialSdJwt(credential, issuerConf.openid_credential_issuer.jwks.keys, credentialCryptoContext);
|
346
260
|
_logging.Logger.log(_logging.LogLevel.DEBUG, `Decoded credential: ${JSON.stringify(decoded)}`);
|
347
261
|
const credentialConfig = issuerConf.openid_credential_issuer.credential_configurations_supported[credentialConfigurationId];
|
@@ -358,12 +272,12 @@ const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialC
|
|
358
272
|
issuedAt: typeof maybeIssuedAt === "number" ? new Date(maybeIssuedAt * 1000) : undefined
|
359
273
|
};
|
360
274
|
};
|
361
|
-
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId,
|
275
|
+
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId, _ref20, x509CertRoot) => {
|
362
276
|
var _parsedCredential$get, _parsedCredential$get2;
|
363
277
|
let {
|
364
278
|
credentialCryptoContext,
|
365
279
|
ignoreMissingAttributes
|
366
|
-
} =
|
280
|
+
} = _ref20;
|
367
281
|
if (!x509CertRoot) {
|
368
282
|
throw new _errors.IoWalletError("Missing x509CertRoot");
|
369
283
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_misc","require","_errors","_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","isObject","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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"}
|
1
|
+
{"version":3,"names":["_errors","require","_sdJwt","_converters","_jwk","_mdoc","_const","_utils","_logging","_converter","_nestedProperty","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","display","_disclosures$find","attrKey","disclosureValue","find","_ref3","enriched","createNestedProperty","Object","assign","undefinedValues","fromEntries","keys","includes","_ref4","key","value","parseCredentialMDoc","_ref5","issuerSigned","_ref6","namespace","attribute","nameSpaces","flatNamespaces","entries","flatMap","_ref7","values","v","elementIdentifier","elementValue","_ref8","attrDefNamespace","_ref9","claim","_ref10","_ref11","_ref12","_flatNamespaces$find","_ref13","_ref14","__","reduce","acc","_ref15","getParsedCredentialClaimKey","names","_ref16","locale","_ref17","_ref18","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","_ref19","credentialCryptoContext","decoded","openid_credential_issuer","jwks","DEBUG","JSON","stringify","credential_configurations_supported","parsedCredential","maybeIssuedAt","getValueFromDisclosures","expiration","Date","exp","issuedAt","verifyAndParseCredentialMDoc","_ref20","_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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"}
|
@@ -62,4 +62,44 @@ describe("Disclosure", () => {
|
|
62
62
|
expect(success).toBe(true);
|
63
63
|
});
|
64
64
|
});
|
65
|
+
describe("Verification.time", () => {
|
66
|
+
test.each([["ISO string", "2025-09-09T10:00:00Z"], ["unix seconds", 1752122400], ["unix milliseconds", 1752122400000]])("accepts %s", (_label, time) => {
|
67
|
+
const value = {
|
68
|
+
trust_framework: "eidas",
|
69
|
+
assurance_level: "high",
|
70
|
+
evidence: [{
|
71
|
+
type: "vouch",
|
72
|
+
time,
|
73
|
+
attestation: {
|
74
|
+
type: "digital_attestation",
|
75
|
+
reference_number: "abc",
|
76
|
+
date_of_issuance: "2025-09-02",
|
77
|
+
voucher: {
|
78
|
+
organization: "IPZS"
|
79
|
+
}
|
80
|
+
}
|
81
|
+
}]
|
82
|
+
};
|
83
|
+
expect(_types.Verification.safeParse(value).success).toBe(true);
|
84
|
+
});
|
85
|
+
it("rejects invalid type", () => {
|
86
|
+
const value = {
|
87
|
+
trust_framework: "eidas",
|
88
|
+
assurance_level: "high",
|
89
|
+
evidence: [{
|
90
|
+
type: "vouch",
|
91
|
+
time: null,
|
92
|
+
attestation: {
|
93
|
+
type: "digital_attestation",
|
94
|
+
reference_number: "abc",
|
95
|
+
date_of_issuance: "2025-09-02",
|
96
|
+
voucher: {
|
97
|
+
organization: "IPZS"
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}]
|
101
|
+
};
|
102
|
+
expect(_types.Verification.safeParse(value).success).toBe(false);
|
103
|
+
});
|
104
|
+
});
|
65
105
|
//# sourceMappingURL=types.test.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_types","require","describe","it","token","header","typ","alg","kid","payload","_sd","sub","_sd_alg","vct","iss","issuing_country","issuing_authority","cnf","jwk","kty","crv","x","y","exp","status","status_assertion","credential_hash_alg","success","SdJwt4VC","safeParse","expect","toBe","value","type","record","source","organization_name","organization_id","country_code","Disclosure"],"sourceRoot":"../../../../src","sources":["sd-jwt/__test__/types.test.ts"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEAC,QAAQ,CAAC,UAAU,EAAE,MAAM;EACzBC,EAAE,CAAC,6BAA6B,EAAE,MAAM;IACtC;IACA,MAAMC,KAAK,GAAG;MACZC,MAAM,EAAE;QACNC,GAAG,EAAE,WAAW;QAChBC,GAAG,EAAE,OAAO;QACZC,GAAG,EAAE;MACP,CAAC;MACDC,OAAO,EAAE;QACPC,GAAG,EAAE,CACH,6CAA6C,EAC7C,6CAA6C,EAC7C,6CAA6C,EAC7C,6CAA6C,EAC7C,6CAA6C,EAC7C,6CAA6C,CAC9C;QACDC,GAAG,EAAE,sCAAsC;QAC3CC,OAAO,EAAE,SAAS;QAClBC,GAAG,EAAE,0BAA0B;QAC/B,eAAe,EACb,kEAAkE;QACpEC,GAAG,EAAE,iCAAiC;QACtCC,eAAe,EAAE,IAAI;QACrBC,iBAAiB,EAAE,0CAA0C;QAC7DC,GAAG,EAAE;UACHC,GAAG,EAAE;YACHC,GAAG,EAAE,IAAI;YACTC,GAAG,EAAE,OAAO;YACZZ,GAAG,EAAE,6CAA6C;YAClDa,CAAC,EAAE,6CAA6C;YAChDC,CAAC,EAAE;UACL;QACF,CAAC;QACDC,GAAG,EAAE,UAAU;QACfC,MAAM,EAAE;UACNC,gBAAgB,EAAE;YAChBC,mBAAmB,EAAE;UACvB;QACF;MACF;IACF,CAAC;IAED,MAAM;MAAEC;IAAQ,CAAC,GAAGC,eAAQ,CAACC,SAAS,CAACzB,KAAK,CAAC;IAE7C0B,MAAM,CAACH,OAAO,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;EAC5B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF7B,QAAQ,CAAC,YAAY,EAAE,MAAM;EAC3BC,EAAE,CAAC,kCAAkC,EAAE,MAAM;IAC3C;IACA,MAAM6B,KAAK,GAAG,CACZ,wBAAwB,EACxB,UAAU,EACV,CACE;MACEC,IAAI,EAAE,mBAAmB;MACzBC,MAAM,EAAE;QACND,IAAI,EAAE,cAAc;QACpBE,MAAM,EAAE;UACNC,iBAAiB,EAAE,wBAAwB;UAC3CC,eAAe,EAAE,MAAM;UACvBC,YAAY,EAAE;QAChB;MACF;IACF,CAAC,CACF,CACF;IAED,MAAM;MAAEX;IAAQ,CAAC,GAAGY,iBAAU,CAACV,SAAS,CAACG,KAAK,CAAC;IAC/CF,MAAM,CAACH,OAAO,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;EAC5B,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
1
|
+
{"version":3,"names":["_types","require","describe","it","token","header","typ","alg","kid","payload","_sd","sub","_sd_alg","vct","iss","issuing_country","issuing_authority","cnf","jwk","kty","crv","x","y","exp","status","status_assertion","credential_hash_alg","success","SdJwt4VC","safeParse","expect","toBe","value","type","record","source","organization_name","organization_id","country_code","Disclosure","test","each","_label","time","trust_framework","assurance_level","evidence","attestation","reference_number","date_of_issuance","voucher","organization","Verification"],"sourceRoot":"../../../../src","sources":["sd-jwt/__test__/types.test.ts"],"mappings":"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"}
|
@@ -90,7 +90,8 @@ const Verification = _zod.z.object({
|
|
90
90
|
assurance_level: _zod.z.string(),
|
91
91
|
evidence: _zod.z.array(_zod.z.object({
|
92
92
|
type: _zod.z.literal("vouch"),
|
93
|
-
|
93
|
+
// Support both string and UNIX timestamp for backward compatibility
|
94
|
+
time: _zod.z.union([_zod.z.string(), _zod.z.number()]),
|
94
95
|
attestation: _zod.z.object({
|
95
96
|
type: _zod.z.literal("digital_attestation"),
|
96
97
|
reference_number: _zod.z.string(),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_jwk","require","_zod","UnixTime","z","number","min","max","exports","ObfuscatedDisclosures","object","_sd","array","string","Disclosure","tuple","unknown","LEGACY_SD_JWT","StatusAssertion","credential_hash_alg","literal","SdJwt4VC","header","typ","enum","alg","kid","trust_chain","optional","x5c","vctm","payload","intersection","iss","sub","iat","exp","_sd_alg","status","union","status_assertion","status_attestation","cnf","jwk","JWK","vct","issuing_authority","issuing_country","Verification","trust_framework","assurance_level","evidence","type","time","attestation","reference_number","date_of_issuance","voucher","organization","TypeMetadata","name","description","data_source","authentic_source","organization_name","organization_code","contacts","homepage_uri","url","logo_uri"],"sourceRoot":"../../../src","sources":["sd-jwt/types.ts"],"mappings":"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
|
1
|
+
{"version":3,"names":["_jwk","require","_zod","UnixTime","z","number","min","max","exports","ObfuscatedDisclosures","object","_sd","array","string","Disclosure","tuple","unknown","LEGACY_SD_JWT","StatusAssertion","credential_hash_alg","literal","SdJwt4VC","header","typ","enum","alg","kid","trust_chain","optional","x5c","vctm","payload","intersection","iss","sub","iat","exp","_sd_alg","status","union","status_assertion","status_attestation","cnf","jwk","JWK","vct","issuing_authority","issuing_country","Verification","trust_framework","assurance_level","evidence","type","time","attestation","reference_number","date_of_issuance","voucher","organization","TypeMetadata","name","description","data_source","authentic_source","organization_name","organization_code","contacts","homepage_uri","url","logo_uri"],"sourceRoot":"../../../src","sources":["sd-jwt/types.ts"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEO,MAAME,QAAQ,GAAGC,MAAC,CAACC,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC,aAAa,CAAC;AAACC,OAAA,CAAAL,QAAA,GAAAA,QAAA;AAItD,MAAMM,qBAAqB,GAAGL,MAAC,CAACM,MAAM,CAAC;EAAEC,GAAG,EAAEP,MAAC,CAACQ,KAAK,CAACR,MAAC,CAACS,MAAM,CAAC,CAAC;AAAE,CAAC,CAAC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AALAL,OAAA,CAAAC,qBAAA,GAAAA,qBAAA;AAOO,MAAMK,UAAU,GAAGV,MAAC,CAACW,KAAK,CAAC,CAChC,UAAWX,MAAC,CAACS,MAAM,CAAC,CAAC,EACrB,gBAAiBT,MAAC,CAACS,MAAM,CAAC,CAAC,EAC3B,iBAAkBT,MAAC,CAACY,OAAO,CAAC,CAAC,CAC9B,CAAC;;AAEF;AACA;AACA;AACA;AAHAR,OAAA,CAAAM,UAAA,GAAAA,UAAA;AAKO,MAAMG,aAAa,GAAG,WAAW;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPAT,OAAA,CAAAS,aAAA,GAAAA,aAAA;AAaA,MAAMC,eAAe,GAAGd,MAAC,CAACM,MAAM,CAAC;EAC/BS,mBAAmB,EAAEf,MAAC,CAACgB,OAAO,CAAC,SAAS;AAC1C,CAAC,CAAC;;AAEF;AACA;AACA;AACA;;AAEO,MAAMC,QAAQ,GAAGjB,MAAC,CAACM,MAAM,CAAC;EAC/BY,MAAM,EAAElB,MAAC,CAACM,MAAM,CAAC;IACfa,GAAG,EAAEnB,MAAC,CAACoB,IAAI,CAAC,CAAC,WAAW,EAAEP,aAAa,CAAC,CAAC;IACzCQ,GAAG,EAAErB,MAAC,CAACS,MAAM,CAAC,CAAC;IACfa,GAAG,EAAEtB,MAAC,CAACS,MAAM,CAAC,CAAC;IACfc,WAAW,EAAEvB,MAAC,CAACQ,KAAK,CAACR,MAAC,CAACS,MAAM,CAAC,CAAC,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC3CC,GAAG,EAAEzB,MAAC,CAACQ,KAAK,CAACR,MAAC,CAACS,MAAM,CAAC,CAAC,CAAC,CAACe,QAAQ,CAAC,CAAC;IACnCE,IAAI,EAAE1B,MAAC,CAACQ,KAAK,CAACR,MAAC,CAACS,MAAM,CAAC,CAAC,CAAC,CAACe,QAAQ,CAAC;EACrC,CAAC,CAAC;EACFG,OAAO,EAAE3B,MAAC,CAAC4B,YAAY,CACrB5B,MAAC,CAACM,MAAM,CAAC;IACPuB,GAAG,EAAE7B,MAAC,CAACS,MAAM,CAAC,CAAC;IACfqB,GAAG,EAAE9B,MAAC,CAACS,MAAM,CAAC,CAAC;IACfsB,GAAG,EAAEhC,QAAQ,CAACyB,QAAQ,CAAC,CAAC;IACxBQ,GAAG,EAAEjC,QAAQ;IACbkC,OAAO,EAAEjC,MAAC,CAACgB,OAAO,CAAC,SAAS,CAAC;IAC7BkB,MAAM,EAAElC,MAAC,CACNmC,KAAK,CAAC;IACL;IACAnC,MAAC,CAACM,MAAM,CAAC;MAAE8B,gBAAgB,EAAEtB;IAAgB,CAAC,CAAC;IAC/C;IACAd,MAAC,CAACM,MAAM,CAAC;MAAE+B,kBAAkB,EAAEvB;IAAgB,CAAC,CAAC,CAClD,CAAC,CACDU,QAAQ,CAAC,CAAC;IACbc,GAAG,EAAEtC,MAAC,CAACM,MAAM,CAAC;MACZiC,GAAG,EAAEC;IACP,CAAC,CAAC;IACFC,GAAG,EAAEzC,MAAC,CAACS,MAAM,CAAC,CAAC;IACf,eAAe,EAAET,MAAC,CAACS,MAAM,CAAC,CAAC,CAACe,QAAQ,CAAC,CAAC;IACtCkB,iBAAiB,EAAE1C,MAAC,CAACS,MAAM,CAAC,CAAC,CAACe,QAAQ,CAAC,CAAC;IACxCmB,eAAe,EAAE3C,MAAC,CAACS,MAAM,CAAC,CAAC,CAACe,QAAQ,CAAC;EACvC,CAAC,CAAC,EACFnB,qBACF;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AAHAD,OAAA,CAAAa,QAAA,GAAAA,QAAA;AAKO,MAAM2B,YAAY,GAAG5C,MAAC,CAACM,MAAM,CAAC;EACnCuC,eAAe,EAAE7C,MAAC,CAACS,MAAM,CAAC,CAAC;EAC3BqC,eAAe,EAAE9C,MAAC,CAACS,MAAM,CAAC,CAAC;EAC3BsC,QAAQ,EAAE/C,MAAC,CAACQ,KAAK,CACfR,MAAC,CAACM,MAAM,CAAC;IACP0C,IAAI,EAAEhD,MAAC,CAACgB,OAAO,CAAC,OAAO,CAAC;IACxB;IACAiC,IAAI,EAAEjD,MAAC,CAACmC,KAAK,CAAC,CAACnC,MAAC,CAACS,MAAM,CAAC,CAAC,EAAET,MAAC,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvCiD,WAAW,EAAElD,MAAC,CAACM,MAAM,CAAC;MACpB0C,IAAI,EAAEhD,MAAC,CAACgB,OAAO,CAAC,qBAAqB,CAAC;MACtCmC,gBAAgB,EAAEnD,MAAC,CAACS,MAAM,CAAC,CAAC;MAC5B2C,gBAAgB,EAAEpD,MAAC,CAACS,MAAM,CAAC,CAAC;MAC5B4C,OAAO,EAAErD,MAAC,CAACM,MAAM,CAAC;QAAEgD,YAAY,EAAEtD,MAAC,CAACS,MAAM,CAAC;MAAE,CAAC;IAChD,CAAC;EACH,CAAC,CACH;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AAJAL,OAAA,CAAAwC,YAAA,GAAAA,YAAA;AAMO,MAAMW,YAAY,GAAGvD,MAAC,CAACM,MAAM,CAAC;EACnCkD,IAAI,EAAExD,MAAC,CAACS,MAAM,CAAC,CAAC;EAChBgD,WAAW,EAAEzD,MAAC,CAACS,MAAM,CAAC,CAAC;EACvBiD,WAAW,EAAE1D,MAAC,CAACM,MAAM,CAAC;IACpBuC,eAAe,EAAE7C,MAAC,CAACS,MAAM,CAAC,CAAC;IAC3BkD,gBAAgB,EAAE3D,MAAC,CAACM,MAAM,CAAC;MACzBsD,iBAAiB,EAAE5D,MAAC,CAACS,MAAM,CAAC,CAAC;MAC7BoD,iBAAiB,EAAE7D,MAAC,CAACS,MAAM,CAAC,CAAC;MAC7BqD,QAAQ,EAAE9D,MAAC,CAACQ,KAAK,CAACR,MAAC,CAACS,MAAM,CAAC,CAAC,CAAC;MAC7BsD,YAAY,EAAE/D,MAAC,CAACS,MAAM,CAAC,CAAC,CAACuD,GAAG,CAAC,CAAC;MAC9BC,QAAQ,EAAEjE,MAAC,CAACS,MAAM,CAAC,CAAC,CAACuD,GAAG,CAAC;IAC3B,CAAC;EACH,CAAC;EACD;AACF,CAAC,CAAC;AAAC5D,OAAA,CAAAmD,YAAA,GAAAA,YAAA"}
|
@@ -0,0 +1,142 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createNestedProperty = void 0;
|
7
|
+
var _misc = require("./misc");
|
8
|
+
// The data used to create localized names
|
9
|
+
|
10
|
+
// The resulting object of localized names { en: "Name", it: "Nome" }
|
11
|
+
|
12
|
+
// The core structure being built: a node containing the actual value and its localized names
|
13
|
+
|
14
|
+
// A path can consist of object keys, array indices, or null for mapping
|
15
|
+
|
16
|
+
// A union of all possible shapes. It can be a custom PropertyNode or a standard object/array structure
|
17
|
+
|
18
|
+
// Helper to build localized names from the display data.
|
19
|
+
const buildName = display => display.reduce((names, _ref) => {
|
20
|
+
let {
|
21
|
+
locale,
|
22
|
+
name
|
23
|
+
} = _ref;
|
24
|
+
return {
|
25
|
+
...names,
|
26
|
+
[locale]: name
|
27
|
+
};
|
28
|
+
}, {});
|
29
|
+
|
30
|
+
// Handles the case where the path key is `null`
|
31
|
+
const handleNullKeyCase = (currentObject, rest, sourceValue, displayData) => {
|
32
|
+
if (!Array.isArray(sourceValue)) return currentObject;
|
33
|
+
|
34
|
+
// We assert the type here because we know this branch handles PropertyNodes
|
35
|
+
const node = currentObject;
|
36
|
+
const existingValue = Array.isArray(node.value) ? node.value : [];
|
37
|
+
const mappedArray = sourceValue.map((item, idx) => createNestedProperty(existingValue[idx] || {}, rest, item, displayData));
|
38
|
+
return {
|
39
|
+
...node,
|
40
|
+
value: mappedArray,
|
41
|
+
name: node.name ?? buildName(displayData)
|
42
|
+
};
|
43
|
+
};
|
44
|
+
|
45
|
+
// Handles the case where the path key is a string
|
46
|
+
const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData) => {
|
47
|
+
let nextSourceValue = sourceValue;
|
48
|
+
const isLeaf = rest.length === 0;
|
49
|
+
if ((0, _misc.isObject)(sourceValue)) {
|
50
|
+
// Check if any remaining string keys in the path exist in current sourceValue
|
51
|
+
// This handles nested object paths (unlike arrays which use null in the path)
|
52
|
+
const hasRestKey = rest.some(r => typeof r === "string" && r in sourceValue);
|
53
|
+
if (hasRestKey) {
|
54
|
+
return handleRestKey(currentObject, key, rest, sourceValue, displayData);
|
55
|
+
}
|
56
|
+
|
57
|
+
// Skip processing when the key is not found within the claim object
|
58
|
+
if (!(key in sourceValue)) {
|
59
|
+
// Leaf node: create a node with an empty value and display name
|
60
|
+
if (isLeaf) {
|
61
|
+
return {
|
62
|
+
...currentObject,
|
63
|
+
[key]: {
|
64
|
+
value: {},
|
65
|
+
name: buildName(displayData)
|
66
|
+
}
|
67
|
+
};
|
68
|
+
}
|
69
|
+
// Skip processing when the key is not found within the claim object
|
70
|
+
return currentObject;
|
71
|
+
}
|
72
|
+
nextSourceValue = sourceValue[key];
|
73
|
+
}
|
74
|
+
|
75
|
+
// base case
|
76
|
+
if (isLeaf) {
|
77
|
+
return {
|
78
|
+
...currentObject,
|
79
|
+
[key]: {
|
80
|
+
value: nextSourceValue,
|
81
|
+
name: buildName(displayData)
|
82
|
+
}
|
83
|
+
};
|
84
|
+
}
|
85
|
+
|
86
|
+
// recursive step
|
87
|
+
const nextObject = currentObject[key] || {};
|
88
|
+
return {
|
89
|
+
...currentObject,
|
90
|
+
[key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData)
|
91
|
+
};
|
92
|
+
};
|
93
|
+
|
94
|
+
// Handles the case where the path key is a number
|
95
|
+
const handleNumberKeyCase = (currentObject, key, rest, sourceValue, displayData) => {
|
96
|
+
const newArray = Array.isArray(currentObject) ? [...currentObject] : [];
|
97
|
+
const nextValue = Array.isArray(sourceValue) ? sourceValue[key] : undefined;
|
98
|
+
newArray[key] = createNestedProperty(newArray[key] || {}, rest, nextValue, displayData);
|
99
|
+
return newArray;
|
100
|
+
};
|
101
|
+
|
102
|
+
/**
|
103
|
+
* Recursively constructs a nested object with descriptive properties from a path.
|
104
|
+
*
|
105
|
+
* @param currentObject - The object or array being built upon.
|
106
|
+
* @param path - The path segments to follow.
|
107
|
+
* @param sourceValue - The raw value to place at the end of the path.
|
108
|
+
* @param displayData - The data for generating localized names.
|
109
|
+
* @returns The new object or array structure.
|
110
|
+
*/
|
111
|
+
const createNestedProperty = (currentObject, path, sourceValue, displayData) => {
|
112
|
+
const [key, ...rest] = path;
|
113
|
+
switch (true) {
|
114
|
+
case key === null:
|
115
|
+
return handleNullKeyCase(currentObject, rest, sourceValue, displayData);
|
116
|
+
case typeof key === "string":
|
117
|
+
return handleStringKeyCase(currentObject, key, rest, sourceValue, displayData);
|
118
|
+
case typeof key === "number":
|
119
|
+
return handleNumberKeyCase(currentObject, key, rest, sourceValue, displayData);
|
120
|
+
default:
|
121
|
+
return currentObject;
|
122
|
+
}
|
123
|
+
};
|
124
|
+
|
125
|
+
// Handles the case where the next key in the path exists in the source object
|
126
|
+
exports.createNestedProperty = createNestedProperty;
|
127
|
+
const handleRestKey = (currentObject, key, rest, sourceValue, displayData) => {
|
128
|
+
const currentNode = currentObject[key] ?? {};
|
129
|
+
// Take the first key in the remaining path
|
130
|
+
const restKey = rest[0];
|
131
|
+
const nextSourceValue = sourceValue[restKey];
|
132
|
+
|
133
|
+
// Merge the current node with the updated nested property for the remaining path.
|
134
|
+
return {
|
135
|
+
...currentObject,
|
136
|
+
[key]: {
|
137
|
+
...currentNode,
|
138
|
+
value: createNestedProperty(currentNode.value ?? {}, rest, nextSourceValue, displayData)
|
139
|
+
}
|
140
|
+
};
|
141
|
+
};
|
142
|
+
//# sourceMappingURL=nestedProperty.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_misc","require","buildName","display","reduce","names","_ref","locale","name","handleNullKeyCase","currentObject","rest","sourceValue","displayData","Array","isArray","node","existingValue","value","mappedArray","map","item","idx","createNestedProperty","handleStringKeyCase","key","nextSourceValue","isLeaf","length","isObject","hasRestKey","some","r","handleRestKey","nextObject","handleNumberKeyCase","newArray","nextValue","undefined","path","exports","currentNode","restKey"],"sourceRoot":"../../../src","sources":["utils/nestedProperty.ts"],"mappings":"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"}
|