@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
@@ -1 +1 @@
1
- {"version":3,"names":["BuildTrustChainError","FederationListParseError","MissingFederationFetchEndpointError","RelyingPartyNotAuthorizedError","TrustAnchorKidMissingError","decode","verify","CredentialIssuerEntityConfiguration","EntityConfiguration","EntityStatement","FederationListResponse","RelyingPartyEntityConfiguration","TrustAnchorEntityConfiguration","WalletProviderEntityConfiguration","hasStatusOrThrow","decodeJwt","fetchAndParseEntityConfiguration","entityBaseUrl","schema","appFetch","fetch","arguments","length","undefined","responseText","getSignedEntityConfiguration","responseJwt","parse","header","protectedHeader","payload","getWalletProviderEntityConfiguration","options","getCredentialIssuerEntityConfiguration","getTrustAnchorEntityConfiguration","getRelyingPartyEntityConfiguration","getEntityConfiguration","getEntityStatement","accreditationBodyBaseUrl","subordinatedEntityBaseUrl","getSignedEntityStatement","wellKnownUrl","method","then","res","text","federationFetchEndpoint","url","URL","searchParams","set","toString","getFederationList","federationListEndpoint","json","result","safeParse","success","error","message","parseError","data","buildTrustChain","relyingPartyEntityBaseUrl","trustAnchorKey","trustChain","gatherTrustChain","trustAnchorJwt","relyingPartyUrl","kid","trustAnchorConfig","metadata","federation_entity","federation_list_endpoint","federationList","includes","isLeaf","chain","entityECJwt","entityEC","push","authorityHints","authority_hints","parentEntityBaseUrl","parentECJwt","parentEC","federation_fetch_endpoint","missingInEntityUrl","entityStatementJwt","parentChain","concat"],"sourceRoot":"../../../src","sources":["trust/build-chain.ts"],"mappings":"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"}
1
+ {"version":3,"names":["BuildTrustChainError","FederationListParseError","MissingFederationFetchEndpointError","RelyingPartyNotAuthorizedError","TrustAnchorKidMissingError","decode","verify","CredentialIssuerEntityConfiguration","EntityConfiguration","EntityStatement","FederationListResponse","RelyingPartyEntityConfiguration","TrustAnchorEntityConfiguration","WalletProviderEntityConfiguration","hasStatusOrThrow","decodeJwt","fetchAndParseEntityConfiguration","entityBaseUrl","schema","appFetch","fetch","arguments","length","undefined","responseText","getSignedEntityConfiguration","responseJwt","parse","header","protectedHeader","payload","getWalletProviderEntityConfiguration","options","getCredentialIssuerEntityConfiguration","getTrustAnchorEntityConfiguration","getRelyingPartyEntityConfiguration","getEntityConfiguration","getEntityStatement","accreditationBodyBaseUrl","subordinatedEntityBaseUrl","getSignedEntityStatement","wellKnownUrl","method","then","res","text","federationFetchEndpoint","url","URL","searchParams","set","toString","getFederationList","federationListEndpoint","json","result","safeParse","success","error","message","parseError","data","buildTrustChain","relyingPartyEntityBaseUrl","trustAnchorConfig","trustAnchorKey","jwks","keys","metadata","federation_entity","federation_list_endpoint","federationList","includes","relyingPartyUrl","trustChain","gatherTrustChain","chainTrustAnchorJwt","kid","isLeaf","chain","entityECJwt","entityEC","push","authorityHints","authority_hints","parentEntityBaseUrl","parentECJwt","parentEC","federation_fetch_endpoint","missingInEntityUrl","entityStatementJwt","parentChain","concat"],"sourceRoot":"../../../src","sources":["trust/build-chain.ts"],"mappings":"AAAA,SACEA,oBAAoB,EACpBC,wBAAwB,EACxBC,mCAAmC,EACnCC,8BAA8B,EAC9BC,0BAA0B,QACrB,UAAU;AACjB,SAASC,MAAM,EAAEC,MAAM,QAAQ,SAAS;AACxC,SACEC,mCAAmC,EACnCC,mBAAmB,EACnBC,eAAe,EACfC,sBAAsB,EACtBC,+BAA+B,EAC/BC,8BAA8B,EAC9BC,iCAAiC,QAC5B,SAAS;AAChB,SAASC,gBAAgB,QAAQ,eAAe;AAChD,SAAST,MAAM,IAAIU,SAAS,QAAQ,6BAA6B;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoCA,eAAeC,gCAAgCA,CAC7CC,aAAqB,EACrBC,MAK8B,EAM9B;EAAA,IALA;IACEC,QAAQ,GAAGC;EAGb,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEN,MAAMG,YAAY,GAAG,MAAMC,4BAA4B,CAACR,aAAa,EAAE;IACrEE;EACF,CAAC,CAAC;EAEF,MAAMO,WAAW,GAAGX,SAAS,CAACS,YAAY,CAAC;EAC3C,OAAON,MAAM,CAACS,KAAK,CAAC;IAClBC,MAAM,EAAEF,WAAW,CAACG,eAAe;IACnCC,OAAO,EAAEJ,WAAW,CAACI;EACvB,CAAC,CAAC;AACJ;AAEA,OAAO,MAAMC,oCAAoC,GAAGA,CAClDd,aAAqE,EACrEe,OAAgE,KAEhEhB,gCAAgC,CAC9BC,aAAa,EACbJ,iCAAiC,EACjCmB,OACF,CAAC;AAEH,OAAO,MAAMC,sCAAsC,GAAGA,CACpDhB,aAAqE,EACrEe,OAAgE,KAEhEhB,gCAAgC,CAC9BC,aAAa,EACbV,mCAAmC,EACnCyB,OACF,CAAC;AAEH,OAAO,MAAME,iCAAiC,GAAGA,CAC/CjB,aAAqE,EACrEe,OAAgE,KAEhEhB,gCAAgC,CAC9BC,aAAa,EACbL,8BAA8B,EAC9BoB,OACF,CAAC;AAEH,OAAO,MAAMG,kCAAkC,GAAGA,CAChDlB,aAAqE,EACrEe,OAAgE,KAEhEhB,gCAAgC,CAC9BC,aAAa,EACbN,+BAA+B,EAC/BqB,OACF,CAAC;AAEH,OAAO,MAAMI,sBAAsB,GAAGA,CACpCnB,aAAqE,EACrEe,OAAgE,KAEhEhB,gCAAgC,CAACC,aAAa,EAAET,mBAAmB,EAAEwB,OAAO,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeK,kBAAkBA,CACtCC,wBAAgC,EAChCC,yBAAiC,EAMjC;EAAA,IALA;IACEpB,QAAQ,GAAGC;EAGb,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEN,MAAMG,YAAY,GAAG,MAAMgB,wBAAwB,CACjDF,wBAAwB,EACxBC,yBAAyB,EACzB;IACEpB;EACF,CACF,CAAC;EAED,MAAMO,WAAW,GAAGX,SAAS,CAACS,YAAY,CAAC;EAC3C,OAAOf,eAAe,CAACkB,KAAK,CAAC;IAC3BC,MAAM,EAAEF,WAAW,CAACG,eAAe;IACnCC,OAAO,EAAEJ,WAAW,CAACI;EACvB,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeL,4BAA4BA,CAChDR,aAAqB,EAMJ;EAAA,IALjB;IACEE,QAAQ,GAAGC;EAGb,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEN,MAAMoB,YAAY,GAAI,GAAExB,aAAc,gCAA+B;EAErE,OAAO,MAAME,QAAQ,CAACsB,YAAY,EAAE;IAClCC,MAAM,EAAE;EACV,CAAC,CAAC,CACCC,IAAI,CAAC7B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC3B6B,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeL,wBAAwBA,CAC5CM,uBAA+B,EAC/BP,yBAAiC,EAMjC;EAAA,IALA;IACEpB,QAAQ,GAAGC;EAGb,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEN,MAAM0B,GAAG,GAAG,IAAIC,GAAG,CAACF,uBAAuB,CAAC;EAC5CC,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,KAAK,EAAEX,yBAAyB,CAAC;EAEtD,OAAO,MAAMpB,QAAQ,CAAC4B,GAAG,CAACI,QAAQ,CAAC,CAAC,EAAE;IACpCT,MAAM,EAAE;EACV,CAAC,CAAC,CACCC,IAAI,CAAC7B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC3B6B,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeO,iBAAiBA,CACrCC,sBAA8B,EAMX;EAAA,IALnB;IACElC,QAAQ,GAAGC;EAGb,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEN,OAAO,MAAMF,QAAQ,CAACkC,sBAAsB,EAAE;IAC5CX,MAAM,EAAE;EACV,CAAC,CAAC,CACCC,IAAI,CAAC7B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC3B6B,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACU,IAAI,CAAC,CAAC,CAAC,CACzBX,IAAI,CAAEW,IAAI,IAAK;IACd,MAAMC,MAAM,GAAG7C,sBAAsB,CAAC8C,SAAS,CAACF,IAAI,CAAC;IACrD,IAAI,CAACC,MAAM,CAACE,OAAO,EAAE;MACnB,MAAM,IAAIxD,wBAAwB,CAC/B,gDAA+CoD,sBAAuB,YAAWE,MAAM,CAACG,KAAK,CAACC,OAAQ,EAAC,EACxG;QAAEZ,GAAG,EAAEM,sBAAsB;QAAEO,UAAU,EAAEL,MAAM,CAACG,KAAK,CAACP,QAAQ,CAAC;MAAE,CACrE,CAAC;IACH;IACA,OAAOI,MAAM,CAACM,IAAI;EACpB,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,eAAeA,CACnCC,yBAAiC,EACjCC,iBAAiD,EAE9B;EAAA,IADnB7C,QAA8B,GAAAE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGD,KAAK;EAEtC;EACA;EACA;EACA,MAAM6C,cAAc,GAAGD,iBAAiB,CAAClC,OAAO,CAACoC,IAAI,CAACC,IAAI,CAAC,CAAC,CAAC;EAE7D,IAAI,CAACF,cAAc,EAAE;IACnB,MAAM,IAAIjE,oBAAoB,CAC5B,0EACF,CAAC;EACH;EAEA,MAAMqD,sBAAsB,GAC1BW,iBAAiB,CAAClC,OAAO,CAACsC,QAAQ,CAACC,iBAAiB,CACjDC,wBAAwB;EAE7B,IAAIjB,sBAAsB,EAAE;IAC1B,MAAMkB,cAAc,GAAG,MAAMnB,iBAAiB,CAACC,sBAAsB,EAAE;MACrElC;IACF,CAAC,CAAC;IAEF,IAAI,CAACoD,cAAc,CAACC,QAAQ,CAACT,yBAAyB,CAAC,EAAE;MACvD,MAAM,IAAI5D,8BAA8B,CACtC,wFAAwF,EACxF;QAAEsE,eAAe,EAAEV,yBAAyB;QAAEV;MAAuB,CACvE,CAAC;IACH;EACF;;EAEA;EACA,MAAMqB,UAAU,GAAG,MAAMC,gBAAgB,CACvCZ,yBAAyB,EACzB5C,QACF,CAAC;EACD;EACA,MAAMyD,mBAAmB,GAAGF,UAAU,CAACA,UAAU,CAACpD,MAAM,GAAG,CAAC,CAAC;EAC7D,IAAI,CAACsD,mBAAmB,EAAE;IACxB,MAAM,IAAI5E,oBAAoB,CAC5B,6EAA6E,EAC7E;MAAEyE,eAAe,EAAEV;IAA0B,CAC/C,CAAC;EACH;EAEA,IAAI,CAACE,cAAc,CAACY,GAAG,EAAE;IACvB,MAAM,IAAIzE,0BAA0B,CAAC,CAAC;EACxC;EAEA,MAAME,MAAM,CAACsE,mBAAmB,EAAEX,cAAc,CAACY,GAAG,EAAE,CAACZ,cAAc,CAAC,CAAC;EAEvE,OAAOS,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeC,gBAAgBA,CAC7B1D,aAAqB,EACrBE,QAA8B,EAEX;EAAA,IADnB2D,MAAe,GAAAzD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAEtB,MAAM0D,KAAe,GAAG,EAAE;;EAE1B;EACA,MAAMC,WAAW,GAAG,MAAMvD,4BAA4B,CAACR,aAAa,EAAE;IACpEE;EACF,CAAC,CAAC;EACF,MAAM8D,QAAQ,GAAGzE,mBAAmB,CAACmB,KAAK,CAACtB,MAAM,CAAC2E,WAAW,CAAC,CAAC;EAC/D,IAAIF,MAAM,EAAE;IACV;IACAC,KAAK,CAACG,IAAI,CAACF,WAAW,CAAC;EACzB;;EAEA;EACA,MAAMG,cAAc,GAAGF,QAAQ,CAACnD,OAAO,CAACsD,eAAe,IAAI,EAAE;EAC7D,IAAID,cAAc,CAAC7D,MAAM,KAAK,CAAC,EAAE;IAC/B;IACA,IAAI,CAACwD,MAAM,EAAE;MACXC,KAAK,CAACG,IAAI,CAACF,WAAW,CAAC;IACzB;IACA,OAAOD,KAAK;EACd;EACA,MAAMM,mBAAmB,GAAGF,cAAc,CAAC,CAAC,CAAE;;EAE9C;EACA,MAAMG,WAAW,GAAG,MAAM7D,4BAA4B,CAAC4D,mBAAmB,EAAE;IAC1ElE;EACF,CAAC,CAAC;EACF,MAAMoE,QAAQ,GAAG/E,mBAAmB,CAACmB,KAAK,CAACtB,MAAM,CAACiF,WAAW,CAAC,CAAC;EAC/D;EACA,MAAMxC,uBAAuB,GAC3ByC,QAAQ,CAACzD,OAAO,CAACsC,QAAQ,CAACC,iBAAiB,CAACmB,yBAAyB;EACvE,IAAI,CAAC1C,uBAAuB,EAAE;IAC5B,MAAM,IAAI5C,mCAAmC,CAC1C,kDAAiDmF,mBAAoB,4CAA2CpE,aAAc,GAAE,EACjI;MAAEA,aAAa;MAAEwE,kBAAkB,EAAEJ;IAAoB,CAC3D,CAAC;EACH;EACA,MAAMK,kBAAkB,GAAG,MAAMlD,wBAAwB,CACvDM,uBAAuB,EACvB7B,aAAa,EACb;IAAEE;EAAS,CACb,CAAC;EACD;EACAV,eAAe,CAACkB,KAAK,CAACtB,MAAM,CAACqF,kBAAkB,CAAC,CAAC;;EAEjD;EACAX,KAAK,CAACG,IAAI,CAACQ,kBAAkB,CAAC;;EAE9B;EACA,MAAMC,WAAW,GAAG,MAAMhB,gBAAgB,CACxCU,mBAAmB,EACnBlE,QAAQ,EACR,KACF,CAAC;EAED,OAAO4D,KAAK,CAACa,MAAM,CAACD,WAAW,CAAC;AAClC"}
@@ -22,14 +22,17 @@ const buildName = display => display.reduce((names, _ref) => {
22
22
  };
23
23
  }, {});
