@pagopa/io-react-native-wallet 1.2.3 → 1.3.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 (82) hide show
  1. package/lib/commonjs/credential/issuance/03-start-user-authorization.js +3 -0
  2. package/lib/commonjs/credential/issuance/03-start-user-authorization.js.map +1 -1
  3. package/lib/commonjs/credential/presentation/01-start-flow.js +12 -28
  4. package/lib/commonjs/credential/presentation/01-start-flow.js.map +1 -1
  5. package/lib/commonjs/credential/presentation/04-retrieve-rp-jwks.js +96 -24
  6. package/lib/commonjs/credential/presentation/04-retrieve-rp-jwks.js.map +1 -1
  7. package/lib/commonjs/credential/presentation/05-verify-request-object.js +7 -2
  8. package/lib/commonjs/credential/presentation/05-verify-request-object.js.map +1 -1
  9. package/lib/commonjs/credential/presentation/07-evaluate-input-descriptor.js +9 -5
  10. package/lib/commonjs/credential/presentation/07-evaluate-input-descriptor.js.map +1 -1
  11. package/lib/commonjs/credential/presentation/08-send-authorization-response.js +20 -16
  12. package/lib/commonjs/credential/presentation/08-send-authorization-response.js.map +1 -1
  13. package/lib/commonjs/credential/presentation/README.md +4 -4
  14. package/lib/commonjs/credential/presentation/errors.js +2 -19
  15. package/lib/commonjs/credential/presentation/errors.js.map +1 -1
  16. package/lib/commonjs/credential/presentation/types.js +9 -1
  17. package/lib/commonjs/credential/presentation/types.js.map +1 -1
  18. package/lib/commonjs/entity/trust/chain.js.map +1 -1
  19. package/lib/commonjs/utils/crypto.js +41 -1
  20. package/lib/commonjs/utils/crypto.js.map +1 -1
  21. package/lib/commonjs/utils/decoder.js.map +1 -1
  22. package/lib/module/credential/issuance/03-start-user-authorization.js +3 -0
  23. package/lib/module/credential/issuance/03-start-user-authorization.js.map +1 -1
  24. package/lib/module/credential/presentation/01-start-flow.js +12 -28
  25. package/lib/module/credential/presentation/01-start-flow.js.map +1 -1
  26. package/lib/module/credential/presentation/04-retrieve-rp-jwks.js +96 -24
  27. package/lib/module/credential/presentation/04-retrieve-rp-jwks.js.map +1 -1
  28. package/lib/module/credential/presentation/05-verify-request-object.js +7 -2
  29. package/lib/module/credential/presentation/05-verify-request-object.js.map +1 -1
  30. package/lib/module/credential/presentation/07-evaluate-input-descriptor.js +9 -5
  31. package/lib/module/credential/presentation/07-evaluate-input-descriptor.js.map +1 -1
  32. package/lib/module/credential/presentation/08-send-authorization-response.js +18 -14
  33. package/lib/module/credential/presentation/08-send-authorization-response.js.map +1 -1
  34. package/lib/module/credential/presentation/README.md +4 -4
  35. package/lib/module/credential/presentation/errors.js +0 -16
  36. package/lib/module/credential/presentation/errors.js.map +1 -1
  37. package/lib/module/credential/presentation/types.js +9 -1
  38. package/lib/module/credential/presentation/types.js.map +1 -1
  39. package/lib/module/entity/trust/chain.js.map +1 -1
  40. package/lib/module/utils/crypto.js +38 -0
  41. package/lib/module/utils/crypto.js.map +1 -1
  42. package/lib/module/utils/decoder.js +0 -1
  43. package/lib/module/utils/decoder.js.map +1 -1
  44. package/lib/module/utils/jwk.js.map +1 -1
  45. package/lib/typescript/credential/issuance/03-start-user-authorization.d.ts.map +1 -1
  46. package/lib/typescript/credential/presentation/01-start-flow.d.ts +3 -3
  47. package/lib/typescript/credential/presentation/01-start-flow.d.ts.map +1 -1
  48. package/lib/typescript/credential/presentation/03-get-request-object.d.ts +1 -1
  49. package/lib/typescript/credential/presentation/04-retrieve-rp-jwks.d.ts +15 -8
  50. package/lib/typescript/credential/presentation/04-retrieve-rp-jwks.d.ts.map +1 -1
  51. package/lib/typescript/credential/presentation/05-verify-request-object.d.ts.map +1 -1
  52. package/lib/typescript/credential/presentation/07-evaluate-input-descriptor.d.ts +3 -2
  53. package/lib/typescript/credential/presentation/07-evaluate-input-descriptor.d.ts.map +1 -1
  54. package/lib/typescript/credential/presentation/08-send-authorization-response.d.ts +5 -5
  55. package/lib/typescript/credential/presentation/08-send-authorization-response.d.ts.map +1 -1
  56. package/lib/typescript/credential/presentation/errors.d.ts +0 -11
  57. package/lib/typescript/credential/presentation/errors.d.ts.map +1 -1
  58. package/lib/typescript/credential/presentation/types.d.ts +252 -3
  59. package/lib/typescript/credential/presentation/types.d.ts.map +1 -1
  60. package/lib/typescript/entity/trust/chain.d.ts +1 -1
  61. package/lib/typescript/entity/trust/chain.d.ts.map +1 -1
  62. package/lib/typescript/utils/crypto.d.ts +24 -0
  63. package/lib/typescript/utils/crypto.d.ts.map +1 -1
  64. package/lib/typescript/utils/decoder.d.ts +1 -1
  65. package/lib/typescript/utils/decoder.d.ts.map +1 -1
  66. package/lib/typescript/utils/jwk.d.ts +2 -0
  67. package/lib/typescript/utils/jwk.d.ts.map +1 -1
  68. package/package.json +4 -2
  69. package/src/credential/issuance/03-start-user-authorization.ts +3 -0
  70. package/src/credential/presentation/01-start-flow.ts +16 -32
  71. package/src/credential/presentation/03-get-request-object.ts +1 -1
  72. package/src/credential/presentation/04-retrieve-rp-jwks.ts +122 -34
  73. package/src/credential/presentation/05-verify-request-object.ts +4 -3
  74. package/src/credential/presentation/07-evaluate-input-descriptor.ts +20 -6
  75. package/src/credential/presentation/08-send-authorization-response.ts +25 -17
  76. package/src/credential/presentation/README.md +4 -4
  77. package/src/credential/presentation/errors.ts +0 -16
  78. package/src/credential/presentation/types.ts +10 -1
  79. package/src/entity/trust/chain.ts +1 -2
  80. package/src/utils/crypto.ts +43 -0
  81. package/src/utils/decoder.ts +1 -1
  82. package/src/utils/jwk.ts +3 -1
