@pagopa/io-react-native-wallet 2.0.0 → 2.1.1
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/trust/build-chain.js +22 -19
- package/lib/commonjs/trust/build-chain.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/trust/build-chain.js +22 -19
- package/lib/module/trust/build-chain.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/trust/build-chain.d.ts +2 -3
- package/lib/typescript/trust/build-chain.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/trust/build-chain.ts +28 -25
- 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":"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"}
|
@@ -150,30 +150,20 @@ async function getFederationList(federationListEndpoint) {
|
|
150
150
|
* Build a not-verified trust chain for a given Relying Party (RP) entity.
|
151
151
|
*
|
152
152
|
* @param relyingPartyEntityBaseUrl The base URL of the RP entity
|
153
|
-
* @param
|
153
|
+
* @param trustAnchorConfig The entity configuration of the known trust anchor.
|
154
154
|
* @param appFetch An optional instance of the http client to be used.
|
155
155
|
* @returns A list of signed tokens that represent the trust chain, in the order of the chain (from the RP to the Trust Anchor)
|
156
156
|
* @throws {FederationError} When an element of the chain fails to parse or other build steps fail.
|
157
157
|
*/
|
158
|
-
async function buildTrustChain(relyingPartyEntityBaseUrl,
|
158
|
+
async function buildTrustChain(relyingPartyEntityBaseUrl, trustAnchorConfig) {
|
159
159
|
let appFetch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : fetch;
|
160
|
-
// 1:
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
throw new _errors.BuildTrustChainError("Cannot verify trust anchor: missing entity configuration in gathered chain.", {
|
167
|
-
relyingPartyUrl: relyingPartyEntityBaseUrl
|
168
|
-
});
|
169
|
-
}
|
170
|
-
if (!trustAnchorKey.kid) {
|
171
|
-
throw new _errors.TrustAnchorKidMissingError();
|
160
|
+
// 1: Verify if the RP is authorized by the Trust Anchor's federation list
|
161
|
+
// Extract the Trust Anchor's signing key and federation_list_endpoint
|
162
|
+
// (we assume the TA has only one key, as per spec)
|
163
|
+
const trustAnchorKey = trustAnchorConfig.payload.jwks.keys[0];
|
164
|
+
if (!trustAnchorKey) {
|
165
|
+
throw new _errors.BuildTrustChainError("Cannot verify trust anchor: missing signing key in entity configuration.");
|
172
166
|
}
|
173
|
-
await (0, _utils.verify)(trustAnchorJwt, trustAnchorKey.kid, [trustAnchorKey]);
|
174
|
-
|
175
|
-
// 3: Check the federation list
|
176
|
-
const trustAnchorConfig = _types.EntityConfiguration.parse((0, _utils.decode)(trustAnchorJwt));
|
177
167
|
const federationListEndpoint = trustAnchorConfig.payload.metadata.federation_entity.federation_list_endpoint;
|
178
168
|
if (federationListEndpoint) {
|
179
169
|
const federationList = await getFederationList(federationListEndpoint, {
|
@@ -186,6 +176,20 @@ async function buildTrustChain(relyingPartyEntityBaseUrl, trustAnchorKey) {
|
|
186
176
|
});
|
187
177
|
}
|
188
178
|
}
|
179
|
+
|
180
|
+
// 1: Recursively gather the trust chain from the RP up to the Trust Anchor
|
181
|
+
const trustChain = await gatherTrustChain(relyingPartyEntityBaseUrl, appFetch);
|
182
|
+
// 2: Trust Anchor signature verification
|
183
|
+
const chainTrustAnchorJwt = trustChain[trustChain.length - 1];
|
184
|
+
if (!chainTrustAnchorJwt) {
|
185
|
+
throw new _errors.BuildTrustChainError("Cannot verify trust anchor: missing entity configuration in gathered chain.", {
|
186
|
+
relyingPartyUrl: relyingPartyEntityBaseUrl
|
187
|
+
});
|
188
|
+
}
|
189
|
+
if (!trustAnchorKey.kid) {
|
190
|
+
throw new _errors.TrustAnchorKidMissingError();
|
191
|
+
}
|
192
|
+
await (0, _utils.verify)(chainTrustAnchorJwt, trustAnchorKey.kid, [trustAnchorKey]);
|
189
193
|
return trustChain;
|
190
194
|
}
|
191
195
|
|
@@ -227,7 +231,6 @@ async function gatherTrustChain(entityBaseUrl, appFetch) {
|
|
227
231
|
appFetch
|
228
232
|
});
|
229
233
|
const parentEC = _types.EntityConfiguration.parse((0, _utils.decode)(parentECJwt));
|
230
|
-
|
231
234
|
// Fetch ES
|
232
235
|
const federationFetchEndpoint = parentEC.payload.metadata.federation_entity.federation_fetch_endpoint;
|
233
236
|
if (!federationFetchEndpoint) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_errors","require","_utils","_types","_misc","_ioReactNativeJwt","fetchAndParseEntityConfiguration","entityBaseUrl","schema","appFetch","fetch","arguments","length","undefined","responseText","getSignedEntityConfiguration","responseJwt","decodeJwt","parse","header","protectedHeader","payload","getWalletProviderEntityConfiguration","options","WalletProviderEntityConfiguration","exports","getCredentialIssuerEntityConfiguration","CredentialIssuerEntityConfiguration","getTrustAnchorEntityConfiguration","TrustAnchorEntityConfiguration","getRelyingPartyEntityConfiguration","RelyingPartyEntityConfiguration","getEntityConfiguration","EntityConfiguration","getEntityStatement","accreditationBodyBaseUrl","subordinatedEntityBaseUrl","getSignedEntityStatement","EntityStatement","wellKnownUrl","method","then","hasStatusOrThrow","res","text","federationFetchEndpoint","url","URL","searchParams","set","toString","getFederationList","federationListEndpoint","json","result","FederationListResponse","safeParse","success","FederationListParseError","error","message","parseError","data","buildTrustChain","relyingPartyEntityBaseUrl","
|
1
|
+
{"version":3,"names":["_errors","require","_utils","_types","_misc","_ioReactNativeJwt","fetchAndParseEntityConfiguration","entityBaseUrl","schema","appFetch","fetch","arguments","length","undefined","responseText","getSignedEntityConfiguration","responseJwt","decodeJwt","parse","header","protectedHeader","payload","getWalletProviderEntityConfiguration","options","WalletProviderEntityConfiguration","exports","getCredentialIssuerEntityConfiguration","CredentialIssuerEntityConfiguration","getTrustAnchorEntityConfiguration","TrustAnchorEntityConfiguration","getRelyingPartyEntityConfiguration","RelyingPartyEntityConfiguration","getEntityConfiguration","EntityConfiguration","getEntityStatement","accreditationBodyBaseUrl","subordinatedEntityBaseUrl","getSignedEntityStatement","EntityStatement","wellKnownUrl","method","then","hasStatusOrThrow","res","text","federationFetchEndpoint","url","URL","searchParams","set","toString","getFederationList","federationListEndpoint","json","result","FederationListResponse","safeParse","success","FederationListParseError","error","message","parseError","data","buildTrustChain","relyingPartyEntityBaseUrl","trustAnchorConfig","trustAnchorKey","jwks","keys","BuildTrustChainError","metadata","federation_entity","federation_list_endpoint","federationList","includes","RelyingPartyNotAuthorizedError","relyingPartyUrl","trustChain","gatherTrustChain","chainTrustAnchorJwt","kid","TrustAnchorKidMissingError","verify","isLeaf","chain","entityECJwt","entityEC","decode","push","authorityHints","authority_hints","parentEntityBaseUrl","parentECJwt","parentEC","federation_fetch_endpoint","MissingFederationFetchEndpointError","missingInEntityUrl","entityStatementJwt","parentChain","concat"],"sourceRoot":"../../../src","sources":["trust/build-chain.ts"],"mappings":"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"}
|