@pagopa/io-react-native-wallet 0.5.0 → 0.6.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 (64) hide show
  1. package/README.md +52 -19
  2. package/lib/commonjs/index.js +13 -24
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/pid/issuing.js +22 -28
  5. package/lib/commonjs/pid/issuing.js.map +1 -1
  6. package/lib/commonjs/rp/__test__/index.test.js +2 -2
  7. package/lib/commonjs/rp/__test__/index.test.js.map +1 -1
  8. package/lib/commonjs/rp/index.js +5 -19
  9. package/lib/commonjs/rp/index.js.map +1 -1
  10. package/lib/commonjs/rp/types.js +1 -21
  11. package/lib/commonjs/rp/types.js.map +1 -1
  12. package/lib/commonjs/trust/index.js +24 -5
  13. package/lib/commonjs/trust/index.js.map +1 -1
  14. package/lib/commonjs/trust/types.js +95 -4
  15. package/lib/commonjs/trust/types.js.map +1 -1
  16. package/lib/commonjs/wallet-instance-attestation/issuing.js +5 -13
  17. package/lib/commonjs/wallet-instance-attestation/issuing.js.map +1 -1
  18. package/lib/module/index.js +2 -5
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/pid/issuing.js +16 -23
  21. package/lib/module/pid/issuing.js.map +1 -1
  22. package/lib/module/rp/__test__/index.test.js +2 -2
  23. package/lib/module/rp/__test__/index.test.js.map +1 -1
  24. package/lib/module/rp/index.js +2 -17
  25. package/lib/module/rp/index.js.map +1 -1
  26. package/lib/module/rp/types.js +0 -20
  27. package/lib/module/rp/types.js.map +1 -1
  28. package/lib/module/trust/index.js +19 -5
  29. package/lib/module/trust/index.js.map +1 -1
  30. package/lib/module/trust/types.js +94 -2
  31. package/lib/module/trust/types.js.map +1 -1
  32. package/lib/module/wallet-instance-attestation/issuing.js +5 -13
  33. package/lib/module/wallet-instance-attestation/issuing.js.map +1 -1
  34. package/lib/typescript/index.d.ts +2 -5
  35. package/lib/typescript/index.d.ts.map +1 -1
  36. package/lib/typescript/pid/issuing.d.ts +3 -12
  37. package/lib/typescript/pid/issuing.d.ts.map +1 -1
  38. package/lib/typescript/rp/index.d.ts +4 -12
  39. package/lib/typescript/rp/index.d.ts.map +1 -1
  40. package/lib/typescript/rp/types.d.ts +4 -1256
  41. package/lib/typescript/rp/types.d.ts.map +1 -1
  42. package/lib/typescript/trust/index.d.ts +806 -3
  43. package/lib/typescript/trust/index.d.ts.map +1 -1
  44. package/lib/typescript/trust/types.d.ts +8637 -5
  45. package/lib/typescript/trust/types.d.ts.map +1 -1
  46. package/lib/typescript/wallet-instance-attestation/issuing.d.ts +2 -1
  47. package/lib/typescript/wallet-instance-attestation/issuing.d.ts.map +1 -1
  48. package/lib/typescript/wallet-instance-attestation/types.d.ts +4 -4
  49. package/package.json +1 -1
  50. package/src/index.ts +11 -12
  51. package/src/pid/issuing.ts +24 -30
  52. package/src/rp/__test__/index.test.ts +2 -2
  53. package/src/rp/index.ts +8 -22
  54. package/src/rp/types.ts +0 -24
  55. package/src/trust/index.ts +106 -5
  56. package/src/trust/types.ts +114 -3
  57. package/src/wallet-instance-attestation/issuing.ts +10 -15
  58. package/lib/commonjs/pid/metadata.js +0 -52
  59. package/lib/commonjs/pid/metadata.js.map +0 -1
  60. package/lib/module/pid/metadata.js +0 -44
  61. package/lib/module/pid/metadata.js.map +0 -1
  62. package/lib/typescript/pid/metadata.d.ts +0 -1412
  63. package/lib/typescript/pid/metadata.d.ts.map +0 -1
  64. package/src/pid/metadata.ts +0 -51
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/trust/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/trust/types.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAU/B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react-native" />
2
2
  import { type CryptoContext } from "@pagopa/io-react-native-jwt";
