@sphereon/ssi-sdk.siopv2-oid4vp-rp-auth 0.32.1-next.54 → 0.33.1-feature.vcdm2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/RPInstance.js +95 -117
- package/dist/RPInstance.js.map +1 -1
- package/dist/agent/SIOPv2RP.d.ts +1 -0
- package/dist/agent/SIOPv2RP.d.ts.map +1 -1
- package/dist/agent/SIOPv2RP.js +207 -231
- package/dist/agent/SIOPv2RP.js.map +1 -1
- package/dist/functions.d.ts +3 -2
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +163 -178
- package/dist/functions.js.map +1 -1
- package/dist/index.js +3 -21
- package/dist/index.js.map +1 -1
- package/dist/types/ISIOPv2RP.d.ts +10 -7
- package/dist/types/ISIOPv2RP.d.ts.map +1 -1
- package/dist/types/ISIOPv2RP.js +2 -5
- package/dist/types/ISIOPv2RP.js.map +1 -1
- package/package.json +18 -17
- package/src/agent/SIOPv2RP.ts +39 -12
- package/src/functions.ts +24 -13
- package/src/types/ISIOPv2RP.ts +13 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk.siopv2-oid4vp-rp-auth",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,26 +14,27 @@
|
|
|
14
14
|
"build:clean": "tsc --build --clean && tsc --build"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@sphereon/did-auth-siop": "0.
|
|
18
|
-
"@sphereon/did-auth-siop-adapter": "0.
|
|
19
|
-
"@sphereon/oid4vc-common": "0.
|
|
17
|
+
"@sphereon/did-auth-siop": "0.17.0",
|
|
18
|
+
"@sphereon/did-auth-siop-adapter": "0.17.0",
|
|
19
|
+
"@sphereon/oid4vc-common": "0.17.0",
|
|
20
20
|
"@sphereon/pex": "5.0.0-unstable.28",
|
|
21
|
-
"@sphereon/ssi-sdk-ext.did-utils": "0.
|
|
22
|
-
"@sphereon/ssi-sdk-ext.identifier-resolution": "0.
|
|
23
|
-
"@sphereon/ssi-sdk-ext.jwt-service": "0.
|
|
24
|
-
"@sphereon/ssi-sdk.core": "0.
|
|
25
|
-
"@sphereon/ssi-sdk.credential-validation": "0.
|
|
26
|
-
"@sphereon/ssi-sdk.kv-store-temp": "0.
|
|
27
|
-
"@sphereon/ssi-sdk.mdl-mdoc": "0.
|
|
28
|
-
"@sphereon/ssi-sdk.pd-manager": "0.
|
|
29
|
-
"@sphereon/ssi-sdk.presentation-exchange": "0.
|
|
30
|
-
"@sphereon/ssi-sdk.sd-jwt": "0.
|
|
31
|
-
"@sphereon/ssi-sdk.siopv2-oid4vp-common": "0.
|
|
32
|
-
"@sphereon/ssi-types": "0.
|
|
21
|
+
"@sphereon/ssi-sdk-ext.did-utils": "0.28.0",
|
|
22
|
+
"@sphereon/ssi-sdk-ext.identifier-resolution": "0.28.0",
|
|
23
|
+
"@sphereon/ssi-sdk-ext.jwt-service": "0.28.0",
|
|
24
|
+
"@sphereon/ssi-sdk.core": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
25
|
+
"@sphereon/ssi-sdk.credential-validation": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
26
|
+
"@sphereon/ssi-sdk.kv-store-temp": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
27
|
+
"@sphereon/ssi-sdk.mdl-mdoc": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
28
|
+
"@sphereon/ssi-sdk.pd-manager": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
29
|
+
"@sphereon/ssi-sdk.presentation-exchange": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
30
|
+
"@sphereon/ssi-sdk.sd-jwt": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
31
|
+
"@sphereon/ssi-sdk.siopv2-oid4vp-common": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
32
|
+
"@sphereon/ssi-types": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
33
33
|
"@sphereon/wellknown-dids-client": "^0.1.3",
|
|
34
34
|
"@veramo/core": "4.2.0",
|
|
35
35
|
"@veramo/credential-w3c": "4.2.0",
|
|
36
36
|
"cross-fetch": "^3.1.8",
|
|
37
|
+
"dcql": "0.2.19",
|
|
37
38
|
"uuid": "^9.0.1"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
@@ -73,5 +74,5 @@
|
|
|
73
74
|
"Authenticator"
|
|
74
75
|
],
|
|
75
76
|
"nx": {},
|
|
76
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "9f634bdb714061141e277508c124b08d626f6036"
|
|
77
78
|
}
|
package/src/agent/SIOPv2RP.ts
CHANGED
|
@@ -7,8 +7,20 @@ import {
|
|
|
7
7
|
VerifiedAuthorizationResponse,
|
|
8
8
|
} from '@sphereon/did-auth-siop'
|
|
9
9
|
import { getAgentResolver } from '@sphereon/ssi-sdk-ext.did-utils'
|
|
10
|
-
import {
|
|
11
|
-
|
|
10
|
+
import {
|
|
11
|
+
AdditionalClaims,
|
|
12
|
+
CredentialMapper,
|
|
13
|
+
HasherSync,
|
|
14
|
+
ICredentialSubject,
|
|
15
|
+
IPresentation,
|
|
16
|
+
IVerifiableCredential,
|
|
17
|
+
IVerifiablePresentation,
|
|
18
|
+
JwtDecodedVerifiablePresentation,
|
|
19
|
+
MdocDeviceResponse,
|
|
20
|
+
MdocOid4vpMdocVpToken,
|
|
21
|
+
OriginalVerifiablePresentation,
|
|
22
|
+
SdJwtDecodedVerifiableCredential,
|
|
23
|
+
} from '@sphereon/ssi-types'
|
|
12
24
|
import { IAgentPlugin } from '@veramo/core'
|
|
13
25
|
import {
|
|
14
26
|
AuthorizationResponseStateWithVerifiedData,
|
|
@@ -33,6 +45,7 @@ import { RPInstance } from '../RPInstance'
|
|
|
33
45
|
|
|
34
46
|
import { ISIOPv2RP } from '../types/ISIOPv2RP'
|
|
35
47
|
import { shaHasher as defaultHasher } from '@sphereon/ssi-sdk.core'
|
|
48
|
+
import { DcqlQuery } from 'dcql'
|
|
36
49
|
|
|
37
50
|
export class SIOPv2RP implements IAgentPlugin {
|
|
38
51
|
private readonly opts: ISiopv2RPOpts
|
|
@@ -117,7 +130,7 @@ export class SIOPv2RP implements IAgentPlugin {
|
|
|
117
130
|
args.includeVerifiedData &&
|
|
118
131
|
args.includeVerifiedData !== VerifiedDataMode.NONE
|
|
119
132
|
) {
|
|
120
|
-
let hasher:
|
|
133
|
+
let hasher: HasherSync | undefined
|
|
121
134
|
if (
|
|
122
135
|
CredentialMapper.isSdJwtEncoded(responseState.response.payload.vp_token as OriginalVerifiablePresentation) &&
|
|
123
136
|
(!rpInstance.rpOptions.credentialOpts?.hasher || typeof rpInstance.rpOptions.credentialOpts?.hasher !== 'function')
|
|
@@ -130,14 +143,13 @@ export class SIOPv2RP implements IAgentPlugin {
|
|
|
130
143
|
//todo: later we want to conditionally pass in options for mdl-mdoc here
|
|
131
144
|
hasher,
|
|
132
145
|
)
|
|
133
|
-
const presentation = CredentialMapper.toUniformPresentation(presentationDecoded as OriginalVerifiablePresentation)
|
|
134
146
|
switch (args.includeVerifiedData) {
|
|
135
147
|
case VerifiedDataMode.VERIFIED_PRESENTATION:
|
|
136
|
-
responseState.response.payload.verifiedData =
|
|
148
|
+
responseState.response.payload.verifiedData = this.presentationOrClaimsFrom(presentationDecoded)
|
|
137
149
|
break
|
|
138
|
-
case VerifiedDataMode.CREDENTIAL_SUBJECT_FLATTENED:
|
|
150
|
+
case VerifiedDataMode.CREDENTIAL_SUBJECT_FLATTENED: // TODO debug cs-flat for SD-JWT
|
|
139
151
|
const allClaims: AdditionalClaims = {}
|
|
140
|
-
for (const credential of
|
|
152
|
+
for (const credential of this.presentationOrClaimsFrom(presentationDecoded).verifiableCredential || []) {
|
|
141
153
|
const vc = credential as IVerifiableCredential
|
|
142
154
|
const schemaValidationResult = await context.agent.cvVerifySchema({
|
|
143
155
|
credential,
|
|
@@ -168,6 +180,18 @@ export class SIOPv2RP implements IAgentPlugin {
|
|
|
168
180
|
return responseState
|
|
169
181
|
}
|
|
170
182
|
|
|
183
|
+
private presentationOrClaimsFrom = (
|
|
184
|
+
presentationDecoded:
|
|
185
|
+
| JwtDecodedVerifiablePresentation
|
|
186
|
+
| IVerifiablePresentation
|
|
187
|
+
| SdJwtDecodedVerifiableCredential
|
|
188
|
+
| MdocOid4vpMdocVpToken
|
|
189
|
+
| MdocDeviceResponse,
|
|
190
|
+
): AdditionalClaims | IPresentation =>
|
|
191
|
+
CredentialMapper.isSdJwtDecodedCredential(presentationDecoded)
|
|
192
|
+
? presentationDecoded.decodedPayload
|
|
193
|
+
: CredentialMapper.toUniformPresentation(presentationDecoded as OriginalVerifiablePresentation)
|
|
194
|
+
|
|
171
195
|
private async siopUpdateRequestState(args: IUpdateRequestStateArgs, context: IRequiredContext): Promise<AuthorizationRequestState> {
|
|
172
196
|
if (args.state !== 'sent') {
|
|
173
197
|
throw Error(`Only 'sent' status is supported for this method at this point`)
|
|
@@ -203,7 +227,8 @@ export class SIOPv2RP implements IAgentPlugin {
|
|
|
203
227
|
rp.get(context).then((rp) =>
|
|
204
228
|
rp.verifyAuthorizationResponse(authResponse, {
|
|
205
229
|
correlationId: args.correlationId,
|
|
206
|
-
presentationDefinitions: args.presentationDefinitions,
|
|
230
|
+
...(args.presentationDefinitions && !args.dcqlQuery ? { presentationDefinitions: args.presentationDefinitions } : {}),
|
|
231
|
+
...(args.dcqlQuery ? { dcqlQuery: args.dcqlQuery as DcqlQuery } : {}), // TODO BEFORE PR, check compatibility and whether we can remove local type
|
|
207
232
|
audience: args.audience,
|
|
208
233
|
}),
|
|
209
234
|
),
|
|
@@ -213,15 +238,17 @@ export class SIOPv2RP implements IAgentPlugin {
|
|
|
213
238
|
private async siopImportDefinitions(args: ImportDefinitionsArgs, context: IRequiredContext): Promise<void> {
|
|
214
239
|
const { definitions, tenantId, version, versionControlMode } = args
|
|
215
240
|
await Promise.all(
|
|
216
|
-
definitions.map(async (
|
|
217
|
-
|
|
241
|
+
definitions.map(async (definitionPair) => {
|
|
242
|
+
const definitionPayload = definitionPair.definitionPayload
|
|
243
|
+
await context.agent.pexValidateDefinition({ definition: definitionPayload })
|
|
218
244
|
|
|
219
|
-
console.log(`persisting definition ${
|
|
245
|
+
console.log(`persisting definition ${definitionPayload.id} / ${definitionPayload.name} with versionControlMode ${versionControlMode}`)
|
|
220
246
|
return context.agent.pdmPersistDefinition({
|
|
221
247
|
definitionItem: {
|
|
222
248
|
tenantId: tenantId,
|
|
223
249
|
version: version,
|
|
224
|
-
definitionPayload
|
|
250
|
+
definitionPayload,
|
|
251
|
+
dcqlPayload: definitionPair.dcqlPayload,
|
|
225
252
|
},
|
|
226
253
|
opts: { versionControlMode: versionControlMode },
|
|
227
254
|
})
|
package/src/functions.ts
CHANGED
|
@@ -16,10 +16,11 @@ import {
|
|
|
16
16
|
SupportedVersion,
|
|
17
17
|
VerifyJwtCallback,
|
|
18
18
|
} from '@sphereon/did-auth-siop'
|
|
19
|
-
import { CreateJwtCallback, JwtHeader, JwtIssuer, JwtPayload } from '@sphereon/oid4vc-common'
|
|
19
|
+
import { CreateJwtCallback, JwtHeader, JwtIssuer, JwtPayload, SigningAlgo } from '@sphereon/oid4vc-common'
|
|
20
20
|
import { IPresentationDefinition } from '@sphereon/pex'
|
|
21
21
|
import { getAgentDIDMethods, getAgentResolver } from '@sphereon/ssi-sdk-ext.did-utils'
|
|
22
22
|
import {
|
|
23
|
+
isExternalIdentifierOIDFEntityIdOpts,
|
|
23
24
|
isManagedIdentifierDidOpts,
|
|
24
25
|
isManagedIdentifierDidResult,
|
|
25
26
|
isManagedIdentifierX5cOpts,
|
|
@@ -27,17 +28,16 @@ import {
|
|
|
27
28
|
} from '@sphereon/ssi-sdk-ext.identifier-resolution'
|
|
28
29
|
import { JwtCompactResult } from '@sphereon/ssi-sdk-ext.jwt-service'
|
|
29
30
|
import { IVerifySdJwtPresentationResult } from '@sphereon/ssi-sdk.sd-jwt'
|
|
30
|
-
import { SigningAlgo } from '@sphereon/oid4vc-common'
|
|
31
31
|
import { CredentialMapper, Hasher, OriginalVerifiableCredential, PresentationSubmission } from '@sphereon/ssi-types'
|
|
32
32
|
import { IVerifyCallbackArgs, IVerifyCredentialResult, VerifyCallback } from '@sphereon/wellknown-dids-client'
|
|
33
33
|
// import { KeyAlgo, SuppliedSigner } from '@sphereon/ssi-sdk.core'
|
|
34
34
|
import { TKeyType } from '@veramo/core'
|
|
35
|
-
import { createHash } from 'crypto'
|
|
36
35
|
import { JWTVerifyOptions } from 'did-jwt'
|
|
37
36
|
import { Resolvable } from 'did-resolver'
|
|
38
37
|
import { EventEmitter } from 'events'
|
|
39
38
|
import { IPEXOptions, IRequiredContext, IRPOptions, ISIOPIdentifierOptions } from './types/ISIOPv2RP'
|
|
40
|
-
import {
|
|
39
|
+
import { DcqlQuery } from 'dcql'
|
|
40
|
+
import { defaultHasher } from '@sphereon/ssi-sdk.core'
|
|
41
41
|
|
|
42
42
|
export function getRequestVersion(rpOptions: IRPOptions): SupportedVersion {
|
|
43
43
|
if (Array.isArray(rpOptions.supportedVersions) && rpOptions.supportedVersions.length > 0) {
|
|
@@ -80,14 +80,14 @@ export function getPresentationVerificationCallback(
|
|
|
80
80
|
if (context.agent.mdocOid4vpRPVerify === undefined) {
|
|
81
81
|
return Promise.reject('ImDLMdoc agent plugin must be enabled to support MsoMdoc types')
|
|
82
82
|
}
|
|
83
|
-
if (
|
|
84
|
-
|
|
83
|
+
if (presentationSubmission !== undefined && presentationSubmission !== null) {
|
|
84
|
+
const verifyResult = await context.agent.mdocOid4vpRPVerify({
|
|
85
|
+
vp_token: args,
|
|
86
|
+
presentation_submission: presentationSubmission,
|
|
87
|
+
})
|
|
88
|
+
return { verified: !verifyResult.error }
|
|
85
89
|
}
|
|
86
|
-
|
|
87
|
-
vp_token: args,
|
|
88
|
-
presentation_submission: presentationSubmission,
|
|
89
|
-
})
|
|
90
|
-
return { verified: !verifyResult.error }
|
|
90
|
+
throw Error(`mdocOid4vpRPVerify(...) method requires a presentation submission`)
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
const result = await context.agent.verifyPresentation({
|
|
@@ -105,11 +105,13 @@ export async function createRPBuilder(args: {
|
|
|
105
105
|
rpOpts: IRPOptions
|
|
106
106
|
pexOpts?: IPEXOptions | undefined
|
|
107
107
|
definition?: IPresentationDefinition
|
|
108
|
+
dcql?: DcqlQuery
|
|
108
109
|
context: IRequiredContext
|
|
109
110
|
}): Promise<RPBuilder> {
|
|
110
111
|
const { rpOpts, pexOpts, context } = args
|
|
111
112
|
const { identifierOpts } = rpOpts
|
|
112
113
|
let definition: IPresentationDefinition | undefined = args.definition
|
|
114
|
+
let dcqlQuery: DcqlQuery | undefined = args.dcql
|
|
113
115
|
|
|
114
116
|
if (!definition && pexOpts && pexOpts.definitionId) {
|
|
115
117
|
const presentationDefinitionItems = await context.agent.pdmGetDefinitions({
|
|
@@ -122,7 +124,13 @@ export async function createRPBuilder(args: {
|
|
|
122
124
|
],
|
|
123
125
|
})
|
|
124
126
|
|
|
125
|
-
|
|
127
|
+
if (presentationDefinitionItems.length > 0) {
|
|
128
|
+
const presentationDefinitionItem = presentationDefinitionItems[0]
|
|
129
|
+
definition = presentationDefinitionItem.definitionPayload
|
|
130
|
+
if (!dcqlQuery && presentationDefinitionItem.dcqlPayload) {
|
|
131
|
+
dcqlQuery = presentationDefinitionItem.dcqlPayload as DcqlQuery // cast from DcqlQueryREST back to valibot DcqlQuery
|
|
132
|
+
}
|
|
133
|
+
}
|
|
126
134
|
}
|
|
127
135
|
|
|
128
136
|
const didMethods = identifierOpts.supportedDIDMethods ?? (await getAgentDIDMethods(context))
|
|
@@ -155,7 +163,7 @@ export async function createRPBuilder(args: {
|
|
|
155
163
|
//todo: probably wise to first look and see if we actually need the hasher to begin with
|
|
156
164
|
let hasher: Hasher | undefined = rpOpts.credentialOpts?.hasher
|
|
157
165
|
if (!rpOpts.credentialOpts?.hasher || typeof rpOpts.credentialOpts?.hasher !== 'function') {
|
|
158
|
-
hasher =
|
|
166
|
+
hasher = defaultHasher
|
|
159
167
|
}
|
|
160
168
|
|
|
161
169
|
const builder = RP.builder({ requestVersion: getRequestVersion(rpOpts) })
|
|
@@ -217,6 +225,9 @@ export async function createRPBuilder(args: {
|
|
|
217
225
|
if (definition) {
|
|
218
226
|
builder.withPresentationDefinition({ definition }, PropertyTarget.REQUEST_OBJECT)
|
|
219
227
|
}
|
|
228
|
+
if (dcqlQuery) {
|
|
229
|
+
builder.withDcqlQuery(dcqlQuery)
|
|
230
|
+
}
|
|
220
231
|
|
|
221
232
|
if (rpOpts.responseRedirectUri) {
|
|
222
233
|
builder.withResponseRedirectUri(rpOpts.responseRedirectUri)
|
package/src/types/ISIOPv2RP.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { ClientMetadataOpts, VerifyJwtCallback } from '@sphereon/did-auth-siop'
|
|
2
|
-
import { IIdentifierResolution, ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution'
|
|
3
|
-
import { IAgentContext, ICredentialIssuer, ICredentialVerifier, IDIDManager, IKeyManager, IPluginMethodMap, IResolver } from '@veramo/core'
|
|
4
|
-
import { AdditionalClaims, Hasher, W3CVerifiablePresentation } from '@sphereon/ssi-types'
|
|
5
1
|
import {
|
|
6
2
|
AuthorizationRequestPayload,
|
|
7
3
|
AuthorizationRequestState,
|
|
8
4
|
AuthorizationResponsePayload,
|
|
9
5
|
AuthorizationResponseState,
|
|
10
6
|
ClaimPayloadCommonOpts,
|
|
7
|
+
ClientMetadataOpts,
|
|
11
8
|
IRPSessionManager,
|
|
12
9
|
PresentationDefinitionWithLocation,
|
|
13
10
|
PresentationVerificationCallback,
|
|
@@ -17,10 +14,12 @@ import {
|
|
|
17
14
|
SupportedVersion,
|
|
18
15
|
VerifiablePresentationTypeFormat,
|
|
19
16
|
VerifiedAuthorizationResponse,
|
|
17
|
+
VerifyJwtCallback,
|
|
20
18
|
VPTokenLocation,
|
|
21
19
|
} from '@sphereon/did-auth-siop'
|
|
22
|
-
|
|
23
|
-
import {
|
|
20
|
+
import { ExternalIdentifierOIDFEntityIdOpts, IIdentifierResolution, ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution'
|
|
21
|
+
import { IAgentContext, ICredentialIssuer, ICredentialVerifier, IDIDManager, IKeyManager, IPluginMethodMap, IResolver } from '@veramo/core'
|
|
22
|
+
import { AdditionalClaims, DcqlQueryREST, HasherSync, W3CVerifiablePresentation } from '@sphereon/ssi-types'
|
|
24
23
|
|
|
25
24
|
import { Resolvable } from 'did-resolver'
|
|
26
25
|
import { DIDDocument } from '@sphereon/did-uni-client'
|
|
@@ -112,10 +111,16 @@ export interface IVerifyAuthResponseStateArgs {
|
|
|
112
111
|
correlationId: string
|
|
113
112
|
audience?: string
|
|
114
113
|
presentationDefinitions?: PresentationDefinitionWithLocation | PresentationDefinitionWithLocation[]
|
|
114
|
+
dcqlQuery?: DcqlQueryREST
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface IDefinitionPair {
|
|
118
|
+
definitionPayload: IPresentationDefinition
|
|
119
|
+
dcqlPayload?: DcqlQueryREST
|
|
115
120
|
}
|
|
116
121
|
|
|
117
122
|
export interface ImportDefinitionsArgs {
|
|
118
|
-
definitions: Array<
|
|
123
|
+
definitions: Array<IDefinitionPair>
|
|
119
124
|
tenantId?: string
|
|
120
125
|
version?: string
|
|
121
126
|
versionControlMode?: VersionControlMode
|
|
@@ -202,7 +207,7 @@ export interface ISIOPIdentifierOptions extends Omit<IDIDOptions, 'idOpts'> {
|
|
|
202
207
|
|
|
203
208
|
// todo make the necessary changes for mdl-mdoc types
|
|
204
209
|
export type CredentialOpts = {
|
|
205
|
-
hasher?:
|
|
210
|
+
hasher?: HasherSync
|
|
206
211
|
}
|
|
207
212
|
|
|
208
213
|
export interface AuthorizationResponseStateWithVerifiedData extends AuthorizationResponseState {
|