@sphereon/did-auth-siop
Version:
Self Issued OpenID V2 (SIOPv2) and OpenID 4 Verifiable Presentations (OID4VP)
50 lines (45 loc) • 2.04 kB
text/typescript
import { assertValidRequestObjectOpts } from '../request-object/Opts'
import { SIOPErrors, Verification } from '../types'
import { assertValidRequestRegistrationOpts } from './RequestRegistration'
import { CreateAuthorizationRequestOpts, VerifyAuthorizationRequestOpts } from './types'
export const assertValidVerifyAuthorizationRequestOpts = (opts: VerifyAuthorizationRequestOpts) => {
if (!opts || !opts.verification || !opts.verifyJwtCallback) {
throw new Error(SIOPErrors.VERIFY_BAD_PARAMS)
}
if (!opts.correlationId) {
throw new Error('No correlation id found')
}
}
export const assertValidAuthorizationRequestOpts = (opts: CreateAuthorizationRequestOpts) => {
if (!opts || !opts.requestObject || (!opts.payload && !opts.requestObject.payload) || (opts.payload?.request_uri && !opts.requestObject.payload)) {
throw new Error(SIOPErrors.BAD_PARAMS)
}
assertValidRequestObjectOpts(opts.requestObject, false)
assertValidRequestRegistrationOpts(opts['registration'] ? opts['registration'] : opts.clientMetadata)
}
export const mergeVerificationOpts = (
classOpts: {
verification?: Verification
},
requestOpts: {
correlationId: string
verification?: Verification
},
) => {
const presentationVerificationCallback =
requestOpts.verification?.presentationVerificationCallback ?? classOpts.verification?.presentationVerificationCallback
const replayRegistry = requestOpts.verification?.replayRegistry ?? classOpts.verification?.replayRegistry
return {
...classOpts.verification,
...requestOpts.verification,
...(presentationVerificationCallback && { presentationVerificationCallback }),
...(replayRegistry && { replayRegistry }),
revocationOpts: {
...classOpts.verification?.revocationOpts,
...requestOpts.verification?.revocationOpts,
revocationVerificationCallback:
requestOpts.verification?.revocationOpts?.revocationVerificationCallback ??
classOpts?.verification?.revocationOpts?.revocationVerificationCallback,
},
}
}