@pagopa/io-react-native-wallet 0.2.7 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. package/lib/commonjs/rp/__test__/index.test.js +145 -0
  2. package/lib/commonjs/rp/__test__/index.test.js.map +1 -1
  3. package/lib/commonjs/rp/index.js +33 -41
  4. package/lib/commonjs/rp/index.js.map +1 -1
  5. package/lib/commonjs/rp/types.js +11 -9
  6. package/lib/commonjs/rp/types.js.map +1 -1
  7. package/lib/commonjs/utils/jwk.js +35 -0
  8. package/lib/commonjs/utils/jwk.js.map +1 -1
  9. package/lib/commonjs/wallet-instance-attestation/issuing.js +1 -1
  10. package/lib/commonjs/wallet-instance-attestation/issuing.js.map +1 -1
  11. package/lib/commonjs/wallet-instance-attestation/types.js +6 -2
  12. package/lib/commonjs/wallet-instance-attestation/types.js.map +1 -1
  13. package/lib/module/rp/__test__/index.test.js +145 -0
  14. package/lib/module/rp/__test__/index.test.js.map +1 -1
  15. package/lib/module/rp/index.js +33 -41
  16. package/lib/module/rp/index.js.map +1 -1
  17. package/lib/module/rp/types.js +11 -9
  18. package/lib/module/rp/types.js.map +1 -1
  19. package/lib/module/utils/jwk.js +34 -0
  20. package/lib/module/utils/jwk.js.map +1 -1
  21. package/lib/module/wallet-instance-attestation/issuing.js +2 -2
  22. package/lib/module/wallet-instance-attestation/issuing.js.map +1 -1
  23. package/lib/module/wallet-instance-attestation/types.js +6 -2
  24. package/lib/module/wallet-instance-attestation/types.js.map +1 -1
  25. package/lib/typescript/index.d.ts.map +1 -0
  26. package/lib/typescript/pid/index.d.ts.map +1 -0
  27. package/lib/typescript/pid/issuing.d.ts.map +1 -0
  28. package/lib/typescript/{src/pid → pid}/metadata.d.ts.map +1 -1
  29. package/lib/typescript/pid/sd-jwt/converters.d.ts.map +1 -0
  30. package/lib/typescript/pid/sd-jwt/index.d.ts.map +1 -0
  31. package/lib/typescript/pid/sd-jwt/types.d.ts.map +1 -0
  32. package/lib/typescript/rp/__test__/index.test.d.ts.map +1 -0
  33. package/lib/typescript/{src/rp → rp}/index.d.ts +8 -8
  34. package/lib/typescript/rp/index.d.ts.map +1 -0
  35. package/lib/typescript/rp/types.d.ts +735 -0
  36. package/lib/typescript/{src/rp → rp}/types.d.ts.map +1 -1
  37. package/lib/typescript/sd-jwt/__test__/converters.test.d.ts.map +1 -0
  38. package/lib/typescript/sd-jwt/__test__/index.test.d.ts.map +1 -0
  39. package/lib/typescript/sd-jwt/__test__/types.test.d.ts.map +1 -0
  40. package/lib/typescript/sd-jwt/converters.d.ts.map +1 -0
  41. package/lib/typescript/sd-jwt/index.d.ts.map +1 -0
  42. package/lib/typescript/sd-jwt/types.d.ts.map +1 -0
  43. package/lib/typescript/sd-jwt/verifier.d.ts.map +1 -0
  44. package/lib/typescript/utils/dpop.d.ts.map +1 -0
  45. package/lib/typescript/utils/errors.d.ts.map +1 -0
  46. package/lib/typescript/{src/utils → utils}/jwk.d.ts +9 -0
  47. package/lib/typescript/utils/jwk.d.ts.map +1 -0
  48. package/lib/typescript/wallet-instance-attestation/index.d.ts.map +1 -0
  49. package/lib/typescript/wallet-instance-attestation/issuing.d.ts.map +1 -0
  50. package/lib/typescript/{src/wallet-instance-attestation → wallet-instance-attestation}/types.d.ts +40 -4
  51. package/lib/typescript/{src/wallet-instance-attestation → wallet-instance-attestation}/types.d.ts.map +1 -1
  52. package/package.json +2 -2
  53. package/src/rp/__test__/index.test.ts +222 -0
  54. package/src/rp/index.ts +44 -54
  55. package/src/rp/types.ts +8 -7
  56. package/src/utils/jwk.ts +21 -0
  57. package/src/wallet-instance-attestation/issuing.ts +3 -2
  58. package/src/wallet-instance-attestation/types.ts +6 -2
  59. package/lib/typescript/src/index.d.ts.map +0 -1
  60. package/lib/typescript/src/pid/index.d.ts.map +0 -1
  61. package/lib/typescript/src/pid/issuing.d.ts.map +0 -1
  62. package/lib/typescript/src/pid/sd-jwt/converters.d.ts.map +0 -1
  63. package/lib/typescript/src/pid/sd-jwt/index.d.ts.map +0 -1
  64. package/lib/typescript/src/pid/sd-jwt/types.d.ts.map +0 -1
  65. package/lib/typescript/src/rp/__test__/index.test.d.ts.map +0 -1
  66. package/lib/typescript/src/rp/index.d.ts.map +0 -1
  67. package/lib/typescript/src/rp/types.d.ts +0 -864
  68. package/lib/typescript/src/sd-jwt/__test__/converters.test.d.ts.map +0 -1
  69. package/lib/typescript/src/sd-jwt/__test__/index.test.d.ts.map +0 -1
  70. package/lib/typescript/src/sd-jwt/__test__/types.test.d.ts.map +0 -1
  71. package/lib/typescript/src/sd-jwt/converters.d.ts.map +0 -1
  72. package/lib/typescript/src/sd-jwt/index.d.ts.map +0 -1
  73. package/lib/typescript/src/sd-jwt/types.d.ts.map +0 -1
  74. package/lib/typescript/src/sd-jwt/verifier.d.ts.map +0 -1
  75. package/lib/typescript/src/utils/dpop.d.ts.map +0 -1
  76. package/lib/typescript/src/utils/errors.d.ts.map +0 -1
  77. package/lib/typescript/src/utils/jwk.d.ts.map +0 -1
  78. package/lib/typescript/src/wallet-instance-attestation/index.d.ts.map +0 -1
  79. package/lib/typescript/src/wallet-instance-attestation/issuing.d.ts.map +0 -1
  80. /package/lib/typescript/{src/index.d.ts → index.d.ts} +0 -0
  81. /package/lib/typescript/{src/pid → pid}/index.d.ts +0 -0
  82. /package/lib/typescript/{src/pid → pid}/issuing.d.ts +0 -0
  83. /package/lib/typescript/{src/pid → pid}/metadata.d.ts +0 -0
  84. /package/lib/typescript/{src/pid → pid}/sd-jwt/converters.d.ts +0 -0
  85. /package/lib/typescript/{src/pid → pid}/sd-jwt/index.d.ts +0 -0
  86. /package/lib/typescript/{src/pid → pid}/sd-jwt/types.d.ts +0 -0
  87. /package/lib/typescript/{src/rp → rp}/__test__/index.test.d.ts +0 -0
  88. /package/lib/typescript/{src/sd-jwt → sd-jwt}/__test__/converters.test.d.ts +0 -0
  89. /package/lib/typescript/{src/sd-jwt → sd-jwt}/__test__/index.test.d.ts +0 -0
  90. /package/lib/typescript/{src/sd-jwt → sd-jwt}/__test__/types.test.d.ts +0 -0
  91. /package/lib/typescript/{src/sd-jwt → sd-jwt}/converters.d.ts +0 -0
  92. /package/lib/typescript/{src/sd-jwt → sd-jwt}/index.d.ts +0 -0
  93. /package/lib/typescript/{src/sd-jwt → sd-jwt}/types.d.ts +0 -0
  94. /package/lib/typescript/{src/sd-jwt → sd-jwt}/verifier.d.ts +0 -0
  95. /package/lib/typescript/{src/utils → utils}/dpop.d.ts +0 -0
  96. /package/lib/typescript/{src/utils → utils}/errors.d.ts +0 -0
  97. /package/lib/typescript/{src/wallet-instance-attestation → wallet-instance-attestation}/index.d.ts +0 -0
  98. /package/lib/typescript/{src/wallet-instance-attestation → wallet-instance-attestation}/issuing.d.ts +0 -0
