UNPKG

@sphereon/jarm

Version:

Sphereon JARM

42 lines (34 loc) 1.46 kB
import * as v from 'valibot'; import { vJarmResponseMode, vOpenid4vpJarmResponseMode } from '../v-response-mode-registry.js'; import { vResponseType } from '../v-response-type-registry.js'; import type { JarmAuthResponseParams } from './v-jarm-auth-response-params.js'; import type { JarmDirectPostJwtResponseParams } from './v-jarm-direct-post-jwt-auth-response-params.js'; export const vAuthRequestParams = v.looseObject({ state: v.optional(v.string()), response_mode: v.optional(v.union([vJarmResponseMode, vOpenid4vpJarmResponseMode])), client_id: v.string(), response_type: vResponseType, client_metadata: v.looseObject({ jwks: v.optional( v.object({ keys: v.array(v.looseObject({ kid: v.optional(v.string()), kty: v.string() })), }), ), jwks_uri: v.optional(v.string()), }), }); export type AuthRequestParams = v.InferInput<typeof vAuthRequestParams>; export const vOAuthAuthRequestGetParamsOut = v.object({ authRequestParams: vAuthRequestParams, }); export type OAuthAuthRequestGetParamsOut = v.InferOutput<typeof vOAuthAuthRequestGetParamsOut>; export interface JarmDirectPostJwtAuthResponseValidationContext { openid4vp: { authRequest: { getParams: (input: JarmAuthResponseParams | JarmDirectPostJwtResponseParams) => Promise<OAuthAuthRequestGetParamsOut>; }; }; jwe: { decryptCompact: (input: { jwe: string; jwk: { kid: string } }) => Promise<{ plaintext: string }>; }; }