onc_certification_g10_test_kit 2.0.0.rc1

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 (71) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +201 -0
  3. data/lib/inferno/exceptions.rb +31 -0
  4. data/lib/inferno/ext/bloomer.rb +24 -0
  5. data/lib/inferno/repositiories/validators.rb +17 -0
  6. data/lib/inferno/repositiories/value_sets.rb +26 -0
  7. data/lib/inferno/terminology/bcp47.rb +95 -0
  8. data/lib/inferno/terminology/bcp_13.rb +26 -0
  9. data/lib/inferno/terminology/codesystem.rb +49 -0
  10. data/lib/inferno/terminology/expected_manifest.yml +1123 -0
  11. data/lib/inferno/terminology/fhir_package_manager.rb +69 -0
  12. data/lib/inferno/terminology/loader.rb +298 -0
  13. data/lib/inferno/terminology/tasks/check_built_terminology.rb +77 -0
  14. data/lib/inferno/terminology/tasks/cleanup.rb +13 -0
  15. data/lib/inferno/terminology/tasks/cleanup_precursors.rb +23 -0
  16. data/lib/inferno/terminology/tasks/count_codes_in_value_set.rb +20 -0
  17. data/lib/inferno/terminology/tasks/create_value_set_validators.rb +34 -0
  18. data/lib/inferno/terminology/tasks/download_fhir_terminology.rb +27 -0
  19. data/lib/inferno/terminology/tasks/download_umls.rb +109 -0
  20. data/lib/inferno/terminology/tasks/download_umls_notice.rb +20 -0
  21. data/lib/inferno/terminology/tasks/expand_value_set_to_file.rb +36 -0
  22. data/lib/inferno/terminology/tasks/process_umls.rb +91 -0
  23. data/lib/inferno/terminology/tasks/process_umls_translations.rb +85 -0
  24. data/lib/inferno/terminology/tasks/run_umls_jar.rb +75 -0
  25. data/lib/inferno/terminology/tasks/temp_dir.rb +27 -0
  26. data/lib/inferno/terminology/tasks/unzip_umls.rb +42 -0
  27. data/lib/inferno/terminology/tasks/validate_code.rb +36 -0
  28. data/lib/inferno/terminology/tasks.rb +11 -0
  29. data/lib/inferno/terminology/terminology_configuration.rb +52 -0
  30. data/lib/inferno/terminology/terminology_validation.rb +42 -0
  31. data/lib/inferno/terminology/validator.rb +64 -0
  32. data/lib/inferno/terminology/value_set.rb +462 -0
  33. data/lib/inferno/terminology.rb +16 -0
  34. data/lib/onc_certification_g10_test_kit/authorization_request_builder.rb +87 -0
  35. data/lib/onc_certification_g10_test_kit/base_token_refresh_group.rb +48 -0
  36. data/lib/onc_certification_g10_test_kit/bulk_data_authorization.rb +235 -0
  37. data/lib/onc_certification_g10_test_kit/bulk_data_group_export.rb +255 -0
  38. data/lib/onc_certification_g10_test_kit/bulk_data_group_export_validation.rb +474 -0
  39. data/lib/onc_certification_g10_test_kit/bulk_data_jwks.json +58 -0
  40. data/lib/onc_certification_g10_test_kit/bulk_export_validation_tester.rb +171 -0
  41. data/lib/onc_certification_g10_test_kit/configuration_checker.rb +104 -0
  42. data/lib/onc_certification_g10_test_kit/export_kick_off_performer.rb +12 -0
  43. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-bodyheight.json +3772 -0
  44. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-bodytemp.json +3772 -0
  45. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-bodyweight.json +3772 -0
  46. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-bp.json +6034 -0
  47. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-heartrate.json +3756 -0
  48. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-resprate.json +3756 -0
  49. data/lib/onc_certification_g10_test_kit/limited_scope_grant_test.rb +66 -0
  50. data/lib/onc_certification_g10_test_kit/multi_patient_api.rb +43 -0
  51. data/lib/onc_certification_g10_test_kit/patient_context_test.rb +30 -0
  52. data/lib/onc_certification_g10_test_kit/profile_guesser.rb +69 -0
  53. data/lib/onc_certification_g10_test_kit/resource_access_test.rb +96 -0
  54. data/lib/onc_certification_g10_test_kit/restricted_access_test.rb +12 -0
  55. data/lib/onc_certification_g10_test_kit/restricted_resource_type_access_group.rb +303 -0
  56. data/lib/onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group.rb +136 -0
  57. data/lib/onc_certification_g10_test_kit/smart_ehr_practitioner_app_group.rb +209 -0
  58. data/lib/onc_certification_g10_test_kit/smart_invalid_token_group.rb +197 -0
  59. data/lib/onc_certification_g10_test_kit/smart_limited_app_group.rb +123 -0
  60. data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group.rb +113 -0
  61. data/lib/onc_certification_g10_test_kit/smart_scopes_test.rb +153 -0
  62. data/lib/onc_certification_g10_test_kit/smart_standalone_patient_app_group.rb +177 -0
  63. data/lib/onc_certification_g10_test_kit/terminology_binding_validator.rb +140 -0
  64. data/lib/onc_certification_g10_test_kit/token_revocation_group.rb +133 -0
  65. data/lib/onc_certification_g10_test_kit/unauthorized_access_test.rb +25 -0
  66. data/lib/onc_certification_g10_test_kit/unrestricted_resource_type_access_group.rb +375 -0
  67. data/lib/onc_certification_g10_test_kit/version.rb +3 -0
  68. data/lib/onc_certification_g10_test_kit/visual_inspection_and_attestations_group.rb +470 -0
  69. data/lib/onc_certification_g10_test_kit/well_known_capabilities_test.rb +37 -0
  70. data/lib/onc_certification_g10_test_kit.rb +223 -0
  71. metadata +310 -0
