@sphereon/did-auth-siop
Version:
Self Issued OpenID V2 (SIOPv2) and OpenID 4 Verifiable Presentations (OID4VP)
599 lines (586 loc) • 796 kB
TypeScript
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