{"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/agent/mDLMdoc.ts","../src/functions/index.ts","../src/types/ImDLMdoc.ts"],"sourcesContent":["{\n  \"IEBSIAuthorizationClient\": {\n    \"components\": {\n      \"schemas\": {\n        \"EBSIAuthAccessTokenGetArgs\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"vc\": {\n              \"type\": \"string\"\n            },\n            \"definitionId\": {\n              \"$ref\": \"#/components/schemas/ScopeByDefinition\"\n            },\n            \"did\": {\n              \"type\": \"string\"\n            },\n            \"kid\": {\n              \"type\": \"string\"\n            },\n            \"scope\": {\n              \"$ref\": \"#/components/schemas/EBSIScope\"\n            },\n            \"apiOpts\": {\n              \"$ref\": \"#/components/schemas/Optional<ApiOpts,\\\"version\\\">\"\n            }\n          },\n          \"required\": [\"vc\", \"definitionId\", \"did\", \"kid\", \"scope\", \"apiOpts\"]\n        },\n        \"ScopeByDefinition\": {\n          \"type\": \"string\",\n          \"enum\": [\"didr_invite\", \"didr_write\", \"tir_invite\", \"tir_write\", \"timestamp_write\", \"tnt_authorise\", \"tnt_create\", \"tnt_write\"]\n        },\n        \"EBSIScope\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"didr_write\",\n            \"didr_invite\",\n            \"tir_write\",\n            \"tir_invite\",\n            \"timestamp_write\",\n            \"tnt_authorise\",\n            \"tnt_create\",\n            \"tnt_write\",\n            \"did_authn\"\n          ],\n          \"description\": \"The OpenID scope\"\n        },\n        \"Optional<ApiOpts,\\\"version\\\">\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"environment\": {\n              \"$ref\": \"#/components/schemas/EbsiEnvironment\"\n            },\n            \"version\": {\n              \"$ref\": \"#/components/schemas/EbsiApiVersion\"\n            }\n          }\n        },\n        \"EbsiEnvironment\": {\n          \"type\": \"string\",\n          \"enum\": [\"pilot\", \"conformance\", \"conformance-test\"]\n        },\n        \"EbsiApiVersion\": {\n          \"type\": \"string\",\n          \"enum\": [\"v3\", \"v4\", \"v5\"]\n        },\n        \"GetAccessTokenResponse\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/components/schemas/GetAccessTokenSuccessResponse\"\n            },\n            {\n              \"$ref\": \"#/components/schemas/ExceptionResponse\"\n            }\n          ]\n        },\n        \"GetAccessTokenSuccessResponse\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"access_token\": {\n              \"type\": \"string\"\n            },\n            \"token_type\": {\n              \"$ref\": \"#/components/schemas/TokenType\"\n            },\n            \"expires_in\": {\n              \"type\": \"number\"\n            },\n            \"scope\": {\n              \"$ref\": \"#/components/schemas/EBSIScope\"\n            },\n            \"id_token\": {\n              \"type\": \"string\"\n            },\n            \"apiOpts\": {\n              \"$ref\": \"#/components/schemas/ApiOpts\"\n            }\n          },\n          \"required\": [\"access_token\", \"token_type\", \"scope\", \"id_token\", \"apiOpts\"]\n        },\n        \"TokenType\": {\n          \"type\": \"string\",\n          \"const\": \"Bearer\"\n        },\n        \"ApiOpts\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"environment\": {\n              \"$ref\": \"#/components/schemas/EbsiEnvironment\"\n            },\n            \"version\": {\n              \"$ref\": \"#/components/schemas/EbsiApiVersion\"\n            }\n          },\n          \"required\": [\"version\"]\n        },\n        \"ExceptionResponse\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"type\": {\n              \"type\": \"string\"\n            },\n            \"title\": {\n              \"type\": \"string\"\n            },\n            \"status\": {\n              \"type\": \"number\"\n            },\n            \"detail\": {\n              \"type\": \"string\"\n            },\n            \"instance\": {\n              \"type\": \"string\"\n            }\n          }\n        },\n        \"GetOIDProviderJwksResponse\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/components/schemas/GetOIDProviderJwksSuccessResponse\"\n            },\n            {\n              \"$ref\": \"#/components/schemas/ExceptionResponse\"\n            }\n          ]\n        },\n        \"GetOIDProviderJwksSuccessResponse\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"keys\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/JWK\"\n              }\n            }\n          },\n          \"required\": [\"keys\"]\n        },\n        \"JWK\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"alg\": {\n              \"type\": \"string\",\n              \"description\": \"JWK \\\"alg\\\" (Algorithm) Parameter.\"\n            },\n            \"crv\": {\n              \"type\": \"string\"\n            },\n            \"d\": {\n              \"type\": \"string\"\n            },\n            \"dp\": {\n              \"type\": \"string\"\n            },\n            \"dq\": {\n              \"type\": \"string\"\n            },\n            \"e\": {\n              \"type\": \"string\"\n            },\n            \"ext\": {\n              \"type\": \"boolean\",\n              \"description\": \"JWK \\\"ext\\\" (Extractable) Parameter.\"\n            },\n            \"k\": {\n              \"type\": \"string\"\n            },\n            \"key_ops\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"description\": \"JWK \\\"key_ops\\\" (Key Operations) Parameter.\"\n            },\n            \"kid\": {\n              \"type\": \"string\",\n              \"description\": \"JWK \\\"kid\\\" (Key ID) Parameter.\"\n            },\n            \"kty\": {\n              \"type\": \"string\",\n              \"description\": \"JWK \\\"kty\\\" (Key Type) Parameter.\"\n            },\n            \"n\": {\n              \"type\": \"string\"\n            },\n            \"oth\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"object\",\n                \"properties\": {\n                  \"d\": {\n                    \"type\": \"string\"\n                  },\n                  \"r\": {\n                    \"type\": \"string\"\n                  },\n                  \"t\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            },\n            \"p\": {\n              \"type\": \"string\"\n            },\n            \"q\": {\n              \"type\": \"string\"\n            },\n            \"qi\": {\n              \"type\": \"string\"\n            },\n            \"use\": {\n              \"type\": \"string\",\n              \"description\": \"JWK \\\"use\\\" (Public Key Use) Parameter.\"\n            },\n            \"x\": {\n              \"type\": \"string\"\n            },\n            \"y\": {\n              \"type\": \"string\"\n            },\n            \"x5c\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"description\": \"JWK \\\"x5c\\\" (X.509 Certificate Chain) Parameter.\"\n            },\n            \"x5t\": {\n              \"type\": \"string\",\n              \"description\": \"JWK \\\"x5t\\\" (X.509 Certificate SHA-1 Thumbprint) Parameter.\"\n            },\n            \"x5t#S256\": {\n              \"type\": \"string\",\n              \"description\": \"\\\"x5t#S256\\\" (X.509 Certificate SHA-256 Thumbprint) Parameter.\"\n            },\n            \"x5u\": {\n              \"type\": \"string\",\n              \"description\": \"JWK \\\"x5u\\\" (X.509 URL) Parameter.\"\n            }\n          },\n          \"additionalProperties\": {},\n          \"description\": \"JSON Web Key ( {@link https://www.rfc-editor.org/rfc/rfc7517 | JWK } ). \\\"RSA\\\", \\\"EC\\\", \\\"OKP\\\", and \\\"oct\\\" key types are supported.\"\n        },\n        \"GetPresentationDefinitionArgs\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"scope\": {\n              \"$ref\": \"#/components/schemas/EBSIScope\"\n            },\n            \"apiOpts\": {\n              \"$ref\": \"#/components/schemas/ApiOpts\"\n            }\n          },\n          \"required\": [\"scope\"]\n        },\n        \"GetPresentationDefinitionResponse\": {\n          \"$ref\": \"#/components/schemas/GetPresentationDefinitionSuccessResponse\"\n        },\n        \"GetPresentationDefinitionSuccessResponse\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"format\": {\n              \"$ref\": \"#/components/schemas/Format\"\n            },\n            \"id\": {\n              \"type\": \"string\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            },\n            \"purpose\": {\n              \"type\": \"string\"\n            },\n            \"submission_requirements\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/SubmissionRequirement\"\n              }\n            },\n            \"input_descriptors\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/InputDescriptorV2\"\n              }\n            },\n            \"frame\": {\n              \"type\": \"object\"\n            }\n          },\n          \"required\": [\"id\", \"input_descriptors\"]\n        },\n        \"Format\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"jwt\": {\n              \"$ref\": \"#/components/schemas/JwtObject\"\n            },\n            \"jwt_vc\": {\n              \"$ref\": \"#/components/schemas/JwtObject\"\n            },\n            \"jwt_vc_json\": {\n              \"$ref\": \"#/components/schemas/JwtObject\"\n            },\n            \"jwt_vp\": {\n              \"$ref\": \"#/components/schemas/JwtObject\"\n            },\n            \"jwt_vp_json\": {\n              \"$ref\": \"#/components/schemas/JwtObject\"\n            },\n            \"ldp\": {\n              \"$ref\": \"#/components/schemas/LdpObject\"\n            },\n            \"ldp_vc\": {\n              \"$ref\": \"#/components/schemas/LdpObject\"\n            },\n            \"ldp_vp\": {\n              \"$ref\": \"#/components/schemas/LdpObject\"\n            },\n            \"di\": {\n              \"$ref\": \"#/components/schemas/DiObject\"\n            },\n            \"di_vc\": {\n              \"$ref\": \"#/components/schemas/DiObject\"\n            },\n            \"di_vp\": {\n              \"$ref\": \"#/components/schemas/DiObject\"\n            },\n            \"vc+sd-jwt\": {\n              \"$ref\": \"#/components/schemas/SdJwtObject\"\n            }\n          }\n        },\n        \"JwtObject\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"alg\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            }\n          },\n          \"required\": [\"alg\"]\n        },\n        \"LdpObject\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"proof_type\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            }\n          },\n          \"required\": [\"proof_type\"]\n        },\n        \"DiObject\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"proof_type\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"cryptosuite\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            }\n          },\n          \"required\": [\"proof_type\", \"cryptosuite\"]\n        },\n        \"SdJwtObject\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"sd-jwt_alg_values\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"kb-jwt_alg_values\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            }\n          }\n        },\n        \"SubmissionRequirement\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"name\": {\n              \"type\": \"string\"\n            },\n            \"purpose\": {\n              \"type\": \"string\"\n            },\n            \"rule\": {\n              \"$ref\": \"#/components/schemas/Rules\"\n            },\n            \"count\": {\n              \"type\": \"number\"\n            },\n            \"min\": {\n              \"type\": \"number\"\n            },\n            \"max\": {\n              \"type\": \"number\"\n            },\n            \"from\": {\n              \"type\": \"string\"\n            },\n            \"from_nested\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/SubmissionRequirement\"\n              }\n            }\n          },\n          \"required\": [\"rule\"]\n        },\n        \"Rules\": {\n          \"type\": \"string\",\n          \"enum\": [\"all\", \"pick\"]\n        },\n        \"InputDescriptorV2\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"id\": {\n              \"type\": \"string\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            },\n            \"purpose\": {\n              \"type\": \"string\"\n            },\n            \"format\": {\n              \"$ref\": \"#/components/schemas/Format\"\n            },\n            \"group\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"issuance\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Issuance\"\n              }\n            },\n            \"constraints\": {\n              \"$ref\": \"#/components/schemas/ConstraintsV2\"\n            }\n          },\n          \"required\": [\"id\", \"constraints\"]\n        },\n        \"Issuance\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"manifest\": {\n              \"type\": \"string\"\n            }\n          },\n          \"additionalProperties\": {}\n        },\n        \"ConstraintsV2\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"limit_disclosure\": {\n              \"$ref\": \"#/components/schemas/Optionality\"\n            },\n            \"statuses\": {\n              \"$ref\": \"#/components/schemas/Statuses\"\n            },\n            \"fields\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/FieldV2\"\n              }\n            },\n            \"subject_is_issuer\": {\n              \"$ref\": \"#/components/schemas/Optionality\"\n            },\n            \"is_holder\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/HolderSubject\"\n              }\n            },\n            \"same_subject\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/HolderSubject\"\n              }\n            }\n          }\n        },\n        \"Optionality\": {\n          \"type\": \"string\",\n          \"enum\": [\"required\", \"preferred\"]\n        },\n        \"Statuses\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"active\": {\n              \"$ref\": \"#/components/schemas/PdStatus\"\n            },\n            \"suspended\": {\n              \"$ref\": \"#/components/schemas/PdStatus\"\n            },\n            \"revoked\": {\n              \"$ref\": \"#/components/schemas/PdStatus\"\n            }\n          }\n        },\n        \"PdStatus\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"directive\": {\n              \"$ref\": \"#/components/schemas/Directives\"\n            }\n          }\n        },\n        \"Directives\": {\n          \"type\": \"string\",\n          \"enum\": [\"required\", \"allowed\", \"disallowed\"]\n        },\n        \"FieldV2\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"id\": {\n              \"type\": \"string\"\n            },\n            \"path\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"purpose\": {\n              \"type\": \"string\"\n            },\n            \"filter\": {\n              \"$ref\": \"#/components/schemas/FilterV2\"\n            },\n            \"predicate\": {\n              \"$ref\": \"#/components/schemas/Optionality\"\n            },\n            \"name\": {\n              \"type\": \"string\"\n            },\n            \"optional\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"required\": [\"path\"]\n        },\n        \"FilterV2\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"const\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberStringBoolean\"\n            },\n            \"enum\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OneOfNumberStringBoolean\"\n              }\n            },\n            \"exclusiveMinimum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"exclusiveMaximum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"format\": {\n              \"type\": \"string\"\n            },\n            \"formatMaximum\": {\n              \"type\": \"string\"\n            },\n            \"formatMinimum\": {\n              \"type\": \"string\"\n            },\n            \"formatExclusiveMaximum\": {\n              \"type\": \"string\"\n            },\n            \"formatExclusiveMinimum\": {\n              \"type\": \"string\"\n            },\n            \"minLength\": {\n              \"type\": \"number\"\n            },\n            \"maxLength\": {\n              \"type\": \"number\"\n            },\n            \"minimum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"maximum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"not\": {\n              \"type\": \"object\"\n            },\n            \"pattern\": {\n              \"type\": \"string\"\n            },\n            \"type\": {\n              \"type\": \"string\"\n            },\n            \"contains\": {\n              \"$ref\": \"#/components/schemas/FilterV2Base\"\n            },\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FilterV2BaseItems\"\n            }\n          },\n          \"required\": [\"type\"]\n        },\n        \"OneOfNumberStringBoolean\": {\n          \"type\": [\"boolean\", \"number\", \"string\"]\n        },\n        \"OneOfNumberString\": {\n          \"type\": [\"number\", \"string\"]\n        },\n        \"FilterV2Base\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"const\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberStringBoolean\"\n            },\n            \"enum\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OneOfNumberStringBoolean\"\n              }\n            },\n            \"exclusiveMinimum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"exclusiveMaximum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"format\": {\n              \"type\": \"string\"\n            },\n            \"formatMaximum\": {\n              \"type\": \"string\"\n            },\n            \"formatMinimum\": {\n              \"type\": \"string\"\n            },\n            \"formatExclusiveMaximum\": {\n              \"type\": \"string\"\n            },\n            \"formatExclusiveMinimum\": {\n              \"type\": \"string\"\n            },\n            \"minLength\": {\n              \"type\": \"number\"\n            },\n            \"maxLength\": {\n              \"type\": \"number\"\n            },\n            \"minimum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"maximum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"not\": {\n              \"type\": \"object\"\n            },\n            \"pattern\": {\n              \"type\": \"string\"\n            },\n            \"type\": {\n              \"type\": \"string\"\n            },\n            \"contains\": {\n              \"$ref\": \"#/components/schemas/FilterV2Base\"\n            },\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FilterV2BaseItems\"\n            }\n          }\n        },\n        \"FilterV2BaseItems\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"const\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberStringBoolean\"\n            },\n            \"enum\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OneOfNumberStringBoolean\"\n              }\n            },\n            \"exclusiveMinimum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"exclusiveMaximum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"format\": {\n              \"type\": \"string\"\n            },\n            \"formatMaximum\": {\n              \"type\": \"string\"\n            },\n            \"formatMinimum\": {\n              \"type\": \"string\"\n            },\n            \"formatExclusiveMaximum\": {\n              \"type\": \"string\"\n            },\n            \"formatExclusiveMinimum\": {\n              \"type\": \"string\"\n            },\n            \"minLength\": {\n              \"type\": \"number\"\n            },\n            \"maxLength\": {\n              \"type\": \"number\"\n            },\n            \"minimum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"maximum\": {\n              \"$ref\": \"#/components/schemas/OneOfNumberString\"\n            },\n            \"not\": {\n              \"type\": \"object\"\n            },\n            \"pattern\": {\n              \"type\": \"string\"\n            },\n            \"type\": {\n              \"type\": \"string\"\n            },\n            \"contains\": {\n              \"$ref\": \"#/components/schemas/FilterV2Base\"\n            },\n            \"items\": {\n              \"$ref\": \"#/components/schemas/FilterV2BaseItems\"\n            }\n          },\n          \"required\": [\"type\"]\n        },\n        \"HolderSubject\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"field_id\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"directive\": {\n              \"$ref\": \"#/components/schemas/Optionality\"\n            }\n          },\n          \"required\": [\"field_id\", \"directive\"]\n        },\n        \"GetOIDProviderMetadataResponse\": {\n          \"$ref\": \"#/components/schemas/EbsiOpenIDMetadata\"\n        },\n        \"EbsiOpenIDMetadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\",\n              \"properties\": {\n                \"presentation_definition_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"authorization_endpoint\": {\n                  \"anyOf\": [\n                    {\n                      \"$ref\": \"#/components/schemas/Schema\"\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"issuer\": {\n                  \"anyOf\": [\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseIss\"\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"response_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ResponseType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseType\"\n                    }\n                  ]\n                },\n                \"scopes_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/Scope\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/Scope\"\n                    }\n                  ]\n                },\n                \"subject_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SubjectType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SubjectType\"\n                    }\n                  ]\n                },\n                \"id_token_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"request_object_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"subject_syntax_types_supported\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"string\"\n                  }\n                },\n                \"token_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"userinfo_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"jwks_uri\": {\n                  \"type\": \"string\"\n                },\n                \"registration_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"response_modes_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ResponseMode\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseMode\"\n                    }\n                  ]\n                },\n                \"grant_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/GrantType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/GrantType\"\n                    }\n                  ]\n                },\n                \"acr_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/AuthenticationContextReferences\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/AuthenticationContextReferences\"\n                    }\n                  ]\n                },\n                \"id_token_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"id_token_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) supported by the OP for the ID Token to encode the Claims in a JWT [JWT].\"\n                },\n                \"userinfo_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"userinfo_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"userinfo_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) [JWA] supported by the UserInfo Endpoint to encode the Claims in a JWT [JWT].\"\n                },\n                \"request_object_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"request_object_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) supported by the OP for Request Objects. These algorithms are used both when the Request Object is passed by value and when it is passed by reference.\"\n                },\n                \"token_endpoint_auth_methods_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/TokenEndpointAuthMethod\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/TokenEndpointAuthMethod\"\n                    }\n                  ]\n                },\n                \"token_endpoint_auth_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"display_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {}\n                    },\n                    {}\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the display parameter values that the OpenID Provider supports. These values are described in Section 3.1.2.1 of OpenID Connect Core 1.0 [OpenID.Core].\"\n                },\n                \"claim_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ClaimType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ClaimType\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the Claim Types that the OpenID Provider supports. These Claim Types are described in Section 5.6 of OpenID Connect Core 1.0 [OpenID.Core]. Values defined by this specification are normal, aggregated, and distributed. If omitted, the implementation supports only normal Claims.\"\n                },\n                \"claims_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply values for. Note that for privacy or other reasons, this might not be an exhaustive list.\"\n                },\n                \"service_documentation\": {\n                  \"type\": \"string\"\n                },\n                \"claims_locales_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"ui_locales_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"claims_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"request_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"request_uri_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"require_request_uri_registration\": {\n                  \"type\": \"boolean\"\n                },\n                \"op_policy_uri\": {\n                  \"type\": \"string\"\n                },\n                \"op_tos_uri\": {\n                  \"type\": \"string\"\n                },\n                \"client_id\": {\n                  \"type\": \"string\"\n                },\n                \"redirect_uris\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"string\"\n                  }\n                },\n                \"client_name\": {\n                  \"type\": \"string\"\n                },\n                \"token_endpoint_auth_method\": {\n                  \"type\": \"string\"\n                },\n                \"application_type\": {\n                  \"type\": \"string\"\n                },\n                \"response_types\": {\n                  \"type\": \"string\"\n                },\n                \"grant_types\": {\n                  \"type\": \"string\"\n                },\n                \"vp_formats\": {\n                  \"$ref\": \"#/components/schemas/Format\"\n                }\n              }\n            },\n            {\n              \"type\": \"object\",\n              \"properties\": {\n                \"presentation_definition_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"authorization_endpoint\": {\n                  \"anyOf\": [\n                    {\n                      \"$ref\": \"#/components/schemas/Schema\"\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"issuer\": {\n                  \"anyOf\": [\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseIss\"\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"response_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ResponseType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseType\"\n                    }\n                  ]\n                },\n                \"scopes_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/Scope\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/Scope\"\n                    }\n                  ]\n                },\n                \"subject_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SubjectType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SubjectType\"\n                    }\n                  ]\n                },\n                \"id_token_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"request_object_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"subject_syntax_types_supported\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"string\"\n                  }\n                },\n                \"token_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"userinfo_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"jwks_uri\": {\n                  \"type\": \"string\"\n                },\n                \"registration_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"response_modes_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ResponseMode\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseMode\"\n                    }\n                  ]\n                },\n                \"grant_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/GrantType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/GrantType\"\n                    }\n                  ]\n                },\n                \"acr_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/AuthenticationContextReferences\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/AuthenticationContextReferences\"\n                    }\n                  ]\n                },\n                \"id_token_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"id_token_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) supported by the OP for the ID Token to encode the Claims in a JWT [JWT].\"\n                },\n                \"userinfo_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"userinfo_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"userinfo_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) [JWA] supported by the UserInfo Endpoint to encode the Claims in a JWT [JWT].\"\n                },\n                \"request_object_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"request_object_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) supported by the OP for Request Objects. These algorithms are used both when the Request Object is passed by value and when it is passed by reference.\"\n                },\n                \"token_endpoint_auth_methods_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/TokenEndpointAuthMethod\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/TokenEndpointAuthMethod\"\n                    }\n                  ]\n                },\n                \"token_endpoint_auth_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"display_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {}\n                    },\n                    {}\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the display parameter values that the OpenID Provider supports. These values are described in Section 3.1.2.1 of OpenID Connect Core 1.0 [OpenID.Core].\"\n                },\n                \"claim_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ClaimType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ClaimType\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the Claim Types that the OpenID Provider supports. These Claim Types are described in Section 5.6 of OpenID Connect Core 1.0 [OpenID.Core]. Values defined by this specification are normal, aggregated, and distributed. If omitted, the implementation supports only normal Claims.\"\n                },\n                \"claims_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply values for. Note that for privacy or other reasons, this might not be an exhaustive list.\"\n                },\n                \"service_documentation\": {\n                  \"type\": \"string\"\n                },\n                \"claims_locales_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"ui_locales_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"claims_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"request_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"request_uri_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"require_request_uri_registration\": {\n                  \"type\": \"boolean\"\n                },\n                \"op_policy_uri\": {\n                  \"type\": \"string\"\n                },\n                \"op_tos_uri\": {\n                  \"type\": \"string\"\n                },\n                \"client_id\": {\n                  \"type\": \"string\"\n                },\n                \"redirect_uris\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"string\"\n                  }\n                },\n                \"client_name\": {\n                  \"type\": \"string\"\n                },\n                \"token_endpoint_auth_method\": {\n                  \"type\": \"string\"\n                },\n                \"application_type\": {\n                  \"type\": \"string\"\n                },\n                \"response_types\": {\n                  \"type\": \"string\"\n                },\n                \"grant_types\": {\n                  \"type\": \"string\"\n                },\n                \"vp_formats\": {\n                  \"$ref\": \"#/components/schemas/Format\"\n                },\n                \"logo_uri\": {\n                  \"type\": \"string\"\n                },\n                \"client_purpose\": {\n                  \"type\": \"string\"\n                }\n              }\n            },\n            {\n              \"type\": \"object\",\n              \"properties\": {\n                \"presentation_definition_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"authorization_endpoint\": {\n                  \"anyOf\": [\n                    {\n                      \"$ref\": \"#/components/schemas/Schema\"\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"issuer\": {\n                  \"anyOf\": [\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseIss\"\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"response_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ResponseType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseType\"\n                    }\n                  ]\n                },\n                \"scopes_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/Scope\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/Scope\"\n                    }\n                  ]\n                },\n                \"subject_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SubjectType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SubjectType\"\n                    }\n                  ]\n                },\n                \"id_token_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"request_object_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"subject_syntax_types_supported\": {\n                  \"type\": \"array\",\n                  \"items\": {\n                    \"type\": \"string\"\n                  }\n                },\n                \"token_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"userinfo_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"jwks_uri\": {\n                  \"type\": \"string\"\n                },\n                \"registration_endpoint\": {\n                  \"type\": \"string\"\n                },\n                \"response_modes_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ResponseMode\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ResponseMode\"\n                    }\n                  ]\n                },\n                \"grant_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/GrantType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/GrantType\"\n                    }\n                  ]\n                },\n                \"acr_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/AuthenticationContextReferences\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/AuthenticationContextReferences\"\n                    }\n                  ]\n                },\n                \"id_token_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"id_token_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) supported by the OP for the ID Token to encode the Claims in a JWT [JWT].\"\n                },\n                \"userinfo_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"userinfo_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"userinfo_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) [JWA] supported by the UserInfo Endpoint to encode the Claims in a JWT [JWT].\"\n                },\n                \"request_object_encryption_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"request_object_encryption_enc_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the JWE encryption algorithms (enc values) supported by the OP for Request Objects. These algorithms are used both when the Request Object is passed by value and when it is passed by reference.\"\n                },\n                \"token_endpoint_auth_methods_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/TokenEndpointAuthMethod\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/TokenEndpointAuthMethod\"\n                    }\n                  ]\n                },\n                \"token_endpoint_auth_signing_alg_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/SigningAlgo\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/SigningAlgo\"\n                    }\n                  ]\n                },\n                \"display_values_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {}\n                    },\n                    {}\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the display parameter values that the OpenID Provider supports. These values are described in Section 3.1.2.1 of OpenID Connect Core 1.0 [OpenID.Core].\"\n                },\n                \"claim_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/ClaimType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/ClaimType\"\n                    }\n                  ],\n                  \"description\": \"OPTIONAL. JSON array containing a list of the Claim Types that the OpenID Provider supports. These Claim Types are described in Section 5.6 of OpenID Connect Core 1.0 [OpenID.Core]. Values defined by this specification are normal, aggregated, and distributed. If omitted, the implementation supports only normal Claims.\"\n                },\n                \"claims_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ],\n                  \"description\": \"RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply values for. Note that for privacy or other reasons, this might not be an exhaustive list.\"\n                },\n                \"service_documentation\": {\n                  \"type\": \"string\"\n                },\n                \"claims_locales_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"ui_locales_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    {\n                      \"type\": \"string\"\n                    }\n                  ]\n                },\n                \"claims_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"request_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"request_uri_parameter_supported\": {\n                  \"type\": \"boolean\"\n                },\n                \"require_request_uri_registration\": {\n                  \"type\": \"boolean\"\n                },\n                \"op_policy_uri\": {\n                  \"type\": \"string\"\n                },\n                \"op_tos_uri\": {\n                  \"type\": \"string\"\n                },\n                \"id_token_types_supported\": {\n                  \"anyOf\": [\n                    {\n                      \"type\": \"array\",\n                      \"items\": {\n                        \"$ref\": \"#/components/schemas/IdTokenType\"\n                      }\n                    },\n                    {\n                      \"$ref\": \"#/components/schemas/IdTokenType\"\n                    }\n                  ]\n                },\n                \"vp_formats_supported\": {\n                  \"$ref\": \"#/components/schemas/Format\"\n                }\n              }\n            }\n          ]\n        },\n        \"Schema\": {\n          \"type\": \"string\",\n          \"enum\": [\"openid:\", \"openid-vc:\"]\n        },\n        \"ResponseIss\": {\n          \"type\": \"string\",\n          \"enum\": [\"https://self-issued.me\", \"https://self-issued.me/v2\", \"https://self-issued.me/v2/openid-vc\"]\n        },\n        \"ResponseType\": {\n          \"type\": \"string\",\n          \"enum\": [\"id_token\", \"vp_token\"]\n        },\n        \"Scope\": {\n          \"type\": \"string\",\n          \"enum\": [\"openid\", \"openid did_authn\", \"profile\", \"email\", \"address\", \"phone\"]\n        },\n        \"SubjectType\": {\n          \"type\": \"string\",\n          \"enum\": [\"public\", \"pairwise\"]\n        },\n        \"SigningAlgo\": {\n          \"type\": \"string\",\n          \"enum\": [\"EdDSA\", \"RS256\", \"PS256\", \"ES256\", \"ES256K\"]\n        },\n        \"ResponseMode\": {\n          \"type\": \"string\",\n          \"enum\": [\"fragment\", \"form_post\", \"post\", \"direct_post\", \"query\"]\n        },\n        \"GrantType\": {\n          \"type\": \"string\",\n          \"enum\": [\"authorization_code\", \"implicit\"]\n        },\n        \"AuthenticationContextReferences\": {\n          \"type\": \"string\",\n          \"enum\": [\"phr\", \"phrh\"]\n        },\n        \"TokenEndpointAuthMethod\": {\n          \"type\": \"string\",\n          \"enum\": [\"client_secret_post\", \"client_secret_basic\", \"client_secret_jwt\", \"private_key_jwt\"]\n        },\n        \"ClaimType\": {\n          \"type\": \"string\",\n          \"enum\": [\"normal\", \"aggregated\", \"distributed\"]\n        },\n        \"IdTokenType\": {\n          \"type\": \"string\",\n          \"enum\": [\"subject_signed\", \"attester_signed\"]\n        }\n      },\n      \"methods\": {\n        \"ebsiAccessTokenGet\": {\n          \"description\": \"\",\n          \"arguments\": {\n            \"$ref\": \"#/components/schemas/EBSIAuthAccessTokenGetArgs\"\n          },\n          \"returnType\": {\n            \"$ref\": \"#/components/schemas/GetAccessTokenResponse\"\n          }\n        },\n        \"ebsiAuthorizationServerJwks\": {\n          \"description\": \"\",\n          \"arguments\": {\n            \"$ref\": \"#/components/schemas/ApiOpts\"\n          },\n          \"returnType\": {\n            \"$ref\": \"#/components/schemas/GetOIDProviderJwksResponse\"\n          }\n        },\n        \"ebsiPresentationDefinitionGet\": {\n          \"description\": \"\",\n          \"arguments\": {\n            \"$ref\": \"#/components/schemas/GetPresentationDefinitionArgs\"\n          },\n          \"returnType\": {\n            \"$ref\": \"#/components/schemas/GetPresentationDefinitionResponse\"\n          }\n        },\n        \"ebsiWellknownMetadata\": {\n          \"description\": \"\",\n          \"arguments\": {\n            \"$ref\": \"#/components/schemas/ApiOpts\"\n          },\n          \"returnType\": {\n            \"$ref\": \"#/components/schemas/GetOIDProviderMetadataResponse\"\n          }\n        }\n      }\n    }\n  }\n}\n","import { Loggers } from '@sphereon/ssi-types'\n\nexport const logger = Loggers.DEFAULT.get('sphereon:mdoc')\nconst schema = require('../plugin.schema.json')\nexport { schema }\nexport { MDLMdoc, mdocSupportMethods } from './agent/mDLMdoc'\nexport * from './types/ImDLMdoc'\nexport * from './functions'\n","import { com } from '@sphereon/kmp-mdoc-core'\nimport { calculateJwkThumbprint } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { CertificateInfo, getCertificateInfo, pemOrDerToX509Certificate, X509ValidationResult } from '@sphereon/ssi-sdk-ext.x509-utils'\nimport { JWK } from '@sphereon/ssi-types'\nimport { IAgentPlugin } from '@veramo/core'\nimport { MdocOid4vpPresentArgs, MdocOid4VPPresentationAuth, MdocOid4vpRPVerifyArgs, MdocOid4vpRPVerifyResult, MdocOid4vpService, schema } from '..'\nimport { CoseCryptoService, X509CallbackService } from '../functions'\nimport {\n  CborByteString,\n  CoseCryptoServiceJS,\n  CoseJoseKeyMappingService,\n  CoseKeyCbor,\n  DateTimeUtils,\n  decodeFrom,\n  DocumentCbor,\n  DocumentDescriptorMatchResult,\n  encodeTo,\n  Encoding,\n  GetX509CertificateInfoArgs,\n  ImDLMdoc,\n  IOid4VPPresentationDefinition,\n  IRequiredContext,\n  IVerifySignatureResult,\n  KeyInfo,\n  KeyType,\n  Oid4VPPresentationSubmission,\n  MdocValidations,\n  MdocVerifyIssuerSignedArgs,\n  VerifyCertificateChainArgs,\n} from '../types/ImDLMdoc'\n\nexport const mdocSupportMethods: Array<string> = [\n  'x509VerifyCertificateChain',\n  'x509GetCertificateInfo',\n  'mdocVerifyIssuerSigned',\n  'mdocOid4vpHolderPresent',\n  'mdocOid4vpRPVerify',\n]\n\n/**\n * The MDLMdoc class implements the IAgentPlugin interface, providing methods for\n * verification and information retrieval related to X.509 certificates and mDL (mobile\n * driver's license) documents.\n */\nexport class MDLMdoc implements IAgentPlugin {\n  readonly schema = schema.IMDLMdoc\n  readonly methods: ImDLMdoc = {\n    x509VerifyCertificateChain: this.x509VerifyCertificateChain.bind(this),\n    x509GetCertificateInfo: this.x509GetCertificateInfo.bind(this),\n    mdocVerifyIssuerSigned: this.mdocVerifyIssuerSigned.bind(this),\n    mdocOid4vpHolderPresent: this.mdocOid4vpHolderPresent.bind(this),\n    mdocOid4vpRPVerify: this.mdocOid4vpRPVerify.bind(this),\n  }\n  private readonly trustAnchors: string[]\n  private opts: {\n    trustRootWhenNoAnchors?: boolean\n    allowSingleNoCAChainElement?: boolean\n    blindlyTrustedAnchors?: string[]\n  }\n\n  constructor(args?: {\n    trustAnchors?: string[]\n    opts?: {\n      // Trust the supplied root from the chain, when no anchors are being passed in.\n      trustRootWhenNoAnchors?: boolean\n      // Do not perform a chain validation check if the chain only has a single value. This means only the certificate itself will be validated. No chain checks for CA certs will be performed. Only used when the cert has no issuer\n      allowSingleNoCAChainElement?: boolean\n      // WARNING: Do not use in production\n      // Similar to regular trust anchors, but no validation is performed whatsoever. Do not use in production settings! Can be handy with self generated certificates as we perform many validations, making it hard to test with self-signed certs. Only applied in case a chain with 1 element is passed in to really make sure people do not abuse this option\n      blindlyTrustedAnchors?: string[]\n    }\n  }) {\n    this.trustAnchors = args?.trustAnchors ?? []\n    this.opts = args?.opts ?? { trustRootWhenNoAnchors: true }\n  }\n\n  /**\n   * Processes and verifies the provided mdoc, generates device response and presentation submission tokens.\n   *\n   * @param {MdocOid4vpPresentArgs} args - An object containing arguments for mdoc oid4vp holder presentation.\n   * @param {IRequiredContext} _context - Required context for the operation.\n   * @return {Promise<MdocOid4VPPresentationAuth>} A promise that resolves to an object containing vp_token and presentation_submission.\n   */\n  private async mdocOid4vpHolderPresent(args: MdocOid4vpPresentArgs, _context: IRequiredContext): Promise<MdocOid4VPPresentationAuth> {\n    const { mdocs, presentationDefinition, trustAnchors, verifications, mdocHolderNonce, authorizationRequestNonce, responseUri, clientId } = args\n\n    const oid4vpService = new MdocOid4vpService()\n    // const mdoc = DocumentCbor.Static.cborDecode(decodeFrom(mdocBase64Url, Encoding.BASE64URL))\n    const validate = async (mdoc: DocumentCbor) => {\n      try {\n        const result = await MdocValidations.fromDocumentAsync(\n          mdoc,\n          null,\n          trustAnchors ?? this.trustAnchors,\n          DateTimeUtils.Static.DEFAULT.dateTimeLocal((verifications?.verificationTime?.getTime() ?? Date.now()) / 1000),\n          verifications?.allowExpiredDocuments,\n        )\n        if (result.error) {\n          console.log(JSON.stringify(result, null, 2))\n        }\n        return result\n      } catch (e) {\n        console.log(e)\n        return {\n          error: true,\n          verifications: [\n            {\n              name: 'mdoc',\n              error: true,\n              critical: true,\n              message: e.message as string,\n            },\n          ],\n        }\n      }\n    }\n\n    const allMatches: DocumentDescriptorMatchResult[] = oid4vpService.matchDocumentsAndDescriptors(\n      mdocHolderNonce,\n      mdocs,\n      presentationDefinition as IOid4VPPresentationDefinition,\n    )\n    const docsAndDescriptors: DocumentDescriptorMatchResult[] = []\n    let lastError: com.sphereon.crypto.generic.IVerifyResults<com.sphereon.crypto.cose.ICoseKeyCbor> | undefined = undefined\n    for (let match of allMatches) {\n      if (match.document) {\n        const result = await validate(match.document)\n        if (!result.error || responseUri.includes('openid.net')) {\n          // TODO: We relax for the conformance suite, as the cert would be invalid\n          try {\n            const cborKey = result.keyInfo?.key ? CoseKeyCbor.Static.fromDTO(result.keyInfo.key) : undefined\n            if (!cborKey) {\n              throw Error('No key found in result')\n            }\n            let jwk = CoseJoseKeyMappingService.toJoseJwk(cborKey).toJsonDTO<JWK>()\n            if (!result.keyInfo?.kmsKeyRef) {\n              const keyInfo = result.keyInfo!\n              const kid = jwk.kid ?? calculateJwkThumbprint({ jwk: jwk })\n\n              const key = await _context.agent.keyManagerGet({ kid })\n              const kms = key.kms\n              const kmsKeyRef = key.meta?.kmsKeyRef\n              const updateCborKey = cborKey.copy(false, cborKey.kty, cborKey.kid ?? new CborByteString(decodeFrom(kid, Encoding.UTF8)))\n              const deviceKeyInfo = KeyInfo.Static.fromDTO(keyInfo).copy(\n                kid,\n                updateCborKey,\n                keyInfo.opts,\n                keyInfo.keyVisibility,\n                keyInfo.signatureAlgorithm,\n                keyInfo.x5c,\n                kmsKeyRef,\n                kms,\n              )\n              const updateMatch = match.copy(match.inputDescriptor, match.document, match.documentError, deviceKeyInfo)\n              match = updateMatch\n            }\n          } catch (e: any) {\n            console.log(`We tied to ammend key info from the KMS, but failed. Potential trouble ahead ${e.message}`, e)\n          }\n\n          docsAndDescriptors.push(match)\n        } else if (result.error) {\n          lastError = result\n        }\n      }\n    }\n    if (docsAndDescriptors.length === 0) {\n      if (lastError) {\n        return Promise.reject(Error(lastError.verifications[0].message ?? 'No matching documents found'))\n      }\n      return Promise.reject(Error('No matching documents found'))\n    }\n    const deviceResponse = await oid4vpService.createDeviceResponse(\n      docsAndDescriptors,\n      presentationDefinition as IOid4VPPresentationDefinition,\n      clientId,\n      responseUri,\n      authorizationRequestNonce,\n    )\n    const vp_token = encodeTo(deviceResponse.cborEncode(), Encoding.BASE64URL)\n    const presentation_submission = Oid4VPPresentationSubmission.Static.fromPresentationDefinition(\n      presentationDefinition as IOid4VPPresentationDefinition,\n    )\n    return { vp_token, presentation_submission }\n  }\n\n  /**\n   * Verifies on the Relying Party (RP) side for mdoc (mobile document) OIDC4VP (OpenID Connect for Verifiable Presentations).\n   *\n   * @param {MdocOid4vpRPVerifyArgs} args - The arguments required for verification, including the vp_token, presentation_submission, and trustAnchors.\n   * @param {IRequiredContext} _context - The required context for this method.\n   * @return {Promise<MdocOid4vpRPVerifyResult>} - A promise that resolves to an object containing error status,\n   * validated documents, and the original presentation submission.\n   */\n  private async mdocOid4vpRPVerify(args: MdocOid4vpRPVerifyArgs, _context: IRequiredContext): Promise<MdocOid4vpRPVerifyResult> {\n    const { vp_token, presentation_submission, trustAnchors } = args\n    const deviceResponse = com.sphereon.mdoc.data.device.DeviceResponseCbor.Static.cborDecode(decodeFrom(vp_token, Encoding.BASE64URL))\n    if (!deviceResponse.documents) {\n      return Promise.reject(Error(`No documents found in vp_token`))\n    }\n    let error = false\n    const documents = await Promise.all(\n      deviceResponse.documents.map(async (document) => {\n        try {\n          const validations = await MdocValidations.fromDocumentAsync(document, null, trustAnchors ?? this.trustAnchors)\n          if (!validations || validations.error) {\n            error = true\n          }\n          if (presentation_submission.descriptor_map.find((m) => m.id === document.docType.value) === null) {\n            error = true\n            validations.verifications.push({\n              name: 'mdoc',\n              error,\n              critical: error,\n              message: `No descriptor map id with document type ${document.docType.value} present`,\n            })\n          }\n          return { document: document.toJson(), validations }\n        } catch (e) {\n          error = true\n          return {\n            document: document.toJson(),\n            validations: {\n              error: true,\n              verifications: [\n                {\n                  name: 'mdoc',\n                  error,\n                  critical: true,\n                  message: e.message as string,\n                },\n              ],\n            },\n          }\n        }\n      }),\n    )\n    if (error) {\n      console.log(JSON.stringify(documents, null, 2))\n    }\n    return { error, documents, presentation_submission }\n  }\n\n  /**\n   * Verifies the issuer-signed Mobile Document (mDoc) using the provided arguments and context.\n   *\n   * @param {MdocVerifyIssuerSignedArgs} args - The arguments required for verification, including input and key information.\n   * @param {IRequiredContext} context - The context encompassing necessary dependencies and configurations.\n   * @return {Promise<IVerifySignatureResult<KeyType>>} A promise that resolves to the result of the signature verification, including key information if available.\n   */\n  private async mdocVerifyIssuerSigned(args: MdocVerifyIssuerSignedArgs, context: IRequiredContext): Promise<IVerifySignatureResult<KeyType>> {\n    const { input, keyInfo, requireX5Chain } = args\n    const coseKeyInfo = keyInfo && CoseJoseKeyMappingService.toCoseKeyInfo(keyInfo)\n    const verification = await new CoseCryptoServiceJS(new CoseCryptoService(context)).verify1(\n      com.sphereon.crypto.cose.CoseSign1Json.Static.fromDTO(input).toCbor(),\n      coseKeyInfo,\n      requireX5Chain,\n    )\n    return { ...verification, keyInfo: keyInfo }\n  }\n\n  /**\n   * Verifies an X.509 certificate chain against a set of trust anchors.\n   *\n   * @param {VerifyCertificateChainArgs} args - The arguments required for verifying the certificate chain.\n   * This includes the certificate chain to be verified and any additional trust anchors to be used.\n   * @param {IRequiredContext} _context - The context required for verification, including necessary dependencies and settings.\n   * @return {Promise<X509ValidationResult>} A promise that resolves to the result of the validation process, indicating the success or failure of the certificate chain verification.\n   */\n  private async x509VerifyCertificateChain(args: VerifyCertificateChainArgs, _context: IRequiredContext): Promise<X509ValidationResult> {\n    const mergedAnchors: string[] = [...this.trustAnchors, ...(args.trustAnchors ?? [])]\n    const trustAnchors = new Set<string>(mergedAnchors)\n    const validationResult = await new X509CallbackService(Array.from(mergedAnchors)).verifyCertificateChain({\n      ...args,\n      trustAnchors: Array.from(trustAnchors),\n      opts: { ...args?.opts, ...this.opts },\n    })\n    console.log(\n      `x509 validation for ${validationResult.error ? 'Error' : 'Success'}. message: ${validationResult.message}, details: ${validationResult.detailMessage}`,\n    )\n    return validationResult\n  }\n\n  /**\n   * Extracts information from a list of X509 certificates.\n   *\n   * @param {GetX509CertificateInfoArgs} args - Arguments required to retrieve certificate information,\n   * including the certificates and optional Subject Alternative Name (SAN) type filter.\n   * @param {IRequiredContext} context - The context required for the operation, which may include\n   * logging, configuration, and other operational details.\n   * @return {Promise<CertificateInfo[]>} A promise that resolves with an array of certificate\n   * information objects, each containing details extracted from individual certificates.\n   */\n  private async x509GetCertificateInfo(args: GetX509CertificateInfoArgs, context: IRequiredContext): Promise<CertificateInfo[]> {\n    const certificates = args.certificates.map((cert) => pemOrDerToX509Certificate(cert))\n    return await Promise.all(certificates.map((cert) => getCertificateInfo(cert, args.sanTypeFilter && { sanTypeFilter: args.sanTypeFilter })))\n  }\n}\n","import { com, Nullable } from '@sphereon/kmp-mdoc-core'\nimport { calculateJwkThumbprint, globalCrypto, verifyRawSignature } from '@sphereon/ssi-sdk-ext.key-utils'\nimport {\n  CertificateInfo,\n  derToPEM,\n  getCertificateInfo,\n  getSubjectDN,\n  pemOrDerToX509Certificate,\n  validateX509CertificateChain,\n  X509ValidationResult,\n} from '@sphereon/ssi-sdk-ext.x509-utils'\nimport { JWK } from '@sphereon/ssi-types'\nimport * as crypto from 'crypto'\nimport { Certificate, CryptoEngine, setEngine } from 'pkijs'\n// @ts-ignore\nimport { fromString } from 'uint8arrays/from-string'\nimport { IRequiredContext, VerifyCertificateChainArgs } from '../types/ImDLMdoc'\n\ntype CoseKeyCbor = com.sphereon.crypto.cose.CoseKeyCbor\ntype ICoseKeyCbor = com.sphereon.crypto.cose.ICoseKeyCbor\ntype ToBeSignedCbor = com.sphereon.crypto.cose.ToBeSignedCbor\nconst CoseJoseKeyMappingService = com.sphereon.crypto.CoseJoseKeyMappingService\ntype SignatureAlgorithm = com.sphereon.crypto.generic.SignatureAlgorithm\ntype ICoseCryptoCallbackJS = com.sphereon.crypto.ICoseCryptoCallbackJS\ntype IKey = com.sphereon.crypto.IKey\ntype IX509ServiceJS = com.sphereon.crypto.IX509ServiceJS\ntype Jwk = com.sphereon.crypto.jose.Jwk\nconst KeyInfo = com.sphereon.crypto.KeyInfo\ntype X509VerificationProfile = com.sphereon.crypto.X509VerificationProfile\nconst DateTimeUtils = com.sphereon.kmp.DateTimeUtils\nconst decodeFrom = com.sphereon.kmp.decodeFrom\nconst encodeTo = com.sphereon.kmp.encodeTo\nconst Encoding = com.sphereon.kmp.Encoding\ntype LocalDateTimeKMP = com.sphereon.kmp.LocalDateTimeKMP\nconst SignatureAlgorithm = com.sphereon.crypto.generic.SignatureAlgorithm\nconst DefaultCallbacks = com.sphereon.crypto.DefaultCallbacks\n\nexport class CoseCryptoService implements ICoseCryptoCallbackJS {\n  constructor(private context?: IRequiredContext) {}\n\n  setContext(context: IRequiredContext) {\n    this.context = context\n  }\n\n  async signAsync(input: ToBeSignedCbor, requireX5Chain: Nullable<boolean>): Promise<Int8Array> {\n    if (!this.context) {\n      throw Error('No context provided. Please provide a context with the setContext method or constructor')\n    }\n    const { keyInfo, alg, value } = input\n    let kmsKeyRef = keyInfo.kmsKeyRef ?? undefined\n    if (!kmsKeyRef) {\n      const key = keyInfo.key\n      if (key == null) {\n        return Promise.reject(Error('No key present in keyInfo. This implementation cannot sign without a key!'))\n      }\n      const resolvedKeyInfo = com.sphereon.crypto.ResolvedKeyInfo.Static.fromKeyInfo(keyInfo, key)\n      const jwkKeyInfo: com.sphereon.crypto.ResolvedKeyInfo<Jwk> = CoseJoseKeyMappingService.toResolvedJwkKeyInfo(resolvedKeyInfo)\n\n      const kid = jwkKeyInfo.kid ?? calculateJwkThumbprint({ jwk: jwkKeyInfo.key.toJsonDTO() }) ?? jwkKeyInfo.key.getKidAsString(true)\n      if (!kid) {\n        return Promise.reject(Error('No kid present and not kmsKeyRef provided'))\n      }\n      kmsKeyRef = kid\n    }\n    const result = await this.context.agent.keyManagerSign({\n      algorithm: alg.jose!!.value,\n      data: encodeTo(value, Encoding.UTF8),\n      encoding: 'utf-8',\n      keyRef: kmsKeyRef!!,\n    })\n    return decodeFrom(result, Encoding.UTF8)\n  }\n\n  async verify1Async<CborType>(\n    input: com.sphereon.crypto.cose.CoseSign1Cbor<CborType>,\n    keyInfo: com.sphereon.crypto.IKeyInfo<ICoseKeyCbor>,\n    requireX5Chain: Nullable<boolean>,\n  ): Promise<com.sphereon.crypto.generic.IVerifySignatureResult<ICoseKeyCbor>> {\n    const getCertAndKey = async (\n      x5c: Nullable<Array<string>>,\n    ): Promise<{\n      issuerCert?: Certificate\n      issuerJwk?: Jwk\n    }> => {\n      if (requireX5Chain && (!x5c || x5c.length === 0)) {\n        // We should not be able to get here anyway, as the MLD-mdoc library already validated at this point. But let's make sure\n        return Promise.reject(new Error(`No x5chain was present in the CoseSign headers!`))\n      }\n      // TODO: According to the IETF spec there should be a x5t in case the x5chain is in the protected headers. In the Funke this does not seem to be done/used!\n      issuerCert = x5c ? pemOrDerToX509Certificate(x5c[0]) : undefined\n      let issuerJwk: Jwk | undefined\n      if (issuerCert) {\n        const info = await getCertificateInfo(issuerCert)\n        issuerJwk = info.publicKeyJWK\n      }\n      return { issuerCert, issuerJwk }\n    }\n\n    const coseKeyInfo = CoseJoseKeyMappingService.toCoseKeyInfo(keyInfo)\n\n    if (coseKeyInfo?.key?.d) {\n      throw Error('Do not use private keys to verify!')\n    } else if (!input.payload?.value) {\n      return Promise.reject(Error('Signature validation without payload not supported'))\n    }\n    const sign1Json = input.toJson() // Let's make it a bit easier on ourselves, instead of working with CBOR\n    const coseAlg = sign1Json.protectedHeader.alg\n    if (!coseAlg) {\n      return Promise.reject(Error('No alg protected header present'))\n    }\n\n    let issuerCert: Certificate | undefined\n    let issuerCoseKey: CoseKeyCbor | undefined\n    let kid = coseKeyInfo?.kid ?? sign1Json.protectedHeader.kid ?? sign1Json.unprotectedHeader?.kid\n    // Please note this method does not perform chain validation. The MDL-MSO_MDOC library already performed this before this step\n    const x5c = coseKeyInfo?.key?.getX509CertificateChain() ?? sign1Json.protectedHeader?.x5chain ?? sign1Json.unprotectedHeader?.x5chain\n    if (!coseKeyInfo || !coseKeyInfo?.key || coseKeyInfo?.key?.x5chain) {\n      const certAndKey = await getCertAndKey(x5c)\n      issuerCoseKey = certAndKey.issuerJwk ? CoseJoseKeyMappingService.toCoseKey(certAndKey.issuerJwk) : undefined\n      issuerCert = certAndKey.issuerCert\n    }\n    if (!issuerCoseKey) {\n      if (!coseKeyInfo?.key) {\n        return Promise.reject(Error(`Either a x5c needs to be in the headers, or you need to provide a key for verification`))\n      }\n      if (kid === null) {\n        kid = coseKeyInfo.key.getKidAsString(false)\n      }\n      issuerCoseKey = com.sphereon.crypto.cose.CoseKeyCbor.Static.fromDTO(coseKeyInfo.key)\n    }\n\n    const issuerCoseKeyInfo = new KeyInfo<CoseKeyCbor>(\n      kid,\n      issuerCoseKey,\n      coseKeyInfo.opts,\n      coseKeyInfo.keyVisibility,\n      issuerCoseKey.getSignatureAlgorithm() ?? coseKeyInfo.signatureAlgorithm,\n      x5c,\n      coseKeyInfo.kmsKeyRef,\n      coseKeyInfo.kms,\n      coseKeyInfo.keyType ?? issuerCoseKey.getKty(),\n    )\n    const recalculatedToBeSigned = input.toBeSignedJson(issuerCoseKeyInfo, SignatureAlgorithm.Static.fromCose(coseAlg))\n    const key = CoseJoseKeyMappingService.toJoseJwk(issuerCoseKeyInfo.key!).toJsonDTO<JWK>()\n    const valid = await verifyRawSignature({\n      data: fromString(recalculatedToBeSigned.base64UrlValue, 'base64url'),\n      signature: fromString(sign1Json.signature, 'base64url'),\n      key,\n    })\n\n    return {\n      name: 'mdoc',\n      critical: true,\n      error: !valid,\n      message: `Signature of '${issuerCert ? getSubjectDN(issuerCert).DN : kid}' was ${valid ? '' : 'in'}valid`,\n      keyInfo: issuerCoseKeyInfo,\n    } satisfies com.sphereon.crypto.generic.IVerifySignatureResult<ICoseKeyCbor>\n  }\n\n  resolvePublicKeyAsync<KT extends com.sphereon.crypto.IKey>(\n    keyInfo: com.sphereon.crypto.IKeyInfo<KT>,\n  ): Promise<com.sphereon.crypto.IResolvedKeyInfo<KT>> {\n    if (keyInfo.key) {\n      return Promise.resolve(CoseJoseKeyMappingService.toResolvedKeyInfo(keyInfo, keyInfo.key))\n    }\n    return Promise.reject(Error('No key present in keyInfo. This implementation cannot resolve public keys on its own currently!'))\n  }\n}\n\n/**\n * This class can be used for X509 validations.\n * Either have an instance per trustedCerts and verification invocation or use a single instance and provide the trusted certs in the method argument\n *\n * The class is also registered with the low-level mDL/mdoc Kotlin Multiplatform library\n * Next to the specific function for the library it exports a more powerful version of the same verification method as well\n */\nexport class X509CallbackService implements IX509ServiceJS {\n  private _trustedCerts?: Array<string>\n\n  constructor(trustedCerts?: Array<string>) {\n    this.setTrustedCerts(trustedCerts)\n  }\n\n  /**\n   * A more powerful version of the method below. Allows to verify at a specific time and returns more information\n   * @param chain\n   * @param trustAnchors\n   * @param verificationTime\n   */\n  async verifyCertificateChain({\n    chain,\n    trustAnchors = this.getTrustedCerts(),\n    verificationTime,\n    opts,\n  }: VerifyCertificateChainArgs): Promise<X509ValidationResult> {\n    return await validateX509CertificateChain({\n      chain,\n      trustAnchors,\n      verificationTime,\n      opts,\n    })\n  }\n\n  /**\n   * This method is the implementation used within the mDL/Mdoc library\n   */\n  async verifyCertificateChainJS<KeyType extends IKey>(\n    chainDER: Nullable<Int8Array[]>,\n    chainPEM: Nullable<string[]>,\n    trustedCerts: Nullable<string[]>,\n    verificationProfile?: X509VerificationProfile | undefined,\n    verificationTime?: Nullable<LocalDateTimeKMP>,\n  ): Promise<com.sphereon.crypto.IX509VerificationResult<KeyType>> {\n    const verificationAt = verificationTime ?? DateTimeUtils.Static.DEFAULT.dateTimeLocal()\n    let chain: Array<string | Uint8Array> = []\n    if (chainDER && chainDER.length > 0) {\n      chain = chainDER.map((der) => Uint8Array.from(der))\n    }\n    if (chainPEM && chainPEM.length > 0) {\n      chain = (chain ?? []).concat(chainPEM)\n    }\n    const result = await validateX509CertificateChain({\n      chain: chain, // The function will handle an empty array\n      trustAnchors: trustedCerts ?? this.getTrustedCerts(),\n      verificationTime: new Date(verificationAt.toEpochSeconds().toULong() * 1000),\n      opts: { trustRootWhenNoAnchors: true },\n    })\n\n    const cert: CertificateInfo | undefined = result.certificateChain ? result.certificateChain[result.certificateChain.length - 1] : undefined\n\n    return {\n      publicKey: cert?.publicKeyJWK as KeyType, // fixme\n      publicKeyAlgorithm: cert?.publicKeyJWK?.alg,\n      name: 'x.509',\n      critical: result.critical,\n      message: result.message,\n      error: result.error,\n      verificationTime: verificationAt,\n    } satisfies com.sphereon.crypto.IX509VerificationResult<KeyType>\n  }\n\n  setTrustedCerts = (trustedCertsInPEM?: Array<string>) => {\n    this._trustedCerts = trustedCertsInPEM?.map((cert) => {\n      if (cert.includes('CERTIFICATE')) {\n        // PEM\n        return cert\n      }\n      return derToPEM(cert)\n    })\n  }\n\n  getTrustedCerts = () => this._trustedCerts\n}\n\nconst defaultCryptoEngine = () => {\n  // @ts-ignore\n  if (typeof self !== 'undefined') {\n    // @ts-ignore\n    if ('crypto' in self) {\n      let engineName = 'webcrypto'\n      // @ts-ignore\n      if ('webkitSubtle' in self.crypto) {\n        engineName = 'safari'\n      }\n      // @ts-ignore\n      setEngine(engineName, new CryptoEngine({ name: engineName, crypto: crypto }))\n    }\n  } else if (typeof crypto !== 'undefined' && 'webcrypto' in crypto) {\n    const name = 'NodeJS ^15'\n    const nodeCrypto = crypto.webcrypto\n    // @ts-ignore\n    setEngine(name, new CryptoEngine({ name, crypto: nodeCrypto }))\n  } else {\n    // @ts-ignore\n    const name = 'crypto'\n    setEngine(name, new CryptoEngine({ name, crypto: globalCrypto(false) }))\n  }\n}\n\ndefaultCryptoEngine()\n\n// We register the services with the mDL/mdoc library. Please note that the context is not passed in, meaning we cannot sign by default.\nDefaultCallbacks.setCoseCryptoDefault(new CoseCryptoService())\nDefaultCallbacks.setX509Default(new X509CallbackService())\n","import { com } from '@sphereon/kmp-mdoc-core'\nimport { PresentationDefinitionV2, PresentationSubmission } from '@sphereon/pex-models'\nimport { ISphereonKeyManager } from '@sphereon/ssi-sdk-ext.key-manager'\nimport { CertificateInfo, SubjectAlternativeGeneralName, X509ValidationResult } from '@sphereon/ssi-sdk-ext.x509-utils'\nimport { IAgentContext, IDIDManager, IPluginMethodMap, IResolver } from '@veramo/core'\nexport type IKey = com.sphereon.crypto.IKey\nexport type CoseSign1Json = com.sphereon.crypto.cose.CoseSign1Json\nexport type CoseSign1Cbor<Any> = com.sphereon.crypto.cose.CoseSign1Cbor<Any>\nexport type ICoseKeyCbor = com.sphereon.crypto.cose.ICoseKeyCbor\nexport type ICoseKeyJson = com.sphereon.crypto.cose.ICoseKeyJson\nexport type IKeyInfo<KT extends IKey = IKey> = com.sphereon.crypto.IKeyInfo<KT>\nexport type IVerifyResults<KT extends IKey> = com.sphereon.crypto.generic.IVerifyResults<KT>\nexport type IVerifySignatureResult<KT extends IKey> = com.sphereon.crypto.generic.IVerifySignatureResult<KT>\nexport type DocumentJson = com.sphereon.mdoc.data.device.DocumentJson\nexport type DocumentCbor = com.sphereon.mdoc.data.device.DocumentCbor\nexport const CborByteString = com.sphereon.cbor.CborByteString\nexport const CoseKeyCbor = com.sphereon.crypto.cose.CoseKeyCbor\nexport const CoseCryptoServiceJS = com.sphereon.crypto.CoseCryptoServiceJS\nexport const CoseJoseKeyMappingService = com.sphereon.crypto.CoseJoseKeyMappingService\nexport const KeyInfo = com.sphereon.crypto.KeyInfo\nexport const DateTimeUtils = com.sphereon.kmp.DateTimeUtils\nexport const decodeFrom = com.sphereon.kmp.decodeFrom\nexport const encodeTo = com.sphereon.kmp.encodeTo\nexport const Encoding = com.sphereon.kmp.Encoding\nexport const MdocValidations = com.sphereon.mdoc.data.MdocValidations\nexport const MdocOid4vpService = com.sphereon.mdoc.oid4vp.MdocOid4vpServiceJs\nexport const Jwk = com.sphereon.crypto.jose.Jwk\nexport type DocumentDescriptorMatchResult = com.sphereon.mdoc.oid4vp.DocumentDescriptorMatchResult\nexport type IOid4VPPresentationDefinition = com.sphereon.mdoc.oid4vp.IOid4VPPresentationDefinition\nexport const Oid4VPPresentationSubmission = com.sphereon.mdoc.oid4vp.Oid4VPPresentationSubmission\n\nexport interface ImDLMdoc extends IPluginMethodMap {\n  // TODO: Extract cert methods to its own plugin\n  x509VerifyCertificateChain(args: VerifyCertificateChainArgs, context: IRequiredContext): Promise<X509ValidationResult>\n\n  x509GetCertificateInfo(args: GetX509CertificateInfoArgs, context: IRequiredContext): Promise<CertificateInfo[]>\n\n  mdocVerifyIssuerSigned(args: MdocVerifyIssuerSignedArgs, context: IRequiredContext): Promise<IVerifySignatureResult<KeyType>>\n\n  mdocOid4vpHolderPresent(args: MdocOid4vpPresentArgs, context: IRequiredContext): Promise<MdocOid4VPPresentationAuth>\n\n  mdocOid4vpRPVerify(args: MdocOid4vpRPVerifyArgs, _context: IRequiredContext): Promise<MdocOid4vpRPVerifyResult>\n}\n\nexport type IRequiredContext = IAgentContext<ISphereonKeyManager & IDIDManager & IResolver>\nexport type VerifyCertificateChainArgs = {\n  chain: Array<string | Uint8Array>\n  trustAnchors?: string[]\n  verificationTime?: Date\n  opts?: {\n    // If no trust anchor is found, but the chain itself checks out, allow. (defaults to false:)\n    allowNoTrustAnchorsFound?: boolean\n    // Trust the supplied root from the chain, when no anchors are being passed in.\n    trustRootWhenNoAnchors?: boolean\n    // Do not perform a chain validation check if the chain only has a single value. This means only the certificate itself will be validated. No chain checks for CA certs will be performed. Only used when the cert has no issuer\n    allowSingleNoCAChainElement?: boolean\n    // WARNING: Do not use in production\n    // Similar to regular trust anchors, but no validation is performed whatsover. Do not use in production settings! Can be handy with self generated certificates as we perform many validations, making it hard to test with self-signed certs. Only applied in case a chain with 1 element is passed in to really make sure people do not abuse this option\n    blindlyTrustedAnchors?: string[]\n  }\n}\n\nexport type GetX509CertificateInfoArgs = {\n  certificates: (string | Uint8Array)[] // pem or der\n  sanTypeFilter?: SubjectAlternativeGeneralName | SubjectAlternativeGeneralName[]\n}\n\nexport type KeyType = ICoseKeyJson\nexport type MdocVerifyIssuerSignedArgs = {\n  input: CoseSign1Json\n  keyInfo?: IKeyInfo<KeyType>\n  requireX5Chain?: boolean\n}\n\nexport interface MdocOid4VPPresentationAuth {\n  vp_token: string\n  presentation_submission: PresentationSubmission\n}\n\nexport interface MdocOid4vpPresentArgs {\n  mdocs: DocumentCbor[]\n  mdocHolderNonce?: string\n  presentationDefinition: PresentationDefinitionV2\n  trustAnchors?: string[]\n  verifications?: VerificationOptions\n  clientId: string\n  responseUri: string\n  authorizationRequestNonce: string\n}\n\nexport type VerificationOptions = {\n  allowExpiredDocuments?: boolean\n  verificationTime?: Date\n}\n\nexport type DocumentVerifyResult = { document: DocumentJson; validations: IVerifyResults<ICoseKeyCbor> }\nexport type MdocOid4vpRPVerifyResult = { error: boolean; documents: Array<DocumentVerifyResult>; presentation_submission: PresentationSubmission }\n\nexport interface MdocOid4vpRPVerifyArgs {\n  vp_token: string\n  presentation_submission: PresentationSubmission\n  trustAnchors?: string[]\n}\n"],"mappings":"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","names":["module","CoseJoseKeyMappingService","DateTimeUtils","Encoding","KeyInfo","decodeFrom","encodeTo","import_kmp_mdoc_core","import_ssi_sdk_ext","import_ssi_sdk_ext","CoseJoseKeyMappingService","com","sphereon","crypto","KeyInfo","DateTimeUtils","kmp","decodeFrom","encodeTo","Encoding","SignatureAlgorithm","generic","DefaultCallbacks","CoseCryptoService","constructor","context","setContext","signAsync","input","requireX5Chain","Error","keyInfo","alg","value","kmsKeyRef","undefined","key","Promise","reject","resolvedKeyInfo","ResolvedKeyInfo","Static","fromKeyInfo","jwkKeyInfo","toResolvedJwkKeyInfo","kid","calculateJwkThumbprint","jwk","toJsonDTO","getKidAsString","result","agent","keyManagerSign","algorithm","jose","data","UTF8","encoding","keyRef","verify1Async","getCertAndKey","x5c","length","issuerCert","pemOrDerToX509Certificate","issuerJwk","info","getCertificateInfo","publicKeyJWK","coseKeyInfo","toCoseKeyInfo","d","payload","sign1Json","toJson","coseAlg","protectedHeader","issuerCoseKey","unprotectedHeader","getX509CertificateChain","x5chain","certAndKey","toCoseKey","cose","CoseKeyCbor","fromDTO","issuerCoseKeyInfo","opts","keyVisibility","getSignatureAlgorithm","signatureAlgorithm","kms","keyType","getKty","recalculatedToBeSigned","toBeSignedJson","fromCose","toJoseJwk","valid","verifyRawSignature","fromString","base64UrlValue","signature","name","critical","error","message","getSubjectDN","DN","resolvePublicKeyAsync","resolve","toResolvedKeyInfo","X509CallbackService","_trustedCerts","trustedCerts","setTrustedCerts","verifyCertificateChain","chain","trustAnchors","getTrustedCerts","verificationTime","validateX509CertificateChain","verifyCertificateChainJS","chainDER","chainPEM","verificationProfile","verificationAt","DEFAULT","dateTimeLocal","map","der","Uint8Array","from","concat","Date","toEpochSeconds","toULong","trustRootWhenNoAnchors","cert","certificateChain","publicKey","publicKeyAlgorithm","trustedCertsInPEM","includes","derToPEM","defaultCryptoEngine","self","engineName","setEngine","CryptoEngine","nodeCrypto","webcrypto","globalCrypto","setCoseCryptoDefault","setX509Default","import_kmp_mdoc_core","CborByteString","com","sphereon","cbor","CoseKeyCbor","crypto","cose","CoseCryptoServiceJS","CoseJoseKeyMappingService","KeyInfo","DateTimeUtils","kmp","decodeFrom","encodeTo","Encoding","MdocValidations","mdoc","data","MdocOid4vpService","oid4vp","MdocOid4vpServiceJs","Jwk","jose","Oid4VPPresentationSubmission","mdocSupportMethods","MDLMdoc","schema","IMDLMdoc","methods","x509VerifyCertificateChain","bind","x509GetCertificateInfo","mdocVerifyIssuerSigned","mdocOid4vpHolderPresent","mdocOid4vpRPVerify","trustAnchors","opts","constructor","args","trustRootWhenNoAnchors","_context","mdocs","presentationDefinition","verifications","mdocHolderNonce","authorizationRequestNonce","responseUri","clientId","oid4vpService","MdocOid4vpService","validate","mdoc","result","MdocValidations","fromDocumentAsync","DateTimeUtils","Static","DEFAULT","dateTimeLocal","verificationTime","getTime","Date","now","allowExpiredDocuments","error","console","log","JSON","stringify","e","name","critical","message","allMatches","matchDocumentsAndDescriptors","docsAndDescriptors","lastError","undefined","match","document","includes","cborKey","keyInfo","key","CoseKeyCbor","fromDTO","Error","jwk","CoseJoseKeyMappingService","toJoseJwk","toJsonDTO","kmsKeyRef","kid","calculateJwkThumbprint","agent","keyManagerGet","kms","meta","updateCborKey","copy","kty","CborByteString","decodeFrom","Encoding","UTF8","deviceKeyInfo","KeyInfo","keyVisibility","signatureAlgorithm","x5c","updateMatch","inputDescriptor","documentError","push","length","Promise","reject","deviceResponse","createDeviceResponse","vp_token","encodeTo","cborEncode","BASE64URL","presentation_submission","Oid4VPPresentationSubmission","fromPresentationDefinition","com","sphereon","data","device","DeviceResponseCbor","cborDecode","documents","all","map","validations","descriptor_map","find","m","id","docType","value","toJson","context","input","requireX5Chain","coseKeyInfo","toCoseKeyInfo","verification","CoseCryptoServiceJS","CoseCryptoService","verify1","crypto","cose","CoseSign1Json","toCbor","mergedAnchors","Set","validationResult","X509CallbackService","Array","from","verifyCertificateChain","detailMessage","certificates","cert","pemOrDerToX509Certificate","getCertificateInfo","sanTypeFilter","logger","Loggers","DEFAULT","get","schema","require"]}