@@ -331,7 +331,194 @@ export declare const RequestObject: z.ZodObject<{
331
331
  response_type: z.ZodLiteral<"vp_token">;
332
332
  response_mode: z.ZodEnum<["direct_post.jwt", "direct_post"]>;
333
333
  client_id: z.ZodString;
334
- client_id_scheme: z.ZodString;
334
+ client_id_scheme: z.ZodOptional<z.ZodString>;
335
+ client_metadata: z.ZodOptional<z.ZodObject<{
336
+ authorization_encrypted_response_alg: z.ZodOptional<z.ZodString>;
337
+ authorization_encrypted_response_enc: z.ZodOptional<z.ZodString>;
338
+ jwks_uri: z.ZodOptional<z.ZodString>;
339
+ jwks: z.ZodOptional<z.ZodObject<{
340
+ keys: z.ZodArray<z.ZodObject<{
341
+ alg: z.ZodOptional<z.ZodString>;
342
+ crv: z.ZodOptional<z.ZodString>;
343
+ d: z.ZodOptional<z.ZodString>;
344
+ dp: z.ZodOptional<z.ZodString>;
345
+ dq: z.ZodOptional<z.ZodString>;
346
+ e: z.ZodOptional<z.ZodString>;
347
+ ext: z.ZodOptional<z.ZodBoolean>;
348
+ k: z.ZodOptional<z.ZodString>;
349
+ key_ops: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
350
+ kid: z.ZodOptional<z.ZodString>;
351
+ kty: z.ZodUnion<[z.ZodLiteral<"RSA">, z.ZodLiteral<"EC">]>;
352
+ n: z.ZodOptional<z.ZodString>;
353
+ p: z.ZodOptional<z.ZodString>;
354
+ q: z.ZodOptional<z.ZodString>;
355
+ qi: z.ZodOptional<z.ZodString>;
356
+ use: z.ZodOptional<z.ZodString>;
357
+ x: z.ZodOptional<z.ZodString>;
358
+ y: z.ZodOptional<z.ZodString>;
359
+ x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
360
+ x5t: z.ZodOptional<z.ZodString>;
361
+ "x5t#S256": z.ZodOptional<z.ZodString>;
362
+ x5u: z.ZodOptional<z.ZodString>;
363
+ }, "strip", z.ZodTypeAny, {
364
+ kty: "RSA" | "EC";
365
+ alg?: string | undefined;
366
+ crv?: string | undefined;
367
+ d?: string | undefined;
368
+ dp?: string | undefined;
369
+ dq?: string | undefined;
370
+ e?: string | undefined;
371
+ ext?: boolean | undefined;
372
+ k?: string | undefined;
373
+ key_ops?: string[] | undefined;
374
+ kid?: string | undefined;
375
+ n?: string | undefined;
376
+ p?: string | undefined;
377
+ q?: string | undefined;
378
+ qi?: string | undefined;
379
+ use?: string | undefined;
380
+ x?: string | undefined;
381
+ y?: string | undefined;
382
+ x5c?: string[] | undefined;
383
+ x5t?: string | undefined;
384
+ "x5t#S256"?: string | undefined;
385
+ x5u?: string | undefined;
386
+ }, {
387
+ kty: "RSA" | "EC";
388
+ alg?: string | undefined;
389
+ crv?: string | undefined;
390
+ d?: string | undefined;
391
+ dp?: string | undefined;
392
+ dq?: string | undefined;
393
+ e?: string | undefined;
394
+ ext?: boolean | undefined;
395
+ k?: string | undefined;
396
+ key_ops?: string[] | undefined;
397
+ kid?: string | undefined;
398
+ n?: string | undefined;
399
+ p?: string | undefined;
400
+ q?: string | undefined;
401
+ qi?: string | undefined;
402
+ use?: string | undefined;
403
+ x?: string | undefined;
404
+ y?: string | undefined;
405
+ x5c?: string[] | undefined;
406
+ x5t?: string | undefined;
407
+ "x5t#S256"?: string | undefined;
408
+ x5u?: string | undefined;
409
+ }>, "many">;
410
+ }, "strip", z.ZodTypeAny, {
411
+ keys: {
412
+ kty: "RSA" | "EC";
413
+ alg?: string | undefined;
414
+ crv?: string | undefined;
415
+ d?: string | undefined;
416
+ dp?: string | undefined;
417
+ dq?: string | undefined;
418
+ e?: string | undefined;
419
+ ext?: boolean | undefined;
420
+ k?: string | undefined;
421
+ key_ops?: string[] | undefined;
422
+ kid?: string | undefined;
423
+ n?: string | undefined;
424
+ p?: string | undefined;
425
+ q?: string | undefined;
426
+ qi?: string | undefined;
427
+ use?: string | undefined;
428
+ x?: string | undefined;
429
+ y?: string | undefined;
430
+ x5c?: string[] | undefined;
431
+ x5t?: string | undefined;
432
+ "x5t#S256"?: string | undefined;
433
+ x5u?: string | undefined;
434
+ }[];
435
+ }, {
436
+ keys: {
437
+ kty: "RSA" | "EC";
438
+ alg?: string | undefined;
439
+ crv?: string | undefined;
440
+ d?: string | undefined;
441
+ dp?: string | undefined;
442
+ dq?: string | undefined;
443
+ e?: string | undefined;
444
+ ext?: boolean | undefined;
445
+ k?: string | undefined;
446
+ key_ops?: string[] | undefined;
447
+ kid?: string | undefined;
448
+ n?: string | undefined;
449
+ p?: string | undefined;
450
+ q?: string | undefined;
451
+ qi?: string | undefined;
452
+ use?: string | undefined;
453
+ x?: string | undefined;
454
+ y?: string | undefined;
455
+ x5c?: string[] | undefined;
456
+ x5t?: string | undefined;
457
+ "x5t#S256"?: string | undefined;
458
+ x5u?: string | undefined;
459
+ }[];
460
+ }>>;
461
+ }, "strip", z.ZodTypeAny, {
462
+ authorization_encrypted_response_alg?: string | undefined;
463
+ authorization_encrypted_response_enc?: string | undefined;
464
+ jwks_uri?: string | undefined;
465
+ jwks?: {
466
+ keys: {
467
+ kty: "RSA" | "EC";
468
+ alg?: string | undefined;
469
+ crv?: string | undefined;
470
+ d?: string | undefined;
471
+ dp?: string | undefined;
472
+ dq?: string | undefined;
473
+ e?: string | undefined;
474
+ ext?: boolean | undefined;
475
+ k?: string | undefined;
476
+ key_ops?: string[] | undefined;
477
+ kid?: string | undefined;
478
+ n?: string | undefined;
479
+ p?: string | undefined;
480
+ q?: string | undefined;
481
+ qi?: string | undefined;
482
+ use?: string | undefined;
483
+ x?: string | undefined;
484
+ y?: string | undefined;
485
+ x5c?: string[] | undefined;
486
+ x5t?: string | undefined;
487
+ "x5t#S256"?: string | undefined;
488
+ x5u?: string | undefined;
489
+ }[];
490
+ } | undefined;
491
+ }, {
492
+ authorization_encrypted_response_alg?: string | undefined;
493
+ authorization_encrypted_response_enc?: string | undefined;
494
+ jwks_uri?: string | undefined;
495
+ jwks?: {
496
+ keys: {
497
+ kty: "RSA" | "EC";
498
+ alg?: string | undefined;
499
+ crv?: string | undefined;
500
+ d?: string | undefined;
501
+ dp?: string | undefined;
502
+ dq?: string | undefined;
503
+ e?: string | undefined;
504
+ ext?: boolean | undefined;
505
+ k?: string | undefined;
506
+ key_ops?: string[] | undefined;
507
+ kid?: string | undefined;
508
+ n?: string | undefined;
509
+ p?: string | undefined;
510
+ q?: string | undefined;
511
+ qi?: string | undefined;
512
+ use?: string | undefined;
513
+ x?: string | undefined;
514
+ y?: string | undefined;
515
+ x5c?: string[] | undefined;
516
+ x5t?: string | undefined;
517
+ "x5t#S256"?: string | undefined;
518
+ x5u?: string | undefined;
519
+ }[];
520
+ } | undefined;
521
+ }>>;
335
522
  scope: z.ZodOptional<z.ZodString>;
336
523
  presentation_definition: z.ZodOptional<z.ZodObject<{
337
524
  id: z.ZodString;
@@ -557,10 +744,41 @@ export declare const RequestObject: z.ZodObject<{
557
744
  response_mode: "direct_post.jwt" | "direct_post";
558
745
  client_id: string;
559
746
  response_uri: string;
560
- client_id_scheme: string;
561
747
  iss?: string | undefined;
562
748
  iat?: number | undefined;
563
749
  exp?: number | undefined;
750
+ client_id_scheme?: string | undefined;
751
+ client_metadata?: {
752
+ authorization_encrypted_response_alg?: string | undefined;
753
+ authorization_encrypted_response_enc?: string | undefined;
754
+ jwks_uri?: string | undefined;
755
+ jwks?: {
756
+ keys: {
757
+ kty: "RSA" | "EC";
758
+ alg?: string | undefined;
759
+ crv?: string | undefined;
760
+ d?: string | undefined;
761
+ dp?: string | undefined;
762
+ dq?: string | undefined;
763
+ e?: string | undefined;
764
+ ext?: boolean | undefined;
765
+ k?: string | undefined;
766
+ key_ops?: string[] | undefined;
767
+ kid?: string | undefined;
768
+ n?: string | undefined;
769
+ p?: string | undefined;
770
+ q?: string | undefined;
771
+ qi?: string | undefined;
772
+ use?: string | undefined;
773
+ x?: string | undefined;
774
+ y?: string | undefined;
775
+ x5c?: string[] | undefined;
776
+ x5t?: string | undefined;
777
+ "x5t#S256"?: string | undefined;
778
+ x5u?: string | undefined;
779
+ }[];
780
+ } | undefined;
781
+ } | undefined;
564
782
  scope?: string | undefined;
565
783
  presentation_definition?: {
566
784
  id: string;
@@ -606,10 +824,41 @@ export declare const RequestObject: z.ZodObject<{
606
824
  response_mode: "direct_post.jwt" | "direct_post";
607
825
  client_id: string;
608
826
  response_uri: string;
609
- client_id_scheme: string;
610
827
  iss?: string | undefined;
611
828
  iat?: number | undefined;
612
829
  exp?: number | undefined;
830
+ client_id_scheme?: string | undefined;
831
+ client_metadata?: {
832
+ authorization_encrypted_response_alg?: string | undefined;
833
+ authorization_encrypted_response_enc?: string | undefined;
834
+ jwks_uri?: string | undefined;
835
+ jwks?: {
836
+ keys: {
837
+ kty: "RSA" | "EC";
838
+ alg?: string | undefined;
839
+ crv?: string | undefined;
840
+ d?: string | undefined;
841
+ dp?: string | undefined;
842
+ dq?: string | undefined;
843
+ e?: string | undefined;
844
+ ext?: boolean | undefined;
845
+ k?: string | undefined;
846
+ key_ops?: string[] | undefined;
847
+ kid?: string | undefined;
848
+ n?: string | undefined;
849
+ p?: string | undefined;
850
+ q?: string | undefined;
851
+ qi?: string | undefined;
852
+ use?: string | undefined;
853
+ x?: string | undefined;
854
+ y?: string | undefined;
855
+ x5c?: string[] | undefined;
856
+ x5t?: string | undefined;
857
+ "x5t#S256"?: string | undefined;
858
+ x5u?: string | undefined;
859
+ }[];
860
+ } | undefined;
861
+ } | undefined;
613
862
  scope?: string | undefined;
614
863
  presentation_definition?: {
615
864
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/credential/presentation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACO,MAAM;IACzB,MAAM,EAAE;IACsC,aAAa;CACzE,CAAC;AAmBF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAC;AAqBH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC5E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaxB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/credential/presentation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACO,MAAM;IACzB,MAAM,EAAE;IACsC,aAAa;CACzE,CAAC;AAmBF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAC;AAqBH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC5E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBxB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { TrustAnchorEntityConfiguration } from "./types";
2
- import type { JWTDecodeResult } from "@pagopa/io-react-native-jwt/lib/typescript/types";
2
+ import { type JWTDecodeResult } from "../../utils/jwk";
3
3
  type ParsedToken = {
4
4
  header: JWTDecodeResult["protectedHeader"];
5
5
  payload: JWTDecodeResult["payload"];
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../../src/entity/trust/chain.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAGxF,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAC3C,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC;AAiCF;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,iBAAiB,EAAE,8BAA8B,EACjD,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CA+CxB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,GAAE,WAAW,CAAC,OAAO,CAAS,qBA6BvC"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../../src/entity/trust/chain.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAO,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAK5D,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAC3C,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC;AAiCF;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,iBAAiB,EAAE,8BAA8B,EACjD,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CA+CxB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,GAAE,WAAW,CAAC,OAAO,CAAS,qBA6BvC"}
@@ -1,4 +1,6 @@
1
1
  import { type CryptoContext } from "@pagopa/io-react-native-jwt";
2
+ import { RSAKey, KJUR } from "jsrsasign";
3
+ import { JWK } from "./jwk";
2
4
  /**
3
5
  * Create a CryptoContext bound to a key pair.
4
6
  * Key pair is supposed to exist already in the device's keychain.
@@ -16,4 +18,26 @@ export declare const createCryptoContextFor: (keytag: string) => CryptoContext;
16
18
  * @returns The returned value of the input procedure.
17
19
  */
18
20
  export declare const withEphemeralKey: <R>(fn: (ephemeralContext: CryptoContext) => Promise<R>) => Promise<R>;
21
+ /**
22
+ * Converts a certificate string to PEM format.
23
+ *
24
+ * @param certificate - The certificate string.
25
+ * @returns The PEM-formatted certificate.
26
+ */
27
+ export declare const convertCertToPem: (certificate: string) => string;
28
+ /**
29
+ * Parses the public key from a PEM-formatted certificate.
30
+ *
31
+ * @param pemCert - The PEM-formatted certificate.
32
+ * @returns The public key object.
33
+ * @throws Will throw an error if the public key is unsupported.
34
+ */
35
+ export declare const parsePublicKey: (pemCert: string) => RSAKey | KJUR.crypto.ECDSA | undefined;
36
+ /**
37
+ * Retrieves the signing JWK from the public key.
38
+ *
39
+ * @param publicKey - The public key object.
40
+ * @returns The signing JWK.
41
+ */
42
+ export declare const getSigningJwk: (publicKey: RSAKey | KJUR.crypto.ECDSA) => JWK;
19
43
  //# sourceMappingURL=crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/utils/crypto.ts"],"names":[],"mappings":"AAOA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG7E;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,WAAY,MAAM,KAAG,aA6BvD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,6BACJ,aAAa,8BAOrC,CAAC"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/utils/crypto.ts"],"names":[],"mappings":"AAOA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,EAAiB,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,WAAY,MAAM,KAAG,aA6BvD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,6BACJ,aAAa,8BAOrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,gBAAiB,MAAM,KAAG,MACmB,CAAC;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,YAChB,MAAM,KACd,MAAM,GAAG,KAAK,MAAM,CAAC,KAAK,GAAG,SAU/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,cAAe,MAAM,GAAG,KAAK,MAAM,CAAC,KAAK,KAAG,GAGpE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { JWTDecodeResult } from "@pagopa/io-react-native-jwt/lib/typescript/types";
1
+ import type { JWTDecodeResult } from "./jwk";
2
2
  export declare const getJwtFromFormPost: (formData: string) => Promise<{
3
3
  jwt: string;
4
4
  decodedJwt: JWTDecodeResult;
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../../src/utils/decoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AA+BxF,eAAO,MAAM,kBAAkB,aACnB,MAAM,KACf,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,eAAe,CAAA;CAAE,CAkBtD,CAAC"}
1
+ {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../../src/utils/decoder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AA8B7C,eAAO,MAAM,kBAAkB,aACnB,MAAM,KACf,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,eAAe,CAAA;CAAE,CAkBtD,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { decode } from "@pagopa/io-react-native-jwt";
1
2
  import { z } from "zod";
2
3
  export type JWK = z.infer<typeof JWK>;
3
4
  export declare const JWK: z.ZodObject<{
@@ -226,4 +227,5 @@ export declare const JWKS: z.ZodObject<{
226
227
  x5u?: string | undefined;
227
228
  }[];
228
229
  }>;
230
+ export type JWTDecodeResult = ReturnType<typeof decode>;
229
231
  //# sourceMappingURL=jwk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jwk.d.ts","sourceRoot":"","sources":["../../../src/utils/jwk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AACtC,eAAO,MAAM,GAAG;IACd,uCAAuC;;;;;;;IAOvC,yCAAyC;;;IAGzC,gDAAgD;;IAEhD,oCAAoC;;IAEpC;;kCAE8B;;;;;;IAM9B,4CAA4C;;;;IAI5C,qDAAqD;;IAErD,gEAAgE;;IAEhE,mEAAmE;;IAEnE,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEvC,CAAC;AAEH;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAUpD;AAED,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,eAAO,MAAM,IAAI;;QAzDf,uCAAuC;;;;;;;QAOvC,yCAAyC;;;QAGzC,gDAAgD;;QAEhD,oCAAoC;;QAEpC;;sCAE8B;;;;;;QAM9B,4CAA4C;;;;QAI5C,qDAAqD;;QAErD,gEAAgE;;QAEhE,mEAAmE;;QAEnE,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BvC,CAAC"}
1
+ {"version":3,"file":"jwk.d.ts","sourceRoot":"","sources":["../../../src/utils/jwk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AACtC,eAAO,MAAM,GAAG;IACd,uCAAuC;;;;;;;IAOvC,yCAAyC;;;IAGzC,gDAAgD;;IAEhD,oCAAoC;;IAEpC;;kCAE8B;;;;;;IAM9B,4CAA4C;;;;IAI5C,qDAAqD;;IAErD,gEAAgE;;IAEhE,mEAAmE;;IAEnE,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEvC,CAAC;AAEH;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAUpD;AAED,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,eAAO,MAAM,IAAI;;QAzDf,uCAAuC;;;;;;;QAOvC,yCAAyC;;;QAGzC,gDAAgD;;QAEhD,oCAAoC;;QAEpC;;sCAE8B;;;;;;QAM9B,4CAA4C;;;;QAI5C,qDAAqD;;QAErD,gEAAgE;;QAEhE,mEAAmE;;QAEnE,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BvC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/io-react-native-wallet",
3
- "version": "1.2.3",
3
+ "version": "1.3.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",
@@ -55,7 +55,7 @@
55
55
  "devDependencies": {
56
56
  "@pagopa/eslint-config": "^3.0.0",
57
57
  "@pagopa/io-react-native-crypto": "^0.2.3",
58
- "@pagopa/io-react-native-jwt": "^1.3.0",
58
+ "@pagopa/io-react-native-jwt": "^2.0.0",
59
59
  "@react-native/eslint-config": "^0.72.2",
60
60
  "@rushstack/eslint-patch": "^1.3.2",
61
61
  "@types/jest": "^28.1.2",
@@ -108,10 +108,12 @@
108
108
  ]
109
109
  },
110
110
  "dependencies": {
111
+ "@types/jsrsasign": "^10.5.15",
111
112
  "ajv": "^8.17.1",
112
113
  "js-base64": "^3.7.7",
113
114
  "js-sha256": "^0.9.0",
114
115
  "jsonpath-plus": "^10.2.0",
116
+ "jsrsasign": "^11.1.0",
115
117
  "parse-url": "^9.2.0",
116
118
  "react-native-url-polyfill": "^2.0.0",
117
119
  "react-native-uuid": "^2.0.1",
@@ -102,6 +102,9 @@ export const startUserAuthorization: StartUserAuthorization = async (
102
102
  } = ctx;
103
103
 
104
104
  const clientId = await wiaCryptoContext.getPublicKey().then((_) => _.kid);
105
+ if (!clientId) {
106
+ throw new Error("No public key found");
107
+ }
105
108
  const codeVerifier = generateRandomAlphaNumericString(64);
106
109
  const parEndpoint = issuerConf.pushed_authorization_request_endpoint;
107
110
  const credentialDefinition = selectCredentialDefinition(
@@ -1,11 +1,9 @@
1
1
  import * as z from "zod";
2
- import { InvalidQRCodeError } from "./errors";
2
+ import { ValidationFailed } from "../../utils/errors";
3
3
 
4
- const QRCodePayload = z.object({
5
- protocol: z.string(),
6
- resource: z.string(), // TODO: refine to known paths using literals
7
- clientId: z.string(),
8
- requestURI: z.string(),
4
+ const PresentationParams = z.object({
5
+ clientId: z.string().nonempty(),
6
+ requestUri: z.string().url(),
9
7
  });
10
8
 
11
9
  /**
@@ -16,46 +14,32 @@ const QRCodePayload = z.object({
16
14
  * @returns The url for the Relying Party to connect with
17
15
  */
18
16
  export type StartFlow<T extends Array<unknown> = []> = (...args: T) => {
19
- requestURI: string;
17
+ requestUri: string;
20
18
  clientId: string;
21
19
  };
22
20
 
23
21
  /**
24
- * Start a presentation flow by decoding an incoming QR-code
22
+ * Start a presentation flow by decoding the parameters needed to start the presentation flow.
25
23
  *
26
24
  * @param qrcode The encoded QR-code content
27
25
  * @returns The url for the Relying Party to connect with
28
26
  * @throws If the provided qr code fails to be decoded
29
27
  */
30
- export const startFlowFromQR: StartFlow<[string]> = (qrcode) => {
31
- let decodedUrl: URL;
32
- try {
33
- // splitting qrcode to identify which is link format
34
- const originalQrCode = qrcode.split("://");
35
- const replacedQrcode = originalQrCode[1]?.startsWith("?")
36
- ? qrcode.replace(`${originalQrCode[0]}://`, "https://wallet.example/")
37
- : qrcode;
38
-
39
- decodedUrl = new URL(replacedQrcode);
40
- } catch (error) {
41
- throw new InvalidQRCodeError(`Failed to decode QR code: ${qrcode}`);
42
- }
43
-
44
- const protocol = decodedUrl.protocol;
45
- const resource = decodedUrl.hostname;
46
- const requestURI = decodedUrl.searchParams.get("request_uri");
47
- const clientId = decodedUrl.searchParams.get("client_id");
48
-
49
- const result = QRCodePayload.safeParse({
50
- protocol,
51
- resource,
52
- requestURI,
28
+ export const startFlowFromQR: StartFlow<[string, string]> = (
29
+ requestUri: string,
30
+ clientId: string
31
+ ) => {
32
+ const result = PresentationParams.safeParse({
33
+ requestUri,
53
34
  clientId,
54
35
  });
55
36
 
56
37
  if (result.success) {
57
38
  return result.data;
58
39
  } else {
59
- throw new InvalidQRCodeError(`${result.error.message}, ${decodedUrl}`);
40
+ throw new ValidationFailed({
41
+ message: "Invalid parameters provided",
42
+ reason: result.error.message,
43
+ });
60
44
  }
61
45
  };
@@ -9,7 +9,7 @@ import { hasStatusOrThrow, type Out } from "../../utils/misc";
9
9
  import type { StartFlow } from "./01-start-flow";
10
10
 
11
11
  export type GetRequestObject = (
12
- requestUri: Out<StartFlow>["requestURI"],
12
+ requestUri: Out<StartFlow>["requestUri"],
13
13
  context: {
14
14
  wiaCryptoContext: CryptoContext;
15
15
  appFetch?: GlobalFetch["fetch"];