@eudiplo/cli 9.1.0-main.892d49e → 9.1.0-main.8be8b4e

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 (96) hide show
  1. package/dist/commands/completion/action.js +3 -1
  2. package/dist/commands/completion/action.js.map +1 -1
  3. package/dist/commands/config/portability/migrations.spec.js +5 -2
  4. package/dist/commands/config/portability/migrations.spec.js.map +1 -1
  5. package/dist/commands/config/portability/upgrade.d.ts.map +1 -1
  6. package/dist/commands/config/portability/upgrade.js +7 -8
  7. package/dist/commands/config/portability/upgrade.js.map +1 -1
  8. package/dist/commands/config/tenant/action.d.ts.map +1 -1
  9. package/dist/commands/config/tenant/action.js +3 -2
  10. package/dist/commands/config/tenant/action.js.map +1 -1
  11. package/dist/commands/config/validate/action.d.ts.map +1 -1
  12. package/dist/commands/config/validate/action.js +2 -1
  13. package/dist/commands/config/validate/action.js.map +1 -1
  14. package/dist/commands/config/validate/registry.json +21 -0
  15. package/dist/commands/init/action.d.ts.map +1 -1
  16. package/dist/commands/init/action.js +1 -11
  17. package/dist/commands/init/action.js.map +1 -1
  18. package/dist/commands/instance/action.d.ts +2 -0
  19. package/dist/commands/instance/action.d.ts.map +1 -1
  20. package/dist/commands/instance/action.js +68 -12
  21. package/dist/commands/instance/action.js.map +1 -1
  22. package/dist/commands/instance/index.d.ts.map +1 -1
  23. package/dist/commands/instance/index.js +21 -3
  24. package/dist/commands/instance/index.js.map +1 -1
  25. package/dist/commands/open/action.d.ts.map +1 -1
  26. package/dist/commands/open/action.js +13 -2
  27. package/dist/commands/open/action.js.map +1 -1
  28. package/dist/commands/status/action.d.ts.map +1 -1
  29. package/dist/commands/status/action.js +2 -1
  30. package/dist/commands/status/action.js.map +1 -1
  31. package/dist/index.js +21395 -5631
  32. package/dist/services/api-auth.d.ts.map +1 -1
  33. package/dist/services/api-auth.js +3 -2
  34. package/dist/services/api-auth.js.map +1 -1
  35. package/dist/services/browser.d.ts.map +1 -1
  36. package/dist/services/browser.js +3 -2
  37. package/dist/services/browser.js.map +1 -1
  38. package/dist/services/cli-config.d.ts +41 -1
  39. package/dist/services/cli-config.d.ts.map +1 -1
  40. package/dist/services/cli-config.js +217 -29
  41. package/dist/services/cli-config.js.map +1 -1
  42. package/dist/services/compose-project.d.ts +6 -0
  43. package/dist/services/compose-project.d.ts.map +1 -1
  44. package/dist/services/compose-project.js +13 -2
  45. package/dist/services/compose-project.js.map +1 -1
  46. package/dist/services/diagnostics.d.ts.map +1 -1
  47. package/dist/services/diagnostics.js +9 -8
  48. package/dist/services/diagnostics.js.map +1 -1
  49. package/dist/services/instance-selection.d.ts.map +1 -1
  50. package/dist/services/instance-selection.js +2 -5
  51. package/dist/services/instance-selection.js.map +1 -1
  52. package/dist/services/url.d.ts +21 -0
  53. package/dist/services/url.d.ts.map +1 -0
  54. package/dist/services/url.js +61 -0
  55. package/dist/services/url.js.map +1 -0
  56. package/package.json +6 -5
  57. package/templates/demo-config/clients/presentation-test.json +1 -1
  58. package/templates/demo-config/clients/test.json +7 -2
  59. package/templates/demo-config/info.json +1 -1
  60. package/templates/demo-config/issuance/credentials/citizen.json +1 -1
  61. package/templates/demo-config/issuance/credentials/pid-key.json +1 -1
  62. package/templates/demo-config/issuance/credentials/pid-mdoc.json +1 -1
  63. package/templates/demo-config/issuance/credentials/pid.json +1 -1
  64. package/templates/demo-config/issuance/issuance.json +1 -1
  65. package/templates/demo-config/key-chains/access.json +1 -1
  66. package/templates/demo-config/key-chains/attestation.json +3 -2
  67. package/templates/demo-config/key-chains/status-list.json +6 -5
  68. package/templates/demo-config/key-chains/trust-list.json +1 -1
  69. package/templates/demo-config/presentation/age-over-18.json +1 -1
  70. package/templates/demo-config/presentation/pid.json +1 -1
  71. package/templates/docker-compose.yml +2 -2
  72. package/templates/schemas/ClientConfigFile.schema.json +134 -1
  73. package/templates/schemas/CreateClientDto.schema.json +5 -1
  74. package/templates/schemas/CreateFederationTrustAnchorDto.schema.json +82 -0
  75. package/templates/schemas/CreateRegistrarConfigDto.schema.json +29 -0
  76. package/templates/schemas/CreateTenantDto.schema.json +8 -4
  77. package/templates/schemas/CredentialConfigCreate.schema.json +242 -11
  78. package/templates/schemas/CredentialConfigFile.schema.json +1592 -1
  79. package/templates/schemas/FederationTrustAnchorConfigFile.schema.json +60 -0
  80. package/templates/schemas/IssuanceConfig.schema.json +122 -9
  81. package/templates/schemas/IssuanceConfigFile.schema.json +2247 -1
  82. package/templates/schemas/KeyChainConfigFile.schema.json +875 -119
  83. package/templates/schemas/KeyChainCreateDto.schema.json +12 -1
  84. package/templates/schemas/KeyChainDefaultsConfigFile.schema.json +123 -0
  85. package/templates/schemas/KeyChainImportDto.schema.json +10 -0
  86. package/templates/schemas/KmsConfigDto.schema.json +186 -0
  87. package/templates/schemas/KmsConfigFile.schema.json +1026 -1
  88. package/templates/schemas/PresentationConfigCreateDto.schema.json +16 -0
  89. package/templates/schemas/PresentationConfigFile.schema.json +746 -1
  90. package/templates/schemas/RegistrarConfigFile.schema.json +101 -1
  91. package/templates/schemas/RotationPolicyCreateDto.schema.json +1 -1
  92. package/templates/schemas/TenantConfigFile.schema.json +334 -64
  93. package/templates/schemas/UpdateClientDto.schema.json +5 -1
  94. package/templates/schemas/UpdateFederationTrustAnchorDto.schema.json +70 -0
  95. package/templates/schemas/UpdateStatusListConfigDto.schema.json +5 -5
  96. package/templates/schemas.manifest.json +4 -0
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "anyOf": [
3
+ "$id": "./KeyChainConfigFile.schema.json",
4
+ "title": "KeyChainConfigFile",
5
+ "description": "Configuration file identified by its $schema URL.",
6
+ "oneOf": [
4
7
  {
5
8
  "type": "object",
6
9
  "properties": {
7
10
  "$schema": {
8
11
  "type": "string",
9
- "const": "https://eudiplo.dev/schemas/v1/KeyChainConfigFile.schema.json"
12
+ "const": "https://eudiplo.dev/schemas/v4/KeyChainConfigFile.schema.json"
10
13
  },
11
14
  "metadata": {
12
15
  "type": "object",
@@ -39,12 +42,22 @@
39
42
  "type": "string",
40
43
  "enum": [
41
44
  "access",
45
+ "authorizationServer",
42
46
  "attestation",
43
47
  "trustList",
44
48
  "statusList",
49
+ "federation",
45
50
  "encrypt"
46
51
  ]
47
52
  },
53
+ "type": {
54
+ "description": "Key chain type. For a `private-jwk` key source without `activeJwk`, `standalone` makes `jwk` the signing key and `crt` its chain, leaf first; `internalChain` makes `jwk` a CA key and the last `crt` entry its CA certificate (created if `crt` is omitted), and the import generates a new signing key with a certificate issued by it. Without `type`, `jwk` is a CA key only if `rotationPolicy.enabled` is true and `crt` is not a single self-signed certificate that is not a CA. For `regenerate`, it is the type of the new key chain and must equal `keySource.keyChainType` if both are set. For the other key sources, it must match the key chain they describe.",
55
+ "type": "string",
56
+ "enum": [
57
+ "standalone",
58
+ "internalChain"
59
+ ]
60
+ },
48
61
  "keySource": {
49
62
  "oneOf": [
50
63
  {
@@ -358,123 +371,9 @@
358
371
  "additionalProperties": false
359
372
  },
360
373
  {
361
- "type": "object",
362
- "properties": {
363
- "id": {
364
- "description": "Optional key chain id. If omitted, one is generated.",
365
- "type": "string"
366
- },
367
- "key": {
368
- "description": "Private key material in JWK format.",
369
- "type": "object",
370
- "properties": {
371
- "kty": {
372
- "type": "string",
373
- "description": "Key type (for example EC)."
374
- },
375
- "x": {
376
- "type": "string",
377
- "description": "Elliptic curve public x coordinate."
378
- },
379
- "y": {
380
- "type": "string",
381
- "description": "Elliptic curve public y coordinate."
382
- },
383
- "crv": {
384
- "type": "string",
385
- "description": "Elliptic curve name."
386
- },
387
- "d": {
388
- "type": "string",
389
- "description": "Private key value."
390
- },
391
- "alg": {
392
- "description": "Optional algorithm hint.",
393
- "type": "string"
394
- },
395
- "kid": {
396
- "description": "Optional key identifier.",
397
- "type": "string"
398
- }
399
- },
400
- "required": [
401
- "kty",
402
- "x",
403
- "y",
404
- "crv",
405
- "d"
406
- ],
407
- "additionalProperties": false
408
- },
409
- "keyPem": {
410
- "description": "PKCS#8 PEM-encoded EC private key material.",
411
- "type": "string",
412
- "minLength": 1
413
- },
414
- "description": {
415
- "description": "Optional key chain description.",
416
- "type": "string"
417
- },
418
- "usageType": {
419
- "type": "string",
420
- "enum": [
421
- "access",
422
- "attestation",
423
- "trustList",
424
- "statusList",
425
- "encrypt"
426
- ],
427
- "description": "Key usage category for the imported key chain."
428
- },
429
- "crt": {
430
- "description": "Optional certificate chain values in PEM or base64 DER.",
431
- "type": "array",
432
- "items": {
433
- "type": "string"
434
- }
435
- },
436
- "kmsProvider": {
437
- "description": "Optional KMS provider id.",
438
- "type": "string"
439
- },
440
- "rotationPolicy": {
441
- "description": "Optional rotation policy for imported key chains.",
442
- "type": "object",
443
- "properties": {
444
- "enabled": {
445
- "type": "boolean",
446
- "description": "Enable automatic rotation for imported key chains."
447
- },
448
- "intervalDays": {
449
- "description": "Rotation interval in days.",
450
- "type": "number",
451
- "minimum": 1,
452
- "maximum": 3650
453
- },
454
- "certValidityDays": {
455
- "description": "Certificate validity period in days.",
456
- "type": "number",
457
- "minimum": 1,
458
- "maximum": 3650
459
- }
460
- },
461
- "required": [
462
- "enabled"
463
- ],
464
- "additionalProperties": false
465
- }
466
- },
467
- "required": [
468
- "usageType"
469
- ],
470
- "additionalProperties": false
471
- }
472
- ],
473
- "$id": "./KeyChainConfigFile.schema.json",
474
- "title": "KeyChainConfigFile",
475
- "description": "Configuration file identified by its $schema URL.",
476
- "oneOf": [
477
- {
374
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
375
+ "$id": "https://eudiplo.dev/schemas/v1/KeyChainConfigFile.schema.json",
376
+ "title": "KeyChainConfigFile",
478
377
  "type": "object",
479
378
  "properties": {
480
379
  "$schema": {
@@ -829,6 +728,863 @@
829
728
  "spec"
830
729
  ],
831
730
  "additionalProperties": false
731
+ },
732
+ {
733
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
734
+ "$id": "https://eudiplo.dev/schemas/v2/KeyChainConfigFile.schema.json",
735
+ "title": "KeyChainConfigFile",
736
+ "type": "object",
737
+ "properties": {
738
+ "$schema": {
739
+ "type": "string",
740
+ "const": "https://eudiplo.dev/schemas/v2/KeyChainConfigFile.schema.json"
741
+ },
742
+ "metadata": {
743
+ "type": "object",
744
+ "properties": {
745
+ "generation": {
746
+ "type": "integer",
747
+ "minimum": 1,
748
+ "maximum": 9007199254740991
749
+ },
750
+ "ownership": {
751
+ "type": "string",
752
+ "enum": [
753
+ "unmanaged",
754
+ "file-managed"
755
+ ]
756
+ }
757
+ },
758
+ "additionalProperties": false
759
+ },
760
+ "spec": {
761
+ "type": "object",
762
+ "properties": {
763
+ "id": {
764
+ "type": "string"
765
+ },
766
+ "description": {
767
+ "type": "string"
768
+ },
769
+ "usageType": {
770
+ "type": "string",
771
+ "enum": [
772
+ "access",
773
+ "attestation",
774
+ "trustList",
775
+ "statusList",
776
+ "encrypt"
777
+ ]
778
+ },
779
+ "type": {
780
+ "description": "Key chain type. For a `private-jwk` key source without `activeJwk`, `standalone` makes `jwk` the signing key and `crt` its chain, leaf first; `internalChain` makes `jwk` a CA key and the last `crt` entry its CA certificate (created if `crt` is omitted), and the import generates a new signing key with a certificate issued by it. Without `type`, `jwk` is a CA key only if `rotationPolicy.enabled` is true and `crt` is not a single self-signed certificate that is not a CA. For `regenerate`, it is the type of the new key chain and must equal `keySource.keyChainType` if both are set. For the other key sources, it must match the key chain they describe.",
781
+ "type": "string",
782
+ "enum": [
783
+ "standalone",
784
+ "internalChain"
785
+ ]
786
+ },
787
+ "keySource": {
788
+ "oneOf": [
789
+ {
790
+ "type": "object",
791
+ "properties": {
792
+ "type": {
793
+ "type": "string",
794
+ "const": "private-jwk"
795
+ },
796
+ "jwk": {
797
+ "type": "object",
798
+ "properties": {
799
+ "kty": {
800
+ "type": "string",
801
+ "description": "Key type (for example EC)."
802
+ },
803
+ "x": {
804
+ "type": "string",
805
+ "description": "Elliptic curve public x coordinate."
806
+ },
807
+ "y": {
808
+ "type": "string",
809
+ "description": "Elliptic curve public y coordinate."
810
+ },
811
+ "crv": {
812
+ "type": "string",
813
+ "description": "Elliptic curve name."
814
+ },
815
+ "d": {
816
+ "type": "string",
817
+ "description": "Private key value."
818
+ },
819
+ "alg": {
820
+ "description": "Optional algorithm hint.",
821
+ "type": "string"
822
+ },
823
+ "kid": {
824
+ "description": "Optional key identifier.",
825
+ "type": "string"
826
+ }
827
+ },
828
+ "required": [
829
+ "kty",
830
+ "x",
831
+ "y",
832
+ "crv",
833
+ "d"
834
+ ],
835
+ "additionalProperties": false
836
+ },
837
+ "activeJwk": {
838
+ "type": "object",
839
+ "properties": {
840
+ "kty": {
841
+ "type": "string",
842
+ "description": "Key type (for example EC)."
843
+ },
844
+ "x": {
845
+ "type": "string",
846
+ "description": "Elliptic curve public x coordinate."
847
+ },
848
+ "y": {
849
+ "type": "string",
850
+ "description": "Elliptic curve public y coordinate."
851
+ },
852
+ "crv": {
853
+ "type": "string",
854
+ "description": "Elliptic curve name."
855
+ },
856
+ "d": {
857
+ "type": "string",
858
+ "description": "Private key value."
859
+ },
860
+ "alg": {
861
+ "description": "Optional algorithm hint.",
862
+ "type": "string"
863
+ },
864
+ "kid": {
865
+ "description": "Optional key identifier.",
866
+ "type": "string"
867
+ }
868
+ },
869
+ "required": [
870
+ "kty",
871
+ "x",
872
+ "y",
873
+ "crv",
874
+ "d"
875
+ ],
876
+ "additionalProperties": false
877
+ }
878
+ },
879
+ "required": [
880
+ "type",
881
+ "jwk"
882
+ ],
883
+ "additionalProperties": false
884
+ },
885
+ {
886
+ "type": "object",
887
+ "properties": {
888
+ "type": {
889
+ "type": "string",
890
+ "const": "external-reference"
891
+ },
892
+ "provider": {
893
+ "type": "string"
894
+ },
895
+ "externalKeyId": {
896
+ "type": "string"
897
+ },
898
+ "publicJwk": {
899
+ "type": "object",
900
+ "properties": {
901
+ "kty": {
902
+ "type": "string"
903
+ },
904
+ "x": {
905
+ "type": "string"
906
+ },
907
+ "y": {
908
+ "type": "string"
909
+ },
910
+ "crv": {
911
+ "type": "string"
912
+ },
913
+ "alg": {
914
+ "type": "string"
915
+ },
916
+ "kid": {
917
+ "type": "string"
918
+ }
919
+ },
920
+ "required": [
921
+ "kty",
922
+ "x",
923
+ "y",
924
+ "crv"
925
+ ],
926
+ "additionalProperties": false
927
+ },
928
+ "activeExternalKeyId": {
929
+ "type": "string"
930
+ },
931
+ "activePublicJwk": {
932
+ "type": "object",
933
+ "properties": {
934
+ "kty": {
935
+ "type": "string"
936
+ },
937
+ "x": {
938
+ "type": "string"
939
+ },
940
+ "y": {
941
+ "type": "string"
942
+ },
943
+ "crv": {
944
+ "type": "string"
945
+ },
946
+ "alg": {
947
+ "type": "string"
948
+ },
949
+ "kid": {
950
+ "type": "string"
951
+ }
952
+ },
953
+ "required": [
954
+ "kty",
955
+ "x",
956
+ "y",
957
+ "crv"
958
+ ],
959
+ "additionalProperties": false
960
+ }
961
+ },
962
+ "required": [
963
+ "type",
964
+ "provider",
965
+ "externalKeyId",
966
+ "publicJwk"
967
+ ],
968
+ "additionalProperties": false
969
+ },
970
+ {
971
+ "type": "object",
972
+ "properties": {
973
+ "type": {
974
+ "type": "string",
975
+ "const": "required"
976
+ },
977
+ "publicJwk": {
978
+ "type": "object",
979
+ "properties": {
980
+ "kty": {
981
+ "type": "string"
982
+ },
983
+ "x": {
984
+ "type": "string"
985
+ },
986
+ "y": {
987
+ "type": "string"
988
+ },
989
+ "crv": {
990
+ "type": "string"
991
+ },
992
+ "alg": {
993
+ "type": "string"
994
+ },
995
+ "kid": {
996
+ "type": "string"
997
+ }
998
+ },
999
+ "required": [
1000
+ "kty",
1001
+ "x",
1002
+ "y",
1003
+ "crv"
1004
+ ],
1005
+ "additionalProperties": false
1006
+ }
1007
+ },
1008
+ "required": [
1009
+ "type"
1010
+ ],
1011
+ "additionalProperties": false
1012
+ },
1013
+ {
1014
+ "type": "object",
1015
+ "properties": {
1016
+ "type": {
1017
+ "type": "string",
1018
+ "const": "regenerate"
1019
+ },
1020
+ "keyChainType": {
1021
+ "type": "string",
1022
+ "enum": [
1023
+ "standalone",
1024
+ "internalChain"
1025
+ ]
1026
+ }
1027
+ },
1028
+ "required": [
1029
+ "type"
1030
+ ],
1031
+ "additionalProperties": false
1032
+ }
1033
+ ]
1034
+ },
1035
+ "crt": {
1036
+ "type": "array",
1037
+ "items": {
1038
+ "type": "string"
1039
+ }
1040
+ },
1041
+ "activeCertificate": {
1042
+ "description": "Active certificate for an internal key chain.",
1043
+ "type": "string"
1044
+ },
1045
+ "kmsProvider": {
1046
+ "type": "string"
1047
+ },
1048
+ "rotationPolicy": {
1049
+ "type": "object",
1050
+ "properties": {
1051
+ "enabled": {
1052
+ "type": "boolean"
1053
+ },
1054
+ "intervalDays": {
1055
+ "anyOf": [
1056
+ {
1057
+ "type": "number",
1058
+ "minimum": 1,
1059
+ "maximum": 3650
1060
+ },
1061
+ {
1062
+ "type": "null"
1063
+ }
1064
+ ]
1065
+ },
1066
+ "certValidityDays": {
1067
+ "anyOf": [
1068
+ {
1069
+ "type": "number",
1070
+ "minimum": 1,
1071
+ "maximum": 3650
1072
+ },
1073
+ {
1074
+ "type": "null"
1075
+ }
1076
+ ]
1077
+ }
1078
+ },
1079
+ "required": [
1080
+ "enabled"
1081
+ ],
1082
+ "additionalProperties": false
1083
+ }
1084
+ },
1085
+ "required": [
1086
+ "usageType",
1087
+ "keySource"
1088
+ ],
1089
+ "additionalProperties": false
1090
+ }
1091
+ },
1092
+ "required": [
1093
+ "$schema",
1094
+ "metadata",
1095
+ "spec"
1096
+ ],
1097
+ "additionalProperties": false
1098
+ },
1099
+ {
1100
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1101
+ "$id": "https://eudiplo.dev/schemas/v3/KeyChainConfigFile.schema.json",
1102
+ "title": "KeyChainConfigFile",
1103
+ "type": "object",
1104
+ "properties": {
1105
+ "$schema": {
1106
+ "type": "string",
1107
+ "const": "https://eudiplo.dev/schemas/v3/KeyChainConfigFile.schema.json"
1108
+ },
1109
+ "metadata": {
1110
+ "type": "object",
1111
+ "properties": {
1112
+ "generation": {
1113
+ "type": "integer",
1114
+ "minimum": 1,
1115
+ "maximum": 9007199254740991
1116
+ },
1117
+ "ownership": {
1118
+ "type": "string",
1119
+ "enum": [
1120
+ "unmanaged",
1121
+ "file-managed"
1122
+ ]
1123
+ }
1124
+ },
1125
+ "additionalProperties": false
1126
+ },
1127
+ "spec": {
1128
+ "type": "object",
1129
+ "properties": {
1130
+ "id": {
1131
+ "type": "string"
1132
+ },
1133
+ "description": {
1134
+ "type": "string"
1135
+ },
1136
+ "usageType": {
1137
+ "type": "string",
1138
+ "enum": [
1139
+ "access",
1140
+ "attestation",
1141
+ "trustList",
1142
+ "statusList",
1143
+ "federation",
1144
+ "encrypt"
1145
+ ]
1146
+ },
1147
+ "type": {
1148
+ "description": "Key chain type. For a `private-jwk` key source without `activeJwk`, `standalone` makes `jwk` the signing key and `crt` its chain, leaf first; `internalChain` makes `jwk` a CA key and the last `crt` entry its CA certificate (created if `crt` is omitted), and the import generates a new signing key with a certificate issued by it. Without `type`, `jwk` is a CA key only if `rotationPolicy.enabled` is true and `crt` is not a single self-signed certificate that is not a CA. For `regenerate`, it is the type of the new key chain and must equal `keySource.keyChainType` if both are set. For the other key sources, it must match the key chain they describe.",
1149
+ "type": "string",
1150
+ "enum": [
1151
+ "standalone",
1152
+ "internalChain"
1153
+ ]
1154
+ },
1155
+ "keySource": {
1156
+ "oneOf": [
1157
+ {
1158
+ "type": "object",
1159
+ "properties": {
1160
+ "type": {
1161
+ "type": "string",
1162
+ "const": "private-jwk"
1163
+ },
1164
+ "jwk": {
1165
+ "type": "object",
1166
+ "properties": {
1167
+ "kty": {
1168
+ "type": "string",
1169
+ "description": "Key type (for example EC)."
1170
+ },
1171
+ "x": {
1172
+ "type": "string",
1173
+ "description": "Elliptic curve public x coordinate."
1174
+ },
1175
+ "y": {
1176
+ "type": "string",
1177
+ "description": "Elliptic curve public y coordinate."
1178
+ },
1179
+ "crv": {
1180
+ "type": "string",
1181
+ "description": "Elliptic curve name."
1182
+ },
1183
+ "d": {
1184
+ "type": "string",
1185
+ "description": "Private key value."
1186
+ },
1187
+ "alg": {
1188
+ "description": "Optional algorithm hint.",
1189
+ "type": "string"
1190
+ },
1191
+ "kid": {
1192
+ "description": "Optional key identifier.",
1193
+ "type": "string"
1194
+ }
1195
+ },
1196
+ "required": [
1197
+ "kty",
1198
+ "x",
1199
+ "y",
1200
+ "crv",
1201
+ "d"
1202
+ ],
1203
+ "additionalProperties": false
1204
+ },
1205
+ "activeJwk": {
1206
+ "type": "object",
1207
+ "properties": {
1208
+ "kty": {
1209
+ "type": "string",
1210
+ "description": "Key type (for example EC)."
1211
+ },
1212
+ "x": {
1213
+ "type": "string",
1214
+ "description": "Elliptic curve public x coordinate."
1215
+ },
1216
+ "y": {
1217
+ "type": "string",
1218
+ "description": "Elliptic curve public y coordinate."
1219
+ },
1220
+ "crv": {
1221
+ "type": "string",
1222
+ "description": "Elliptic curve name."
1223
+ },
1224
+ "d": {
1225
+ "type": "string",
1226
+ "description": "Private key value."
1227
+ },
1228
+ "alg": {
1229
+ "description": "Optional algorithm hint.",
1230
+ "type": "string"
1231
+ },
1232
+ "kid": {
1233
+ "description": "Optional key identifier.",
1234
+ "type": "string"
1235
+ }
1236
+ },
1237
+ "required": [
1238
+ "kty",
1239
+ "x",
1240
+ "y",
1241
+ "crv",
1242
+ "d"
1243
+ ],
1244
+ "additionalProperties": false
1245
+ }
1246
+ },
1247
+ "required": [
1248
+ "type",
1249
+ "jwk"
1250
+ ],
1251
+ "additionalProperties": false
1252
+ },
1253
+ {
1254
+ "type": "object",
1255
+ "properties": {
1256
+ "type": {
1257
+ "type": "string",
1258
+ "const": "external-reference"
1259
+ },
1260
+ "provider": {
1261
+ "type": "string"
1262
+ },
1263
+ "externalKeyId": {
1264
+ "type": "string"
1265
+ },
1266
+ "publicJwk": {
1267
+ "type": "object",
1268
+ "properties": {
1269
+ "kty": {
1270
+ "type": "string"
1271
+ },
1272
+ "x": {
1273
+ "type": "string"
1274
+ },
1275
+ "y": {
1276
+ "type": "string"
1277
+ },
1278
+ "crv": {
1279
+ "type": "string"
1280
+ },
1281
+ "alg": {
1282
+ "type": "string"
1283
+ },
1284
+ "kid": {
1285
+ "type": "string"
1286
+ }
1287
+ },
1288
+ "required": [
1289
+ "kty",
1290
+ "x",
1291
+ "y",
1292
+ "crv"
1293
+ ],
1294
+ "additionalProperties": false
1295
+ },
1296
+ "activeExternalKeyId": {
1297
+ "type": "string"
1298
+ },
1299
+ "activePublicJwk": {
1300
+ "type": "object",
1301
+ "properties": {
1302
+ "kty": {
1303
+ "type": "string"
1304
+ },
1305
+ "x": {
1306
+ "type": "string"
1307
+ },
1308
+ "y": {
1309
+ "type": "string"
1310
+ },
1311
+ "crv": {
1312
+ "type": "string"
1313
+ },
1314
+ "alg": {
1315
+ "type": "string"
1316
+ },
1317
+ "kid": {
1318
+ "type": "string"
1319
+ }
1320
+ },
1321
+ "required": [
1322
+ "kty",
1323
+ "x",
1324
+ "y",
1325
+ "crv"
1326
+ ],
1327
+ "additionalProperties": false
1328
+ }
1329
+ },
1330
+ "required": [
1331
+ "type",
1332
+ "provider",
1333
+ "externalKeyId",
1334
+ "publicJwk"
1335
+ ],
1336
+ "additionalProperties": false
1337
+ },
1338
+ {
1339
+ "type": "object",
1340
+ "properties": {
1341
+ "type": {
1342
+ "type": "string",
1343
+ "const": "required"
1344
+ },
1345
+ "publicJwk": {
1346
+ "type": "object",
1347
+ "properties": {
1348
+ "kty": {
1349
+ "type": "string"
1350
+ },
1351
+ "x": {
1352
+ "type": "string"
1353
+ },
1354
+ "y": {
1355
+ "type": "string"
1356
+ },
1357
+ "crv": {
1358
+ "type": "string"
1359
+ },
1360
+ "alg": {
1361
+ "type": "string"
1362
+ },
1363
+ "kid": {
1364
+ "type": "string"
1365
+ }
1366
+ },
1367
+ "required": [
1368
+ "kty",
1369
+ "x",
1370
+ "y",
1371
+ "crv"
1372
+ ],
1373
+ "additionalProperties": false
1374
+ }
1375
+ },
1376
+ "required": [
1377
+ "type"
1378
+ ],
1379
+ "additionalProperties": false
1380
+ },
1381
+ {
1382
+ "type": "object",
1383
+ "properties": {
1384
+ "type": {
1385
+ "type": "string",
1386
+ "const": "regenerate"
1387
+ },
1388
+ "keyChainType": {
1389
+ "type": "string",
1390
+ "enum": [
1391
+ "standalone",
1392
+ "internalChain"
1393
+ ]
1394
+ }
1395
+ },
1396
+ "required": [
1397
+ "type"
1398
+ ],
1399
+ "additionalProperties": false
1400
+ }
1401
+ ]
1402
+ },
1403
+ "crt": {
1404
+ "type": "array",
1405
+ "items": {
1406
+ "type": "string"
1407
+ }
1408
+ },
1409
+ "activeCertificate": {
1410
+ "description": "Active certificate for an internal key chain.",
1411
+ "type": "string"
1412
+ },
1413
+ "kmsProvider": {
1414
+ "type": "string"
1415
+ },
1416
+ "rotationPolicy": {
1417
+ "type": "object",
1418
+ "properties": {
1419
+ "enabled": {
1420
+ "type": "boolean"
1421
+ },
1422
+ "intervalDays": {
1423
+ "anyOf": [
1424
+ {
1425
+ "type": "number",
1426
+ "minimum": 1,
1427
+ "maximum": 3650
1428
+ },
1429
+ {
1430
+ "type": "null"
1431
+ }
1432
+ ]
1433
+ },
1434
+ "certValidityDays": {
1435
+ "anyOf": [
1436
+ {
1437
+ "type": "number",
1438
+ "minimum": 1,
1439
+ "maximum": 3650
1440
+ },
1441
+ {
1442
+ "type": "null"
1443
+ }
1444
+ ]
1445
+ }
1446
+ },
1447
+ "required": [
1448
+ "enabled"
1449
+ ],
1450
+ "additionalProperties": false
1451
+ }
1452
+ },
1453
+ "required": [
1454
+ "usageType",
1455
+ "keySource"
1456
+ ],
1457
+ "additionalProperties": false
1458
+ }
1459
+ },
1460
+ "required": [
1461
+ "$schema",
1462
+ "metadata",
1463
+ "spec"
1464
+ ],
1465
+ "additionalProperties": false
1466
+ },
1467
+ {
1468
+ "type": "object",
1469
+ "properties": {
1470
+ "id": {
1471
+ "description": "Optional key chain id. If omitted, one is generated.",
1472
+ "type": "string"
1473
+ },
1474
+ "key": {
1475
+ "description": "Private key material in JWK format.",
1476
+ "type": "object",
1477
+ "properties": {
1478
+ "kty": {
1479
+ "type": "string",
1480
+ "description": "Key type (for example EC)."
1481
+ },
1482
+ "x": {
1483
+ "type": "string",
1484
+ "description": "Elliptic curve public x coordinate."
1485
+ },
1486
+ "y": {
1487
+ "type": "string",
1488
+ "description": "Elliptic curve public y coordinate."
1489
+ },
1490
+ "crv": {
1491
+ "type": "string",
1492
+ "description": "Elliptic curve name."
1493
+ },
1494
+ "d": {
1495
+ "type": "string",
1496
+ "description": "Private key value."
1497
+ },
1498
+ "alg": {
1499
+ "description": "Optional algorithm hint.",
1500
+ "type": "string"
1501
+ },
1502
+ "kid": {
1503
+ "description": "Optional key identifier.",
1504
+ "type": "string"
1505
+ }
1506
+ },
1507
+ "required": [
1508
+ "kty",
1509
+ "x",
1510
+ "y",
1511
+ "crv",
1512
+ "d"
1513
+ ],
1514
+ "additionalProperties": false
1515
+ },
1516
+ "keyPem": {
1517
+ "description": "PKCS#8 PEM-encoded EC private key material.",
1518
+ "type": "string",
1519
+ "minLength": 1
1520
+ },
1521
+ "description": {
1522
+ "description": "Optional key chain description.",
1523
+ "type": "string"
1524
+ },
1525
+ "usageType": {
1526
+ "type": "string",
1527
+ "enum": [
1528
+ "access",
1529
+ "authorizationServer",
1530
+ "attestation",
1531
+ "trustList",
1532
+ "statusList",
1533
+ "federation",
1534
+ "encrypt"
1535
+ ],
1536
+ "description": "Key usage category for the imported key chain."
1537
+ },
1538
+ "type": {
1539
+ "description": "Key chain type. `standalone`: `key` is the signing key and `crt` its chain, leaf first. `internalChain`: `key` is a CA key and the last `crt` entry its CA certificate (created if `crt` is omitted); the import generates a new signing key with a certificate issued by it. Without `type`, `key` is a CA key only if `rotationPolicy.enabled` is true and `crt` is not a single self-signed certificate that is not a CA.",
1540
+ "type": "string",
1541
+ "enum": [
1542
+ "standalone",
1543
+ "internalChain"
1544
+ ]
1545
+ },
1546
+ "crt": {
1547
+ "description": "Optional certificate chain values in PEM or base64 DER.",
1548
+ "type": "array",
1549
+ "items": {
1550
+ "type": "string"
1551
+ }
1552
+ },
1553
+ "kmsProvider": {
1554
+ "description": "Optional KMS provider id.",
1555
+ "type": "string"
1556
+ },
1557
+ "rotationPolicy": {
1558
+ "description": "Optional rotation policy for imported key chains.",
1559
+ "type": "object",
1560
+ "properties": {
1561
+ "enabled": {
1562
+ "type": "boolean",
1563
+ "description": "Enable automatic rotation for imported key chains."
1564
+ },
1565
+ "intervalDays": {
1566
+ "description": "Rotation interval in days.",
1567
+ "type": "number",
1568
+ "minimum": 1,
1569
+ "maximum": 3650
1570
+ },
1571
+ "certValidityDays": {
1572
+ "description": "Certificate validity period in days.",
1573
+ "type": "number",
1574
+ "minimum": 1,
1575
+ "maximum": 3650
1576
+ }
1577
+ },
1578
+ "required": [
1579
+ "enabled"
1580
+ ],
1581
+ "additionalProperties": false
1582
+ }
1583
+ },
1584
+ "required": [
1585
+ "usageType"
1586
+ ],
1587
+ "additionalProperties": false
832
1588
  }
833
1589
  ]
834
1590
  }