package/src/rp/index.ts CHANGED
@@ -77,7 +77,7 @@ export class RelyingPartySolution {
77
77
  *
78
78
  */
79
79
  async getUnsignedWalletInstanceDPoP(
80
- walletInstanceAttestationJwk: JWK,
80
+ walletInstanceAttestationJwk: any,
81
81
  authRequestUrl: string
82
82
  ): Promise<string> {
83
83
  return await new SignJWT({
@@ -109,10 +109,9 @@ export class RelyingPartySolution {
109
109
  */
110
110
  async getRequestObject(
111
111
  signedWalletInstanceDPoP: string,
112
+ requestUri: string,
112
113
  entity: RpEntityConfiguration
113
114
  ): Promise<RequestObject> {
114
- const decodedJwtDPop = await decodeJwt(signedWalletInstanceDPoP);
115
- const requestUri = decodedJwtDPop.payload.htu as string;
116
115
  const response = await this.appFetch(requestUri, {
117
116
  method: "GET",
118
117
  headers: {
@@ -122,13 +121,15 @@ export class RelyingPartySolution {
122
121
  });
123
122
 
124
123
  if (response.status === 200) {
125
- const responseText = await response.text();
126
- const responseJwt = decodeJwt(responseText);
124
+ const responseJson = await response.json();
125
+ const responseEncodedJwt = responseJson.response;
126
+
127
+ const responseJwt = decodeJwt(responseEncodedJwt);
127
128
 
128
129
  // verify token signature according to RP's entity configuration
129
130
  // to ensure the request object is authentic
130
131
  {
131
- const pubKey = entity.payload.jwks.keys.find(
132
+ const pubKey = entity.payload.metadata.wallet_relying_party.jwks.find(
132
133
  ({ kid }) => kid === responseJwt.protectedHeader.kid
133
134
  );
134
135
  if (!pubKey) {
@@ -136,7 +137,7 @@ export class RelyingPartySolution {
136
137
  "Request Object signature verification"
137
138
  );
138
139
  }
139
- await verify(responseText, pubKey);
140
+ await verify(responseEncodedJwt, pubKey);
140
141
  }
141
142
 
142
143
  // parse request object it has the expected shape by specification
@@ -163,14 +164,18 @@ export class RelyingPartySolution {
163
164
  * @todo accept more than a Verified Credential
164
165
  *
165
166
  * @param requestObj The incoming request object, which the requirements for the requested authorization
167
+ * @param walletInstanceIdentifier The identifies of the wallt instance that is presenting
166
168
  * @param presentation The Verified Credential containing user data along with the list of claims to be disclosed.
169
+ * @param signKeyId The kid of the key that will be used to sign
167
170
  * @returns The unsigned Verified Presentation token
168
171
  * @throws {ClaimsNotFoundBetweenDislosures} If the Verified Credential does not contain one or more requested claims.
169
172
  *
170
173
  */
171
174
  async prepareVpToken(
172
175
  requestObj: RequestObject,
173
- [vc, claims]: Presentation // TODO: [SIW-353] support multiple presentations
176
+ walletInstanceIdentifier: string,
177
+ [vc, claims]: Presentation, // TODO: [SIW-353] support multiple presentations,
178
+ signKeyId: string
174
179
  ): Promise<{
175
180
  vp_token: string;
176
181
  presentation_submission: Record<string, unknown>;
@@ -180,18 +185,25 @@ export class RelyingPartySolution {
180
185
 
181
186
  // TODO: [SIW-359] check all requeste claims of the requestedObj are satisfied
182
187
 
183
- const vp_token = new SignJWT({ vp })
188
+ const vp_token = new SignJWT({
189
+ vp: vp,
190
+ jti: `${uuid.v4()}`,
191
+ iss: walletInstanceIdentifier,
192
+ nonce: requestObj.payload.nonce,
193
+ })
184
194
  .setAudience(requestObj.payload.response_uri)
195
+ .setIssuedAt()
185
196
  .setExpirationTime("1h")
186
197
  .setProtectedHeader({
187
198
  typ: "JWT",
188
199
  alg: "ES256",
200
+ kid: signKeyId,
189
201
  })
190
202
  .toSign();
191
203
 
192
- const [definition_id, vc_scope] = requestObj.payload.scope;
204
+ const vc_scope = requestObj.payload.scope;
193
205
  const presentation_submission = {
194
- definition_id,
206
+ definition_id: `${uuid.v4()}`,
195
207
  id: `${uuid.v4()}`,
196
208
  descriptor_map: paths.map((p) => ({
197
209
  id: vc_scope,
@@ -225,94 +237,72 @@ export class RelyingPartySolution {
225
237
  ): Promise<string> {
226
238
  // the request is an unsigned jws without iss, aud, exp
227
239
  // https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-signed-and-encrypted-respon
228
- const jwk = this.choosePublicKeyToEncrypt(entity);
229
- const enc = this.getEncryptionAlgByJwk(jwk);
240
+ const jwk = this.chooseRSAPublicKeyToEncrypt(entity);
230
241
 
231
242
  const authzResponsePayload = JSON.stringify({
232
243
  state: requestObj.payload.state,
233
244
  presentation_submission,
245
+ nonce: requestObj.payload.nonce,
234
246
  vp_token,
235
247
  });
248
+
236
249
  const encrypted = await new EncryptJwe(authzResponsePayload, {
237
- alg: jwk.alg,
238
- enc,
250
+ alg: "RSA-OAEP-256",
251
+ enc: "A256CBC-HS512",
252
+ kid: jwk.kid,
239
253
  }).encrypt(jwk);
240
254
 
241
255
  const formBody = new URLSearchParams({ response: encrypted });
256
+ const body = formBody.toString();
257
+
242
258
  const response = await this.appFetch(requestObj.payload.response_uri, {
243
259
  method: "POST",
244
260
  headers: {
245
261
  "Content-Type": "application/x-www-form-urlencoded",
246
262
  },
247
- body: formBody.toString(),
263
+ body,
248
264
  });
249
265
 
250
266
  if (response.status === 200) {
251
- return response.text();
267
+ return await response.text();
252
268
  }
253
269
 
254
270
  throw new IoWalletError(
255
- `Unable to send Authorization Response. Response code: ${response.status}`
271
+ `Unable to send Authorization Response. Response: ${await response.text()} with code: ${
272
+ response.status
273
+ }`
256
274
  );
257
275
  }
258
276
 
259
277
  /**
260
- * Select a public key from those provided by the RP.
261
- * Keys with algorithm "RSA-OAEP-256" or "RSA-OAEP" are expected, the firsts to be preferred.
278
+ * Select a RSA public key from those provided by the RP to encrypt.
262
279
  *
263
280
  * @param entity The RP entity configuration
264
281
  * @returns A suitable public key with its compatible encryption algorithm
265
282
  * @throws {NoSuitableKeysFoundInEntityConfiguration} If entity do not contain any public key suitable for encrypting
266
283
  */
267
- private choosePublicKeyToEncrypt(
268
- entity: RpEntityConfiguration
269
- ): (JWK & { alg: "RSA-OAEP-256" }) | (JWK & { alg: "RSA-OAEP" }) {
270
- // Look for keys using "RSA-OAEP-256", and pick a random one
271
- const [usingRsa256] = entity.payload.jwks.keys.filter(
272
- <T>(k: T & { alg?: string }): k is T & { alg: "RSA-OAEP-256" } =>
273
- typeof k.alg === "string" && k.alg === "RSA-OAEP-256"
274
- );
284
+ private chooseRSAPublicKeyToEncrypt(entity: RpEntityConfiguration): JWK {
285
+ const [usingRsa256] =
286
+ entity.payload.metadata.wallet_relying_party.jwks.filter(
287
+ (jwk) => jwk.use === "enc" && jwk.kty === "RSA"
288
+ );
275
289
 
276
290
  if (usingRsa256) {
277
291
  return usingRsa256;
278
292
  }
279
293
 
280
- // Look for keys using "RSA-OAEP", and pick a random one
281
- const [usingRsa] = entity.payload.jwks.keys.filter(
282
- <T>(k: T & { alg?: string }): k is T & { alg: "RSA-OAEP" } =>
283
- typeof k.alg === "string" && k.alg === "RSA-OAEP"
284
- );
285
-
286
- if (usingRsa) {
287
- return usingRsa;
288
- }
289
-
290
294
  // No suitable key has been found
291
295
  throw new NoSuitableKeysFoundInEntityConfiguration(
292
296
  "Encrypt with RP public key"
293
297
  );
294
298
  }
295
299
 
296
- private getEncryptionAlgByJwk({
297
- alg,
298
- }: (JWK & { alg: "RSA-OAEP-256" }) | (JWK & { alg: "RSA-OAEP" })):
299
- | "A128CBC-HS256"
300
- | "A256CBC-HS512" {
301
- if (alg === "RSA-OAEP-256") return "A256CBC-HS512";
302
- if (alg === "RSA-OAEP") return "A128CBC-HS256";
303
-
304
- const _: never = alg;
305
- throw new Error(`Invalid jwk algorithm: ${_}`);
306
- }
307
-
308
300
  /**
309
301
  * Obtain the relying party entity configuration.
310
302
  */
311
303
  async getEntityConfiguration(): Promise<RpEntityConfiguration> {
312
- const wellKnownUrl = new URL(
313
- "/.well-known/openid-federation",
314
- this.relyingPartyBaseUrl
315
- ).href;
304
+ const wellKnownUrl =
305
+ this.relyingPartyBaseUrl + "/.well-known/openid-federation";
316
306
 
317
307
  const response = await this.appFetch(wellKnownUrl, {
318
308
  method: "GET",
package/src/rp/types.ts CHANGED
@@ -5,7 +5,8 @@ import * as z from "zod";
5
5
  export type RequestObject = z.infer<typeof RequestObject>;
6
6
  export const RequestObject = z.object({
7
7
  header: z.object({
8
- typ: z.literal("JWT"),
8
+ // FIXME: SIW-421 type field must be either required or omitted, optional isn't useful
9
+ typ: z.literal("JWT").optional(),
9
10
  alg: z.string(),
10
11
  kid: z.string(),
11
12
  trust_chain: z.array(z.string()),
@@ -46,18 +47,18 @@ export const RpEntityConfiguration = z.object({
46
47
  application_type: z.string(),
47
48
  client_id: z.string(),
48
49
  client_name: z.string(),
49
- jwks: z.object({
50
- keys: z.array(JWK),
51
- }),
50
+ jwks: z.array(JWK),
52
51
  contacts: z.array(z.string()),
53
52
  }),
54
- federation_entity: z.object({
53
+ // FIXME: SIW-422 require federation_metadata field
54
+ // Actual RP implementation does not comply with the spec
55
+ /* federation_entity: z.object({
55
56
  organization_name: z.string(),
56
57
  homepage_uri: z.string(),
57
58
  policy_uri: z.string(),
58
59
  logo_uri: z.string(),
59
60
  contacts: z.array(z.string()),
60
- }),
61
+ }), */
61
62
  }),
62
63
  authority_hints: z.array(z.string()),
63
64
  }),
@@ -65,7 +66,7 @@ export const RpEntityConfiguration = z.object({
65
66
 
66
67
  export type QRCodePayload = z.infer<typeof QRCodePayload>;
67
68
  export const QRCodePayload = z.object({
68
- protocol: z.literal("eudiw:"),
69
+ protocol: z.string(),
69
70
  resource: z.string(), // TODO: refine to known paths using literals
70
71
  clientId: z.string(),
71
72
  requestURI: z.string(),
package/src/utils/jwk.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { removePadding } from "@pagopa/io-react-native-jwt";
1
2
  import { z } from "zod";
2
3
 
3
4
  export type JWK = z.infer<typeof JWK>;
@@ -37,3 +38,23 @@ export const JWK = z.object({
37
38
  /** JWK "x5u" (X.509 URL) Parameter. */
38
39
  x5u: z.string().optional(),
39
40
  });
41
+
42
+ /**
43
+ * Ensure key values are encoded using base64url and not just base64, as defined in https://datatracker.ietf.org/doc/html/rfc7517
44
+ *
45
+ * @see https://datatracker.ietf.org/doc/html/rfc7517
46
+ *
47
+ * @param key The key to fix
48
+ * @returns THe same input key with fixed values
49
+ */
50
+ export function fixBase64EncodingOnKey(key: JWK): JWK {
51
+ const { x, y, e, n, ...pk } = key;
52
+
53
+ return {
54
+ ...pk,
55
+ ...(x ? { x: removePadding(x) } : {}),
56
+ ...(y ? { y: removePadding(y) } : {}),
57
+ ...(e ? { e: removePadding(e) } : {}),
58
+ ...(n ? { n: removePadding(n) } : {}),
59
+ };
60
+ }
@@ -1,7 +1,7 @@
1
1
  import { decode as decodeJwt } from "@pagopa/io-react-native-jwt";
2
2
  import { verify as verifyJwt } from "@pagopa/io-react-native-jwt";
3
3
  import { SignJWT, thumbprint } from "@pagopa/io-react-native-jwt";
4
- import { JWK } from "../utils/jwk";
4
+ import { JWK, fixBase64EncodingOnKey } from "../utils/jwk";
5
5
  import { WalletInstanceAttestationRequestJwt } from "./types";
6
6
  import uuid from "react-native-uuid";
7
7
  import { WalletInstanceAttestationIssuingError } from "../utils/errors";
@@ -38,7 +38,7 @@ export class Issuing {
38
38
  jti: `${uuid.v4()}`,
39
39
  type: "WalletInstanceAttestationRequest",
40
40
  cnf: {
41
- jwk: publicKey,
41
+ jwk: fixBase64EncodingOnKey(publicKey),
42
42
  },
43
43
  })
44
44
  .setProtectedHeader({
@@ -74,6 +74,7 @@ export class Issuing {
74
74
  attestationRequest,
75
75
  signature
76
76
  );
77
+
77
78
  const decodedRequest = decodeJwt(signedAttestationRequest);
78
79
  const parsedRequest = WalletInstanceAttestationRequestJwt.parse({
79
80
  payload: decodedRequest.payload,
@@ -18,7 +18,11 @@ const Jwt = z.object({
18
18
  iat: UnixTime,
19
19
  exp: UnixTime,
20
20
  cnf: z.object({
21
- jwk: JWK,
21
+ jwk: z.intersection(
22
+ JWK,
23
+ // this key requires a kis because it must be referenced for DPoP
24
+ z.object({ kid: z.string() })
25
+ ),
22
26
  }),
23
27
  }),
24
28
  });
@@ -60,7 +64,7 @@ export const WalletInstanceAttestationJwt = z.object({
60
64
  tos_uri: z.string().url(),
61
65
  logo_uri: z.string().url(),
62
66
  asc: z.string(),
63
- authorization_endpoint: z.string().url(),
67
+ authorization_endpoint: z.string(),
64
68
  response_types_supported: z.array(z.string()),
65
69
  vp_formats_supported: z.object({
66
70
  jwt_vp_json: z.object({
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,gCAAgC,CAAC;AAExC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,MAAM,CAAC;AAC3B,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,yBAAyB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,MAAM,CAAC;AAE5C,OAAO,EACL,GAAG,EACH,EAAE,EACF,yBAAyB,EACzB,MAAM,EACN,eAAe,EACf,oBAAoB,GACrB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pid/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"issuing.d.ts","sourceRoot":"","sources":["../../../../src/pid/issuing.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAKnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAG1D,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,OAAO;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;gBAG7B,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,EAAE,MAAM,EAC7B,yBAAyB,EAAE,MAAM,EACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,WAAW,CAAC,OAAO,CAAS;IAYxC;;;;;;;;OAQG;IACG,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAoCrD;;;;;;;;;OASG;IACG,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwC3E;;;;;;;;OAQG;IACG,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhD;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;IA4C5C;;;;;;;;OAQG;IACG,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB3D;;;;;;;;;;;;;OAaG;IACG,aAAa,CACjB,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC;IAuCvB;;;;;;OAMG;IACG,sBAAsB,IAAI,OAAO,CAAC,4BAA4B,CAAC;CA2BtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../../../../../src/pid/sd-jwt/converters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,GAAG,CAqB5E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/pid/sd-jwt/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CASlD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAMjE;AAED,MAAM,MAAM,YAAY,GAAG;IAEzB,GAAG,EAAE,GAAG,CAAC;IAET,KAAK,EAAE,QAAQ,CAAC;IAEhB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC;AAExC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/pid/sd-jwt/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB;;;;;GAKG;AACH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AACtC,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBd,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../../src/rp/__test__/index.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/rp/index.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kDAAkD,CAAC;AAG5E,qBAAa,oBAAoB;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;gBAG7B,mBAAmB,EAAE,MAAM,EAC3B,yBAAyB,EAAE,MAAM,EACjC,QAAQ,GAAE,WAAW,CAAC,OAAO,CAAS;IAOxC;;;;;;;OAOG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAqBzD;;;;;;;;;OASG;IACG,6BAA6B,CACjC,4BAA4B,EAAE,GAAG,EACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;IAiBlB;;;;;;;;;;OAUG;IACG,gBAAgB,CACpB,wBAAwB,EAAE,MAAM,EAChC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC;IA2CzB;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAClB,UAAU,EAAE,aAAa,EACzB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClD,CAAC;IA6BF;;;;;;;;;;;;;OAaG;IACG,yBAAyB,CAC7B,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAkClB;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,qBAAqB,CAAC;CAuB/D"}