24
24
 
25
- // Handles the case where the path key is `null`
25
+ // Handles the case where the path key is `null` (indicating an array)
26
26
  const handleNullKeyCase = (currentObject, rest, sourceValue, displayData) => {
27
27
  if (!Array.isArray(sourceValue)) return currentObject;
28
28
 
29
29
  // We assert the type here because we know this branch handles PropertyNodes
30
30
  const node = currentObject;
31
31
  const existingValue = Array.isArray(node.value) ? node.value : [];
32
- const mappedArray = sourceValue.map((item, idx) => createNestedProperty(existingValue[idx] || {}, rest, item, displayData));
32
+ const mappedArray = sourceValue.map((item, idx) =>
33
+ // When mapping over an array, recursively call with `skipMissingLeaves` set to `true`.
34
+ // This tells the function to skip optional keys inside these array objects.
35
+ createNestedProperty(existingValue[idx] || {}, rest, item, displayData, true));
33
36
  return {
34
37
  ...node,
35
38
  value: mappedArray,
@@ -38,7 +41,7 @@ const handleNullKeyCase = (currentObject, rest, sourceValue, displayData) => {
38
41
  };
39
42
 
40
43
  // Handles the case where the path key is a string
41
- const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData) => {
44
+ const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData, skipMissingLeaves) => {
42
45
  let nextSourceValue = sourceValue;
43
46
  const isLeaf = rest.length === 0;
44
47
  if (isObject(sourceValue)) {
@@ -51,7 +54,13 @@ const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData)
51
54
 
52
55
  // Skip processing when the key is not found within the claim object
53
56
  if (!(key in sourceValue)) {
54
- // Leaf node: create a node with an empty value and display name
57
+ // If the flag is set (we're inside an array), skip the missing key completely.
58
+ if (skipMissingLeaves) {
59
+ return currentObject;
60
+ }
61
+
62
+ // If the flag is NOT set, create the empty placeholder
63
+ // so that its children can be attached later.
55
64
  if (isLeaf) {
56
65
  return {
57
66
  ...currentObject,
@@ -82,7 +91,7 @@ const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData)
82
91
  const nextObject = currentObject[key] || {};
83
92
  return {
84
93
  ...currentObject,
85
- [key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData)
94
+ [key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData, skipMissingLeaves)
86
95
  };
87
96
  };
88
97
 
@@ -101,15 +110,17 @@ const handleNumberKeyCase = (currentObject, key, rest, sourceValue, displayData)
101
110
  * @param path - The path segments to follow.
102
111
  * @param sourceValue - The raw value to place at the end of the path.
103
112
  * @param displayData - The data for generating localized names.
113
+ * @param skipMissingLeaves - If true, skips optional keys when mapping over arrays.
104
114
  * @returns The new object or array structure.
105
115
  */
106
- export const createNestedProperty = (currentObject, path, sourceValue, displayData) => {
116
+ export const createNestedProperty = function (currentObject, path, sourceValue, displayData) {
117
+ let skipMissingLeaves = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
107
118
  const [key, ...rest] = path;
108
119
  switch (true) {
109
120
  case key === null:
110
121
  return handleNullKeyCase(currentObject, rest, sourceValue, displayData);
111
122
  case typeof key === "string":
112
- return handleStringKeyCase(currentObject, key, rest, sourceValue, displayData);
123
+ return handleStringKeyCase(currentObject, key, rest, sourceValue, displayData, skipMissingLeaves);
113
124
  case typeof key === "number":
114
125
  return handleNumberKeyCase(currentObject, key, rest, sourceValue, displayData);
115
126
  default:
@@ -120,11 +131,11 @@ export const createNestedProperty = (currentObject, path, sourceValue, displayDa
120
131
  // Handles the case where the next key in the path exists in the source object
121
132
  const handleRestKey = (currentObject, key, rest, sourceValue, displayData) => {
122
133
  const currentNode = currentObject[key] ?? {};
123
- // Take the first key in the remaining path
124
134
  const restKey = rest[0];
125
135
  const nextSourceValue = sourceValue[restKey];
126
-
127
- // Merge the current node with the updated nested property for the remaining path.
136
+ if (typeof nextSourceValue === "undefined") {
137
+ return currentObject;
138
+ }
128
139
  return {
129
140
  ...currentObject,
130
141
  [key]: {
@@ -1 +1 @@
1
- {"version":3,"names":["isObject","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","hasRestKey","some","r","handleRestKey","nextObject","handleNumberKeyCase","newArray","nextValue","undefined","path","currentNode","restKey"],"sourceRoot":"../../../src","sources":["utils/nestedProperty.ts"],"mappings":"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"}
1
+ {"version":3,"names":["isObject","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","hasRestKey","some","r","handleRestKey","nextObject","handleNumberKeyCase","newArray","nextValue","undefined","path","arguments","currentNode","restKey"],"sourceRoot":"../../../src","sources":["utils/nestedProperty.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"07-verify-and-parse-credential.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/07-verify-and-parse-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAU/D,KAAK,UAAU,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC;AAQzD,MAAM,MAAM,wBAAwB,GAAG,CACrC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,yBAAyB,EAAE,MAAM,EACjC,OAAO,EAAE;IACP,uBAAuB,EAAE,aAAa,CAAC;IACvC;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,EACD,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC;IACX,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;CAC5B,CAAC,CAAC;AAGH,KAAK,gBAAgB,GAAG;IACtB,oBAAoB;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,IAAI,EACA,yBAAyB,CAAC,MAAM,CAC9B,MAAM,EACN,MAAM,CACP,GACD,4BAA4B,CAAC,MAAM,GACnC,SAAS,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,CAAC;AA6XF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,EAAE,wBAuCtC,CAAC"}
1
+ {"version":3,"file":"07-verify-and-parse-credential.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/07-verify-and-parse-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAU/D,KAAK,UAAU,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC;AAQzD,MAAM,MAAM,wBAAwB,GAAG,CACrC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,yBAAyB,EAAE,MAAM,EACjC,OAAO,EAAE;IACP,uBAAuB,EAAE,aAAa,CAAC;IACvC;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,EACD,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC;IACX,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;CAC5B,CAAC,CAAC;AAGH,KAAK,gBAAgB,GAAG;IACtB,oBAAoB;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,IAAI,EACA,yBAAyB,CAAC,MAAM,CAC9B,MAAM,EACN,MAAM,CACP,GACD,4BAA4B,CAAC,MAAM,GACnC,SAAS,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,CAAC;AA+ZF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,EAAE,wBAuCtC,CAAC"}
@@ -4,6 +4,7 @@ import "react-native-url-polyfill/auto";
4
4
  import * as Credential from "./credential";
5
5
  import * as PID from "./pid";
6
6
  import * as SdJwt from "./sd-jwt";
7
+ import * as Mdoc from "./mdoc";
7
8
  import * as Errors from "./utils/errors";
8
9
  import * as WalletInstanceAttestation from "./wallet-instance-attestation";
9
10
  import * as Trust from "./trust";
@@ -12,6 +13,6 @@ import * as Logging from "./utils/logging";
12
13
  import { AuthorizationDetail, AuthorizationDetails } from "./utils/par";
13
14
  import { createCryptoContextFor } from "./utils/crypto";
14
15
  import type { IntegrityContext } from "./utils/integrity";
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
  export type { IntegrityContext, AuthorizationContext };
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,gCAAgC,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,yBAAyB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EACL,KAAK,EACL,GAAG,EACH,UAAU,EACV,yBAAyB,EACzB,cAAc,EACd,MAAM,EACN,KAAK,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,OAAO,GACR,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,gCAAgC,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,yBAAyB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EACL,KAAK,EACL,IAAI,EACJ,GAAG,EACH,UAAU,EACV,yBAAyB,EACzB,cAAc,EACd,MAAM,EACN,KAAK,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,OAAO,GACR,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { CBOR } from "@pagopa/io-react-native-iso18013";
2
+ export * from "./utils";
2
3
  export declare const verify: (token: string, x509CertRoot: string) => Promise<{
3
4
  issuerSigned: CBOR.IssuerSigned;
4
5
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mdoc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAQ,MAAM,kCAAkC,CAAC;AAY9D,eAAO,MAAM,MAAM,UACV,MAAM,gBACC,MAAM;kBACK,KAAK,YAAY;EA6B3C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mdoc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAQ,MAAM,kCAAkC,CAAC;AAW9D,cAAc,SAAS,CAAC;AAExB,eAAO,MAAM,MAAM,UACV,MAAM,gBACC,MAAM;kBACK,KAAK,YAAY;EA6B3C,CAAC"}
@@ -1,7 +1,57 @@
1
+ import type { VerifyAndParseCredential } from "../credential/issuance";
2
+ import type { Out } from "../utils/misc";
1
3
  /**
2
4
  * @param namespace The mdoc credential `namespace`
3
5
  * @param key The claim attribute key
4
6
  * @returns A string consisting of the concatenation of the namespace and the claim key, separated by a colon
5
7
  */
6
8
  export declare const getParsedCredentialClaimKey: (namespace: string, key: string) => string;
9
+ /**
10
+ * Extract and validate the `verification` claim from an mdoc parsed credential.
11
+ *
12
+ * This method is **synchronous**, so it requires a credential that was already parsed.
13
+ *
14
+ * @param parsedCredential The parsed mdoc credential
15
+ * @returns The verification claim or undefined if it wasn't found
16
+ */
17
+ export declare const getVerificationFromParsedCredential: (parsedCredential: Out<VerifyAndParseCredential>["parsedCredential"]) => {
18
+ trust_framework: string;
19
+ assurance_level: string;
20
+ evidence: {
21
+ type: "vouch";
22
+ time: string | number;
23
+ attestation: {
24
+ type: "digital_attestation";
25
+ reference_number: string;
26
+ date_of_issuance: string;
27
+ voucher: {
28
+ organization: string;
29
+ };
30
+ };
31
+ }[];
32
+ } | undefined;
33
+ /**
34
+ * Extract and validate the `verification` claim from an MDOC credential.
35
+ *
36
+ * This method is **asynchronous**. See {@link getVerificationFromParsedCredential} for the synchronous version.
37
+ *
38
+ * @param token The raw MDOC credential
39
+ * @returns The verification claim or undefined if it wasn't found
40
+ */
41
+ export declare const getVerification: (token: string) => Promise<{
42
+ trust_framework: string;
43
+ assurance_level: string;
44
+ evidence: {
45
+ type: "vouch";
46
+ time: string | number;
47
+ attestation: {
48
+ type: "digital_attestation";
49
+ reference_number: string;
50
+ date_of_issuance: string;
51
+ voucher: {
52
+ organization: string;
53
+ };
54
+ };
55
+ }[];
56
+ } | undefined>;
7
57
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/mdoc/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,cAAe,MAAM,OAAO,MAAM,WACnD,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/mdoc/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGzC;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,cAAe,MAAM,OAAO,MAAM,WACnD,CAAC;AAExB;;;;;;;GAOG;AACH,eAAO,MAAM,mCAAmC,qBAC5B,IAAI,wBAAwB,CAAC,CAAC,kBAAkB,CAAC;;;;;;;;;;;;;;;aAQpE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,UAAiB,MAAM;;;;;;;;;;;;;;;cAQlD,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { JWK } from "../utils/jwk";
2
1
  import { CredentialIssuerEntityConfiguration, EntityConfiguration, RelyingPartyEntityConfiguration, TrustAnchorEntityConfiguration, WalletProviderEntityConfiguration } from "./types";
3
2
  /**
4
3
  * Fetch and parse the entity configuration document for a given federation entity.
@@ -1290,11 +1289,11 @@ export declare function getFederationList(federationListEndpoint: string, { appF
1290
1289
  * Build a not-verified trust chain for a given Relying Party (RP) entity.
1291
1290
  *
1292
1291
  * @param relyingPartyEntityBaseUrl The base URL of the RP entity
1293
- * @param trustAnchorKey The public key of the Trust Anchor (TA) entity
1292
+ * @param trustAnchorConfig The entity configuration of the known trust anchor.
1294
1293
  * @param appFetch An optional instance of the http client to be used.
1295
1294
  * @returns A list of signed tokens that represent the trust chain, in the order of the chain (from the RP to the Trust Anchor)
1296
1295
  * @throws {FederationError} When an element of the chain fails to parse or other build steps fail.
1297
1296
  */
1298
- export declare function buildTrustChain(relyingPartyEntityBaseUrl: string, trustAnchorKey: JWK, appFetch?: GlobalFetch["fetch"]): Promise<string[]>;
1297
+ export declare function buildTrustChain(relyingPartyEntityBaseUrl: string, trustAnchorConfig: TrustAnchorEntityConfiguration, appFetch?: GlobalFetch["fetch"]): Promise<string[]>;
1299
1298
  export {};
1300
1299
  //# sourceMappingURL=build-chain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-chain.d.ts","sourceRoot":"","sources":["../../../src/trust/build-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-chain.d.ts","sourceRoot":"","sources":["../../../src/trust/build-chain.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,mCAAmC,EACnC,mBAAmB,EAGnB,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,EAClC,MAAM,SAAS,CAAC;AAIjB;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,iCAAiC,EAChD,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC9C,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,+BAA+B,EAC9C,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC5C,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,8BAA8B,EAC7C,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAC3C,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,mCAAmC,EAClD,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,mCAAmC,CAAC,CAAC;AAChD,iBAAe,gCAAgC,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,mBAAmB,EAClC,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,mBAAmB,CAAC,CAAC;AA0BhC,eAAO,MAAM,oCAAoC,kBAChC,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAC3D,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/D,CAAC;AAEJ,eAAO,MAAM,sCAAsC,kBAClC,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAC3D,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/D,CAAC;AAEJ,eAAO,MAAM,iCAAiC,kBAC7B,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAC3D,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/D,CAAC;AAEJ,eAAO,MAAM,kCAAkC,kBAC9B,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAC3D,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/D,CAAC;AAEJ,eAAO,MAAM,sBAAsB,kBAClB,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAC3D,WAAW,uCAAuC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEa,CAAC;AAEhF;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,wBAAwB,EAAE,MAAM,EAChC,yBAAyB,EAAE,MAAM,EACjC,EACE,QAAgB,GACjB,GAAE;IACD,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAeP;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,aAAa,EAAE,MAAM,EACrB,EACE,QAAgB,GACjB,GAAE;IACD,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC5B,GACL,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,uBAAuB,EAAE,MAAM,EAC/B,yBAAyB,EAAE,MAAM,EACjC,EACE,QAAgB,GACjB,GAAE;IACD,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC5B,mBAUP;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,sBAAsB,EAAE,MAAM,EAC9B,EACE,QAAgB,GACjB,GAAE;IACD,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC5B,GACL,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,yBAAyB,EAAE,MAAM,EACjC,iBAAiB,EAAE,8BAA8B,EACjD,QAAQ,GAAE,WAAW,CAAC,OAAO,CAAS,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CAkDnB"}
@@ -16,8 +16,9 @@ type NodeOrStructure = Partial<PropertyNode<any>> | Record<string, any> | any[];
16
16
  * @param path - The path segments to follow.
17
17
  * @param sourceValue - The raw value to place at the end of the path.
18
18
  * @param displayData - The data for generating localized names.
19
+ * @param skipMissingLeaves - If true, skips optional keys when mapping over arrays.
19
20
  * @returns The new object or array structure.
20
21
  */
21
- export declare const createNestedProperty: (currentObject: NodeOrStructure, path: Path, sourceValue: unknown, displayData: DisplayData) => NodeOrStructure;
22
+ export declare const createNestedProperty: (currentObject: NodeOrStructure, path: Path, sourceValue: unknown, displayData: DisplayData, skipMissingLeaves?: boolean) => NodeOrStructure;
22
23
  export {};
23
24
  //# sourceMappingURL=nestedProperty.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nestedProperty.d.ts","sourceRoot":"","sources":["../../../src/utils/nestedProperty.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC;AAGtD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAG7C,KAAK,YAAY,CAAC,CAAC,IAAI;IACrB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC;AAGF,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;AAGvC,KAAK,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AA6GhF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,kBAChB,eAAe,2BAEjB,OAAO,+BAEnB,eA4BF,CAAC"}
1
+ {"version":3,"file":"nestedProperty.d.ts","sourceRoot":"","sources":["../../../src/utils/nestedProperty.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC;AAGtD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAG7C,KAAK,YAAY,CAAC,CAAC,IAAI;IACrB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC;AAGF,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;AAGvC,KAAK,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AAkIhF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,kBAChB,eAAe,2BAEjB,OAAO,gDAED,OAAO,KACzB,eA6BF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/io-react-native-wallet",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Provide data structures, helpers and API for IO Wallet",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -9,7 +9,7 @@ import type { ObtainCredential } from "./06-obtain-credential";
9
9
  import { verify as verifyMdoc } from "../../mdoc";
10
10
  import { MDOC_DEFAULT_NAMESPACE } from "../../mdoc/const";
11
11
  import { getParsedCredentialClaimKey } from "../../mdoc/utils";
12
- import { LogLevel, Logger } from "../../utils/logging";
12
+ import { Logger, LogLevel } from "../../utils/logging";
13
13
  import { extractElementValueAsDate } from "../../mdoc/converter";
14
14
  import type { CBOR } from "@pagopa/io-react-native-iso18013";
15
15
  import type { PublicKey } from "@pagopa/io-react-native-crypto";
@@ -85,36 +85,69 @@ const parseCredentialSdJwt = (
85
85
 
86
86
  const attrDefinitions = credentialConfig.claims;
87
87
 
88
- // Validate that all attributes from the config exist in the disclosures
89
- const attrsNotInDisclosures = attrDefinitions.filter(
90
- (definition) => !disclosures.some(([, name]) => name === definition.path[0])
91
- );
88
+ // Validate that all attributes from the config exist in either disclosures OR payload
89
+ if (!ignoreMissingAttributes) {
90
+ const disclosedKeys = new Set(disclosures.map(([, name]) => name));
91
+ const payloadKeys = new Set(Object.keys(sdJwt.payload ?? {}));
92
92
 
93
- if (attrsNotInDisclosures.length > 0 && !ignoreMissingAttributes) {
94
- const missing = attrsNotInDisclosures.map((_) => _.path[0]).join(", ");
95
- const received = disclosures.map((_) => _[1]).join(", ");
96
- const message = `Some attributes are missing in the credential. Missing: [${missing}], received: [${received}]`;
97
- Logger.log(LogLevel.ERROR, message);
98
- throw new IoWalletError(message);
93
+ const definedTopLevelKeys = new Set(
94
+ attrDefinitions.map((def) => def.path[0] as string)
95
+ );
96
+
97
+ const missingKeys = [...definedTopLevelKeys].filter(
98
+ (key) => !disclosedKeys.has(key) && !payloadKeys.has(key)
99
+ );
100
+
101
+ if (missingKeys.length > 0) {
102
+ throw new IoWalletError(
103
+ `Some attributes are missing in the credential. Missing: [${missingKeys.join(", ")}]`
104
+ );
105
+ }
99
106
  }
100
107
 
101
108
  const definedValues: ParsedCredential = {};
102
109
 
103
- for (const { path, display } of attrDefinitions) {
104
- const attrKey = path[0];
105
- const disclosureValue = disclosures.find(
106
- ([, name]) => name === attrKey
107
- )?.[2];
108
-
109
- if (disclosureValue !== undefined) {
110
- const enriched = createNestedProperty(
111
- definedValues,
112
- path,
113
- disclosureValue,
114
- display
115
- );
116
- Object.assign(definedValues, enriched);
110
+ // Group all schema definitions by their top-level key
111
+ const groupedDefinitions = attrDefinitions.reduce(
112
+ (acc, def) => {
113
+ const key = def.path[0] as string;
114
+ const group = acc[key];
115
+ if (group) {
116
+ group.push(def);
117
+ } else {
118
+ acc[key] = [def];
119
+ }
120
+ return acc;
121
+ },
122
+ {} as Record<string, typeof attrDefinitions>
123
+ );
124
+
125
+ // Loop through each group
126
+ for (const topLevelKey in groupedDefinitions) {
127
+ const definitionsForThisKey = groupedDefinitions[topLevelKey];
128
+
129
+ if (!definitionsForThisKey) {
130
+ continue;
117
131
  }
132
+
133
+ const disclosureForThisKey = disclosures.find(
134
+ ([, name]) => name === topLevelKey
135
+ );
136
+
137
+ if (!disclosureForThisKey) {
138
+ continue;
139
+ }
140
+
141
+ const disclosureValue = disclosureForThisKey[2];
142
+
143
+ const tempObjectForGroup = definitionsForThisKey.reduce(
144
+ (acc, { path, display }) =>
145
+ createNestedProperty(acc, path, disclosureValue, display),
146
+ {}
147
+ );
148
+
149
+ // Merge the fully constructed object into the final result
150
+ Object.assign(definedValues, tempObjectForGroup);
118
151
  }
119
152
 
120
153
  if (includeUndefinedAttributes) {
@@ -134,6 +167,7 @@ const parseCredentialSdJwt = (
134
167
 
135
168
  return definedValues;
136
169
  };
170
+
137
171
  const parseCredentialMDoc = (
138
172
  // the list of supported credentials, as defined in the issuer configuration
139
173
  credentialConfig: CredentialConf,
@@ -294,7 +328,7 @@ async function verifyCredentialSdJwt(
294
328
  * and it's bound to the given key
295
329
  *
296
330
  * @param rawCredential The received credential
297
- * @param issuerKeys The set of public keys of the issuer,
331
+ * @param x509CertRoot The root certificate of the issuer,
298
332
  * which will be used to verify the signature
299
333
  * @param holderBindingContext The access to the holder's key
300
334
  *
package/src/index.ts CHANGED
@@ -7,6 +7,7 @@ import "react-native-url-polyfill/auto";
7
7
  import * as Credential from "./credential";
8
8
  import * as PID from "./pid";
9
9
  import * as SdJwt from "./sd-jwt";
10
+ import * as Mdoc from "./mdoc";
10
11
  import * as Errors from "./utils/errors";
11
12
  import * as WalletInstanceAttestation from "./wallet-instance-attestation";
12
13
  import * as Trust from "./trust";
@@ -18,6 +19,7 @@ import type { IntegrityContext } from "./utils/integrity";
18
19
 
19
20
  export {
20
21
  SdJwt,
22
+ Mdoc,
21
23
  PID,
22
24
  Credential,
23
25
  WalletInstanceAttestation,
package/src/mdoc/index.ts CHANGED
@@ -9,6 +9,7 @@ import {
9
9
  import { MissingX509CertsError, X509ValidationError } from "../trust/errors";
10
10
  import { IoWalletError } from "../utils/errors";
11
11
  import { convertBase64DerToPem, getSigninJwkFromCert } from "../utils/crypto";
12
+ export * from "./utils";
12
13
 
13
14
  export const verify = async (
14
15
  token: string,
package/src/mdoc/utils.ts CHANGED
@@ -1,3 +1,9 @@
1
+ import { CBOR } from "@pagopa/io-react-native-iso18013";
2
+ import { Verification } from "../sd-jwt/types";
3
+ import type { VerifyAndParseCredential } from "../credential/issuance";
4
+ import type { Out } from "../utils/misc";
5
+ import { MDOC_DEFAULT_NAMESPACE } from "./const";
6
+
1
7
  /**
2
8
  * @param namespace The mdoc credential `namespace`
3
9
  * @param key The claim attribute key
@@ -5,3 +11,40 @@
5
11
  */
6
12
  export const getParsedCredentialClaimKey = (namespace: string, key: string) =>
7
13
  `${namespace}:${key}`;
14
+
15
+ /**
16
+ * Extract and validate the `verification` claim from an mdoc parsed credential.
17
+ *
18
+ * This method is **synchronous**, so it requires a credential that was already parsed.
19
+ *
20
+ * @param parsedCredential The parsed mdoc credential
21
+ * @returns The verification claim or undefined if it wasn't found
22
+ */
23
+ export const getVerificationFromParsedCredential = (
24
+ parsedCredential: Out<VerifyAndParseCredential>["parsedCredential"]
25
+ ) => {
26
+ const verificationKey = getParsedCredentialClaimKey(
27
+ `${MDOC_DEFAULT_NAMESPACE}.IT`,
28
+ "verification"
29
+ );
30
+ const verification = parsedCredential[verificationKey]?.value;
31
+ return verification ? Verification.parse(verification) : undefined;
32
+ };
33
+
34
+ /**
35
+ * Extract and validate the `verification` claim from an MDOC credential.
36
+ *
37
+ * This method is **asynchronous**. See {@link getVerificationFromParsedCredential} for the synchronous version.
38
+ *
39
+ * @param token The raw MDOC credential
40
+ * @returns The verification claim or undefined if it wasn't found
41
+ */
42
+ export const getVerification = async (token: string) => {
43
+ const issuerSigned = await CBOR.decodeIssuerSigned(token);
44
+ const namespace = issuerSigned.nameSpaces[`${MDOC_DEFAULT_NAMESPACE}.IT`];
45
+ const verification = namespace?.find(
46
+ (x) => x.elementIdentifier === "verification"
47
+ )?.elementValue;
48
+
49
+ return verification ? Verification.parse(verification) : undefined;
50
+ };