@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.
Files changed (42) hide show
  1. package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js +82 -58
  2. package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
  3. package/lib/commonjs/index.js +3 -1
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/mdoc/index.js +15 -0
  6. package/lib/commonjs/mdoc/index.js.map +1 -1
  7. package/lib/commonjs/mdoc/utils.js +37 -1
  8. package/lib/commonjs/mdoc/utils.js.map +1 -1
  9. package/lib/commonjs/trust/build-chain.js +22 -19
  10. package/lib/commonjs/trust/build-chain.js.map +1 -1
  11. package/lib/commonjs/utils/nestedProperty.js +21 -10
  12. package/lib/commonjs/utils/nestedProperty.js.map +1 -1
  13. package/lib/module/credential/issuance/07-verify-and-parse-credential.js +83 -59
  14. package/lib/module/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
  15. package/lib/module/index.js +2 -1
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/mdoc/index.js +1 -0
  18. package/lib/module/mdoc/index.js.map +1 -1
  19. package/lib/module/mdoc/utils.js +35 -0
  20. package/lib/module/mdoc/utils.js.map +1 -1
  21. package/lib/module/trust/build-chain.js +22 -19
  22. package/lib/module/trust/build-chain.js.map +1 -1
  23. package/lib/module/utils/nestedProperty.js +21 -10
  24. package/lib/module/utils/nestedProperty.js.map +1 -1
  25. package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts.map +1 -1
  26. package/lib/typescript/index.d.ts +2 -1
  27. package/lib/typescript/index.d.ts.map +1 -1
  28. package/lib/typescript/mdoc/index.d.ts +1 -0
  29. package/lib/typescript/mdoc/index.d.ts.map +1 -1
  30. package/lib/typescript/mdoc/utils.d.ts +50 -0
  31. package/lib/typescript/mdoc/utils.d.ts.map +1 -1
  32. package/lib/typescript/trust/build-chain.d.ts +2 -3
  33. package/lib/typescript/trust/build-chain.d.ts.map +1 -1
  34. package/lib/typescript/utils/nestedProperty.d.ts +2 -1
  35. package/lib/typescript/utils/nestedProperty.d.ts.map +1 -1
  36. package/package.json +1 -1
  37. package/src/credential/issuance/07-verify-and-parse-credential.ts +60 -26
  38. package/src/index.ts +2 -0
  39. package/src/mdoc/index.ts +1 -0
  40. package/src/mdoc/utils.ts +43 -0
  41. package/src/trust/build-chain.ts +28 -25
  42. 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) => createNestedProperty(existingValue[idx] || {}, rest, item, displayData));
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
- // Leaf node: create a node with an empty value and display name
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
- // Merge the current node with the updated nested property for the remaining path.
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,KAC5CC,oBAAoB,CAACN,aAAa,CAACK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAEX,IAAI,EAAEU,IAAI,EAAER,WAAW,CACxE,CAAC;EAED,OAAO;IACL,GAAGG,IAAI;IACPE,KAAK,EAAEC,WAAW;IAClBX,IAAI,EAAEQ,IAAI,CAACR,IAAI,IAAIN,SAAS,CAACW,WAAW;EAC1C,CAAC;AACH,CAAC;;AAED;AACA,MAAMW,mBAAmB,GAAGA,CAC1Bd,aAA8B,EAC9Be,GAAW,EACXd,IAAU,EACVC,WAAoB,EACpBC,WAAwB,KACJ;EACpB,IAAIa,eAAe,GAAGd,WAAW;EACjC,MAAMe,MAAM,GAAGhB,IAAI,CAACiB,MAAM,KAAK,CAAC;EAEhC,IAAI,IAAAC,cAAQ,EAACjB,WAAW,CAAC,EAAE;IACzB;IACA;IACA,MAAMkB,UAAU,GAAGnB,IAAI,CAACoB,IAAI,CACzBC,CAAC,IAAK,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,IAAIpB,WACvC,CAAC;IAED,IAAIkB,UAAU,EAAE;MACd,OAAOG,aAAa,CAACvB,aAAa,EAAEe,GAAG,EAAEd,IAAI,EAAEC,WAAW,EAAEC,WAAW,CAAC;IAC1E;;IAEA;IACA,IAAI,EAAEY,GAAG,IAAIb,WAAW,CAAC,EAAE;MACzB;MACA,IAAIe,MAAM,EAAE;QACV,OAAO;UACL,GAAGjB,aAAa;UAChB,CAACe,GAAG,GAAG;YAAEP,KAAK,EAAE,CAAC,CAAC;YAAEV,IAAI,EAAEN,SAAS,CAACW,WAAW;UAAE;QACnD,CAAC;MACH;MACA;MACA,OAAOH,aAAa;IACtB;IAEAgB,eAAe,GAAGd,WAAW,CAACa,GAAG,CAAC;EACpC;;EAEA;EACA,IAAIE,MAAM,EAAE;IACV,OAAO;MACL,GAAGjB,aAAa;MAChB,CAACe,GAAG,GAAG;QAAEP,KAAK,EAAEQ,eAAe;QAAElB,IAAI,EAAEN,SAAS,CAACW,WAAW;MAAE;IAChE,CAAC;EACH;;EAEA;EACA,MAAMqB,UAAU,GACbxB,aAAa,CAAqCe,GAAG,CAAC,IAAI,CAAC,CAAC;EAE/D,OAAO;IACL,GAAGf,aAAa;IAChB,CAACe,GAAG,GAAGF,oBAAoB,CAACW,UAAU,EAAEvB,IAAI,EAAEe,eAAe,EAAEb,WAAW;EAC5E,CAAC;AACH,CAAC;;AAED;AACA,MAAMsB,mBAAmB,GAAGA,CAC1BzB,aAA8B,EAC9Be,GAAW,EACXd,IAAU,EACVC,WAAoB,EACpBC,WAAwB,KACJ;EACpB,MAAMuB,QAAQ,GAAGtB,KAAK,CAACC,OAAO,CAACL,aAAa,CAAC,GAAG,CAAC,GAAGA,aAAa,CAAC,GAAG,EAAE;EACvE,MAAM2B,SAAS,GAAGvB,KAAK,CAACC,OAAO,CAACH,WAAW,CAAC,GAAGA,WAAW,CAACa,GAAG,CAAC,GAAGa,SAAS;EAE3EF,QAAQ,CAACX,GAAG,CAAC,GAAGF,oBAAoB,CAClCa,QAAQ,CAACX,GAAG,CAAC,IAAI,CAAC,CAAC,EACnBd,IAAI,EACJ0B,SAAS,EACTxB,WACF,CAAC;EACD,OAAOuB,QAAQ;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMb,oBAAoB,GAAGA,CAClCb,aAA8B,EAC9B6B,IAAU,EACV3B,WAAoB,EACpBC,WAAwB,KACJ;EACpB,MAAM,CAACY,GAAG,EAAE,GAAGd,IAAI,CAAC,GAAG4B,IAAI;EAE3B,QAAQ,IAAI;IACV,KAAKd,GAAG,KAAK,IAAI;MACf,OAAOhB,iBAAiB,CAACC,aAAa,EAAEC,IAAI,EAAEC,WAAW,EAAEC,WAAW,CAAC;IAEzE,KAAK,OAAOY,GAAG,KAAK,QAAQ;MAC1B,OAAOD,mBAAmB,CACxBd,aAAa,EACbe,GAAG,EACHd,IAAI,EACJC,WAAW,EACXC,WACF,CAAC;IAEH,KAAK,OAAOY,GAAG,KAAK,QAAQ;MAC1B,OAAOU,mBAAmB,CACxBzB,aAAa,EACbe,GAAG,EACHd,IAAI,EACJC,WAAW,EACXC,WACF,CAAC;IAEH;MACE,OAAOH,aAAa;EACxB;AACF,CAAC;;AAED;AAAA8B,OAAA,CAAAjB,oBAAA,GAAAA,oBAAA;AACA,MAAMU,aAAa,GAAGA,CACpBvB,aAAkC,EAClCe,GAAW,EACXd,IAAU,EACVC,WAAoC,EACpCC,WAAwB,KACJ;EACpB,MAAM4B,WAAW,GAAG/B,aAAa,CAACe,GAAG,CAAC,IAAI,CAAC,CAAC;EAC5C;EACA,MAAMiB,OAAO,GAAG/B,IAAI,CAAC,CAAC,CAAW;EACjC,MAAMe,eAAe,GAAGd,WAAW,CAAC8B,OAAO,CAAC;;EAE5C;EACA,OAAO;IACL,GAAGhC,aAAa;IAChB,CAACe,GAAG,GAAG;MACL,GAAGgB,WAAW;MACdvB,KAAK,EAAEK,oBAAoB,CACzBkB,WAAW,CAACvB,KAAK,IAAI,CAAC,CAAC,EACvBP,IAAI,EACJe,eAAe,EACfb,WACF;IACF;EACF,CAAC;AACH,CAAC"}
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 { LogLevel, Logger } from "../../utils/logging";
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 the disclosures
36
- const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(_ref2 => {
37
- let [, name] = _ref2;
38
- return name === definition.path[0];
39
- }));
40
- if (attrsNotInDisclosures.length > 0 && !ignoreMissingAttributes) {
41
- const missing = attrsNotInDisclosures.map(_ => _.path[0]).join(", ");
42
- const received = disclosures.map(_ => _[1]).join(", ");
43
- const message = `Some attributes are missing in the credential. Missing: [${missing}], received: [${received}]`;
44
- Logger.log(LogLevel.ERROR, message);
45
- throw new IoWalletError(message);
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
- for (const {
49
- path,
50
- display
51
- } of attrDefinitions) {
52
- var _disclosures$find;
53
- const attrKey = path[0];
54
- const disclosureValue = (_disclosures$find = disclosures.find(_ref3 => {
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 === attrKey;
57
- })) === null || _disclosures$find === void 0 ? void 0 : _disclosures$find[2];
58
- if (disclosureValue !== undefined) {
59
- const enriched = createNestedProperty(definedValues, path, disclosureValue, display);
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(_ref4 => {
67
- let [, key, value] = _ref4;
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, _ref5) {
104
+ const parseCredentialMDoc = function (credentialConfig, _ref6) {
81
105
  let {
82
106
  issuerSigned
83
- } = _ref5;
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(_ref6 => {
116
+ const attrDefinitions = credentialConfig.claims.map(_ref7 => {
93
117
  let {
94
118
  path: [namespace, attribute],
95
119
  display
96
- } = _ref6;
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(_ref7 => {
103
- let [namespace, values] = _ref7;
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(_ref8 => {
110
- let [attrDefNamespace, attrKey] = _ref8;
111
- return !flatNamespaces.some(_ref9 => {
112
- let [namespace, claim] = _ref9;
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(_ref10 => {
118
- let [, attrKey] = _ref10;
141
+ const missing = attrsNotInDisclosures.map(_ref11 => {
142
+ let [, attrKey] = _ref11;
119
143
  return attrKey;
120
144
  }).join(", ");
121
- const received = flatNamespaces.map(_ref11 => {
122
- let [, attrKey] = _ref11;
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(_ref12 => {
157
+ .map(_ref13 => {
134
158
  var _flatNamespaces$find;
135
- let [attrDefNamespace, attrKey, display] = _ref12;
159
+ let [attrDefNamespace, attrKey, display] = _ref13;
136
160
  return [attrDefNamespace, attrKey, {
137
161
  display,
138
- value: (_flatNamespaces$find = flatNamespaces.find(_ref13 => {
139
- let [namespace, name] = _ref13;
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(_ref14 => {
146
- let [_, __, definition] = _ref14;
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, _ref15) => {
175
+ .reduce((acc, _ref16) => {
152
176
  let [attrDefNamespace, attrKey, {
153
177
  display,
154
178
  value
155
- }] = _ref15;
179
+ }] = _ref16;
156
180
  return {
157
181
  ...acc,
158
182
  [getParsedCredentialClaimKey(attrDefNamespace, attrKey)]: {
159
183
  value,
160
- name: display.reduce((names, _ref16) => {
184
+ name: display.reduce((names, _ref17) => {
161
185
  let {
162
186
  locale,
163
187
  name
164
- } = _ref16;
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(_ref17 => {
175
- let [namespace, key] = _ref17;
198
+ const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(_ref18 => {
199
+ let [namespace, key] = _ref18;
176
200
  return !definedValues[getParsedCredentialClaimKey(namespace, key)];
177
- }).map(_ref18 => {
178
- let [namespace, key, value] = _ref18;
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 issuerKeys The set of public keys of the issuer,
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, _ref19) => {
272
+ const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId, _ref20) => {
249
273
  let {
250
274
  credentialCryptoContext,
251
275
  ignoreMissingAttributes,
252
276
  includeUndefinedAttributes
253
- } = _ref19;
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, _ref20, x509CertRoot) => {
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
- } = _ref20;
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":"AAGA,SAASA,aAAa,QAAQ,oBAAoB;AAClD,SAASC,QAAQ,EAAEC,MAAM,IAAIC,WAAW,QAAQ,cAAc;AAC9D,SAASC,uBAAuB,QAAQ,yBAAyB;AACjE,SAASC,gBAAgB,QAAkB,iBAAiB;AAE5D,SAASH,MAAM,IAAII,UAAU,QAAQ,YAAY;AACjD,SAASC,sBAAsB,QAAQ,kBAAkB;AACzD,SAASC,2BAA2B,QAAQ,kBAAkB;AAC9D,SAASC,MAAM,EAAEC,QAAQ,QAAQ,qBAAqB;AACtD,SAASC,yBAAyB,QAAQ,sBAAsB;AAGhE,SAASC,oBAAoB,QAAQ,4BAA4B;;AAgCjE;;AAeA;;AAKA,MAAMC,oBAAoB,GAAG,SAAAA,CAE3BC,gBAAgC,EAAAC,IAAA,EAIX;EAAA,IAHrB;IAAEC,KAAK;IAAEC;EAAoC,CAAC,GAAAF,IAAA;EAAA,IAC9CG,uBAAgC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACxCG,0BAAmC,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAE3C,IAAIL,gBAAgB,CAACS,MAAM,KAAKP,KAAK,CAACQ,MAAM,CAACC,GAAG,EAAE;IAChD,MAAMC,OAAO,GAAI,+DAA8DZ,gBAAgB,CAACS,MAAO,gBAAeP,KAAK,CAACQ,MAAM,CAACC,GAAI,GAAE;IACzIhB,MAAM,CAACkB,GAAG,CAACjB,QAAQ,CAACkB,KAAK,EAAEF,OAAO,CAAC;IACnC,MAAM,IAAI1B,aAAa,CAAC0B,OAAO,CAAC;EAClC;EAEA,IAAI,CAACZ,gBAAgB,CAACe,MAAM,EAAE;IAC5BpB,MAAM,CAACkB,GAAG,CAACjB,QAAQ,CAACkB,KAAK,EAAE,0CAA0C,CAAC;IACtE,MAAM,IAAI5B,aAAa,CAAC,0CAA0C,CAAC,CAAC,CAAC;EACvE;;EAEA,MAAM8B,eAAe,GAAGhB,gBAAgB,CAACe,MAAM;;EAE/C;EACA,IAAI,CAACX,uBAAuB,EAAE;IAC5B,MAAMa,aAAa,GAAG,IAAIC,GAAG,CAACf,WAAW,CAACgB,GAAG,CAACC,KAAA;MAAA,IAAC,GAAGC,IAAI,CAAC,GAAAD,KAAA;MAAA,OAAKC,IAAI;IAAA,EAAC,CAAC;IAClE,MAAMC,WAAW,GAAG,IAAIJ,GAAG,CAACK,MAAM,CAACC,IAAI,CAACtB,KAAK,CAACuB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAMC,mBAAmB,GAAG,IAAIR,GAAG,CACjCF,eAAe,CAACG,GAAG,CAAEQ,GAAG,IAAKA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAW,CACpD,CAAC;IAED,MAAMC,WAAW,GAAG,CAAC,GAAGH,mBAAmB,CAAC,CAACI,MAAM,CAChDC,GAAG,IAAK,CAACd,aAAa,CAACe,GAAG,CAACD,GAAG,CAAC,IAAI,CAACT,WAAW,CAACU,GAAG,CAACD,GAAG,CAC1D,CAAC;IAED,IAAIF,WAAW,CAACvB,MAAM,GAAG,CAAC,EAAE;MAC1B,MAAM,IAAIpB,aAAa,CACpB,4DAA2D2C,WAAW,CAACI,IAAI,CAAC,IAAI,CAAE,GACrF,CAAC;IACH;EACF;EAEA,MAAMC,aAA+B,GAAG,CAAC,CAAC;;EAE1C;EACA,MAAMC,kBAAkB,GAAGnB,eAAe,CAACoB,MAAM,CAC/C,CAACC,GAAG,EAAEV,GAAG,KAAK;IACZ,MAAMI,GAAG,GAAGJ,GAAG,CAACC,IAAI,CAAC,CAAC,CAAW;IACjC,MAAMU,KAAK,GAAGD,GAAG,CAACN,GAAG,CAAC;IACtB,IAAIO,KAAK,EAAE;MACTA,KAAK,CAACC,IAAI,CAACZ,GAAG,CAAC;IACjB,CAAC,MAAM;MACLU,GAAG,CAACN,GAAG,CAAC,GAAG,CAACJ,GAAG,CAAC;IAClB;IACA,OAAOU,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;;EAED;EACA,KAAK,MAAMG,WAAW,IAAIL,kBAAkB,EAAE;IAC5C,MAAMM,qBAAqB,GAAGN,kBAAkB,CAACK,WAAW,CAAC;IAE7D,IAAI,CAACC,qBAAqB,EAAE;MAC1B;IACF;IAEA,MAAMC,oBAAoB,GAAGvC,WAAW,CAACwC,IAAI,CAC3CC,KAAA;MAAA,IAAC,GAAGvB,IAAI,CAAC,GAAAuB,KAAA;MAAA,OAAKvB,IAAI,KAAKmB,WAAW;IAAA,CACpC,CAAC;IAED,IAAI,CAACE,oBAAoB,EAAE;MACzB;IACF;IAEA,MAAMG,eAAe,GAAGH,oBAAoB,CAAC,CAAC,CAAC;IAE/C,MAAMI,kBAAkB,GAAGL,qBAAqB,CAACL,MAAM,CACrD,CAACC,GAAG,EAAAU,KAAA;MAAA,IAAE;QAAEnB,IAAI;QAAEoB;MAAQ,CAAC,GAAAD,KAAA;MAAA,OACrBjD,oBAAoB,CAACuC,GAAG,EAAET,IAAI,EAAEiB,eAAe,EAAEG,OAAO,CAAC;IAAA,GAC3D,CAAC,CACH,CAAC;;IAED;IACAzB,MAAM,CAAC0B,MAAM,CAACf,aAAa,EAAEY,kBAAkB,CAAC;EAClD;EAEA,IAAItC,0BAA0B,EAAE;IAC9B;IACA;IACA,MAAM0C,eAAe,GAAG3B,MAAM,CAAC4B,WAAW,CACxChD,WAAW,CACR2B,MAAM,CAAEsB,CAAC,IAAK,CAAC7B,MAAM,CAACC,IAAI,CAACU,aAAa,CAAC,CAACmB,QAAQ,CAACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzDjC,GAAG,CAACmC,KAAA;MAAA,IAAC,GAAGvB,GAAG,EAAEwB,KAAK,CAAC,GAAAD,KAAA;MAAA,OAAK,CAACvB,GAAG,EAAE;QAAEwB,KAAK;QAAElC,IAAI,EAAEU;MAAI,CAAC,CAAC;IAAA,EACxD,CAAC;IAED,OAAO;MACL,GAAGG,aAAa;MAChB,GAAGgB;IACL,CAAC;EACH;EAEA,OAAOhB,aAAa;AACtB,CAAC;AAED,MAAMsB,mBAAmB,GAAG,SAAAA,CAE1BxD,gBAAgC,EAAAyD,KAAA,EAKX;EAAA,IAHrB;IAAEC;EAAoC,CAAC,GAAAD,KAAA;EAAA,IACvCrD,uBAAgC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACxCG,0BAAmC,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAE3C,IAAI,CAACL,gBAAgB,EAAE;IACrB,MAAM,IAAId,aAAa,CAAC,6CAA6C,CAAC;EACxE;EAEA,IAAI,CAACc,gBAAgB,CAACe,MAAM,EAAE;IAC5B,MAAM,IAAI7B,aAAa,CAAC,0CAA0C,CAAC;EACrE;EAEA,MAAM8B,eAAe,GAAGhB,gBAAgB,CAACe,MAAM,CAACI,GAAG,CAEjDwC,KAAA;IAAA,IAAC;MAAE/B,IAAI,EAAE,CAACgC,SAAS,EAAEC,SAAS,CAAC;MAAEb;IAAQ,CAAC,GAAAW,KAAA;IAAA,OAAK,CAC/CC,SAAS,EACTC,SAAS,EACTb,OAAO,CACR;EAAA,EAAC;EAEF,IAAI,CAACU,YAAY,CAACI,UAAU,EAAE;IAC5B,MAAM,IAAI5E,aAAa,CAAC,kCAAkC,CAAC;EAC7D;EAEA,MAAM6E,cAAc,GAAGxC,MAAM,CAACyC,OAAO,CAACN,YAAY,CAACI,UAAU,CAAC,CAACG,OAAO,CACpEC,KAAA;IAAA,IAAC,CAACN,SAAS,EAAEO,MAAM,CAAC,GAAAD,KAAA;IAAA,OAClBC,MAAM,CAAChD,GAAG,CAA4BiD,CAAC,IAAK,CAC1CR,SAAS,EACTQ,CAAC,CAACC,iBAAiB,EACnBD,CAAC,CAACE,YAAY,CACf,CAAC;EAAA,CACN,CAAC;;EAED;EACA;EACA,MAAMC,qBAAqB,GAAGvD,eAAe,CAACc,MAAM,CAClD0C,KAAA;IAAA,IAAC,CAACC,gBAAgB,EAAEC,OAAO,CAAC,GAAAF,KAAA;IAAA,OAC1B,CAACT,cAAc,CAACY,IAAI,CAClBC,MAAA;MAAA,IAAC,CAAChB,SAAS,EAAEiB,KAAK,CAAC,GAAAD,MAAA;MAAA,OACjBH,gBAAgB,KAAKb,SAAS,IAAIc,OAAO,KAAKG,KAAK;IAAA,CACvD,CAAC;EAAA,CACL,CAAC;EAED,IAAIN,qBAAqB,CAACjE,MAAM,GAAG,CAAC,EAAE;IACpC,MAAMwE,OAAO,GAAGP,qBAAqB,CAClCpD,GAAG,CAAC4D,MAAA;MAAA,IAAC,GAAGL,OAAO,CAAC,GAAAK,MAAA;MAAA,OAAKL,OAAO;IAAA,EAAC,CAC7BzC,IAAI,CAAC,IAAI,CAAC;IACb,MAAM+C,QAAQ,GAAGjB,cAAc,CAAC5C,GAAG,CAAC8D,MAAA;MAAA,IAAC,GAAGP,OAAO,CAAC,GAAAO,MAAA;MAAA,OAAKP,OAAO;IAAA,EAAC,CAACzC,IAAI,CAAC,IAAI,CAAC;IAExE,IAAI,CAAC7B,uBAAuB,EAAE;MAC5B,MAAM,IAAIlB,aAAa,CACpB,4DAA2D4F,OAAQ,iBAAgBE,QAAS,GAC/F,CAAC;IACH;EACF;;EAEA;EACA,MAAM9C,aAAa,GAAGlB;EACpB;EAAA,CACCG,GAAG,CACF+D,MAAA;IAAA,IAAAC,oBAAA;IAAA,IAAC,CAACV,gBAAgB,EAAEC,OAAO,EAAE1B,OAAO,CAAC,GAAAkC,MAAA;IAAA,OACnC,CACET,gBAAgB,EAChBC,OAAO,EACP;MACE1B,OAAO;MACPO,KAAK,GAAA4B,oBAAA,GAAEpB,cAAc,CAACpB,IAAI,CACxByC,MAAA;QAAA,IAAC,CAACxB,SAAS,EAAEvC,IAAI,CAAC,GAAA+D,MAAA;QAAA,OAChBX,gBAAgB,KAAKb,SAAS,IAAIvC,IAAI,KAAKqD,OAAO;MAAA,CACtD,CAAC,cAAAS,oBAAA,uBAHMA,oBAAA,CAGH,CAAC;IACP,CAAC,CACF;EAAA,CACL;EACA;EAAA,CACCrD,MAAM,CAACuD,MAAA;IAAA,IAAC,CAACjC,CAAC,EAAEkC,EAAE,EAAEC,UAAU,CAAC,GAAAF,MAAA;IAAA,OAAKE,UAAU,CAAChC,KAAK,KAAKhD,SAAS;EAAA;EAC/D;EACA;EAAA,CACC6B,MAAM,CACL,CAACC,GAAG,EAAAmD,MAAA;IAAA,IAAE,CAACf,gBAAgB,EAAEC,OAAO,EAAE;MAAE1B,OAAO;MAAEO;IAAM,CAAC,CAAC,GAAAiC,MAAA;IAAA,OAAM;MACzD,GAAGnD,GAAG;MACN,CAAC3C,2BAA2B,CAAC+E,gBAAgB,EAAEC,OAAO,CAAC,GAAG;QACxDnB,KAAK;QACLlC,IAAI,EAAE2B,OAAO,CAACZ,MAAM,CAClB,CAACqD,KAAK,EAAAC,MAAA;UAAA,IAAE;YAAEC,MAAM;YAAEtE;UAAK,CAAC,GAAAqE,MAAA;UAAA,OAAM;YAC5B,GAAGD,KAAK;YACR,CAACE,MAAM,GAAGtE;UACZ,CAAC;QAAA,CAAC,EACF,CAAC,CACH;MACF;IACF,CAAC;EAAA,CAAC,EACF,CAAC,CACH,CAAC;EAEH,IAAIb,0BAA0B,EAAE;IAC9B,MAAM0C,eAAiC,GAAG3B,MAAM,CAAC4B,WAAW,CAC1D5B,MAAM,CAAC4C,MAAM,CAACJ,cAAc,CAAC,CAC1BjC,MAAM,CACL8D,MAAA;MAAA,IAAC,CAAChC,SAAS,EAAE7B,GAAG,CAAC,GAAA6D,MAAA;MAAA,OACf,CAAC1D,aAAa,CAACxC,2BAA2B,CAACkE,SAAS,EAAE7B,GAAG,CAAC,CAAC;IAAA,CAC/D,CAAC,CACAZ,GAAG,CAAC0E,MAAA;MAAA,IAAC,CAACjC,SAAS,EAAE7B,GAAG,EAAEwB,KAAK,CAAC,GAAAsC,MAAA;MAAA,OAAK,CAChCnG,2BAA2B,CAACkE,SAAS,EAAE7B,GAAG,CAAC,EAC3C;QAAEwB,KAAK;QAAElC,IAAI,EAAEU;MAAI,CAAC,CACrB;IAAA,EACL,CAAC;IACD,OAAO;MACL,GAAGG,aAAa;MAChB,GAAGgB;IACL,CAAC;EACH;EAEA,OAAOhB,aAAa;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe4D,qBAAqBA,CAClCC,aAAqB,EACrBC,UAAiB,EACjBC,oBAAmC,EACF;EACjC,MAAM,CAACC,iBAAiB,EAAEC,gBAAgB,CAAC;EACzC;EACA,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChBhH,WAAW,CAAC0G,aAAa,EAAEC,UAAU,EAAE7G,QAAQ,CAAC,EAChD8G,oBAAoB,CAACK,YAAY,CAAC,CAAC,CACpC,CAAC;EAEJ,MAAM;IAAEC;EAAI,CAAC,GAAGL,iBAAiB,CAAChG,KAAK,CAACuB,OAAO;EAC/C,IAAI,EAAE,MAAMlC,gBAAgB,CAACgH,GAAG,CAACC,GAAG,EAAEL,gBAAuB,CAAC,CAAC,EAAE;IAC/D,MAAMvF,OAAO,GAAI,kDAAiDuF,gBAAgB,CAACM,GAAI,UAASP,iBAAiB,CAAChG,KAAK,CAACuB,OAAO,CAAC8E,GAAG,CAACC,GAAG,CAACC,GAAI,EAAC;IAC7I9G,MAAM,CAACkB,GAAG,CAACjB,QAAQ,CAACkB,KAAK,EAAEF,OAAO,CAAC;IACnC,MAAM,IAAI1B,aAAa,CAAC0B,OAAO,CAAC;EAClC;EAEA,OAAOsF,iBAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeQ,oBAAoBA,CACjCX,aAAqB,EACrBY,YAAoB,EACpBV,oBAAmC,EACH;EAChC,MAAM,CAACC,iBAAiB,EAAEC,gBAAgB,CAAC;EACzC;EACA,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChB7G,UAAU,CAACuG,aAAa,EAAEY,YAAY,CAAC,EACvCV,oBAAoB,CAACK,YAAY,CAAC,CAAC,CACpC,CAAC;EAEJ,IAAI,CAACJ,iBAAiB,EAAE;IACtB,MAAM,IAAIhH,aAAa,CAAC,4BAA4B,CAAC;EACvD;EAEA,MAAM6C,GAAG,GACPmE,iBAAiB,CAACxC,YAAY,CAACkD,UAAU,CAACnF,OAAO,CAACoF,aAAa,CAACC,SAAS;EAE3E,IAAI,EAAE,MAAMvH,gBAAgB,CAACwC,GAAG,EAAEoE,gBAA6B,CAAC,CAAC,EAAE;IACjE,MAAM,IAAIjH,aAAa,CACpB,oFACH,CAAC;EACH;EAEA,OAAOgH,iBAAiB;AAC1B;AAEA,MAAMa,6BAAuD,GAAG,MAAAA,CAC9DC,UAAU,EACVC,UAAU,EACVC,yBAAyB,EAAAC,MAAA,KAMtB;EAAA,IALH;IACEC,uBAAuB;IACvBhH,uBAAuB;IACvBI;EACF,CAAC,GAAA2G,MAAA;EAED,MAAME,OAAO,GAAG,MAAMvB,qBAAqB,CACzCmB,UAAU,EACVD,UAAU,CAACM,wBAAwB,CAACC,IAAI,CAAC/F,IAAI,EAC7C4F,uBACF,CAAC;EAEDzH,MAAM,CAACkB,GAAG,CAACjB,QAAQ,CAAC4H,KAAK,EAAG,uBAAsBC,IAAI,CAACC,SAAS,CAACL,OAAO,CAAE,EAAC,CAAC;EAE5E,MAAMrH,gBAAgB,GACpBgH,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CAC1B;EAEH,IAAI,CAAClH,gBAAgB,EAAE;IACrBL,MAAM,CAACkB,GAAG,CACRjB,QAAQ,CAACkB,KAAK,EACb,gDAA+CoG,yBAA0B,EAC5E,CAAC;IACD,MAAM,IAAIhI,aAAa,CAAC,6CAA6C,CAAC;EACxE;EAEA,MAAM0I,gBAAgB,GAAG7H,oBAAoB,CAC3CC,gBAAgB,EAChBqH,OAAO,EACPjH,uBAAuB,EACvBI,0BACF,CAAC;EACD,MAAMqH,aAAa,GAAGvI,uBAAuB,CAAC+H,OAAO,CAAClH,WAAW,EAAE,KAAK,CAAC;EAEzER,MAAM,CAACkB,GAAG,CACRjB,QAAQ,CAAC4H,KAAK,EACb,sBAAqBC,IAAI,CAACC,SAAS,CAACE,gBAAgB,CAAE,gBAAeC,aAAc,EACtF,CAAC;EAED,OAAO;IACLD,gBAAgB;IAChBE,UAAU,EAAE,IAAIC,IAAI,CAACV,OAAO,CAACnH,KAAK,CAACuB,OAAO,CAACuG,GAAG,GAAG,IAAI,CAAC;IACtDC,QAAQ,EACN,OAAOJ,aAAa,KAAK,QAAQ,GAC7B,IAAIE,IAAI,CAACF,aAAa,GAAG,IAAI,CAAC,GAC9BtH;EACR,CAAC;AACH,CAAC;AAED,MAAM2H,4BAAsD,GAAG,MAAAA,CAC7DlB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EAAAiB,MAAA,EAEzBxB,YAAY,KACT;EAAA,IAAAyB,qBAAA,EAAAC,sBAAA;EAAA,IAFH;IAAEjB,uBAAuB;IAAEhH;EAAwB,CAAC,GAAA+H,MAAA;EAGpD,IAAI,CAACxB,YAAY,EAAE;IACjB,MAAM,IAAIzH,aAAa,CAAC,sBAAsB,CAAC;EACjD;EAEA,MAAMmI,OAAO,GAAG,MAAMX,oBAAoB,CACxCO,UAAU,EACVN,YAAY,EACZS,uBACF,CAAC;EAED,MAAMpH,gBAAgB,GACpBgH,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CACzB;EACJ,MAAMU,gBAAgB,GAAGpE,mBAAmB,CAC1CxD,gBAAgB,EAChBqH,OAAO,EACPjH,uBAAuB,EACvBA,uBACF,CAAC;EAED,MAAMkI,cAAc,GAAGzI,yBAAyB,CAC9C+H,gBAAgB,aAAhBA,gBAAgB,gBAAAQ,qBAAA,GAAhBR,gBAAgB,CACdlI,2BAA2B,CAACD,sBAAsB,EAAE,aAAa,CAAC,CACnE,cAAA2I,qBAAA,uBAFDA,qBAAA,CAEG7E,KACL,CAAC;EACD,IAAI,CAAC+E,cAAc,EAAE;IACnB,MAAM,IAAIpJ,aAAa,CAAE,kCAAiC,CAAC;EAC7D;EACAoJ,cAAc,CAACC,OAAO,CAACD,cAAc,CAACE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAEpD,MAAMX,aAAa,GAAGhI,yBAAyB,CAC7C+H,gBAAgB,aAAhBA,gBAAgB,gBAAAS,sBAAA,GAAhBT,gBAAgB,CACdlI,2BAA2B,CAACD,sBAAsB,EAAE,YAAY,CAAC,CAClE,cAAA4I,sBAAA,uBAFDA,sBAAA,CAEG9E,KACL,CAAC;EACDsE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEU,OAAO,CAACV,aAAa,CAACW,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAEnD,OAAO;IACLZ,gBAAgB;IAChBX,UAAU;IACVC,yBAAyB;IACzBY,UAAU,EAAEQ,cAAc;IAC1BL,QAAQ,EAAEJ,aAAa,IAAItH;EAC7B,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMkI,wBAAkD,GAAG,MAAAA,CAChEzB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OAAO,EACP/B,YAAY,KACT;EAAA,IAAAgC,qBAAA;EACH,MAAMlI,MAAM,IAAAkI,qBAAA,GACV3B,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CAC1B,cAAAyB,qBAAA,uBAFDA,qBAAA,CAEGlI,MAAM;EAEX,QAAQA,MAAM;IACZ,KAAK,WAAW;MAAE;QAChBd,MAAM,CAACkB,GAAG,CAACjB,QAAQ,CAAC4H,KAAK,EAAE,wCAAwC,CAAC;QACpE,OAAOT,6BAA6B,CAClCC,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OACF,CAAC;MACH;IACA,KAAK,UAAU;MAAE;QACf/I,MAAM,CAACkB,GAAG,CAACjB,QAAQ,CAAC4H,KAAK,EAAE,uCAAuC,CAAC;QACnE,OAAOU,4BAA4B,CACjClB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OAAO,EACP/B,YACF,CAAC;MACH;IAEA;MAAS;QACP,MAAM/F,OAAO,GAAI,kCAAiCH,MAAO,EAAC;QAC1Dd,MAAM,CAACkB,GAAG,CAACjB,QAAQ,CAACkB,KAAK,EAAEF,OAAO,CAAC;QACnC,MAAM,IAAI1B,aAAa,CAAC0B,OAAO,CAAC;MAClC;EACF;AACF,CAAC"}
@@ -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
@@ -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,SACER,KAAK,EACLD,GAAG,EACHD,UAAU,EACVI,yBAAyB,EACzBE,cAAc,EACdH,MAAM,EACNE,KAAK,EACLK,sBAAsB,EACtBF,mBAAmB,EACnBC,oBAAoB,EACpBV,sBAAsB,EACtBQ,OAAO"}
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"}
@@ -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":"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"}
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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"}
@@ -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,MAAMA,2BAA2B,GAAGA,CAACC,SAAiB,EAAEC,GAAW,KACvE,GAAED,SAAU,IAAGC,GAAI,EAAC"}
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 trustAnchorKey The public key of the Trust Anchor (TA) entity
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, trustAnchorKey) {
141
+ export async function buildTrustChain(relyingPartyEntityBaseUrl, trustAnchorConfig) {
142
142
  let appFetch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : fetch;
143
- // 1: Recursively gather the trust chain from the RP up to the Trust Anchor
144
- const trustChain = await gatherTrustChain(relyingPartyEntityBaseUrl, appFetch);
145
-
146
- // 2: Trust Anchor signature verification
147
- const trustAnchorJwt = trustChain[trustChain.length - 1];
148
- if (!trustAnchorJwt) {
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) {