Skip to content

Commit 94d5cab

Browse files
committed
Merge remote-tracking branch 'origin/feature/DIIPv4' into feature/SSISDK-62
2 parents ee35e0b + ab63b95 commit 94d5cab

3 files changed

Lines changed: 17 additions & 10 deletions

File tree

packages/siop-oid4vp/lib/rp/InMemoryRPSessionManager.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import {
99
AuthorizationRequestStateStatus,
1010
AuthorizationResponseState,
1111
AuthorizationResponseStateStatus,
12-
AuthorizationResponseStateWithVerifiedData
12+
AuthorizationResponseStateWithVerifiedData,
13+
CallbackOpts
1314
} from '../types'
1415
import { IRPSessionManager } from './types'
1516

@@ -27,6 +28,8 @@ export class InMemoryRPSessionManager implements IRPSessionManager {
2728
private readonly nonceMapping: Record<number, string> = {}
2829
// stored by hashcode
2930
private readonly stateMapping: Record<number, string> = {}
31+
private readonly callbackMapping: Record<string, CallbackOpts> = {}
32+
private readonly queryIdMapping: Record<string, string> = {}
3033
private readonly maxAgeInSeconds: number
3134

3235
private static getKeysForCorrelationId(mapping: Record<number, string>, correlationId: string): number[] {
@@ -193,12 +196,11 @@ export class InMemoryRPSessionManager implements IRPSessionManager {
193196
try {
194197
const eventState = {
195198
correlationId: event.correlationId,
196-
queryId: event.queryId,
199+
queryId: event.queryId ?? this.queryIdMapping[event.correlationId],
197200
...(type === 'request' && { request: event.subject }),
198201
...(type === 'response' && { response: event.subject }),
199202
...(event.error && { error: event.error }),
200203
status,
201-
callback: event.callback,
202204
timestamp: event.timestamp,
203205
lastUpdated: event.timestamp,
204206
}
@@ -208,13 +210,20 @@ export class InMemoryRPSessionManager implements IRPSessionManager {
208210
this.authorizationRequests[event.correlationId] = state
209211
this.updateMapping(this.nonceMapping, event, 'nonce', event.correlationId, true)
210212
this.updateMapping(this.stateMapping, event, 'state', event.correlationId, true)
213+
if (event.queryId) {
214+
this.queryIdMapping[event.correlationId] = event.queryId
215+
}
216+
if (event.callback) {
217+
this.callbackMapping[event.correlationId] = event.callback
218+
}
211219
} else {
212220
state = eventState as AuthorizationResponseState
213221
this.authorizationResponses[event.correlationId] = state
214222
}
215223

216-
if (event.callback && (event.callback.status === undefined || event.callback.status.includes(status))) {
217-
void this.executeCallback(event.callback.url, state)
224+
const callback = this.callbackMapping[event.correlationId]
225+
if (callback && (callback.status === undefined || callback.status.includes(status))) {
226+
void this.executeCallback(callback.url, state)
218227
}
219228
} catch (error: unknown) {
220229
console.log(`Error in update state happened: ${error}`)
@@ -265,7 +274,7 @@ export class InMemoryRPSessionManager implements IRPSessionManager {
265274
correlation_id: state.correlationId,
266275
query_id: state.queryId,
267276
last_updated: state.lastUpdated,
268-
...((state?.status === AuthorizationResponseStateStatus.VERIFIED && state.verifiedData !== undefined) && { verified_data: state.verifiedData }),
277+
...('verifiedData' in state && { verified_data: state.verifiedData }),
269278
...(state.error && { message: state.error.message })
270279
}
271280

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ export interface AuthorizationResponsePayload {
191191
| CompactSdJwtVc
192192
| MdocOid4vpMdocVpToken
193193
| EncodedDcqlPresentationVpToken
194-
verified_data?: VerifiedData
195194
is_first_party?: boolean
196195
// eslint-disable-next-line @typescript-eslint/no-explicit-any
197196
[x: string]: any

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { AuthorizationRequest } from '../authorization-request'
22
import { AuthorizationResponse } from '../authorization-response'
3-
import { AdditionalClaims } from '@sphereon/ssi-types'
4-
import { CallbackOpts } from '../types'
3+
import {CallbackOpts, VerifiedData} from '../types'
54

65
export interface AuthorizationRequestState {
76
correlationId: string
@@ -26,7 +25,7 @@ export interface AuthorizationResponseState {
2625
}
2726

2827
export interface AuthorizationResponseStateWithVerifiedData extends AuthorizationResponseState {
29-
verifiedData?: AdditionalClaims
28+
verifiedData?: VerifiedData
3029
}
3130

3231
export enum AuthorizationRequestStateStatus {

0 commit comments

Comments
 (0)