@@ -0,0 +1,474 @@
1
+ require_relative 'bulk_export_validation_tester'
2
+
3
+ module ONCCertificationG10TestKit
4
+ class BulkDataGroupExportValidation < Inferno::TestGroup
5
+ title 'Group Compartment Export Validation Tests'
6
+ short_description 'Verify that the exported data conforms to the US Core Implementation Guide.'
7
+ description <<~DESCRIPTION
8
+ Verify that Group compartment export from the Bulk Data server follow US Core Implementation Guide
9
+ DESCRIPTION
10
+
11
+ id :bulk_data_group_export_validation
12
+
13
+ input :status_output, :requires_access_token, :bearer_token, :bulk_download_url
14
+ input :lines_to_validate,
15
+ title: 'Limit validation to a maximum resource count',
16
+ description: 'To validate all, leave blank.',
17
+ optional: true
18
+ input :bulk_patient_ids_in_group,
19
+ title: 'Patient IDs in exported Group',
20
+ description: 'Comma separated list of every Patient ID that is in the specified Group. This information is
21
+ provided by the system under test to verify that data returned matches expectations. Leave blank to not
22
+ verify Group inclusion.'
23
+ input :bulk_device_types_in_group,
24
+ title: 'Implantable Device Type Codes in exported Group',
25
+ description: 'Comma separated list of every Implantable Device type that is in the specified Group. This
26
+ information is provided by the system under test to verify that data returned matches expectations. Leave
27
+ blank to verify all Device resources against the Implantable Device profile.',
28
+ optional: true
29
+
30
+ test from: :tls_version_test do
31
+ title 'Bulk Data Server is secured by transport layer security'
32
+ description <<~DESCRIPTION
33
+ [§170.315(g)(10) Test Procedure]
34
+ (https://www.healthit.gov/test-method/standardized-api-patient-and-population-services)
35
+ requires that all exchanges described herein between a client and a
36
+ server SHALL be secured using Transport Layer Security (TLS)
37
+ Protocol Version 1.2 (RFC5246).
38
+ DESCRIPTION
39
+ id :g10_bulk_file_server_tls_version
40
+
41
+ config(
42
+ inputs: { url: { name: :bulk_download_url } },
43
+ options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION }
44
+ )
45
+ end
46
+
47
+ test do
48
+ title 'NDJSON download requires access token if requireAccessToken is true'
49
+ description <<~DESCRIPTION
50
+ If the requiresAccessToken field in the Complete Status body is set to true, the request SHALL include a valid#{' '}
51
+ access token.
52
+
53
+ [FHIR R4 Security](http://build.fhir.org/security.html#AccessDenied) and
54
+ [The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://tools.ietf.org/html/rfc6750#section-3.1)
55
+ recommend using HTTP status code 401 for invalid token but also allow the actual result be controlled by policy#{' '}
56
+ and context.
57
+ DESCRIPTION
58
+ # link 'http://hl7.org/fhir/uv/bulkdata/export/index.html#file-request'
59
+
60
+ input :bulk_download_url
61
+
62
+ run do
63
+ skip_if bulk_download_url.blank?, 'Could not verify this functionality when no download link was provided'
64
+ skip_if requires_access_token.blank?,
65
+ 'Could not verify this functionality when requiresAccessToken is not provided'
66
+ omit_if requires_access_token == 'false',
67
+ 'Could not verify this functionality when requiresAccessToken is false'
68
+ skip_if bearer_token.blank?, 'Could not verify this functionality when Bearer Token is not provided'
69
+
70
+ get(bulk_download_url, headers: { accept: 'application/fhir+ndjson' })
71
+ assert_response_status([400, 401])
72
+ end
73
+ end
74
+
75
+ test do
76
+ title 'Patient resources returned conform to the US Core Patient Profile'
77
+ description <<~DESCRIPTION
78
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This#{' '}
79
+ includes checking for missing data elements and value set verification.
80
+ DESCRIPTION
81
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient'
82
+
83
+ include BulkExportValidationTester
84
+
85
+ def resource_type
86
+ 'Patient'
87
+ end
88
+
89
+ run do
90
+ perform_bulk_export_validation
91
+ end
92
+ end
93
+
94
+ test do
95
+ title 'Group export has at least two patients'
96
+ description <<~DESCRIPTION
97
+ This test verifies that the Group export has at least two patients.
98
+ DESCRIPTION
99
+ # link 'http://ndjson.org/'
100
+
101
+ include BulkExportValidationTester
102
+
103
+ run do
104
+ skip 'No Patient resources processed from bulk data export.' unless patient_ids_seen.present?
105
+
106
+ assert patient_ids_seen.length >= BulkExportValidationTester::MIN_RESOURCE_COUNT,
107
+ 'Bulk data export did not have multiple Patient resources.'
108
+ end
109
+ end
110
+
111
+ test do
112
+ title 'Patient IDs match those expected in Group'
113
+ description <<~DESCRIPTION
114
+ This test checks that the list of patient IDs that are expected match those that are returned.
115
+ If no patient ids are provided to the test, then the test will be omitted.
116
+ DESCRIPTION
117
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient'
118
+
119
+ include BulkExportValidationTester
120
+
121
+ run do
122
+ omit 'No patient ids were given.' unless bulk_patient_ids_in_group.present?
123
+
124
+ expected_ids = Set.new(bulk_patient_ids_in_group.split(',').map(&:strip))
125
+
126
+ assert patient_ids_seen.sort == expected_ids.sort,
127
+ "Mismatch between patient ids seen (#{patient_ids_seen.to_a.join(', ')}) " \
128
+ "and patient ids expected (#{bulk_patient_ids_in_group})"
129
+ end
130
+ end
131
+
132
+ test do
133
+ title 'AllergyIntolerance resources returned conform to the US Core AllergyIntolerance Profile'
134
+ description <<~DESCRIPTION
135
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
136
+ DESCRIPTION
137
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance'
138
+
139
+ include BulkExportValidationTester
140
+
141
+ def resource_type
142
+ 'AllergyIntolerance'
143
+ end
144
+
145
+ run do
146
+ perform_bulk_export_validation
147
+ end
148
+ end
149
+
150
+ test do
151
+ title 'CarePlan resources returned conform to the US Core CarePlan Profile'
152
+ description <<~DESCRIPTION
153
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
154
+ DESCRIPTION
155
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan'
156
+
157
+ include BulkExportValidationTester
158
+
159
+ def resource_type
160
+ 'CarePlan'
161
+ end
162
+
163
+ run do
164
+ perform_bulk_export_validation
165
+ end
166
+ end
167
+
168
+ test do
169
+ title 'CareTeam resources returned conform to the US Core CareTeam Profile'
170
+ description <<~DESCRIPTION
171
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
172
+ DESCRIPTION
173
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam'
174
+
175
+ include BulkExportValidationTester
176
+
177
+ def resource_type
178
+ 'CareTeam'
179
+ end
180
+
181
+ run do
182
+ perform_bulk_export_validation
183
+ end
184
+ end
185
+
186
+ test do
187
+ title 'Condition resources returned conform to the US Core Condition Profile'
188
+ description <<~DESCRIPTION
189
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
190
+ DESCRIPTION
191
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition'
192
+
193
+ include BulkExportValidationTester
194
+
195
+ def resource_type
196
+ 'Condition'
197
+ end
198
+
199
+ run do
200
+ perform_bulk_export_validation
201
+ end
202
+ end
203
+
204
+ test do
205
+ title 'Device resources returned conform to the US Core Implantable Device Profile'
206
+ description <<~DESCRIPTION
207
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
208
+ DESCRIPTION
209
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-implantable-device'
210
+
211
+ include BulkExportValidationTester
212
+
213
+ def resource_type
214
+ 'Device'
215
+ end
216
+
217
+ run do
218
+ perform_bulk_export_validation
219
+ end
220
+ end
221
+
222
+ test do
223
+ title 'DiagnosticReport resources returned conform to the US Core DiagnosticReport Profile'
224
+ description <<~DESCRIPTION
225
+ This test verifies that the resources returned from bulk data export conform to the following US Core profiles. This includes checking for missing data elements and value set verification.
226
+
227
+ * http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-lab
228
+ * http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note
229
+ DESCRIPTION
230
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-l'
231
+
232
+ include BulkExportValidationTester
233
+
234
+ def resource_type
235
+ 'DiagnosticReport'
236
+ end
237
+
238
+ run do
239
+ perform_bulk_export_validation
240
+ end
241
+ end
242
+
243
+ test do
244
+ title 'DocumentReference resources returned conform to the US Core DocumentReference Profile'
245
+ description <<~DESCRIPTION
246
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
247
+ DESCRIPTION
248
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference'
249
+
250
+ include BulkExportValidationTester
251
+
252
+ def resource_type
253
+ 'DocumentReference'
254
+ end
255
+
256
+ run do
257
+ perform_bulk_export_validation
258
+ end
259
+ end
260
+
261
+ test do
262
+ title 'Goal resources returned conform to the US Core Goal Profile'
263
+ description <<~DESCRIPTION
264
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
265
+ DESCRIPTION
266
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal'
267
+
268
+ include BulkExportValidationTester
269
+
270
+ def resource_type
271
+ 'Goal'
272
+ end
273
+
274
+ run do
275
+ perform_bulk_export_validation
276
+ end
277
+ end
278
+
279
+ test do
280
+ title 'Immunization resources returned conform to the US Core Immunization Profile'
281
+ description <<~DESCRIPTION
282
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
283
+ DESCRIPTION
284
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-Immunization'
285
+
286
+ include BulkExportValidationTester
287
+
288
+ def resource_type
289
+ 'Immunization'
290
+ end
291
+
292
+ run do
293
+ perform_bulk_export_validation
294
+ end
295
+ end
296
+
297
+ test do
298
+ title 'MedicationRequest resources returned conform to the US Core MedicationRequest Profile'
299
+ description <<~DESCRIPTION
300
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
301
+ DESCRIPTION
302
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest'
303
+
304
+ include BulkExportValidationTester
305
+
306
+ def resource_type
307
+ 'MedicationRequest'
308
+ end
309
+
310
+ run do
311
+ perform_bulk_export_validation
312
+ end
313
+ end
314
+
315
+ test do
316
+ title 'Observation resources returned conform to the US Core Observation Profile'
317
+ description <<~DESCRIPTION
318
+ This test verifies that the resources returned from bulk data
319
+ export conform to the following US Core profiles. This includes
320
+ checking for missing data elements and value set verification.
321
+
322
+ * http://hl7.org/fhir/us/core/StructureDefinition/pediatric-bmi-for-age
323
+ * http://hl7.org/fhir/us/core/StructureDefinition/pediatric-weight-for-height
324
+ * http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab
325
+ * http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry
326
+ * http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus
327
+ * http://hl7.org/fhir/us/core/StructureDefinition/head-occipital-frontal-circumference-percentile
328
+ * http://hl7.org/fhir/StructureDefinition/bp
329
+ * http://hl7.org/fhir/StructureDefinition/bodyheight
330
+ * http://hl7.org/fhir/StructureDefinition/bodytemp
331
+ * http://hl7.org/fhir/StructureDefinition/bodyweight
332
+ * http://hl7.org/fhir/StructureDefinition/heartrate
333
+ * http://hl7.org/fhir/StructureDefinition/resprate
334
+ DESCRIPTION
335
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab'
336
+
337
+ include BulkExportValidationTester
338
+
339
+ def resource_type
340
+ 'Observation'
341
+ end
342
+
343
+ run do
344
+ perform_bulk_export_validation
345
+ end
346
+ end
347
+
348
+ test do
349
+ title 'Procedure resources returned conform to the US Core Procedure Profile'
350
+ description <<~DESCRIPTION
351
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
352
+ DESCRIPTION
353
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure'
354
+
355
+ include BulkExportValidationTester
356
+
357
+ def resource_type
358
+ 'Procedure'
359
+ end
360
+
361
+ run do
362
+ perform_bulk_export_validation
363
+ end
364
+ end
365
+
366
+ test do
367
+ title 'Encounter resources returned conform to the US Core Encounter Profile'
368
+ description <<~DESCRIPTION
369
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
370
+ DESCRIPTION
371
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter'
372
+
373
+ include BulkExportValidationTester
374
+
375
+ def resource_type
376
+ 'Encounter'
377
+ end
378
+
379
+ run do
380
+ perform_bulk_export_validation
381
+ end
382
+ end
383
+
384
+ test do
385
+ title 'Organization resources returned conform to the US Core Organization Profile'
386
+ description <<~DESCRIPTION
387
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
388
+ DESCRIPTION
389
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization'
390
+
391
+ include BulkExportValidationTester
392
+
393
+ def resource_type
394
+ 'Organization'
395
+ end
396
+
397
+ run do
398
+ perform_bulk_export_validation
399
+ end
400
+ end
401
+
402
+ test do
403
+ title 'Practitioner resources returned conform to the US Core Practitioner Profile'
404
+ description <<~DESCRIPTION
405
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
406
+ DESCRIPTION
407
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner'
408
+
409
+ include BulkExportValidationTester
410
+
411
+ def resource_type
412
+ 'Practitioner'
413
+ end
414
+
415
+ run do
416
+ perform_bulk_export_validation
417
+ end
418
+ end
419
+
420
+ test do
421
+ title 'Provenance resources returned conform to the US Core Provenance Profile'
422
+ description <<~DESCRIPTION
423
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
424
+ DESCRIPTION
425
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-provenance'
426
+
427
+ include BulkExportValidationTester
428
+
429
+ def resource_type
430
+ 'Provenance'
431
+ end
432
+
433
+ run do
434
+ perform_bulk_export_validation
435
+ end
436
+ end
437
+
438
+ test do
439
+ title 'Location resources returned conform to the US Core Location Profile'
440
+ description <<~DESCRIPTION
441
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
442
+ DESCRIPTION
443
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-location'
444
+
445
+ include BulkExportValidationTester
446
+
447
+ def resource_type
448
+ 'Location'
449
+ end
450
+
451
+ run do
452
+ perform_bulk_export_validation
453
+ end
454
+ end
455
+
456
+ test do
457
+ title 'Medication resources returned conform to the US Core Medication Profile'
458
+ description <<~DESCRIPTION
459
+ This test verifies that the resources returned from bulk data export conform to the US Core profiles. This includes checking for missing data elements and value set verification.
460
+ DESCRIPTION
461
+ # link 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication'
462
+
463
+ include BulkExportValidationTester
464
+
465
+ def resource_type
466
+ 'Medication'
467
+ end
468
+
469
+ run do
470
+ perform_bulk_export_validation
471
+ end
472
+ end
473
+ end
474
+ end
@@ -0,0 +1,58 @@
1
+ {
2
+ "keys":
3
+ [{
4
+ "kty": "EC",
5
+ "crv": "P-384",
6
+ "x": "JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C",
7
+ "y": "bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw",
8
+ "use": "sig",
9
+ "key_ops": [
10
+ "verify"
11
+ ],
12
+ "ext": true,
13
+ "kid": "4b49a739d1eb115b3225f4cf9beb6d1b",
14
+ "alg": "ES384"
15
+ },
16
+ {
17
+ "kty": "EC",
18
+ "crv": "P-384",
19
+ "d": "kDkn55p7gryKk2tj6z2ij7ExUnhi0ngxXosvqa73y7epwgthFqaJwApmiXXU2yhK",
20
+ "x": "JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C",
21
+ "y": "bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw",
22
+ "key_ops": [
23
+ "sign"
24
+ ],
25
+ "ext": true,
26
+ "kid": "4b49a739d1eb115b3225f4cf9beb6d1b",
27
+ "alg": "ES384"
28
+ },
29
+ {
30
+ "kty": "RSA",
31
+ "alg": "RS384",
32
+ "n": "vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw",
33
+ "e": "AQAB",
34
+ "use": "sig",
35
+ "key_ops": [
36
+ "verify"
37
+ ],
38
+ "ext": true,
39
+ "kid": "b41528b6f37a9500edb8a905a595bdd7"
40
+ },
41
+ {
42
+ "kty": "RSA",
43
+ "alg": "RS384",
44
+ "n": "vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw",
45
+ "e": "AQAB",
46
+ "d": "rriV9GYimi5by7TOW4xNh6_gYBHVRDBsft2OFF8qapdVHt2GNuRDDxc_B6ga6TY2Enh2MLKLTr1dD3W4FIdTCJiMerrorp07FJS7nJEMgWQDxrfgkX4_EqrhW42L5d4vypYnRXEEW6u4gzkx5uFOkdvJBIK7CsIdSaBFYhochnynNgvbKWasi4rl2hayEH8tdf3B7Z6OIH9alspBTaq3j_zJt_KkrpYEzIUb4UgALB5NTWn5YKr0Avk_asOg8YfjViQwO9ASGaWjQeJ2Rx8OEQwBMQHSDMCSWNiWmYOu9PcwSZFc1vLxqzyIM8QrQSJHCCMo_wGYgke_r0CLeONHEQ",
47
+ "p": "5hH_QApWGeobRi1n7XbMfJYohB8K3JDPa0MspfplHpJ-17JiGG2sNoBdBcpaPRf9OX48P8VqO0qrSSRAk-I-uO6OO9BHbIukXJILqnY2JmurYzbcYbt5FVbknlHRJojkF6-7sFBazpueUlOnXCw7X7Z_SkfNE4QX5Ejm2Zm5mek",
48
+ "q": "06bZz7c7K9s1-aEZsxYnLJ9eTpKlt1tIBDA_LwIh5W3w259pes2kUtimbnkyOf-V2ZIERsFCh5s-S9IOEMvAIa6M5j9GW1ILNT7AcHIUfcyFcH-FF8BU_KJdRP5PXnIXFdYcylvsdoIdchy1AaUIzyiKRCU3HBYI75hez0l_F2c",
49
+ "dp": "h_sVIXW6hCCRND48EedIX06k7conMkxIu_39ErDXOWWeoMAnKIcR5TijQnviL__QxD1vQMXezuKIMHfDz2RGbClbWdD1lhtG7wvG515tDPJQXxia0wzqOQmdoFF9S8hXAAT26vPjaAAkaEZXQaxG_4Au5elgNWu6b0wDXZN1Vpk",
50
+ "dq": "GqS0YpuUTU8JGmWXUJ4HTGy7eHSpe8134V8ZdRd1oOYYHe2RX64nc25mdR24nuh3uq3Q7_9AGsYGL5E_yAl-JD9O6WUpvDE1y_wcSYty3Os0GRdUb8r8Z9kgmKDS6Pa_xTXw5eBwgfKbNlQ6zPwzgbB-x1lP-K8lbNPni3ybDR0",
51
+ "qi": "cqQfoi0sM5Su8ZOhznmdWrDIQB28H6fBKiabgaIKkbWZV4e0nwFvLquHjPOvv4Ao8iEGU5dyhvg0n5BKYPi-4mp6M6OA1sy0NrTr7EsKSYGyu2pBq9rw4oAYTM2LXKg6K-awgUUlkc451IwxHBAe15PWCBM3kvLQeijNid0Vz5I",
52
+ "key_ops": [
53
+ "sign"
54
+ ],
55
+ "ext": true,
56
+ "kid": "b41528b6f37a9500edb8a905a595bdd7"
57
+ }]
58
+ }