@pagopa/io-react-native-wallet 2.0.0-next.5 → 2.0.0-next.7

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 (72) hide show
  1. package/lib/commonjs/credential/issuance/02-evaluate-issuer-trust.js +6 -1
  2. package/lib/commonjs/credential/issuance/02-evaluate-issuer-trust.js.map +1 -1
  3. package/lib/commonjs/credential/issuance/06-obtain-credential.js.map +1 -1
  4. package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js +186 -9
  5. package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
  6. package/lib/commonjs/credential/issuance/README.md +7 -2
  7. package/lib/commonjs/mdoc/const.js +9 -0
  8. package/lib/commonjs/mdoc/const.js.map +1 -0
  9. package/lib/commonjs/mdoc/converter.js +26 -0
  10. package/lib/commonjs/mdoc/converter.js.map +1 -0
  11. package/lib/commonjs/mdoc/index.js +74 -0
  12. package/lib/commonjs/mdoc/index.js.map +1 -0
  13. package/lib/commonjs/mdoc/utils.js +14 -0
  14. package/lib/commonjs/mdoc/utils.js.map +1 -0
  15. package/lib/commonjs/trust/types.js +2 -1
  16. package/lib/commonjs/trust/types.js.map +1 -1
  17. package/lib/commonjs/utils/crypto.js +35 -1
  18. package/lib/commonjs/utils/crypto.js.map +1 -1
  19. package/lib/module/credential/issuance/02-evaluate-issuer-trust.js +6 -1
  20. package/lib/module/credential/issuance/02-evaluate-issuer-trust.js.map +1 -1
  21. package/lib/module/credential/issuance/06-obtain-credential.js.map +1 -1
  22. package/lib/module/credential/issuance/07-verify-and-parse-credential.js +187 -10
  23. package/lib/module/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
  24. package/lib/module/credential/issuance/README.md +7 -2
  25. package/lib/module/mdoc/const.js +2 -0
  26. package/lib/module/mdoc/const.js.map +1 -0
  27. package/lib/module/mdoc/converter.js +20 -0
  28. package/lib/module/mdoc/converter.js.map +1 -0
  29. package/lib/module/mdoc/index.js +67 -0
  30. package/lib/module/mdoc/index.js.map +1 -0
  31. package/lib/module/mdoc/utils.js +7 -0
  32. package/lib/module/mdoc/utils.js.map +1 -0
  33. package/lib/module/trust/types.js +2 -1
  34. package/lib/module/trust/types.js.map +1 -1
  35. package/lib/module/utils/crypto.js +32 -0
  36. package/lib/module/utils/crypto.js.map +1 -1
  37. package/lib/typescript/credential/issuance/02-evaluate-issuer-trust.d.ts.map +1 -1
  38. package/lib/typescript/credential/issuance/06-obtain-credential.d.ts +2 -1
  39. package/lib/typescript/credential/issuance/06-obtain-credential.d.ts.map +1 -1
  40. package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts +8 -9
  41. package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts.map +1 -1
  42. package/lib/typescript/mdoc/const.d.ts +2 -0
  43. package/lib/typescript/mdoc/const.d.ts.map +1 -0
  44. package/lib/typescript/mdoc/converter.d.ts +8 -0
  45. package/lib/typescript/mdoc/converter.d.ts.map +1 -0
  46. package/lib/typescript/mdoc/index.d.ts +5 -0
  47. package/lib/typescript/mdoc/index.d.ts.map +1 -0
  48. package/lib/typescript/mdoc/utils.d.ts +7 -0
  49. package/lib/typescript/mdoc/utils.d.ts.map +1 -0
  50. package/lib/typescript/trust/build-chain.d.ts +2 -2
  51. package/lib/typescript/trust/types.d.ts +161 -26
  52. package/lib/typescript/trust/types.d.ts.map +1 -1
  53. package/lib/typescript/utils/crypto.d.ts +16 -0
  54. package/lib/typescript/utils/crypto.d.ts.map +1 -1
  55. package/package.json +13 -11
  56. package/src/credential/issuance/02-evaluate-issuer-trust.ts +2 -1
  57. package/src/credential/issuance/06-obtain-credential.ts +2 -1
  58. package/src/credential/issuance/07-verify-and-parse-credential.ts +257 -22
  59. package/src/credential/issuance/README.md +7 -2
  60. package/src/mdoc/const.ts +1 -0
  61. package/src/mdoc/converter.ts +26 -0
  62. package/src/mdoc/index.ts +93 -0
  63. package/src/mdoc/utils.ts +7 -0
  64. package/src/trust/types.ts +5 -1
  65. package/src/utils/crypto.ts +39 -1
  66. package/lib/commonjs/credential/issuance/const.js +0 -14
  67. package/lib/commonjs/credential/issuance/const.js.map +0 -1
  68. package/lib/module/credential/issuance/const.js +0 -4
  69. package/lib/module/credential/issuance/const.js.map +0 -1
  70. package/lib/typescript/credential/issuance/const.d.ts +0 -5
  71. package/lib/typescript/credential/issuance/const.d.ts.map +0 -1
  72. package/src/credential/issuance/const.ts +0 -11
@@ -5,7 +5,10 @@ import {
5
5
  sign,
6
6
  } from "@pagopa/io-react-native-crypto";
7
7
  import { v4 as uuidv4 } from "uuid";
8
- import { type CryptoContext, thumbprint } from "@pagopa/io-react-native-jwt";
8
+ import { thumbprint, type CryptoContext } from "@pagopa/io-react-native-jwt";
9
+ import { JWK } from "./jwk";
10
+ import { KEYUTIL, KJUR, RSAKey, X509 } from "jsrsasign";
11
+ import { IoWalletError } from "./errors";
9
12
 
