Skip to content

Commit 53ffde2

Browse files
committed
chore: Validate incoming DcqlQuery and return DcqlPresentationResult in VerifiedOpenID4VPSubmission
1 parent 53636d0 commit 53ffde2

3 files changed

Lines changed: 6 additions & 4 deletions

File tree

packages/siop-oid4vp/lib/authorization-response/Dcql.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export class Dcql {
5757
opts: {
5858
hasher?: HasherSync
5959
},
60-
) => {
60+
) : DcqlPresentationResult.Output => {
6161
const dcqlPresentation = Object.fromEntries(
6262
// FIXME SSISDK-41
6363
Object.entries(extractDcqlPresentationFromDcqlVpToken(record, opts)).map(([queryId, p]) => {

packages/siop-oid4vp/lib/authorization-response/OpenID4VP.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export const verifyPresentations = async (
5050
verifyOpts: VerifyAuthorizationResponseOpts,
5151
): Promise<{ dcql: VerifiedOpenID4VPSubmission }> => {
5252
const dcqlQuery = DcqlQuery.parse(verifyOpts.dcqlQuery ?? JSON.parse(authorizationResponse?.authorizationRequest.payload.dcql_query))
53+
DcqlQuery.validate(dcqlQuery)
5354
const dcqlPresentation = extractDcqlPresentationFromDcqlVpToken(authorizationResponse.payload.vp_token as string, { hasher: verifyOpts.hasher })
5455

5556
const wrappedPresentations = Object.values(dcqlPresentation)
@@ -59,7 +60,7 @@ export const verifyPresentations = async (
5960
),
6061
)
6162

62-
await Dcql.assertValidDcqlPresentationResult(authorizationResponse.payload.vp_token as string, dcqlQuery, { hasher: verifyOpts.hasher })
63+
const dcqlPresentationResult = await Dcql.assertValidDcqlPresentationResult(authorizationResponse.payload.vp_token as string, dcqlQuery, { hasher: verifyOpts.hasher })
6364

6465
if (verifiedPresentations.some((verified) => !verified)) {
6566
const message = verifiedPresentations
@@ -95,7 +96,7 @@ export const verifyPresentations = async (
9596
}
9697
}
9798

98-
return { dcql: { nonce, presentation: dcqlPresentation, dcqlQuery } }
99+
return { dcql: { nonce, presentation: dcqlPresentation, dcqlQuery , dcqlPresentationResult} }
99100
}
100101

101102
export const extractDcqlPresentationFromDcqlVpToken = (

packages/siop-oid4vp/lib/types/SIOP.types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
W3CVerifiablePresentation,
1111
WrappedVerifiablePresentation,
1212
} from '@sphereon/ssi-types'
13-
import { DcqlQuery } from 'dcql'
13+
import { DcqlPresentationResult, DcqlQuery } from 'dcql'
1414
import {
1515
AuthorizationRequest,
1616
CreateAuthorizationRequestOpts,
@@ -522,6 +522,7 @@ export interface VerifiedIDToken {
522522
export interface VerifiedOpenID4VPSubmission {
523523
dcqlQuery: DcqlQuery
524524
presentation: { [credentialQueryId: string]: WrappedVerifiablePresentation }
525+
dcqlPresentationResult?: DcqlPresentationResult
525526
nonce?: string
526527
}
527528

0 commit comments

Comments
 (0)