@pagopa/io-react-native-wallet 2.1.0 → 2.2.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 +82 -58
- package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
- package/lib/commonjs/index.js +3 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/mdoc/index.js +15 -0
- package/lib/commonjs/mdoc/index.js.map +1 -1
- package/lib/commonjs/mdoc/utils.js +37 -1
- package/lib/commonjs/mdoc/utils.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 +21 -10
- package/lib/commonjs/utils/nestedProperty.js.map +1 -1
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js +83 -59
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/mdoc/index.js +1 -0
- package/lib/module/mdoc/index.js.map +1 -1
- package/lib/module/mdoc/utils.js +35 -0
- package/lib/module/mdoc/utils.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 +21 -10
- package/lib/module/utils/nestedProperty.js.map +1 -1
- package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/mdoc/index.d.ts +1 -0
- package/lib/typescript/mdoc/index.d.ts.map +1 -1
- package/lib/typescript/mdoc/utils.d.ts +50 -0
- package/lib/typescript/mdoc/utils.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 +2 -1
- package/lib/typescript/utils/nestedProperty.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/credential/issuance/07-verify-and-parse-credential.ts +60 -26
- package/src/index.ts +2 -0
- package/src/mdoc/index.ts +1 -0
- package/src/mdoc/utils.ts +43 -0
- package/src/trust/build-chain.ts +28 -25
- package/src/utils/nestedProperty.ts +35 -10
@@ -27,14 +27,17 @@ const buildName = display => display.reduce((names, _ref) => {
|
|
27
27
|
};
|
28
28
|
}, {});
|
29
29
|
|
30
|
-
// Handles the case where the path key is `null`
|
30
|
+
// Handles the case where the path key is `null` (indicating an array)
|
31
31
|
const handleNullKeyCase = (currentObject, rest, sourceValue, displayData) => {
|
32
32
|
if (!Array.isArray(sourceValue)) return currentObject;
|
33
33
|
|
34
34
|
// We assert the type here because we know this branch handles PropertyNodes
|
35
35
|
const node = currentObject;
|
36
36
|
const existingValue = Array.isArray(node.value) ? node.value : [];
|
37
|
-
const mappedArray = sourceValue.map((item, idx) =>
|
37
|
+
const mappedArray = sourceValue.map((item, idx) =>
|
38
|
+
// When mapping over an array, recursively call with `skipMissingLeaves` set to `true`.
|
39
|
+
// This tells the function to skip optional keys inside these array objects.
|
40
|
+
createNestedProperty(existingValue[idx] || {}, rest, item, displayData, true));
|
38
41
|
return {
|
39
42
|
...node,
|
40
43
|
value: mappedArray,
|
@@ -43,7 +46,7 @@ const handleNullKeyCase = (currentObject, rest, sourceValue, displayData) => {
|
|
43
46
|
};
|
44
47
|
|
45
48
|
// Handles the case where the path key is a string
|
46
|
-
const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData) => {
|
49
|
+
const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData, skipMissingLeaves) => {
|
47
50
|
let nextSourceValue = sourceValue;
|
48
51
|
const isLeaf = rest.length === 0;
|
49
52
|
if ((0, _misc.isObject)(sourceValue)) {
|
@@ -56,7 +59,13 @@ const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData)
|
|
56
59
|
|
57
60
|
// Skip processing when the key is not found within the claim object
|
58
61
|
if (!(key in sourceValue)) {
|
59
|
-
//
|
62
|
+
// If the flag is set (we're inside an array), skip the missing key completely.
|
63
|
+
if (skipMissingLeaves) {
|
64
|
+
return currentObject;
|
65
|
+
}
|
66
|
+
|
67
|
+
// If the flag is NOT set, create the empty placeholder
|
68
|
+
// so that its children can be attached later.
|
60
69
|
if (isLeaf) {
|
61
70
|
return {
|
62
71
|
...currentObject,
|
@@ -87,7 +96,7 @@ const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData)
|
|
87
96
|
const nextObject = currentObject[key] || {};
|
88
97
|
return {
|
89
98
|
...currentObject,
|
90
|
-
[key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData)
|
99
|
+
[key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData, skipMissingLeaves)
|
91
100
|
};
|
92
101
|
};
|
93
102
|
|
@@ -106,15 +115,17 @@ const handleNumberKeyCase = (currentObject, key, rest, sourceValue, displayData)
|
|
106
115
|
* @param path - The path segments to follow.
|
107
116
|
* @param sourceValue - The raw value to place at the end of the path.
|
108
117
|
* @param displayData - The data for generating localized names.
|
118
|
+
* @param skipMissingLeaves - If true, skips optional keys when mapping over arrays.
|
109
119
|
* @returns The new object or array structure.
|
110
120
|
*/
|
111
|
-
const createNestedProperty = (currentObject, path, sourceValue, displayData)
|
121
|
+
const createNestedProperty = function (currentObject, path, sourceValue, displayData) {
|
122
|
+
let skipMissingLeaves = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
112
123
|
const [key, ...rest] = path;
|
113
124
|
switch (true) {
|
114
125
|
case key === null:
|
115
126
|
return handleNullKeyCase(currentObject, rest, sourceValue, displayData);
|
116
127
|
case typeof key === "string":
|
117
|
-
return handleStringKeyCase(currentObject, key, rest, sourceValue, displayData);
|
128
|
+
return handleStringKeyCase(currentObject, key, rest, sourceValue, displayData, skipMissingLeaves);
|
118
129
|
case typeof key === "number":
|
119
130
|
return handleNumberKeyCase(currentObject, key, rest, sourceValue, displayData);
|
120
131
|
default:
|
@@ -126,11 +137,11 @@ const createNestedProperty = (currentObject, path, sourceValue, displayData) =>
|
|
126
137
|
exports.createNestedProperty = createNestedProperty;
|
127
138
|
const handleRestKey = (currentObject, key, rest, sourceValue, displayData) => {
|
128
139
|
const currentNode = currentObject[key] ?? {};
|
129
|
-
// Take the first key in the remaining path
|
130
140
|
const restKey = rest[0];
|
131
141
|
const nextSourceValue = sourceValue[restKey];
|
132
|
-
|
133
|
-
|
142
|
+
if (typeof nextSourceValue === "undefined") {
|
143
|
+
return currentObject;
|
144
|
+
}
|
134
145
|
return {
|
135
146
|
...currentObject,
|
136
147
|
[key]: {
|
@@ -1 +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":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA;;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,MAAMC,iBAAiB,GAAGA,CACxBC,aAA8B,EAC9BC,IAAU,EACVC,WAAoB,EACpBC,WAAwB,KACJ;EACpB,IAAI,CAACC,KAAK,CAACC,OAAO,CAACH,WAAW,CAAC,EAAE,OAAOF,aAAa;;EAErD;EACA,MAAMM,IAAI,GAAGN,aAAiD;EAC9D,MAAMO,aAAa,GAAGH,KAAK,CAACC,OAAO,CAACC,IAAI,CAACE,KAAK,CAAC,GAAGF,IAAI,CAACE,KAAK,GAAG,EAAE;EAEjE,MAAMC,WAAW,GAAGP,WAAW,CAACQ,GAAG,CAAC,CAACC,IAAI,EAAEC,GAAG,
|
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","skipMissingLeaves","nextSourceValue","isLeaf","length","isObject","hasRestKey","some","r","handleRestKey","nextObject","handleNumberKeyCase","newArray","nextValue","undefined","path","arguments","exports","currentNode","restKey"],"sourceRoot":"../../../src","sources":["utils/nestedProperty.ts"],"mappings":"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"}
|
@@ -5,7 +5,7 @@ import { isSameThumbprint } from "../../utils/jwk";
|
|
5
5
|
import { verify as verifyMdoc } from "../../mdoc";
|
6
6
|
import { MDOC_DEFAULT_NAMESPACE } from "../../mdoc/const";
|
7
7
|
import { getParsedCredentialClaimKey } from "../../mdoc/utils";
|
8
|
-
import {
|
8
|
+
import { Logger, LogLevel } from "../../utils/logging";
|
9
9
|
import { extractElementValueAsDate } from "../../mdoc/converter";
|
10
10
|
import { createNestedProperty } from "../../utils/nestedProperty";
|
11
11
|
|
@@ -32,39 +32,63 @@ const parseCredentialSdJwt = function (credentialConfig, _ref) {
|
|
32
32
|
|
33
33
|
const attrDefinitions = credentialConfig.claims;
|
34
34
|
|
35
|
-
// Validate that all attributes from the config exist in
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
const
|
42
|
-
const
|
43
|
-
const
|
44
|
-
|
45
|
-
|
35
|
+
// Validate that all attributes from the config exist in either disclosures OR payload
|
36
|
+
if (!ignoreMissingAttributes) {
|
37
|
+
const disclosedKeys = new Set(disclosures.map(_ref2 => {
|
38
|
+
let [, name] = _ref2;
|
39
|
+
return name;
|
40
|
+
}));
|
41
|
+
const payloadKeys = new Set(Object.keys(sdJwt.payload ?? {}));
|
42
|
+
const definedTopLevelKeys = new Set(attrDefinitions.map(def => def.path[0]));
|
43
|
+
const missingKeys = [...definedTopLevelKeys].filter(key => !disclosedKeys.has(key) && !payloadKeys.has(key));
|
44
|
+
if (missingKeys.length > 0) {
|
45
|
+
throw new IoWalletError(`Some attributes are missing in the credential. Missing: [${missingKeys.join(", ")}]`);
|
46
|
+
}
|
46
47
|
}
|
47
48
|
const definedValues = {};
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
49
|
+
|
50
|
+
// Group all schema definitions by their top-level key
|
51
|
+
const groupedDefinitions = attrDefinitions.reduce((acc, def) => {
|
52
|
+
const key = def.path[0];
|
53
|
+
const group = acc[key];
|
54
|
+
if (group) {
|
55
|
+
group.push(def);
|
56
|
+
} else {
|
57
|
+
acc[key] = [def];
|
58
|
+
}
|
59
|
+
return acc;
|
60
|
+
}, {});
|
61
|
+
|
62
|
+
// Loop through each group
|
63
|
+
for (const topLevelKey in groupedDefinitions) {
|
64
|
+
const definitionsForThisKey = groupedDefinitions[topLevelKey];
|
65
|
+
if (!definitionsForThisKey) {
|
66
|
+
continue;
|
67
|
+
}
|
68
|
+
const disclosureForThisKey = disclosures.find(_ref3 => {
|
55
69
|
let [, name] = _ref3;
|
56
|
-
return name ===
|
57
|
-
})
|
58
|
-
if (
|
59
|
-
|
60
|
-
Object.assign(definedValues, enriched);
|
70
|
+
return name === topLevelKey;
|
71
|
+
});
|
72
|
+
if (!disclosureForThisKey) {
|
73
|
+
continue;
|
61
74
|
}
|
75
|
+
const disclosureValue = disclosureForThisKey[2];
|
76
|
+
const tempObjectForGroup = definitionsForThisKey.reduce((acc, _ref4) => {
|
77
|
+
let {
|
78
|
+
path,
|
79
|
+
display
|
80
|
+
} = _ref4;
|
81
|
+
return createNestedProperty(acc, path, disclosureValue, display);
|
82
|
+
}, {});
|
83
|
+
|
84
|
+
// Merge the fully constructed object into the final result
|
85
|
+
Object.assign(definedValues, tempObjectForGroup);
|
62
86
|
}
|
63
87
|
if (includeUndefinedAttributes) {
|
64
88
|
// attributes that are in the disclosure set
|
65
89
|
// but are not defined in the issuer configuration
|
66
|
-
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(
|
67
|
-
let [, key, value] =
|
90
|
+
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(_ref5 => {
|
91
|
+
let [, key, value] = _ref5;
|
68
92
|
return [key, {
|
69
93
|
value,
|
70
94
|
name: key
|
@@ -77,10 +101,10 @@ const parseCredentialSdJwt = function (credentialConfig, _ref) {
|
|
77
101
|
}
|
78
102
|
return definedValues;
|
79
103
|
};
|
80
|
-
const parseCredentialMDoc = function (credentialConfig,
|
104
|
+
const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
81
105
|
let {
|
82
106
|
issuerSigned
|
83
|
-
} =
|
107
|
+
} = _ref6;
|
84
108
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
85
109
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
86
110
|
if (!credentialConfig) {
|
@@ -89,37 +113,37 @@ const parseCredentialMDoc = function (credentialConfig, _ref5) {
|
|
89
113
|
if (!credentialConfig.claims) {
|
90
114
|
throw new IoWalletError("Missing claims in the credential subject");
|
91
115
|
}
|
92
|
-
const attrDefinitions = credentialConfig.claims.map(
|
116
|
+
const attrDefinitions = credentialConfig.claims.map(_ref7 => {
|
93
117
|
let {
|
94
118
|
path: [namespace, attribute],
|
95
119
|
display
|
96
|
-
} =
|
120
|
+
} = _ref7;
|
97
121
|
return [namespace, attribute, display];
|
98
122
|
});
|
99
123
|
if (!issuerSigned.nameSpaces) {
|
100
124
|
throw new IoWalletError("Missing claims in the credential");
|
101
125
|
}
|
102
|
-
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(
|
103
|
-
let [namespace, values] =
|
126
|
+
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(_ref8 => {
|
127
|
+
let [namespace, values] = _ref8;
|
104
128
|
return values.map(v => [namespace, v.elementIdentifier, v.elementValue]);
|
105
129
|
});
|
106
130
|
|
107
131
|
// Check that all mandatory attributes defined in the issuer configuration are present in the disclosure set
|
108
132
|
// and filter the non present ones
|
109
|
-
const attrsNotInDisclosures = attrDefinitions.filter(
|
110
|
-
let [attrDefNamespace, attrKey] =
|
111
|
-
return !flatNamespaces.some(
|
112
|
-
let [namespace, claim] =
|
133
|
+
const attrsNotInDisclosures = attrDefinitions.filter(_ref9 => {
|
134
|
+
let [attrDefNamespace, attrKey] = _ref9;
|
135
|
+
return !flatNamespaces.some(_ref10 => {
|
136
|
+
let [namespace, claim] = _ref10;
|
113
137
|
return attrDefNamespace === namespace && attrKey === claim;
|
114
138
|
});
|
115
139
|
});
|
116
140
|
if (attrsNotInDisclosures.length > 0) {
|
117
|
-
const missing = attrsNotInDisclosures.map(
|
118
|
-
let [, attrKey] =
|
141
|
+
const missing = attrsNotInDisclosures.map(_ref11 => {
|
142
|
+
let [, attrKey] = _ref11;
|
119
143
|
return attrKey;
|
120
144
|
}).join(", ");
|
121
|
-
const received = flatNamespaces.map(
|
122
|
-
let [, attrKey] =
|
145
|
+
const received = flatNamespaces.map(_ref12 => {
|
146
|
+
let [, attrKey] = _ref12;
|
123
147
|
return attrKey;
|
124
148
|
}).join(", ");
|
125
149
|
if (!ignoreMissingAttributes) {
|
@@ -130,38 +154,38 @@ const parseCredentialMDoc = function (credentialConfig, _ref5) {
|
|
130
154
|
// Attributes defined in the issuer configuration and present in the disclosure set
|
131
155
|
const definedValues = attrDefinitions
|
132
156
|
// Retrieve the value from the corresponding disclosure
|
133
|
-
.map(
|
157
|
+
.map(_ref13 => {
|
134
158
|
var _flatNamespaces$find;
|
135
|
-
let [attrDefNamespace, attrKey, display] =
|
159
|
+
let [attrDefNamespace, attrKey, display] = _ref13;
|
136
160
|
return [attrDefNamespace, attrKey, {
|
137
161
|
display,
|
138
|
-
value: (_flatNamespaces$find = flatNamespaces.find(
|
139
|
-
let [namespace, name] =
|
162
|
+
value: (_flatNamespaces$find = flatNamespaces.find(_ref14 => {
|
163
|
+
let [namespace, name] = _ref14;
|
140
164
|
return attrDefNamespace === namespace && name === attrKey;
|
141
165
|
})) === null || _flatNamespaces$find === void 0 ? void 0 : _flatNamespaces$find[2]
|
142
166
|
}];
|
143
167
|
})
|
144
168
|
//filter the not found elements
|
145
|
-
.filter(
|
146
|
-
let [_, __, definition] =
|
169
|
+
.filter(_ref15 => {
|
170
|
+
let [_, __, definition] = _ref15;
|
147
171
|
return definition.value !== undefined;
|
148
172
|
})
|
149
173
|
// Add a human-readable attribute name, with i18n, in the form { locale: name }
|
150
174
|
// Example: { "it-IT": "Nome", "en-EN": "Name", "es-ES": "Nombre" }
|
151
|
-
.reduce((acc,
|
175
|
+
.reduce((acc, _ref16) => {
|
152
176
|
let [attrDefNamespace, attrKey, {
|
153
177
|
display,
|
154
178
|
value
|
155
|
-
}] =
|
179
|
+
}] = _ref16;
|
156
180
|
return {
|
157
181
|
...acc,
|
158
182
|
[getParsedCredentialClaimKey(attrDefNamespace, attrKey)]: {
|
159
183
|
value,
|
160
|
-
name: display.reduce((names,
|
184
|
+
name: display.reduce((names, _ref17) => {
|
161
185
|
let {
|
162
186
|
locale,
|
163
187
|
name
|
164
|
-
} =
|
188
|
+
} = _ref17;
|
165
189
|
return {
|
166
190
|
...names,
|
167
191
|
[locale]: name
|
@@ -171,11 +195,11 @@ const parseCredentialMDoc = function (credentialConfig, _ref5) {
|
|
171
195
|
};
|
172
196
|
}, {});
|
173
197
|
if (includeUndefinedAttributes) {
|
174
|
-
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(
|
175
|
-
let [namespace, key] =
|
198
|
+
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(_ref18 => {
|
199
|
+
let [namespace, key] = _ref18;
|
176
200
|
return !definedValues[getParsedCredentialClaimKey(namespace, key)];
|
177
|
-
}).map(
|
178
|
-
let [namespace, key, value] =
|
201
|
+
}).map(_ref19 => {
|
202
|
+
let [namespace, key, value] = _ref19;
|
179
203
|
return [getParsedCredentialClaimKey(namespace, key), {
|
180
204
|
value,
|
181
205
|
name: key
|
@@ -223,7 +247,7 @@ async function verifyCredentialSdJwt(rawCredential, issuerKeys, holderBindingCon
|
|
223
247
|
* and it's bound to the given key
|
224
248
|
*
|
225
249
|
* @param rawCredential The received credential
|
226
|
-
* @param
|
250
|
+
* @param x509CertRoot The root certificate of the issuer,
|
227
251
|
* which will be used to verify the signature
|
228
252
|
* @param holderBindingContext The access to the holder's key
|
229
253
|
*
|
@@ -245,12 +269,12 @@ async function verifyCredentialMDoc(rawCredential, x509CertRoot, holderBindingCo
|
|
245
269
|
}
|
246
270
|
return decodedCredential;
|
247
271
|
}
|
248
|
-
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId,
|
272
|
+
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId, _ref20) => {
|
249
273
|
let {
|
250
274
|
credentialCryptoContext,
|
251
275
|
ignoreMissingAttributes,
|
252
276
|
includeUndefinedAttributes
|
253
|
-
} =
|
277
|
+
} = _ref20;
|
254
278
|
const decoded = await verifyCredentialSdJwt(credential, issuerConf.openid_credential_issuer.jwks.keys, credentialCryptoContext);
|
255
279
|
Logger.log(LogLevel.DEBUG, `Decoded credential: ${JSON.stringify(decoded)}`);
|
256
280
|
const credentialConfig = issuerConf.openid_credential_issuer.credential_configurations_supported[credentialConfigurationId];
|
@@ -267,12 +291,12 @@ const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialC
|
|
267
291
|
issuedAt: typeof maybeIssuedAt === "number" ? new Date(maybeIssuedAt * 1000) : undefined
|
268
292
|
};
|
269
293
|
};
|
270
|
-
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId,
|
294
|
+
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId, _ref21, x509CertRoot) => {
|
271
295
|
var _parsedCredential$get, _parsedCredential$get2;
|
272
296
|
let {
|
273
297
|
credentialCryptoContext,
|
274
298
|
ignoreMissingAttributes
|
275
|
-
} =
|
299
|
+
} = _ref21;
|
276
300
|
if (!x509CertRoot) {
|
277
301
|
throw new IoWalletError("Missing x509CertRoot");
|
278
302
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["IoWalletError","SdJwt4VC","verify","verifySdJwt","getValueFromDisclosures","isSameThumbprint","verifyMdoc","MDOC_DEFAULT_NAMESPACE","getParsedCredentialClaimKey","LogLevel","Logger","extractElementValueAsDate","createNestedProperty","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","display","_disclosures$find","attrKey","disclosureValue","find","_ref3","enriched","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","names","_ref16","locale","_ref17","_ref18","verifyCredentialSdJwt","rawCredential","issuerKeys","holderBindingContext","decodedCredential","holderBindingKey","Promise","all","getPublicKey","cnf","payload","jwk","kid","verifyCredentialMDoc","x509CertRoot","issuerAuth","deviceKeyInfo","deviceKey","verifyAndParseCredentialSdJwt","issuerConf","credential","credentialConfigurationId","_ref19","credentialCryptoContext","decoded","openid_credential_issuer","jwks","DEBUG","JSON","stringify","credential_configurations_supported","parsedCredential","maybeIssuedAt","expiration","Date","exp","issuedAt","verifyAndParseCredentialMDoc","_ref20","_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","Logger","LogLevel","extractElementValueAsDate","createNestedProperty","parseCredentialSdJwt","credentialConfig","_ref","sdJwt","disclosures","ignoreMissingAttributes","arguments","length","undefined","includeUndefinedAttributes","format","header","typ","message","log","ERROR","claims","attrDefinitions","disclosedKeys","Set","map","_ref2","name","payloadKeys","Object","keys","payload","definedTopLevelKeys","def","path","missingKeys","filter","key","has","join","definedValues","groupedDefinitions","reduce","acc","group","push","topLevelKey","definitionsForThisKey","disclosureForThisKey","find","_ref3","disclosureValue","tempObjectForGroup","_ref4","display","assign","undefinedValues","fromEntries","_","includes","_ref5","value","parseCredentialMDoc","_ref6","issuerSigned","_ref7","namespace","attribute","nameSpaces","flatNamespaces","entries","flatMap","_ref8","values","v","elementIdentifier","elementValue","attrsNotInDisclosures","_ref9","attrDefNamespace","attrKey","some","_ref10","claim","missing","_ref11","received","_ref12","_ref13","_flatNamespaces$find","_ref14","_ref15","__","definition","_ref16","names","_ref17","locale","_ref18","_ref19","verifyCredentialSdJwt","rawCredential","issuerKeys","holderBindingContext","decodedCredential","holderBindingKey","Promise","all","getPublicKey","cnf","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":"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"}
|
package/lib/module/index.js
CHANGED
@@ -5,6 +5,7 @@ import "react-native-url-polyfill/auto";
|
|
5
5
|
import * as Credential from "./credential";
|
6
6
|
import * as PID from "./pid";
|
7
7
|
import * as SdJwt from "./sd-jwt";
|
8
|
+
import * as Mdoc from "./mdoc";
|
8
9
|
import * as Errors from "./utils/errors";
|
9
10
|
import * as WalletInstanceAttestation from "./wallet-instance-attestation";
|
10
11
|
import * as Trust from "./trust";
|
@@ -12,5 +13,5 @@ import * as WalletInstance from "./wallet-instance";
|
|
12
13
|
import * as Logging from "./utils/logging";
|
13
14
|
import { AuthorizationDetail, AuthorizationDetails } from "./utils/par";
|
14
15
|
import { createCryptoContextFor } from "./utils/crypto";
|
15
|
-
export { SdJwt, PID, Credential, WalletInstanceAttestation, WalletInstance, Errors, Trust, createCryptoContextFor, AuthorizationDetail, AuthorizationDetails, fixBase64EncodingOnKey, Logging };
|
16
|
+
export { SdJwt, Mdoc, PID, Credential, WalletInstanceAttestation, WalletInstance, Errors, Trust, createCryptoContextFor, AuthorizationDetail, AuthorizationDetails, fixBase64EncodingOnKey, Logging };
|
16
17
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["fixBase64EncodingOnKey","Credential","PID","SdJwt","Errors","WalletInstanceAttestation","Trust","WalletInstance","Logging","AuthorizationDetail","AuthorizationDetails","createCryptoContextFor"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AACA,SAASA,sBAAsB,QAAQ,aAAa;AACpD;AACA;AACA,OAAO,gCAAgC;AAEvC,OAAO,KAAKC,UAAU,MAAM,cAAc;AAC1C,OAAO,KAAKC,GAAG,MAAM,OAAO;AAC5B,OAAO,KAAKC,KAAK,MAAM,UAAU;AACjC,OAAO,KAAKC,MAAM,MAAM,gBAAgB;AACxC,OAAO,KAAKC,yBAAyB,MAAM,+BAA+B;AAC1E,OAAO,KAAKC,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,cAAc,MAAM,mBAAmB;AACnD,OAAO,KAAKC,OAAO,MAAM,iBAAiB;AAC1C,SAASC,mBAAmB,EAAEC,oBAAoB,QAAQ,aAAa;AACvE,SAASC,sBAAsB,QAAQ,gBAAgB;AAGvD,
|
1
|
+
{"version":3,"names":["fixBase64EncodingOnKey","Credential","PID","SdJwt","Mdoc","Errors","WalletInstanceAttestation","Trust","WalletInstance","Logging","AuthorizationDetail","AuthorizationDetails","createCryptoContextFor"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AACA,SAASA,sBAAsB,QAAQ,aAAa;AACpD;AACA;AACA,OAAO,gCAAgC;AAEvC,OAAO,KAAKC,UAAU,MAAM,cAAc;AAC1C,OAAO,KAAKC,GAAG,MAAM,OAAO;AAC5B,OAAO,KAAKC,KAAK,MAAM,UAAU;AACjC,OAAO,KAAKC,IAAI,MAAM,QAAQ;AAC9B,OAAO,KAAKC,MAAM,MAAM,gBAAgB;AACxC,OAAO,KAAKC,yBAAyB,MAAM,+BAA+B;AAC1E,OAAO,KAAKC,KAAK,MAAM,SAAS;AAChC,OAAO,KAAKC,cAAc,MAAM,mBAAmB;AACnD,OAAO,KAAKC,OAAO,MAAM,iBAAiB;AAC1C,SAASC,mBAAmB,EAAEC,oBAAoB,QAAQ,aAAa;AACvE,SAASC,sBAAsB,QAAQ,gBAAgB;AAGvD,SACET,KAAK,EACLC,IAAI,EACJF,GAAG,EACHD,UAAU,EACVK,yBAAyB,EACzBE,cAAc,EACdH,MAAM,EACNE,KAAK,EACLK,sBAAsB,EACtBF,mBAAmB,EACnBC,oBAAoB,EACpBX,sBAAsB,EACtBS,OAAO"}
|
package/lib/module/mdoc/index.js
CHANGED
@@ -4,6 +4,7 @@ import { verifyCertificateChain } from "@pagopa/io-react-native-crypto";
|
|
4
4
|
import { MissingX509CertsError, X509ValidationError } from "../trust/errors";
|
5
5
|
import { IoWalletError } from "../utils/errors";
|
6
6
|
import { convertBase64DerToPem, getSigninJwkFromCert } from "../utils/crypto";
|
7
|
+
export * from "./utils";
|
7
8
|
export const verify = async (token, x509CertRoot) => {
|
8
9
|
var _issuerSigned$issuerA;
|
9
10
|
// get decoded data
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["CBOR","COSE","b64utob64","verifyCertificateChain","MissingX509CertsError","X509ValidationError","IoWalletError","convertBase64DerToPem","getSigninJwkFromCert","verify","token","x509CertRoot","_issuerSigned$issuerA","issuerSigned","decodeIssuerSigned","issuerAuth","unprotectedHeader","x5chain","Array","isArray","length","map","verifyX5chain","coseSign1","rawValue","verifyMdocSignature","options","arguments","undefined","connectTimeout","readTimeout","requireCrl","x509ValidationResult","isValid","validationStatus","errorMessage","x509ValidationStatus","x509ErrorMessage","cert","pemcert","jwk","x","y","signatureCorrect","Error"],"sourceRoot":"../../../src","sources":["mdoc/index.ts"],"mappings":"AAAA,SAASA,IAAI,EAAEC,IAAI,QAAQ,kCAAkC;AAC7D,SAASC,SAAS,QAAQ,WAAW;AACrC,SACEC,sBAAsB,QAIjB,gCAAgC;AACvC,SAASC,qBAAqB,EAAEC,mBAAmB,QAAQ,iBAAiB;AAC5E,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,qBAAqB,EAAEC,oBAAoB,QAAQ,iBAAiB;
|
1
|
+
{"version":3,"names":["CBOR","COSE","b64utob64","verifyCertificateChain","MissingX509CertsError","X509ValidationError","IoWalletError","convertBase64DerToPem","getSigninJwkFromCert","verify","token","x509CertRoot","_issuerSigned$issuerA","issuerSigned","decodeIssuerSigned","issuerAuth","unprotectedHeader","x5chain","Array","isArray","length","map","verifyX5chain","coseSign1","rawValue","verifyMdocSignature","options","arguments","undefined","connectTimeout","readTimeout","requireCrl","x509ValidationResult","isValid","validationStatus","errorMessage","x509ValidationStatus","x509ErrorMessage","cert","pemcert","jwk","x","y","signatureCorrect","Error"],"sourceRoot":"../../../src","sources":["mdoc/index.ts"],"mappings":"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"}
|
package/lib/module/mdoc/utils.js
CHANGED
@@ -1,7 +1,42 @@
|
|
1
|
+
import { CBOR } from "@pagopa/io-react-native-iso18013";
|
2
|
+
import { Verification } from "../sd-jwt/types";
|
3
|
+
import { MDOC_DEFAULT_NAMESPACE } from "./const";
|
4
|
+
|
1
5
|
/**
|
2
6
|
* @param namespace The mdoc credential `namespace`
|
3
7
|
* @param key The claim attribute key
|
4
8
|
* @returns A string consisting of the concatenation of the namespace and the claim key, separated by a colon
|
5
9
|
*/
|
6
10
|
export const getParsedCredentialClaimKey = (namespace, key) => `${namespace}:${key}`;
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Extract and validate the `verification` claim from an mdoc parsed credential.
|
14
|
+
*
|
15
|
+
* This method is **synchronous**, so it requires a credential that was already parsed.
|
16
|
+
*
|
17
|
+
* @param parsedCredential The parsed mdoc credential
|
18
|
+
* @returns The verification claim or undefined if it wasn't found
|
19
|
+
*/
|
20
|
+
export const getVerificationFromParsedCredential = parsedCredential => {
|
21
|
+
var _parsedCredential$ver;
|
22
|
+
const verificationKey = getParsedCredentialClaimKey(`${MDOC_DEFAULT_NAMESPACE}.IT`, "verification");
|
23
|
+
const verification = (_parsedCredential$ver = parsedCredential[verificationKey]) === null || _parsedCredential$ver === void 0 ? void 0 : _parsedCredential$ver.value;
|
24
|
+
return verification ? Verification.parse(verification) : undefined;
|
25
|
+
};
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Extract and validate the `verification` claim from an MDOC credential.
|
29
|
+
*
|
30
|
+
* This method is **asynchronous**. See {@link getVerificationFromParsedCredential} for the synchronous version.
|
31
|
+
*
|
32
|
+
* @param token The raw MDOC credential
|
33
|
+
* @returns The verification claim or undefined if it wasn't found
|
34
|
+
*/
|
35
|
+
export const getVerification = async token => {
|
36
|
+
var _namespace$find;
|
37
|
+
const issuerSigned = await CBOR.decodeIssuerSigned(token);
|
38
|
+
const namespace = issuerSigned.nameSpaces[`${MDOC_DEFAULT_NAMESPACE}.IT`];
|
39
|
+
const verification = namespace === null || namespace === void 0 || (_namespace$find = namespace.find(x => x.elementIdentifier === "verification")) === null || _namespace$find === void 0 ? void 0 : _namespace$find.elementValue;
|
40
|
+
return verification ? Verification.parse(verification) : undefined;
|
41
|
+
};
|
7
42
|
//# sourceMappingURL=utils.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["getParsedCredentialClaimKey","namespace","key"],"sourceRoot":"../../../src","sources":["mdoc/utils.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAO,
|
1
|
+
{"version":3,"names":["CBOR","Verification","MDOC_DEFAULT_NAMESPACE","getParsedCredentialClaimKey","namespace","key","getVerificationFromParsedCredential","parsedCredential","_parsedCredential$ver","verificationKey","verification","value","parse","undefined","getVerification","token","_namespace$find","issuerSigned","decodeIssuerSigned","nameSpaces","find","x","elementIdentifier","elementValue"],"sourceRoot":"../../../src","sources":["mdoc/utils.ts"],"mappings":"AAAA,SAASA,IAAI,QAAQ,kCAAkC;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAG9C,SAASC,sBAAsB,QAAQ,SAAS;;AAEhD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,GAAGA,CAACC,SAAiB,EAAEC,GAAW,KACvE,GAAED,SAAU,IAAGC,GAAI,EAAC;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,mCAAmC,GAC9CC,gBAAmE,IAChE;EAAA,IAAAC,qBAAA;EACH,MAAMC,eAAe,GAAGN,2BAA2B,CAChD,GAAED,sBAAuB,KAAI,EAC9B,cACF,CAAC;EACD,MAAMQ,YAAY,IAAAF,qBAAA,GAAGD,gBAAgB,CAACE,eAAe,CAAC,cAAAD,qBAAA,uBAAjCA,qBAAA,CAAmCG,KAAK;EAC7D,OAAOD,YAAY,GAAGT,YAAY,CAACW,KAAK,CAACF,YAAY,CAAC,GAAGG,SAAS;AACpE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAG,MAAOC,KAAa,IAAK;EAAA,IAAAC,eAAA;EACtD,MAAMC,YAAY,GAAG,MAAMjB,IAAI,CAACkB,kBAAkB,CAACH,KAAK,CAAC;EACzD,MAAMX,SAAS,GAAGa,YAAY,CAACE,UAAU,CAAE,GAAEjB,sBAAuB,KAAI,CAAC;EACzE,MAAMQ,YAAY,GAAGN,SAAS,aAATA,SAAS,gBAAAY,eAAA,GAATZ,SAAS,CAAEgB,IAAI,CACjCC,CAAC,IAAKA,CAAC,CAACC,iBAAiB,KAAK,cACjC,CAAC,cAAAN,eAAA,uBAFoBA,eAAA,CAElBO,YAAY;EAEf,OAAOb,YAAY,GAAGT,YAAY,CAACW,KAAK,CAACF,YAAY,CAAC,GAAGG,SAAS;AACpE,CAAC"}
|
@@ -133,30 +133,20 @@ export async function getFederationList(federationListEndpoint) {
|
|
133
133
|
* Build a not-verified trust chain for a given Relying Party (RP) entity.
|
134
134
|
*
|
135
135
|
* @param relyingPartyEntityBaseUrl The base URL of the RP entity
|
136
|
-
* @param
|
136
|
+
* @param trustAnchorConfig The entity configuration of the known trust anchor.
|
137
137
|
* @param appFetch An optional instance of the http client to be used.
|
138
138
|
* @returns A list of signed tokens that represent the trust chain, in the order of the chain (from the RP to the Trust Anchor)
|
139
139
|
* @throws {FederationError} When an element of the chain fails to parse or other build steps fail.
|
140
140
|
*/
|
141
|
-
export async function buildTrustChain(relyingPartyEntityBaseUrl,
|
141
|
+
export async function buildTrustChain(relyingPartyEntityBaseUrl, trustAnchorConfig) {
|
142
142
|
let appFetch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : fetch;
|
143
|
-
// 1:
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
throw new BuildTrustChainError("Cannot verify trust anchor: missing entity configuration in gathered chain.", {
|
150
|
-
relyingPartyUrl: relyingPartyEntityBaseUrl
|
151
|
-
});
|
152
|
-
}
|
153
|
-
if (!trustAnchorKey.kid) {
|
154
|
-
throw new TrustAnchorKidMissingError();
|
143
|
+
// 1: Verify if the RP is authorized by the Trust Anchor's federation list
|
144
|
+
// Extract the Trust Anchor's signing key and federation_list_endpoint
|
145
|
+
// (we assume the TA has only one key, as per spec)
|
146
|
+
const trustAnchorKey = trustAnchorConfig.payload.jwks.keys[0];
|
147
|
+
if (!trustAnchorKey) {
|
148
|
+
throw new BuildTrustChainError("Cannot verify trust anchor: missing signing key in entity configuration.");
|
155
149
|
}
|
156
|
-
await verify(trustAnchorJwt, trustAnchorKey.kid, [trustAnchorKey]);
|
157
|
-
|
158
|
-
// 3: Check the federation list
|
159
|
-
const trustAnchorConfig = EntityConfiguration.parse(decode(trustAnchorJwt));
|
160
150
|
const federationListEndpoint = trustAnchorConfig.payload.metadata.federation_entity.federation_list_endpoint;
|
161
151
|
if (federationListEndpoint) {
|
162
152
|
const federationList = await getFederationList(federationListEndpoint, {
|
@@ -169,6 +159,20 @@ export async function buildTrustChain(relyingPartyEntityBaseUrl, trustAnchorKey)
|
|
169
159
|
});
|
170
160
|
}
|
171
161
|
}
|
162
|
+
|
163
|
+
// 1: Recursively gather the trust chain from the RP up to the Trust Anchor
|
164
|
+
const trustChain = await gatherTrustChain(relyingPartyEntityBaseUrl, appFetch);
|
165
|
+
// 2: Trust Anchor signature verification
|
166
|
+
const chainTrustAnchorJwt = trustChain[trustChain.length - 1];
|
167
|
+
if (!chainTrustAnchorJwt) {
|
168
|
+
throw new BuildTrustChainError("Cannot verify trust anchor: missing entity configuration in gathered chain.", {
|
169
|
+
relyingPartyUrl: relyingPartyEntityBaseUrl
|
170
|
+
});
|
171
|
+
}
|
172
|
+
if (!trustAnchorKey.kid) {
|
173
|
+
throw new TrustAnchorKidMissingError();
|
174
|
+
}
|
175
|
+
await verify(chainTrustAnchorJwt, trustAnchorKey.kid, [trustAnchorKey]);
|
172
176
|
return trustChain;
|
173
177
|
}
|
174
178
|
|
@@ -210,7 +214,6 @@ async function gatherTrustChain(entityBaseUrl, appFetch) {
|
|
210
214
|
appFetch
|
211
215
|
});
|
212
216
|
const parentEC = EntityConfiguration.parse(decode(parentECJwt));
|
213
|
-
|
214
217
|
// Fetch ES
|
215
218
|
const federationFetchEndpoint = parentEC.payload.metadata.federation_entity.federation_fetch_endpoint;
|
216
219
|
if (!federationFetchEndpoint) {
|