UNPKG

@sphereon/did-auth-siop

Version:

Self Issued OpenID V2 (SIOPv2) and OpenID 4 Verifiable Presentations (OID4VP)

599 lines (586 loc) 796 kB
import { W3CVerifiablePresentation, CompactSdJwtVc, MdocOid4vpIssuerSigned, PresentationSubmission as PresentationSubmission$1, HasherSync, Format, WrappedVerifiablePresentation, WrappedMdocCredential, WrappedSdJwtVerifiableCredential, WrappedW3CVerifiableCredential, W3CVerifiableCredential, AdditionalClaims, WrappedVerifiableCredential, ISimpleLogger, IIssuerId } from '@sphereon/ssi-types'; import { JarmDirectPostJwtResponseParams, JarmAuthResponseParams, JarmClientMetadata, JarmServerMetadata } from '@sphereon/jarm'; import { JwtIssuer, JwtHeader, SigningAlgo, DynamicRegistrationClientMetadata, CreateJwtCallback as CreateJwtCallback$1, JwtIssuanceContextBase, VerifyJwtCallbackBase, DidJwtVerifier, X5cJwtVerifier, CustomJwtVerifier, JwkJwtVerifier as JwkJwtVerifier$1, OpenIdFederationJwtVerifier, JwtPayload, JwtType } from '@sphereon/oid4vc-common'; import { DcqlQuery, DcqlPresentation, DcqlPresentationResult, DcqlMdocCredential, DcqlSdJwtVcCredential, DcqlW3cVcCredential } from 'dcql'; import { z } from 'zod'; import { PresentationSignCallBackParams } from '@sphereon/pex'; import { EventEmitter } from 'events'; declare enum SIOPErrors { INVALID_CLIENT_ID_MUST_MATCH_REDIRECT_URI = "Invalid request object payload. The redirect_uri must match the client_id with client_id_scheme 'redirect_uri'.", INVALID_CLIENT_ID_MUST_MATCH_RESPONSE_URI = "Invalid request object payload. The response_uri must match the client_id with client_id_scheme 'redirect_uri'.", INVALID_REQUEST = "The request contained invalid or conflicting parameters", AUTH_REQUEST_EXPECTS_VP = "authentication request expects a verifiable presentation in the response", AUTH_REQUEST_DOESNT_EXPECT_VP = "authentication request doesn't expect a verifiable presentation in the response", BAD_STATE = "The state in the payload does not match the supplied state", BAD_NONCE = "The nonce in the payload does not match the supplied nonce", NO_ALG_SUPPORTED = "Algorithm not supported.", BAD_PARAMS = "Wrong parameters provided.", BAD_IDTOKEN_RESPONSE_OPTS = "Id-token response options are not set.", NO_REQUEST_VERSION = "No request spec version provided.", NO_REQUEST = "No request (payload) provided.", NO_RESPONSE = "No response (payload) provided.", NO_PRESENTATION_SUBMISSION = "The VP did not contain a presentation submission. Did you forget to call PresentationExchange.checkSubmissionFrom?", BAD_VERIFIER_ATTESTATION = "Invalid verifier attestation. Bad JWT structure.", BAD_VERIFIER_ATTESTATION_REDIRECT_URIS = "Invalid verifier attestation. redirect_uri cannot be found in the the attestation jwts's redirect_uris.", CREDENTIAL_FORMATS_NOT_SUPPORTED = "CREDENTIAL_FORMATS_NOT_SUPPORTED", CREDENTIALS_FORMATS_NOT_PROVIDED = "Credentials format not provided by RP/OP", COULD_NOT_FIND_VCS_MATCHING_PD = "Could not find VerifiableCredentials matching presentationDefinition object in the provided VC list", DIDAUTH_REQUEST_PAYLOAD_NOT_CREATED = "DidAuthRequestPayload not created", DID_METHODS_NOT_SUPORTED = "DID_METHODS_NOT_SUPPORTED", ERROR_VERIFYING_SIGNATURE = "Error verifying the DID Auth Token signature.", INVALID_JWT = "Received an invalid JWT.", MISSING_X5C_HEADER_WITH_CLIENT_ID_SCHEME_X509 = "Missing x5c header with client_id_scheme 'x509_san_dns' | 'x509_san_uri'.", MISSING_KID_HEADER_WITH_CLIENT_ID_SCHEME_DID = "Missing kid header with client_id_scheme 'did'.", MISSING_ATTESTATION_JWT_WITH_CLIENT_ID_SCHEME_ATTESTATION = "Missing jwt header jwt with client_id_scheme 'verifier_attestation'.", MISSING_ATTESTATION_JWT_TYP = "Attestation JWT missing typ 'verifier-attestation+jwt'.", INVALID_CLIENT_ID_SCHEME = "Invalid client_id_scheme.", INVALID_REQUEST_OBJECT_ENTITY_ID_SCHEME_CLIENT_ID = "Request Object uses client_id_scheme 'entity_id', but the entity_id is missing or not an https endpoint.", EXPIRED = "The token has expired", INVALID_AUDIENCE = "Audience is invalid. Should be a string value.", NO_AUDIENCE = "No audience found in JWT payload or not configured", NO_JWT = "no JWT was supplied", NO_NONCE = "No nonce found in JWT payload", NO_REFERENCE_URI = "referenceUri must be defined when REFERENCE option is used", REFERENCE_URI_NO_PAYLOAD = "referenceUri specified, but object to host there is not present", NO_SELF_ISSUED_ISS = "The Response Token Issuer Claim (iss) MUST start with https://self-isued.me/v2", REGISTRATION_NOT_SET = "Registration metadata not set.", REQUEST_CLAIMS_PRESENTATION_NON_EXCLUSIVE = "Request claims can't have multiple of 'presentation_definition', 'presentation_definition_uri' and 'dcql_query", REQUEST_CLAIMS_PRESENTATION_DEFINITION_NOT_VALID = "Presentation definition in the request claims is not valid", REQUEST_OBJECT_TYPE_NOT_SET = "Request object type is not set.", RESPONSE_OPTS_PRESENTATIONS_SUBMISSION_IS_NOT_VALID = "presentation_submission object inside the response opts vp should be valid", RESPONSE_STATUS_UNEXPECTED = "Received unexpected response status", REG_OBJ_N_REG_URI_CANT_BE_SET_SIMULTANEOUSLY = "Registration can either be passed by value or passed by reference. Hence, registration object and registration URI can not be set simultaneously", REG_OBJ_MALFORMED = "The registration object is malformed.", REG_PASS_BY_REFERENCE_INCORRECTLY = "Request error", REGISTRATION_OBJECT_TYPE_NOT_SET = "Registration object type is not set.", SIOP_VERSION_NOT_SUPPORTED = "The SIOP spec version could not inferred from the authentication request payload", NO_VERIFIABLE_PRESENTATION_NO_CREDENTIALS = "Either no verifiable presentation or no credentials found in the verifiable presentation", VERIFY_BAD_PARAMS = "Verify bad parameters", VERIFIABLE_PRESENTATION_SIGNATURE_NOT_VALID = "The signature of the verifiable presentation is not valid", VERIFIABLE_PRESENTATION_VERIFICATION_FUNCTION_MISSING = "The verifiable presentation verification function is missing", PRESENTATION_SUBMISSION_DEFINITION_ID_DOES_NOT_MATCHING_DEFINITION_ID = "The 'definition_id' in the presentation submission does not match the id of the presentation definition." } interface EcdsaSignature { r: string; s: string; recoveryParam?: number | null; } interface JWTPayload { iss?: string; sub?: string; aud?: string | string[]; iat?: number; nbf?: number; type?: string; exp?: number; rexp?: number; jti?: string; [x: string]: any; } interface VerifiedJWT { payload: Partial<JWTPayload>; issuer: string; jwt: string; } /** * JSON Web Key ({@link https://www.rfc-editor.org/rfc/rfc7517 JWK}). "RSA", "EC", "OKP", and "oct" * key types are supported. */ interface JWK { /** JWK "alg" (Algorithm) Parameter. */ alg?: string; crv?: string; d?: string; dp?: string; dq?: string; e?: string; /** JWK "ext" (Extractable) Parameter. */ ext?: boolean; k?: string; /** JWK "key_ops" (Key Operations) Parameter. */ key_ops?: string[]; /** JWK "kid" (Key ID) Parameter. */ kid?: string; /** JWK "kty" (Key Type) Parameter. */ kty?: string; n?: string; oth?: Array<{ d?: string; r?: string; t?: string; }>; p?: string; q?: string; qi?: string; /** JWK "use" (Public Key Use) Parameter. */ use?: string; x?: string; y?: string; /** JWK "x5c" (X.509 Certificate Chain) Parameter. */ x5c?: string[]; /** JWK "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter. */ x5t?: string; /** "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Parameter. */ 'x5t#S256'?: string; /** JWK "x5u" (X.509 URL) Parameter. */ x5u?: string; [propName: string]: unknown; } type DecryptCompact = (input: { jwk: { kid: string; }; jwe: string; }) => Promise<{ plaintext: string; protectedHeader: Record<string, unknown> & { alg: string; enc: string; }; }>; interface RequestObjectOpts<CT extends ClaimPayloadCommonOpts> extends ObjectBy { payload?: RequestObjectPayloadOpts<CT>; createJwtCallback: CreateJwtCallback; jwtIssuer: JwtIssuer; } declare class RequestObject { private payload; private jwt?; private readonly opts; private constructor(); /** * Create a request object that typically is used as a JWT on RP side, typically this method is called automatically when creating an Authorization Request, but you could use it directly! * * @param authorizationRequestOpts Request Object options to build a Request Object * @remarks This method is used to generate a SIOP request Object. * First it generates the request object payload, and then it a signed JWT can be accessed on request. * * Normally you will want to use the Authorization Request class. That class creates a URI that includes the JWT from this class in the URI * If you do use this class directly, you can call the `convertRequestObjectToURI` afterwards to get the URI. * Please note that the Authorization Request allows you to differentiate between OAuth2 and OpenID parameters that become * part of the URI and which become part of the Request Object. If you generate a URI based upon the result of this class, * the URI will be constructed based on the Request Object only! */ static fromOpts(authorizationRequestOpts: CreateAuthorizationRequestOpts): Promise<RequestObject>; static fromJwt(requestObjectJwt: RequestObjectJwt | undefined): Promise<RequestObject | undefined>; static fromPayload(requestObjectPayload: RequestObjectPayload, authorizationRequestOpts: CreateAuthorizationRequestOpts): Promise<RequestObject>; static fromAuthorizationRequestPayload(payload: AuthorizationRequestPayload): Promise<RequestObject | undefined>; toJwt(): Promise<RequestObjectJwt | undefined>; getPayload(): RequestObjectPayload | undefined; assertValid(): Promise<void>; get options(): RequestObjectOpts<ClaimPayloadCommonOpts | ClaimPayloadOpts> | undefined; private removeRequestProperties; private static mergeOAuth2AndOpenIdProperties; } declare const createRequestObjectPayload: (opts: CreateAuthorizationRequestOpts) => Promise<RequestObjectPayload | undefined>; declare const assertValidRequestObjectPayload: (verPayload: RequestObjectPayload | undefined) => void; declare class IDToken { private _header?; private _payload?; private _jwt?; private readonly _responseOpts; private constructor(); static fromVerifiedAuthorizationRequest(verifiedAuthorizationRequest: VerifiedAuthorizationRequest, responseOpts: AuthorizationResponseOpts, verifyOpts?: VerifyAuthorizationResponseOpts): Promise<IDToken>; static fromIDToken(idTokenJwt: IDTokenJwt, verifyOpts?: VerifyAuthorizationResponseOpts): Promise<IDToken>; static fromIDTokenPayload(idTokenPayload: IDTokenPayload, responseOpts: AuthorizationResponseOpts, verifyOpts?: VerifyAuthorizationResponseOpts): Promise<IDToken>; payload(): IDTokenPayload; jwt(_jwtIssuer: JwtIssuer): Promise<IDTokenJwt>; private parseAndVerifyJwt; /** * Verifies a SIOP ID Response JWT on the RP Side * * @param verifyOpts */ verify(verifyOpts: VerifyAuthorizationResponseOpts): Promise<VerifiedIDToken>; static verify(idTokenJwt: IDTokenJwt, verifyOpts: VerifyAuthorizationResponseOpts): Promise<VerifiedIDToken>; private assertValidResponseJWT; get header(): JwtHeader; get responseOpts(): AuthorizationResponseOpts; isSelfIssued(): Promise<boolean>; } declare const createIDTokenPayload: (verifiedAuthorizationRequest: VerifiedAuthorizationRequest, responseOpts: AuthorizationResponseOpts) => Promise<IDTokenPayload>; interface AuthorizationResponseOpts { responseURI?: string; responseURIType?: ResponseURIType; registration?: ResponseRegistrationOpts; version?: SupportedVersion; audience?: string; createJwtCallback: CreateJwtCallback; jwtIssuer?: JwtIssuer; responseMode?: ResponseMode; responseType?: [ResponseType]; expiresIn?: number; accessToken?: string; tokenType?: string; refreshToken?: string; dcqlResponse?: DcqlResponseOpts; isFirstParty?: boolean; } interface DcqlResponseOpts { dcqlPresentation: DcqlVpTokenInput; } interface DcqlQueryPayloadOpts { dcql_query: Record<string, any>; } interface VerifiablePresentationWithSubmissionData extends VerifiablePresentationWithFormat { vpTokenLocation: VPTokenLocation; submissionData: PresentationSubmission$1; } declare enum VPTokenLocation { AUTHORIZATION_RESPONSE = "authorization_response", ID_TOKEN = "id_token", TOKEN_RESPONSE = "token_response" } type PresentationVerificationResult = { verified: boolean; reason?: string; }; type PresentationVerificationCallback = (args: W3CVerifiablePresentation | CompactSdJwtVc | MdocOid4vpIssuerSigned, presentationSubmission?: PresentationSubmission$1) => Promise<PresentationVerificationResult>; type PresentationSignCallback = (args: PresentationSignCallBackParams) => Promise<W3CVerifiablePresentation | CompactSdJwtVc>; type DcqlQueryLookupCallback = (queryId: string, version?: string, tenantId?: string) => Promise<DcqlQuery>; interface VerifyAuthorizationResponseOpts { correlationId: string; verification: Verification; verifyJwtCallback: VerifyJwtCallback; hasher?: HasherSync; nonce?: string; state?: string; dcqlQuery?: DcqlQuery; audience?: string; restrictToFormats?: Format; restrictToDIDMethods?: string[]; } interface AuthorizationResponseWithCorrelationId { responseURI: string; response: AuthorizationResponse; correlationId: string; } interface CreateAuthorizationResponseOpts { jwtIssuer?: JwtIssuer; version?: SupportedVersion; correlationId?: string; audience?: string; issuer?: ResponseIss | string; verification?: Verification; dcqlResponse?: DcqlResponseOpts; isFirstParty?: boolean; } declare class AuthorizationResponse { private readonly _authorizationRequest?; private readonly _idToken?; private readonly _payload; private readonly _options?; private constructor(); /** * Creates a SIOP Response Object * * @param requestObject * @param responseOpts * @param verifyOpts */ static fromRequestObject(requestObject: string, responseOpts: AuthorizationResponseOpts, verifyOpts: VerifyAuthorizationRequestOpts): Promise<AuthorizationResponse>; static fromPayload(authorizationResponsePayload: AuthorizationResponsePayload, responseOpts?: AuthorizationResponseOpts): Promise<AuthorizationResponse>; static fromAuthorizationRequest(authorizationRequest: AuthorizationRequest, responseOpts: AuthorizationResponseOpts, verifyOpts: VerifyAuthorizationRequestOpts): Promise<AuthorizationResponse>; static fromVerifiedAuthorizationRequest(verifiedAuthorizationRequest: VerifiedAuthorizationRequest, responseOpts: AuthorizationResponseOpts, verifyOpts: VerifyAuthorizationRequestOpts): Promise<AuthorizationResponse>; verify(verifyOpts: VerifyAuthorizationResponseOpts): Promise<VerifiedAuthorizationResponse>; get authorizationRequest(): AuthorizationRequest | undefined; get payload(): AuthorizationResponsePayload; get options(): AuthorizationResponseOpts | undefined; get idToken(): IDToken | undefined; getMergedProperty<T>(key: string, opts?: { consistencyCheck?: boolean; hasher?: HasherSync; }): T | undefined; mergedPayloads(opts?: { consistencyCheck?: boolean; hasher?: HasherSync; }): AuthorizationResponsePayload; } declare const createResponsePayload: (authorizationRequest: AuthorizationRequest, responseOpts: AuthorizationResponseOpts, idTokenPayload?: IDTokenPayload) => Promise<AuthorizationResponsePayload | undefined>; /** * Properties can be in oAUth2 and OpenID (JWT) style. If they are in both the OpenID prop takes precedence as they are signed. * @param payload * @param requestObject */ declare const mergeOAuth2AndOpenIdInRequestPayload: (payload: AuthorizationRequestPayload, requestObject?: RequestObject) => Promise<AuthorizationRequestPayload>; declare const createDiscoveryMetadataPayload: (opts: DiscoveryMetadataOpts) => DiscoveryMetadataPayload; declare const extractNonceFromWrappedVerifiablePresentation: (wrappedVp: WrappedVerifiablePresentation) => string | undefined; declare const verifyPresentations: (authorizationResponse: AuthorizationResponse, verifyOpts: VerifyAuthorizationResponseOpts) => Promise<{ dcql: VerifiedOpenID4VPSubmission; }>; declare const extractDcqlPresentationFromDcqlVpToken: (vpToken: DcqlPresentation.Input | string, opts?: { hasher?: HasherSync; }) => PresentationSubmission; declare const extractPresentationsFromDcqlVpToken: (vpToken: DcqlPresentation.Input | string, opts?: { hasher?: HasherSync; }) => WrappedVerifiablePresentation[]; declare const hasCryptographicHolderBinding: (format: "mso_mdoc" | "dc+sd-jwt" | "jwt_vc_json" | "ldp_vc", vc: WrappedMdocCredential | WrappedSdJwtVerifiableCredential | WrappedW3CVerifiableCredential) => boolean; /** * Finds a valid DcqlQuery inside the given AuthenticationRequestPayload * throws exception if the DcqlQuery is not valid * returns the decoded dcql query if a valid instance found * @param authorizationRequestPayload object that can have a dcql_query inside * @param version */ declare class Dcql { static findValidDcqlQuery: (authorizationRequestPayload: AuthorizationRequestPayload, version?: SupportedVersion) => Promise<DcqlQuery | undefined>; static getDcqlPresentationResult: (record: DcqlPresentation | string, dcqlQuery: DcqlQuery, opts: { hasher?: HasherSync; }) => DcqlPresentationResult.Output; static toDcqlMdocCredential: (vc: WrappedMdocCredential) => DcqlMdocCredential; static toDcqlSdJwtCredential: (vc: WrappedSdJwtVerifiableCredential) => DcqlSdJwtVcCredential; static toDcqlJwtCredential: (vc: WrappedW3CVerifiableCredential) => DcqlW3cVcCredential; static toDcqlJsonLdCredential: (vc: WrappedW3CVerifiableCredential) => DcqlW3cVcCredential; static assertValidDcqlPresentationResult: (record: DcqlPresentation | string, dcqlQuery: DcqlQuery, opts: { hasher?: HasherSync; }) => Promise<{ credential_matches: { [x: string]: { success: true; valid_credentials: [{ claims: { success: true; valid_claim_sets: [{ output: { [x: string]: string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any; } | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | { [x: string]: { [x: string]: unknown; }; }; success: true; claim_set_index: number | undefined; valid_claim_indexes?: [number, ...number[]] | undefined; failed_claim_indexes?: undefined; }, ...{ output: { [x: string]: string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any; } | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | { [x: string]: { [x: string]: unknown; }; }; success: true; claim_set_index: number | undefined; valid_claim_indexes?: [number, ...number[]] | undefined; failed_claim_indexes?: undefined; }[]]; valid_claims?: [{ output: { [x: string]: string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any; } | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | { [x: string]: { [x: string]: unknown; }; }; success: true; claim_index: number; claim_id?: string | undefined; }, ...{ output: { [x: string]: string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any; } | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | { [x: string]: { [x: string]: unknown; }; }; success: true; claim_index: number; claim_id?: string | undefined; }[]] | undefined; failed_claims?: [{ output: unknown; issues: { [x: string]: unknown; }; success: false; claim_index: number; claim_id?: string | undefined; }, ...{ output: unknown; issues: { [x: string]: unknown; }; success: false; claim_index: number; claim_id?: string | undefined; }[]] | undefined; failed_claim_sets?: [{ issues: { [x: string]: unknown; }; success: false; claim_set_index: number | undefined; failed_claim_indexes: [number, ...number[]]; valid_claim_indexes?: [number, ...number[]] | undefined; }, ...{ issues: { [x: string]: unknown; }; success: false; claim_set_index: number | undefined; failed_claim_indexes: [number, ...number[]]; valid_claim_indexes?: [number, ...number[]] | undefined; }[]] | undefined; }; trusted_authorities: { success: true; valid_trusted_authority?: undefined; failed_trusted_authorities?: undefined; } | { success: true; valid_trusted_authority: { output: { type: "aki" | "etsi_tl" | "openid_federation"; value: string; }; success: true; trusted_authority_index: number; }; failed_trusted_authorities?: [{ output: unknown; issues: { [x: string]: unknown; }; success: false; trusted_authority_index: number; }, ...{ output: unknown; issues: { [x: string]: unknown; }; success: false; trusted_authority_index: number; }[]] | undefined; }; meta: { output: { cryptographic_holder_binding: boolean; credential_format: "vc+sd-jwt" | "dc+sd-jwt"; vct: string; } | { cryptographic_holder_binding: boolean; credential_format: "mso_mdoc"; doctype: string; } | { type: string[]; cryptographic_holder_binding: boolean; credential_format: "ldp_vc" | "jwt_vc_json"; }; success: true; }; success: true; input_credential_index: number; }, ...{ claims: { success: true; valid_claim_sets: [{ output: { [x: string]: string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any)[])[])[])[])[])[])[]; } | (string | number | boolean | { [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number