10
13
  /**
11
14
  * Create a CryptoContext bound to a key pair.
@@ -55,3 +58,38 @@ export const withEphemeralKey = async <R>(
55
58
  const ephemeralContext = createCryptoContextFor(keytag);
56
59
  return fn(ephemeralContext).finally(() => deleteKey(keytag));
57
60
  };
61
+ /**
62
+ * Converts a base64-encoded DER certificate to PEM format.
63
+ *
64
+ * @param certificate - The base64-encoded DER certificate.
65
+ * @returns The PEM-formatted certificate.
66
+ */
67
+ export const convertBase64DerToPem = (certificate: string): string =>
68
+ `-----BEGIN CERTIFICATE-----\n${certificate}\n-----END CERTIFICATE-----`;
69
+
70
+ /**
71
+ * Retrieves the signing JWK from a PEM-formatted certificate.
72
+ *
73
+ * @param pemCert - The PEM-formatted certificate.
74
+ * @returns The signing JWK.
75
+ * @throws Will throw an error if the public key is unsupported.
76
+ */
77
+ export const getSigninJwkFromCert = (pemCert: string): JWK => {
78
+ const x509 = new X509();
79
+ x509.readCertPEM(pemCert);
80
+ const publicKey = x509.getPublicKey();
81
+
82
+ console.log("INSTANCE OF RSA", publicKey instanceof RSAKey);
83
+ console.log("INSTANCE OF ECDSA", publicKey instanceof KJUR.crypto.ECDSA);
84
+
85
+ if (publicKey instanceof RSAKey || publicKey instanceof KJUR.crypto.ECDSA) {
86
+ return {
87
+ ...JWK.parse(KEYUTIL.getJWKFromKey(publicKey)),
88
+ use: "sig",
89
+ };
90
+ }
91
+
92
+ throw new IoWalletError(
93
+ "Unable to find the signing key inside the PEM certificate"
94
+ );
95
+ };
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.SupportedCredentialFormat = exports.ASSERTION_TYPE = void 0;
7
- var z = _interopRequireWildcard(require("zod"));
8
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
- const ASSERTION_TYPE = "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation";
11
- exports.ASSERTION_TYPE = ASSERTION_TYPE;
12
- const SupportedCredentialFormat = z.union([z.literal("dc+sd-jwt"), z.literal("vc+mdoc-cbor")]);
13
- exports.SupportedCredentialFormat = SupportedCredentialFormat;
14
- //# sourceMappingURL=const.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["z","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ASSERTION_TYPE","exports","SupportedCredentialFormat","union","literal"],"sourceRoot":"../../../../src","sources":["credential/issuance/const.ts"],"mappings":";;;;;;AAAA,IAAAA,CAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAyB,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAH,wBAAAO,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAClB,MAAMW,cAAc,GACzB,oEAAoE;AAACC,OAAA,CAAAD,cAAA,GAAAA,cAAA;AAKhE,MAAME,yBAAyB,GAAG3B,CAAC,CAAC4B,KAAK,CAAC,CAC/C5B,CAAC,CAAC6B,OAAO,CAAC,WAAW,CAAC,EACtB7B,CAAC,CAAC6B,OAAO,CAAC,cAAc,CAAC,CAC1B,CAAC;AAACH,OAAA,CAAAC,yBAAA,GAAAA,yBAAA"}
@@ -1,4 +0,0 @@
1
- import * as z from "zod";
2
- export const ASSERTION_TYPE = "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation";
3
- export const SupportedCredentialFormat = z.union([z.literal("dc+sd-jwt"), z.literal("vc+mdoc-cbor")]);
4
- //# sourceMappingURL=const.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["z","ASSERTION_TYPE","SupportedCredentialFormat","union","literal"],"sourceRoot":"../../../../src","sources":["credential/issuance/const.ts"],"mappings":"AAAA,OAAO,KAAKA,CAAC,MAAM,KAAK;AACxB,OAAO,MAAMC,cAAc,GACzB,oEAAoE;AAKtE,OAAO,MAAMC,yBAAyB,GAAGF,CAAC,CAACG,KAAK,CAAC,CAC/CH,CAAC,CAACI,OAAO,CAAC,WAAW,CAAC,EACtBJ,CAAC,CAACI,OAAO,CAAC,cAAc,CAAC,CAC1B,CAAC"}
@@ -1,5 +0,0 @@
1
- import * as z from "zod";
2
- export declare const ASSERTION_TYPE = "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation";
3
- export type SupportedCredentialFormat = z.infer<typeof SupportedCredentialFormat>;
4
- export declare const SupportedCredentialFormat: z.ZodUnion<[z.ZodLiteral<"dc+sd-jwt">, z.ZodLiteral<"vc+mdoc-cbor">]>;
5
- //# sourceMappingURL=const.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/const.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,cAAc,uEAC2C,CAAC;AAEvE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,yBAAyB,CACjC,CAAC;AACF,eAAO,MAAM,yBAAyB,uEAGpC,CAAC"}
@@ -1,11 +0,0 @@
1
- import * as z from "zod";
2
- export const ASSERTION_TYPE =
3
- "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation";
4
-
5
- export type SupportedCredentialFormat = z.infer<
6
- typeof SupportedCredentialFormat
7
- >;
8
- export const SupportedCredentialFormat = z.union([
9
- z.literal("dc+sd-jwt"),
10
- z.literal("vc+mdoc-cbor"),
11
- ]);