3
+ import type { WalletProviderEntityConfiguration } from "../trust/types";
3
4
  /**
4
5
  * Request a Wallet Instance Attestation (WIA) to the Wallet provider
5
6
  *
@@ -14,5 +15,5 @@ export declare const getAttestation: ({ wiaCryptoContext, appFetch, }: {
14
15
  (input: RequestInfo, init?: RequestInit | undefined): Promise<Response>;
15
16
  (input: RequestInfo, init?: RequestInit | undefined): Promise<Response>;
16
17
  } | undefined;
17
- }) => (walletProviderBaseUrl: string) => Promise<string>;
18
+ }) => (walletProviderEntityConfiguration: WalletProviderEntityConfiguration) => Promise<string>;
18
19
  //# sourceMappingURL=issuing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"issuing.d.ts","sourceRoot":"","sources":["../../../src/wallet-instance-attestation/issuing.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,6BAA6B,CAAC;AA8CrC;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;sBAKL,aAAa;;;;;8BAGH,MAAM,KAAG,QAAQ,MAAM,CAqCpD,CAAC"}
1
+ {"version":3,"file":"issuing.d.ts","sourceRoot":"","sources":["../../../src/wallet-instance-attestation/issuing.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AA8BxE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;sBAKL,aAAa;;;;;0CAII,iCAAiC,KACnE,QAAQ,MAAM,CAuChB,CAAC"}
@@ -232,12 +232,12 @@ export declare const WalletInstanceAttestationRequestJwt: z.ZodObject<{
232
232
  nonce: z.ZodString;
233
233
  }, "strip", z.ZodTypeAny, {
234
234
  jti: string;
235
- nonce: string;
236
235
  aud: string;
236
+ nonce: string;
237
237
  }, {
238
238
  jti: string;
239
- nonce: string;
240
239
  aud: string;
240
+ nonce: string;
241
241
  }>>;
242
242
  }, "strip", z.ZodTypeAny, {
243
243
  header: {
@@ -283,8 +283,8 @@ export declare const WalletInstanceAttestationRequestJwt: z.ZodObject<{
283
283
  };
284
284
  } & {
285
285
  jti: string;
286
- nonce: string;
287
286
  aud: string;
287
+ nonce: string;
288
288
  };
289
289
  }, {
290
290
  header: {
@@ -330,8 +330,8 @@ export declare const WalletInstanceAttestationRequestJwt: z.ZodObject<{
330
330
  };
331
331
  } & {
332
332
  jti: string;
333
- nonce: string;
334
333
  aud: string;
334
+ nonce: string;
335
335
  };
336
336
  }>;
337
337
  export type WalletInstanceAttestationJwt = z.infer<typeof WalletInstanceAttestationJwt>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/io-react-native-wallet",
3
- "version": "0.5.0",
3
+ "version": "0.6.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",
package/src/index.ts CHANGED
@@ -7,15 +7,15 @@ import * as RP from "./rp";
7
7
  import * as Errors from "./utils/errors";
8
8
  import * as WalletInstanceAttestation from "./wallet-instance-attestation";
9
9
  import * as RelyingPartySolution from "./rp";
10
- import { RpEntityConfiguration } from "./rp/types";
11
- import { verifyTrustChain, getEntityConfiguration } from "./trust";
12
10
  import {
13
- EntityConfiguration,
14
- EntityStatement,
15
- TrustAnchorEntityConfiguration,
16
- } from "./trust/types";
11
+ verifyTrustChain,
12
+ getEntityConfiguration,
13
+ getCredentialIssuerEntityConfiguration,
14
+ getRelyingPartyEntityConfiguration,
15
+ getTrustAnchorEntityConfiguration,
16
+ getWalletProviderEntityConfiguration,
17
+ } from "./trust";
17
18
  import { createCryptoContextFor } from "./utils/crypto";
18
- import { PidIssuerEntityConfiguration } from "./pid/metadata";
19
19
 
20
20
  export {
21
21
  PID,
@@ -25,10 +25,9 @@ export {
25
25
  RelyingPartySolution,
26
26
  verifyTrustChain,
27
27
  getEntityConfiguration,
28
- EntityConfiguration,
29
- EntityStatement,
30
- RpEntityConfiguration,
31
- PidIssuerEntityConfiguration,
32
- TrustAnchorEntityConfiguration,
28
+ getCredentialIssuerEntityConfiguration,
29
+ getRelyingPartyEntityConfiguration,
30
+ getTrustAnchorEntityConfiguration,
31
+ getWalletProviderEntityConfiguration,
33
32
  createCryptoContextFor,
34
33
  };
@@ -8,13 +8,11 @@ import { JWK } from "../utils/jwk";
8
8
  import uuid from "react-native-uuid";
9
9
  import { PidIssuingError } from "../utils/errors";
10
10
  import { createDPopToken } from "../utils/dpop";
11
- import { PidIssuerEntityConfiguration } from "./metadata";
12
- import {
13
- createCryptoContextFor,
14
- getEntityConfiguration as getGenericEntityConfiguration,
15
- } from "..";
11
+ import { CredentialIssuerEntityConfiguration } from "../trust/types";
12
+ import * as WalletInstanceAttestation from "../wallet-instance-attestation";
16
13
  import { generate, deleteKey } from "@pagopa/io-react-native-crypto";
17
14
  import { SdJwt } from ".";
15
+ import { createCryptoContextFor } from "../utils/crypto";
18
16
  // This is a temporary type that will be used for demo purposes only
19
17
  export type CieData = {
20
18
  birthDate: string;
@@ -39,18 +37,8 @@ export type PidResponse = {
39
37
  format: string;
40
38
  };
41
39
 
42
- /**
43
- * Obtain the PID provider entity configuration.
44
- */
45
- export const getEntityConfiguration =
46
- ({ appFetch = fetch }: { appFetch?: GlobalFetch["fetch"] } = {}) =>
47
- async (
48
- relyingPartyBaseUrl: string
49
- ): Promise<PidIssuerEntityConfiguration> => {
50
- return getGenericEntityConfiguration(relyingPartyBaseUrl, {
51
- appFetch: appFetch,
52
- }).then(PidIssuerEntityConfiguration.parse);
53
- };
40
+ const assertionType =
41
+ "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation";
54
42
 
