@sphereon/jarm
Version:
Sphereon JARM
42 lines (34 loc) • 1.46 kB
text/typescript
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 }>;
};
}