55
43
  /**
56
44
  * Make a PAR request to the PID issuer and return the response url
@@ -67,7 +55,7 @@ const getPar =
67
55
  clientId: string,
68
56
  codeVerifier: string,
69
57
  walletProviderBaseUrl: string,
70
- pidProviderEntityConfiguration: PidIssuerEntityConfiguration,
58
+ pidProviderEntityConfiguration: CredentialIssuerEntityConfiguration,
71
59
  walletInstanceAttestation: string
72
60
  ): Promise<string> => {
73
61
  // Calculate the thumbprint of the public key of the Wallet Instance Attestation.
@@ -79,6 +67,9 @@ const getPar =
79
67
  .then(JWK.parse)
80
68
  .then(thumbprint);
81
69
 
70
+ const iss = WalletInstanceAttestation.decode(walletInstanceAttestation)
71
+ .payload.cnf.jwk.kid;
72
+
82
73
  const codeChallenge = await sha256ToBase64(codeVerifier);
83
74
 
84
75
  const signedJwtForPar = await new SignJWT(wiaCryptoContext)
@@ -86,15 +77,17 @@ const getPar =
86
77
  kid: keyThumbprint,
87
78
  })
88
79
  .setPayload({
89
- client_assertion_type:
90
- "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
80
+ iss,
81
+ aud: pidProviderEntityConfiguration.payload.iss,
82
+ jti: `${uuid.v4()}`,
83
+ client_assertion_type: assertionType,
91
84
  authorization_details: [
92
85
  {
93
- credentialDefinition: {
94
- type: ["eu.eudiw.pid.it"],
86
+ credential_definition: {
87
+ type: "PersonIdentificationData",
95
88
  },
96
89
  format: "vc+sd-jwt",
97
- type: "type",
90
+ type: "openid_credential",
98
91
  },
99
92
  ],
100
93
  response_type: "code",
@@ -117,8 +110,7 @@ const getPar =
117
110
  client_id: clientId,
118
111
  code_challenge: codeChallenge,
119
112
  code_challenge_method: "S256",
120
- client_assertion_type:
121
- "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
113
+ client_assertion_type: assertionType,
122
114
  client_assertion: walletInstanceAttestation,
123
115
  request: signedJwtForPar,
124
116
  };
@@ -164,7 +156,7 @@ export const authorizeIssuing =
164
156
  async (
165
157
  walletInstanceAttestation: string,
166
158
  walletProviderBaseUrl: string,
167
- pidProviderEntityConfiguration: PidIssuerEntityConfiguration
159
+ pidProviderEntityConfiguration: CredentialIssuerEntityConfiguration
168
160
  ): Promise<AuthorizationConf> => {
169
161
  // FIXME: do better
170
162
  const clientId = await wiaCryptoContext.getPublicKey().then((_) => _.kid);
@@ -203,8 +195,7 @@ export const authorizeIssuing =
203
195
  client_id: clientId,
204
196
  code: authorizationCode,
205
197
  code_verifier: codeVerifier,
206
- client_assertion_type:
207
- "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
198
+ client_assertion_type: assertionType,
208
199
  client_assertion: walletInstanceAttestation,
209
200
  redirect_uri: walletProviderBaseUrl,
210
201
  };
@@ -248,6 +239,7 @@ const createNonceProof = async (
248
239
  return new SignJWT(ctx)
249
240
  .setPayload({
250
241
  nonce,
242
+ jwk: await ctx.getPublicKey(),
251
243
  })
252
244
  .setProtectedHeader({
253
245
  type: "openid4vci-proof+jwt",
@@ -278,7 +270,7 @@ export const getCredential =
278
270
  }) =>
279
271
  async (
280
272
  { nonce, accessToken, clientId, walletProviderBaseUrl }: AuthorizationConf,
281
- pidProviderEntityConfiguration: PidIssuerEntityConfiguration,
273
+ pidProviderEntityConfiguration: CredentialIssuerEntityConfiguration,
282
274
  cieData: CieData
283
275
  ): Promise<PidResponse> => {
284
276
  const signedDPopForPid = await createDPopToken(
@@ -302,7 +294,9 @@ export const getCredential =
302
294
  .credential_endpoint;
303
295
 
304
296
  const requestBody = {
305
- credential_definition: JSON.stringify({ type: ["eu.eudiw.pid.it"] }),
297
+ credential_definition: JSON.stringify({
298
+ type: ["PersonIdentificationData"],
299
+ }),
306
300
  format: "vc+sd-jwt",
307
301
  proof: JSON.stringify({
308
302
  jwt: signedNonceProof,
@@ -1,6 +1,6 @@
1
+ import { RelyingPartyEntityConfiguration } from "../../trust/types";
1
2
  import * as RelyingPartySolution from "..";
2
3
  import { AuthRequestDecodeError } from "../../utils/errors";
3
- import { RpEntityConfiguration } from "../types";
4
4
 
5
5
  describe("decodeAuthRequestQR", () => {
6
6
  it("should return authentication request URL", async () => {
@@ -239,7 +239,7 @@ describe("RpEntityConfiguration", () => {
239
239
  ],
240
240
  },
241
241
  };
242
- const result = RpEntityConfiguration.safeParse(pp);
242
+ const result = RelyingPartyEntityConfiguration.safeParse(pp);
243
243
  if (result.success === false) {
244
244
  throw result.error;
245
245
  }
package/src/rp/index.ts CHANGED
@@ -12,19 +12,14 @@ import {
12
12
  verify,
13
13
  type CryptoContext,
14
14
  } from "@pagopa/io-react-native-jwt";
15
- import {
16
- QRCodePayload,
17
- RequestObject,
18
- RpEntityConfiguration,
19
- type Presentation,
20
- } from "./types";
15
+ import { QRCodePayload, RequestObject, type Presentation } from "./types";
21
16
 
22
17
  import uuid from "react-native-uuid";
23
18
  import type { JWK } from "@pagopa/io-react-native-jwt/lib/typescript/types";
24
19
  import { disclose } from "../sd-jwt";
25
- import { getEntityConfiguration as getGenericEntityConfiguration } from "../trust";
26
20
  import { createDPopToken } from "../utils/dpop";
27
- import { WalletInstanceAttestation } from "..";
21
+ import { RelyingPartyEntityConfiguration } from "../trust/types";
22
+ import * as WalletInstanceAttestation from "../wallet-instance-attestation";
28
23
 
29
24
  /**
30
25
  * Select a RSA public key from those provided by the RP to encrypt.
@@ -33,7 +28,9 @@ import { WalletInstanceAttestation } from "..";
33
28
  * @returns A suitable public key with its compatible encryption algorithm
34
29
  * @throws {NoSuitableKeysFoundInEntityConfiguration} If entity do not contain any public key suitable for encrypting
35
30
  */
36
- const chooseRSAPublicKeyToEncrypt = (entity: RpEntityConfiguration): JWK => {
31
+ const chooseRSAPublicKeyToEncrypt = (
32
+ entity: RelyingPartyEntityConfiguration
33
+ ): JWK => {
37
34
  const [usingRsa256] =
38
35
  entity.payload.metadata.wallet_relying_party.jwks.filter(
39
36
  (jwk) => jwk.use === "enc" && jwk.kty === "RSA"
@@ -49,17 +46,6 @@ const chooseRSAPublicKeyToEncrypt = (entity: RpEntityConfiguration): JWK => {
49
46
  );
50
47
  };
51
48
 
52
- /**
53
- * Obtain the relying party entity configuration.
54
- */
55
- export const getEntityConfiguration =
56
- ({ appFetch = fetch }: { appFetch?: GlobalFetch["fetch"] } = {}) =>
57
- async (relyingPartyBaseUrl: string): Promise<RpEntityConfiguration> => {
58
- return getGenericEntityConfiguration(relyingPartyBaseUrl, {
59
- appFetch: appFetch,
60
- }).then(RpEntityConfiguration.parse);
61
- };
62
-
63
49
  /**
64
50
  * Decode a QR code content to an authentication request url.
65
51
  * @function
@@ -92,7 +78,7 @@ export const decodeAuthRequestQR = (qrcode: string): QRCodePayload => {
92
78
 
93
79
  export type RequestObjectConf = {
94
80
  requestObject: RequestObject;
95
- rpEntityConfiguration: RpEntityConfiguration;
81
+ rpEntityConfiguration: RelyingPartyEntityConfiguration;
96
82
  walletInstanceAttestation: string;
97
83
  };
98
84
 
@@ -111,7 +97,7 @@ export const getRequestObject =
111
97
  async (
112
98
  walletInstanceAttestation: string,
113
99
  requestUri: string,
114
- rpEntityConfiguration: RpEntityConfiguration
100
+ rpEntityConfiguration: RelyingPartyEntityConfiguration
115
101
  ): Promise<RequestObjectConf> => {
116
102
  const signedWalletInstanceDPoP = await createDPopToken(
117
103
  {
package/src/rp/types.ts CHANGED
@@ -1,7 +1,5 @@
1
- import { JWK } from "../utils/jwk";
2
1
  import { UnixTime } from "../sd-jwt/types";
3
2
  import * as z from "zod";
4
- import { EntityConfiguration } from "../trust/types";
5
3
 
6
4
  export type RequestObject = z.infer<typeof RequestObject>;
7
5
  export const RequestObject = z.object({
@@ -27,28 +25,6 @@ export const RequestObject = z.object({
27
25
  }),
28
26
  });
29
27
 
30
- /**
31
- * EntityConfiguration plus the metadata specific for a Relying Party entity.
32
- */
33
- export type RpEntityConfiguration = z.infer<typeof RpEntityConfiguration>;
34
- export const RpEntityConfiguration = EntityConfiguration.and(
35
- z.object({
36
- payload: z.object({
37
- metadata: z.object({
38
- wallet_relying_party: z
39
- .object({
40
- application_type: z.string().optional(),
41
- client_id: z.string().optional(),
42
- client_name: z.string().optional(),
43
- jwks: z.array(JWK),
44
- contacts: z.array(z.string()).optional(),
45
- })
46
- .passthrough(),
47
- }),
48
- }),
49
- })
50
- );
51
-
52
28
  export type QRCodePayload = z.infer<typeof QRCodePayload>;
53
29
  export const QRCodePayload = z.object({
54
30
  protocol: z.string(),
@@ -1,27 +1,82 @@
1
1
  import { decode as decodeJwt } from "@pagopa/io-react-native-jwt";
2
- import { EntityConfiguration } from "./types";
2
+ import {
3
+ WalletProviderEntityConfiguration,
4
+ TrustAnchorEntityConfiguration,
5
+ CredentialIssuerEntityConfiguration,
6
+ RelyingPartyEntityConfiguration,
7
+ EntityConfiguration,
8
+ } from "./types";
3
9
  import { IoWalletError } from "../utils/errors";
4
10
  import { verifyTrustChain } from "./chain";
5
11
 
6
12
  export { verifyTrustChain };
7
13
 
8
14
  /**
9
- * Fetch and parse teh entity configuration document for a given federation entity
15
+ * Fetch and parse the entity configuration document for a given federation entity.
16
+ * This is an inner method to serve public interfaces.
17
+ *
18
+ * To add another entity configuration type (example: Foo entity type):
19
+ * - create its zod schema and type by inherit from the base type (example: FooEntityConfiguration = BaseEntityConfiguration.and(...))
20
+ * - add such type to EntityConfiguration union
21
+ * - add an overload to this function
22
+ * - create a public function which use such type (example: getFooEntityConfiguration = (url, options) => Promise<FooEntityConfiguration>)
10
23
  *
11
24
  * @param entityBaseUrl The base url of the entity.
25
+ * @param schema The expected schema of the entity configuration, according to the kind of entity we are fetching from.
12
26
  * @param options.appFetch An optional instance of the http client to be used.
13
27
  * @returns The parsed entity configuration object
14
28
  * @throws {IoWalletError} If the http request fails
15
29
  * @throws Parse error if the document is not in the expected shape.
16
30
  */
17
- export async function getEntityConfiguration(
31
+ async function fetchAndParseEntityConfiguration(
32
+ entityBaseUrl: string,
33
+ schema: typeof WalletProviderEntityConfiguration,
34
+ options?: {
35
+ appFetch?: GlobalFetch["fetch"];
36
+ }
37
+ ): Promise<WalletProviderEntityConfiguration>;
38
+ async function fetchAndParseEntityConfiguration(
39
+ entityBaseUrl: string,
40
+ schema: typeof RelyingPartyEntityConfiguration,
41
+ options?: {
42
+ appFetch?: GlobalFetch["fetch"];
43
+ }
44
+ ): Promise<RelyingPartyEntityConfiguration>;
45
+ async function fetchAndParseEntityConfiguration(
46
+ entityBaseUrl: string,
47
+ schema: typeof TrustAnchorEntityConfiguration,
48
+ options?: {
49
+ appFetch?: GlobalFetch["fetch"];
50
+ }
51
+ ): Promise<TrustAnchorEntityConfiguration>;
52
+ async function fetchAndParseEntityConfiguration(
53
+ entityBaseUrl: string,
54
+ schema: typeof CredentialIssuerEntityConfiguration,
55
+ options?: {
56
+ appFetch?: GlobalFetch["fetch"];
57
+ }
58
+ ): Promise<CredentialIssuerEntityConfiguration>;
59
+ async function fetchAndParseEntityConfiguration(
18
60
  entityBaseUrl: string,
61
+ schema: typeof EntityConfiguration,
62
+ options?: {
63
+ appFetch?: GlobalFetch["fetch"];
64
+ }
65
+ ): Promise<EntityConfiguration>;
66
+ async function fetchAndParseEntityConfiguration(
67
+ entityBaseUrl: string,
68
+ schema: /* FIXME: why is it different from "typeof EntityConfiguration"? */
69
+ | typeof CredentialIssuerEntityConfiguration
70
+ | typeof WalletProviderEntityConfiguration
71
+ | typeof RelyingPartyEntityConfiguration
72
+ | typeof TrustAnchorEntityConfiguration
73
+ | typeof EntityConfiguration,
19
74
  {
20
75
  appFetch = fetch,
21
76
  }: {
22
77
  appFetch?: GlobalFetch["fetch"];
23
78
  } = {}
24
- ): Promise<EntityConfiguration> {
79
+ ) {
25
80
  const wellKnownUrl = `${entityBaseUrl}/.well-known/openid-federation`;
26
81
 
27
82
  const response = await appFetch(wellKnownUrl, {
@@ -31,7 +86,7 @@ export async function getEntityConfiguration(
31
86
  if (response.status === 200) {
32
87
  const responseText = await response.text();
33
88
  const responseJwt = decodeJwt(responseText);
34
- return EntityConfiguration.parse({
89
+ return schema.parse({
35
90
  header: responseJwt.protectedHeader,
36
91
  payload: responseJwt.payload,
37
92
  });
@@ -41,3 +96,49 @@ export async function getEntityConfiguration(
41
96
  `Unable to obtain Entity Configuration at ${wellKnownUrl}. Response code: ${response.status}`
42
97
  );
43
98
  }
99
+
100
+ export const getWalletProviderEntityConfiguration = (
101
+ entityBaseUrl: Parameters<typeof fetchAndParseEntityConfiguration>[0],
102
+ options?: Parameters<typeof fetchAndParseEntityConfiguration>[2]
103
+ ) =>
104
+ fetchAndParseEntityConfiguration(
105
+ entityBaseUrl,
106
+ WalletProviderEntityConfiguration,
107
+ options
108
+ );
109
+
110
+ export const getCredentialIssuerEntityConfiguration = (
111
+ entityBaseUrl: Parameters<typeof fetchAndParseEntityConfiguration>[0],
112
+ options?: Parameters<typeof fetchAndParseEntityConfiguration>[2]
113
+ ) =>
114
+ fetchAndParseEntityConfiguration(
115
+ entityBaseUrl,
116
+ CredentialIssuerEntityConfiguration,
117
+ options
118
+ );
119
+
120
+ export const getTrustAnchorEntityConfiguration = (
121
+ entityBaseUrl: Parameters<typeof fetchAndParseEntityConfiguration>[0],
122
+ options?: Parameters<typeof fetchAndParseEntityConfiguration>[2]
123
+ ) =>
124
+ fetchAndParseEntityConfiguration(
125
+ entityBaseUrl,
126
+ TrustAnchorEntityConfiguration,
127
+ options
128
+ );
129
+
130
+ export const getRelyingPartyEntityConfiguration = (
131
+ entityBaseUrl: Parameters<typeof fetchAndParseEntityConfiguration>[0],
132
+ options?: Parameters<typeof fetchAndParseEntityConfiguration>[2]
133
+ ) =>
134
+ fetchAndParseEntityConfiguration(
135
+ entityBaseUrl,
136
+ RelyingPartyEntityConfiguration,
137
+ options
138
+ );
139
+
140
+ export const getEntityConfiguration = (
141
+ entityBaseUrl: Parameters<typeof fetchAndParseEntityConfiguration>[0],
142
+ options?: Parameters<typeof fetchAndParseEntityConfiguration>[2]
143
+ ) =>
144
+ fetchAndParseEntityConfiguration(entityBaseUrl, EntityConfiguration, options);
@@ -5,6 +5,29 @@ import * as z from "zod";
5
5
  export const TrustMark = z.object({ id: z.string(), trust_mark: z.string() });
6
6
  export type TrustMark = z.infer<typeof TrustMark>;
7
7
 
8
+ // Display metadata for a credential, used by the issuer to
9
+ // instruct the Wallet Solution on how to render the credential correctly
10
+ type CredentialDisplayMetadata = z.infer<typeof CredentialDisplayMetadata>;
11
+ const CredentialDisplayMetadata = z.object({
12
+ name: z.string(),
13
+ locale: z.string(),
14
+ logo: z.object({
15
+ url: z.string(),
16
+ alt_text: z.string(),
17
+ }),
18
+ background_color: z.string(),
19
+ text_color: z.string(),
20
+ });
21
+
22
+ // Metadata for a credentia which i supported by a Issuer
23
+ type SupportedCredentialMetadata = z.infer<typeof SupportedCredentialMetadata>;
24
+ const SupportedCredentialMetadata = z.object({
25
+ format: z.literal("vc+sd-jwt"),
26
+ cryptographic_binding_methods_supported: z.array(z.string()),
27
+ cryptographic_suites_supported: z.array(z.string()),
28
+ display: z.array(CredentialDisplayMetadata),
29
+ });
30
+
8
31
  export type EntityStatement = z.infer<typeof EntityStatement>;
9
32
  export const EntityStatement = z.object({
10
33
  header: z.object({
@@ -31,8 +54,8 @@ export const EntityConfigurationHeader = z.object({
31
54
  kid: z.string(),
32
55
  });
33
56
 
34
- export type EntityConfiguration = z.infer<typeof EntityConfiguration>;
35
- export const EntityConfiguration = z.object({
57
+ // Structuire common to every Entity Configuration document
58
+ const BaseEntityConfiguration = z.object({
36
59
  header: EntityConfigurationHeader,
37
60
  payload: z
38
61
  .object({
@@ -65,7 +88,95 @@ export const EntityConfiguration = z.object({
65
88
  .passthrough(),
66
89
  });
67
90
 
91
+ // Entity configuration for a Trust Anchor (it has no specific metadata section)
68
92
  export type TrustAnchorEntityConfiguration = z.infer<
69
93
  typeof TrustAnchorEntityConfiguration
70
94
  >;
71
- export const TrustAnchorEntityConfiguration = EntityConfiguration;
95
+ export const TrustAnchorEntityConfiguration = BaseEntityConfiguration;
96
+
97
+ // Entity configuration for a Credential Issuer
98
+ export type CredentialIssuerEntityConfiguration = z.infer<
99
+ typeof CredentialIssuerEntityConfiguration
100
+ >;
101
+ export const CredentialIssuerEntityConfiguration = BaseEntityConfiguration.and(
102
+ z.object({
103
+ payload: z.object({
104
+ jwks: z.object({ keys: z.array(JWK) }),
105
+ metadata: z.object({
106
+ openid_credential_issuer: z.object({
107
+ credential_issuer: z.string(),
108
+ authorization_endpoint: z.string(),
109
+ token_endpoint: z.string(),
110
+ pushed_authorization_request_endpoint: z.string(),
111
+ dpop_signing_alg_values_supported: z.array(z.string()),
112
+ credential_endpoint: z.string(),
113
+ credentials_supported: z.array(SupportedCredentialMetadata),
114
+ jwks: z.object({ keys: z.array(JWK) }),
115
+ }),
116
+ }),
117
+ }),
118
+ })
119
+ );
120
+
121
+ // Entity configuration for a Wallet Provider
122
+ export type WalletProviderEntityConfiguration = z.infer<
123
+ typeof WalletProviderEntityConfiguration
124
+ >;
125
+ export const WalletProviderEntityConfiguration = BaseEntityConfiguration.and(
126
+ z.object({
127
+ payload: z.object({
128
+ metadata: z.object({
129
+ wallet_provider: z
130
+ .object({
131
+ token_endpoint: z.string(),
132
+ attested_security_context_values_supported: z
133
+ .array(z.string())
134
+ .optional(),
135
+ grant_types_supported: z.array(z.string()),
136
+ token_endpoint_auth_methods_supported: z.array(z.string()),
137
+ token_endpoint_auth_signing_alg_values_supported: z.array(
138
+ z.string()
139
+ ),
140
+ jwks: z.object({ keys: z.array(JWK) }),
141
+ })
142
+ .passthrough(),
143
+ }),
144
+ }),
145
+ })
146
+ );
147
+
148
+ // Entity configuration for a Relying Party
149
+ export type RelyingPartyEntityConfiguration = z.infer<
150
+ typeof RelyingPartyEntityConfiguration
151
+ >;
152
+ export const RelyingPartyEntityConfiguration = BaseEntityConfiguration.and(
153
+ z.object({
154
+ payload: z.object({
155
+ metadata: z.object({
156
+ wallet_relying_party: z
157
+ .object({
158
+ application_type: z.string().optional(),
159
+ client_id: z.string().optional(),
160
+ client_name: z.string().optional(),
161
+ jwks: z.array(JWK),
162
+ contacts: z.array(z.string()).optional(),
163
+ })
164
+ .passthrough(),
165
+ }),
166
+ }),
167
+ })
168
+ );
169
+
170
+ // Maps any entity configuration by the union of every possible shapes
171
+ export type EntityConfiguration = z.infer<typeof EntityConfiguration>;
172
+ export const EntityConfiguration = z.union(
173
+ [
174
+ WalletProviderEntityConfiguration,
175
+ CredentialIssuerEntityConfiguration,
176
+ TrustAnchorEntityConfiguration,
177
+ RelyingPartyEntityConfiguration,
178
+ ],
179
+ {
180
+ description: "Any kind of Entity Configuration allowed in the ecosystem",
181
+ }
182
+ );