From 6166dcd421e21871bc54ef683abd54208088161b Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Thu, 9 Jan 2025 14:03:26 +0100 Subject: [PATCH 01/29] added support for first party applications --- .../src/siop-api-functions.ts | 11 +++++++++-- packages/siopv2-oid4vp-rp-rest-api/src/types.ts | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts b/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts index fea4b0db1..230632d2e 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts +++ b/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts @@ -2,7 +2,7 @@ import { AuthorizationResponsePayload, PresentationDefinitionLocation } from '@s import { checkAuth, ISingleEndpointOpts, sendErrorResponse } from '@sphereon/ssi-express-support' import { PresentationSubmission } from '@sphereon/ssi-types' import { Request, Response, Router } from 'express' -import { IRequiredContext } from './types' +import { AuthorizationChallengeValidationResponse, IRequiredContext } from './types' export function verifyAuthResponseSIOPv2Endpoint( router: Router, @@ -65,8 +65,15 @@ export function verifyAuthResponseSIOPv2Endpoint( // const credentialSubject = wrappedPresentation.presentation.verifiableCredential[0]?.credential?.credentialSubject // console.log(JSON.stringify(credentialSubject, null, 2)) console.log('PRESENTATION:' + JSON.stringify(wrappedPresentation.presentation, null, 2)) - const responseRedirectURI = await context.agent.siopGetRedirectURI({ correlationId, definitionId, state: verifiedResponse.state }) response.statusCode = 200 + + const authorizationChallengeValidationResponse: AuthorizationChallengeValidationResponse = { presentation_during_issuance_session: verifiedResponse.correlationId } + if (authorizationResponse.is_first_party) { // TODO update package to oid4vp + response.setHeader('Content-Type', 'application/json') + return response.send(JSON.stringify(authorizationChallengeValidationResponse)) + } + + const responseRedirectURI = await context.agent.siopGetRedirectURI({ correlationId, definitionId, state: verifiedResponse.state }) if (responseRedirectURI) { response.setHeader('Content-Type', 'application/json') return response.send(JSON.stringify({ redirect_uri: responseRedirectURI })) diff --git a/packages/siopv2-oid4vp-rp-rest-api/src/types.ts b/packages/siopv2-oid4vp-rp-rest-api/src/types.ts index cdc4a2233..28d713a41 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/src/types.ts +++ b/packages/siopv2-oid4vp-rp-rest-api/src/types.ts @@ -24,5 +24,9 @@ export interface ICreateAuthRequestWebappEndpointOpts extends ISingleEndpointOpt nonce?: string } +export interface AuthorizationChallengeValidationResponse { + presentation_during_issuance_session: string; +} + export type IRequiredPlugins = ICredentialVerifier & ISIOPv2RP & IPresentationExchange & IPDManager export type IRequiredContext = IAgentContext From 5a567f1ed749377839c78b629cc5e4f9911d4dc1 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Thu, 9 Jan 2025 14:54:17 +0100 Subject: [PATCH 02/29] chore: added isFirstParty flag to sendAuthorizationResponse on op session --- packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts | 1 + .../src/types/IDidAuthSiopOpAuthenticator.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts b/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts index b8fa0fa04..ad3bfaf6f 100644 --- a/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts +++ b/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts @@ -360,6 +360,7 @@ export class OpSession { const responseOpts = { verification, issuer, + ...(args.isFirstParty && { isFirstParty: args.isFirstParty }), // TODO update to oid4vp ...(args.verifiablePresentations && { presentationExchange: { verifiablePresentations, diff --git a/packages/siopv2-oid4vp-op-auth/src/types/IDidAuthSiopOpAuthenticator.ts b/packages/siopv2-oid4vp-op-auth/src/types/IDidAuthSiopOpAuthenticator.ts index 047c9d20d..a59d31457 100644 --- a/packages/siopv2-oid4vp-op-auth/src/types/IDidAuthSiopOpAuthenticator.ts +++ b/packages/siopv2-oid4vp-op-auth/src/types/IDidAuthSiopOpAuthenticator.ts @@ -123,6 +123,7 @@ export interface IOpsSendSiopAuthorizationResponseArgs { presentationSubmission?: PresentationSubmission verifiablePresentations?: W3CVerifiablePresentation[] hasher?: Hasher + isFirstParty?: boolean } export enum events { From e70cecbb79e6133d4907321c2ecd3ec01a58d5f4 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Thu, 9 Jan 2025 16:11:57 +0100 Subject: [PATCH 03/29] chore: updated oid4vc packages --- packages/ebsi-support/package.json | 8 +- packages/mdl-mdoc/package.json | 6 +- packages/oid4vci-holder/package.json | 4 +- packages/oid4vci-issuer-rest-api/package.json | 6 +- .../oid4vci-issuer-rest-client/package.json | 2 +- packages/oid4vci-issuer-store/package.json | 2 +- packages/oid4vci-issuer/package.json | 4 +- packages/siopv2-oid4vp-common/package.json | 2 +- packages/siopv2-oid4vp-op-auth/package.json | 6 +- .../src/session/OpSession.ts | 2 +- packages/siopv2-oid4vp-rp-auth/package.json | 6 +- .../siopv2-oid4vp-rp-rest-api/package.json | 2 +- .../src/siop-api-functions.ts | 2 +- packages/w3c-vc-api/package.json | 2 +- pnpm-lock.yaml | 730 +++++++++++++++--- 15 files changed, 664 insertions(+), 120 deletions(-) diff --git a/packages/ebsi-support/package.json b/packages/ebsi-support/package.json index 44fe9fc01..2696648f7 100644 --- a/packages/ebsi-support/package.json +++ b/packages/ebsi-support/package.json @@ -15,8 +15,8 @@ }, "dependencies": { "@ethersproject/random": "^5.7.0", - "@sphereon/did-auth-siop": "0.16.1-next.231", - "@sphereon/did-auth-siop-adapter": "0.16.1-next.231", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.241", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-resolver-ebsi": "0.27.0", @@ -44,8 +44,8 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-next.231", - "@sphereon/oid4vci-common": "0.16.1-next.231", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/mdl-mdoc/package.json b/packages/mdl-mdoc/package.json index b360fa632..02a4a2a93 100644 --- a/packages/mdl-mdoc/package.json +++ b/packages/mdl-mdoc/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-next.231", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", @@ -35,8 +35,8 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-next.231", - "@sphereon/oid4vci-common": "0.16.1-next.231", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/oid4vci-holder/package.json b/packages/oid4vci-holder/package.json index 968df0714..909e85529 100644 --- a/packages/oid4vci-holder/package.json +++ b/packages/oid4vci-holder/package.json @@ -15,8 +15,8 @@ }, "dependencies": { "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", - "@sphereon/oid4vci-client": "0.16.1-next.231", - "@sphereon/oid4vci-common": "0.16.1-next.231", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk-ext.jwt-service": "0.27.0", diff --git a/packages/oid4vci-issuer-rest-api/package.json b/packages/oid4vci-issuer-rest-api/package.json index 2630097ce..78d81c380 100644 --- a/packages/oid4vci-issuer-rest-api/package.json +++ b/packages/oid4vci-issuer-rest-api/package.json @@ -11,9 +11,9 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-next.231", - "@sphereon/oid4vci-issuer": "0.16.1-next.231", - "@sphereon/oid4vci-issuer-server": "0.16.1-next.231", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-issuer-server": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer-rest-client/package.json b/packages/oid4vci-issuer-rest-client/package.json index da2218f02..8b388f2e2 100644 --- a/packages/oid4vci-issuer-rest-client/package.json +++ b/packages/oid4vci-issuer-rest-client/package.json @@ -16,7 +16,7 @@ "generate-plugin-schema": "ts-node ../../packages/dev/bin/sphereon.js dev generate-plugin-schema" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-next.231", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-types": "workspace:*", "@veramo/core": "4.2.0", "cross-fetch": "^3.1.8" diff --git a/packages/oid4vci-issuer-store/package.json b/packages/oid4vci-issuer-store/package.json index 87dcec5f0..10cd09a56 100644 --- a/packages/oid4vci-issuer-store/package.json +++ b/packages/oid4vci-issuer-store/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-next.231", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer/package.json b/packages/oid4vci-issuer/package.json index fc82fcd3c..3c71b92cb 100644 --- a/packages/oid4vci-issuer/package.json +++ b/packages/oid4vci-issuer/package.json @@ -14,8 +14,8 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-next.231", - "@sphereon/oid4vci-issuer": "0.16.1-next.231", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.agent-config": "workspace:*", diff --git a/packages/siopv2-oid4vp-common/package.json b/packages/siopv2-oid4vp-common/package.json index 724be524e..c8a0ea888 100644 --- a/packages/siopv2-oid4vp-common/package.json +++ b/packages/siopv2-oid4vp-common/package.json @@ -12,7 +12,7 @@ "access": "public" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-next.231", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-types": "workspace:*", "uint8arrays": "3.1.1" diff --git a/packages/siopv2-oid4vp-op-auth/package.json b/packages/siopv2-oid4vp-op-auth/package.json index 48b2ac03d..c4f7b0266 100644 --- a/packages/siopv2-oid4vp-op-auth/package.json +++ b/packages/siopv2-oid4vp-op-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-next.231", - "@sphereon/did-auth-siop-adapter": "0.16.1-next.231", - "@sphereon/oid4vc-common": "0.16.1-next.231", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.241", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", diff --git a/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts b/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts index ad3bfaf6f..d03e8a9b5 100644 --- a/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts +++ b/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts @@ -360,7 +360,7 @@ export class OpSession { const responseOpts = { verification, issuer, - ...(args.isFirstParty && { isFirstParty: args.isFirstParty }), // TODO update to oid4vp + ...(args.isFirstParty && { isFirstParty: args.isFirstParty }), ...(args.verifiablePresentations && { presentationExchange: { verifiablePresentations, diff --git a/packages/siopv2-oid4vp-rp-auth/package.json b/packages/siopv2-oid4vp-rp-auth/package.json index 0e8e96fd6..ffb33bcb1 100644 --- a/packages/siopv2-oid4vp-rp-auth/package.json +++ b/packages/siopv2-oid4vp-rp-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-next.231", - "@sphereon/did-auth-siop-adapter": "0.16.1-next.231", - "@sphereon/oid4vc-common": "0.16.1-next.231", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.241", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", diff --git a/packages/siopv2-oid4vp-rp-rest-api/package.json b/packages/siopv2-oid4vp-rp-rest-api/package.json index 5983421a4..526dd83c9 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/package.json +++ b/packages/siopv2-oid4vp-rp-rest-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-next.231", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-sdk.credential-validation": "workspace:*", diff --git a/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts b/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts index 230632d2e..6c9a286da 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts +++ b/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts @@ -68,7 +68,7 @@ export function verifyAuthResponseSIOPv2Endpoint( response.statusCode = 200 const authorizationChallengeValidationResponse: AuthorizationChallengeValidationResponse = { presentation_during_issuance_session: verifiedResponse.correlationId } - if (authorizationResponse.is_first_party) { // TODO update package to oid4vp + if (authorizationResponse.is_first_party) { response.setHeader('Content-Type', 'application/json') return response.send(JSON.stringify(authorizationChallengeValidationResponse)) } diff --git a/packages/w3c-vc-api/package.json b/packages/w3c-vc-api/package.json index 461d2e417..7cfc9ce66 100644 --- a/packages/w3c-vc-api/package.json +++ b/packages/w3c-vc-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/agent.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-next.231", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.agent-config": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7900e72b0..ebec07d1b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -615,11 +615,11 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@sphereon/did-auth-siop': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -697,11 +697,11 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -914,8 +914,8 @@ importers: packages/mdl-mdoc: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 @@ -972,11 +972,11 @@ importers: version: 9.0.1 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1148,11 +1148,11 @@ importers: specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 '@sphereon/oid4vci-client': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1166,35 +1166,35 @@ importers: specifier: 0.27.0 version: 0.27.0 '@sphereon/ssi-sdk.contact-manager': - specifier: workspace:* - version: link:../contact-manager + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) '@sphereon/ssi-sdk.core': specifier: workspace:* version: link:../ssi-sdk-core '@sphereon/ssi-sdk.credential-store': - specifier: workspace:* - version: link:../credential-store + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) '@sphereon/ssi-sdk.credential-validation': - specifier: workspace:* - version: link:../credential-validation + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3) '@sphereon/ssi-sdk.data-store': - specifier: workspace:* - version: link:../data-store + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) '@sphereon/ssi-sdk.issuance-branding': - specifier: workspace:* - version: link:../issuance-branding + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) '@sphereon/ssi-sdk.mdl-mdoc': - specifier: workspace:* - version: link:../mdl-mdoc + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3) '@sphereon/ssi-sdk.oidf-client': - specifier: workspace:* - version: link:../oidf-client + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) '@sphereon/ssi-sdk.sd-jwt': - specifier: workspace:* - version: link:../sd-jwt + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3) '@sphereon/ssi-sdk.xstate-machine-persistence': - specifier: workspace:* - version: link:../xstate-persistence + specifier: 0.32.1-next.17 + version: 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) '@sphereon/ssi-types': specifier: workspace:* version: link:../ssi-types @@ -1260,11 +1260,11 @@ importers: packages/oid4vci-issuer: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1339,14 +1339,14 @@ importers: packages/oid4vci-issuer-rest-api: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/oid4vci-issuer-server': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1505,8 +1505,8 @@ importers: packages/oid4vci-issuer-rest-client: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/ssi-types': specifier: workspace:* version: link:../ssi-types @@ -1542,8 +1542,8 @@ importers: packages/oid4vci-issuer-store: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -2240,8 +2240,8 @@ importers: packages/siopv2-oid4vp-common: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-sdk.core': specifier: workspace:* version: link:../ssi-sdk-core @@ -2262,14 +2262,14 @@ importers: packages/siopv2-oid4vp-op-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231 + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2395,14 +2395,14 @@ importers: packages/siopv2-oid4vp-rp-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231 + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2483,8 +2483,8 @@ importers: packages/siopv2-oid4vp-rp-rest-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -3592,8 +3592,8 @@ importers: packages/w3c-vc-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-next.231 - version: 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.241 + version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -6001,8 +6001,12 @@ packages: '@sinonjs/fake-timers@8.1.0': resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@sphereon/did-auth-siop-adapter@0.16.1-next.231': - resolution: {integrity: sha512-9I5qY1eN1Rgt4JihcuAaOCAULi9CkP8BDJFnwidyivT9qvHw1EKsD36vUZnJC6pqssPByVl/6zyPuXagayrP6w==} + '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.241': + resolution: {integrity: sha512-RgweId9jsfgz0y9SkCwEFgAGWZ/yiQOLs7sfwA5Sj2dvpQB2m09ziH80Jbvl4orXl4YpNPC9j2MWttd81vWpoA==} + engines: {node: '>=18'} + + '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.241': + resolution: {integrity: sha512-GkARCVHC5HBZhf44YJhW5YpasGQVnijqjbK+ynCD2TmovQYluUwfJ4cH5wdZYW32XuGO6RibIdvkwKRt61vP2g==} engines: {node: '>=18'} '@sphereon/did-auth-siop@0.16.1-next.231': @@ -6029,6 +6033,10 @@ packages: '@sphereon/react-native-argon2': ^2.0.9 react-native: '>=0.60.0' + '@sphereon/jarm@0.16.1-feature.SPRIND.89.241': + resolution: {integrity: sha512-cKdWaLU6XOtDj/6df/fENR2TJ1z0GfDsDnbYvtII+IDwjoA0G4o9If1qYi4T0jigX/SZ8U4vURKzsiQnmX94Sg==} + engines: {node: '>=18'} + '@sphereon/jarm@0.16.1-next.231': resolution: {integrity: sha512-hWn0tAH63hbGjq9o0/oATYQRSJjXuqZSnlM4ufpsC5NHRgdPfacq5miRm8zGppO8cV2R/0rqNHX4ehLf9p++Qg==} engines: {node: '>=18'} @@ -6040,6 +6048,10 @@ packages: '@sphereon/lto-did-ts@0.1.8-unstable.0': resolution: {integrity: sha512-3jzwwuYX/VYuze+T9/yg4PcsJ5iNNwAfTp4WfS4aSfPFBErDAfKXqn6kOb0wFYGkhejr3Jz+rljPC2iKZiHiGA==} + '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.241': + resolution: {integrity: sha512-3OLMH7tUiqiq7GGNq5dEt9vSqCgNuhyhlChIoXoSDJ/DMETldwY5xKxQH9urrJWxEYpCkCcjubjZkJ5V7SBKgg==} + engines: {node: '>=18'} + '@sphereon/oid4vc-common@0.16.1-next.187': resolution: {integrity: sha512-OYOT3Z3moNb6JyGHYX9tcaOcrCAUn9opNKQ9wuKoiSyckXS6RZXinuDlGETISnMCf3cQZCWAHOc6ctfHv1eHDw==} engines: {node: '>=18'} @@ -6048,16 +6060,16 @@ packages: resolution: {integrity: sha512-izhbyfiyvQYyA/4mrYHFcyXMC49J025v1vHW8Z8i+snUJSA+R43OOXcplSoy3OfweKGleVOuvagLEA/a0QJLIg==} engines: {node: '>=18'} - '@sphereon/oid4vci-client@0.16.1-next.231': - resolution: {integrity: sha512-mUI/CXtZ6QnvQ7sZthVVMQupLCqqFDZLE2NvibYiBmwrvfLPAtVYRRtMpEQpnwnh2MTNTlr0EXR/tRGSbh+Rdg==} + '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.241': + resolution: {integrity: sha512-S3mfAGNxeV/z3SX3ucssNbfcUYTgykoj6X4WD5J+WxMe1kvvvnd10Ut5bej25idG6p003sAkLg8fLWaCqSO8QQ==} engines: {node: '>=18'} - '@sphereon/oid4vci-common@0.16.1-next.231': - resolution: {integrity: sha512-Y3qofMxbcVHMuDCX66po72hhIrL9tT7xY0RoWnJnnx1DySXUkzg7tDpk79tQxFPxduhSLvc/kZyR3AjVtO2Uyw==} + '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.241': + resolution: {integrity: sha512-gW8UNj0q1UlgRG+Oc7uqWl3XMWhFwhjDSrYw2Rzlr5xsTAifiYkXiaEO7H214RiDPXxPyiVSliJvrIk88aRFaw==} engines: {node: '>=18'} - '@sphereon/oid4vci-issuer-server@0.16.1-next.231': - resolution: {integrity: sha512-YYkxxZBTKUY7UdKBqJnO2h/jtpxCpPqV3Qw83MlNrpxSeBTox83qWZJmzPfByZ/ZU3AcN+cXOVRUIY3ijdzutQ==} + '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.241': + resolution: {integrity: sha512-Ld9xWLe6jCQFPnoeMdSgdXjDGyrSuqshkgGFr1/XkEwFN31kg3lJov1i/DYMo3TbBl0bEjeZNufLwYjAZiyw9A==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -6065,8 +6077,8 @@ packages: awesome-qr: optional: true - '@sphereon/oid4vci-issuer@0.16.1-next.231': - resolution: {integrity: sha512-w+/keYt7ZjZPcKu/w/fOT+IgVirs/Krr2Nm+l6hJBOML1VKINoHfzLa4JrlW2kNOlBxXI1vmnlRaHvMtC80DZg==} + '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.241': + resolution: {integrity: sha512-NapDZH7O1kkCsHRbqCmPn+AILYBPBkySzlqr8l0HhhChdH0Lc4iDrscuw80JPP7y5nD1JptAejOKSPQLAKr9mg==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -6172,15 +6184,57 @@ packages: '@sphereon/ssi-sdk.agent-config@0.30.2-feature.SDK.41.oidf.support.286': resolution: {integrity: sha512-BcwsVjuU+6A643MMVmagx+gobtaWPe7KJ7suhrUY3TSDZIFNIBeLnDBQpf1MYBNKJKg+VSjB6nWATQpVGX2BWA==} + '@sphereon/ssi-sdk.agent-config@0.32.1-next.17': + resolution: {integrity: sha512-6eAOGHEm1ANavWh+9MWSGtQj7rxOatdMHLyuQzNFAeau298+jAKvh4VB3fD46xBp7SCJeKtN0pojxod6qiolmA==} + + '@sphereon/ssi-sdk.anomaly-detection@0.32.1-next.17': + resolution: {integrity: sha512-hl09K4QsuJd4bPYxYD3PyJv6/23KdHV49j5ZmTpyXoO+Ux8lzvD1InEiKS341G/NNOZdgR0uuY6sbMPT4rXZ7w==} + + '@sphereon/ssi-sdk.contact-manager@0.32.1-next.17': + resolution: {integrity: sha512-gkskOPG7E3CQ1qb5oYSp5rfm+VxCMpgVGeFZMnnbSAUatqFXmfPhhRPEL6qDWD4RRgdSkubC9e7Eg8KD4uQ9pA==} + + '@sphereon/ssi-sdk.credential-store@0.32.1-next.17': + resolution: {integrity: sha512-p8Hh3KThDa1mJNDRIswoGoZ+ilKBUgObIS/gzazyfXgwCtL1BdjthgNIqAD7mB3Mq9qz4TkfFzG//VGoO7URIA==} + + '@sphereon/ssi-sdk.credential-validation@0.32.1-next.17': + resolution: {integrity: sha512-anRCvvMkVN5fLiLEdyORxRDgSYpnOCgKjof1vP/sn4F8eCfS8OzFuDOEod3wFZjuIDHwOorvSRpd8FEjbhGf9A==} + + '@sphereon/ssi-sdk.data-store@0.32.1-next.17': + resolution: {integrity: sha512-IoeEAJ/vvo9Iu2Uy5NWRPcrdP1Dl+2v9NExLALGf1ihAcRYYOWJFQ2Q0W/ZI57cU6UTexOYESIwM+W/7CMw1fw==} + + '@sphereon/ssi-sdk.geolocation-store@0.32.1-next.17': + resolution: {integrity: sha512-+aX5QQJE2yxpgnhhOWgdW4Tv1vWwMkYDOyQW7ruNVqtCLp8Z+mQx8vDikLkkqknvnUZTU0XETJce8/GJ808IMQ==} + + '@sphereon/ssi-sdk.issuance-branding@0.32.1-next.17': + resolution: {integrity: sha512-TzDYqUn4f7JHQTCe2T6SdxQd8xHu0Es3q3Ny9gKA7qlgHtge8isbrhcrrkiozP4AFbK8X9FNv5TrC7wFLI0FRg==} + '@sphereon/ssi-sdk.kv-store-temp@0.30.2-feature.SDK.41.oidf.support.286': resolution: {integrity: sha512-vZagjPwkqccw2ofDDcOoOz+SZz+5iGfrTKFYINkKQGpqk4opD72asZD4+SxZRgk2xZPpPTCpiTsVWx3bxzPK1Q==} + '@sphereon/ssi-sdk.kv-store-temp@0.32.1-next.17': + resolution: {integrity: sha512-OPF419//ibvlM3uuv5EVti20v3uGY9ri12wfKL6M045ce8tpJvTRyJ6zm3BEgEd3Vj9erDyHAqQxgVwclZ+GuA==} + + '@sphereon/ssi-sdk.mdl-mdoc@0.32.1-next.17': + resolution: {integrity: sha512-GvsxHLGEu4VQfQCPRIUEUq7lGIOerAf4wq+JKq8og4Ey9gNOGrtNcLQVxwLOJYaakR57tH7w1DHAZNzvUZIxag==} + '@sphereon/ssi-sdk.oidf-client@0.30.2-feature.SDK.41.oidf.support.286': resolution: {integrity: sha512-JqYSeoDhEzrNQmy8gORWlbqMUjYScqfFFZtsS6Wteakr/fX7Chtq/nMhf9v74YnAS24p2amYSBGMuaJGO8orGg==} + '@sphereon/ssi-sdk.oidf-client@0.32.1-next.17': + resolution: {integrity: sha512-6AlTPMFj2NzvURK/xZVSVYXfF//g6CgCZjBb7JLGP/+xMhskztKGvuKb87xdUz7Ti63zoXf1sP3VrYbTqADGeQ==} + '@sphereon/ssi-sdk.resource-resolver@0.30.2-feature.SDK.41.oidf.support.286': resolution: {integrity: sha512-xnepbkI+ydLSREK4UodCDHYkn1VD9eKgfFw0HgN2LdawfOfRVIAkXYXEMQNyIxUFxTnmyI0P68lUdoPc8HKOKg==} + '@sphereon/ssi-sdk.resource-resolver@0.32.1-next.17': + resolution: {integrity: sha512-9dnJReufB2lb8v4xn5uTb3C7MgXp83KkQRwNrkyy6MO8rs2KJMwQnyuNOEOiviSlO8vmovZU4di4kGRY0AN4PQ==} + + '@sphereon/ssi-sdk.sd-jwt@0.32.1-next.17': + resolution: {integrity: sha512-svqg8xWvXZ5f2FQ04MFGgl57oxr6ER3VrOO4Bd9Vk6HYKx5K5NfUM7+ncBKNDDQOZrpoWLxlLllP+xiLBZBJGQ==} + + '@sphereon/ssi-sdk.xstate-machine-persistence@0.32.1-next.17': + resolution: {integrity: sha512-3m4MwDtel9GzdpQ83qaYdG6x8QG3VN/n7RR3M7cPZtAjLbZJAPxBrd8J5Iuum4Q0TIFxUkr2PXgD8qawYOT32Q==} + '@sphereon/vc-status-list@7.0.0-next.0': resolution: {integrity: sha512-4GIZq12SXbEbO4vCh5TwWzWk7tviDUP8aOzRGsEw6UW2344qZ31CLsU+bHurdnG4OlLRyosv4khN1ha6OiJHZQ==} engines: {node: '>=16'} @@ -12666,9 +12720,11 @@ packages: sudo-prompt@8.2.5: resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. sudo-prompt@9.1.1: resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. superstruct@1.0.4: resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} @@ -16980,11 +17036,11 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@sphereon/did-auth-siop-adapter@0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3)': dependencies: - '@sphereon/did-auth-siop': 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + '@sphereon/did-auth-siop': 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': 0.6.3(encoding@0.1.13) - '@sphereon/oid4vc-common': 0.16.1-next.231 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 '@sphereon/wellknown-dids-client': 0.1.3(encoding@0.1.13) did-jwt: 6.11.6(patch_hash=afqywxnnjnsy6hwgax66dyyiey) did-resolver: 4.1.0 @@ -16993,6 +17049,27 @@ snapshots: - supports-color - typescript + '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3)': + dependencies: + '@astronautlabs/jsonpath': 1.1.2 + '@sphereon/jarm': 0.16.1-feature.SPRIND.89.241(typescript@5.6.3) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + '@sphereon/pex': 5.0.0-unstable.28 + '@sphereon/pex-models': 2.3.2 + '@sphereon/ssi-types': link:packages/ssi-types + cross-fetch: 4.0.0(encoding@0.1.13) + debug: 4.3.7 + events: 3.3.0 + jwt-decode: 4.0.0 + language-tags: 1.0.9 + multiformats: 12.1.3 + qs: 6.13.1 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - encoding + - supports-color + - typescript + '@sphereon/did-auth-siop@0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 @@ -17058,6 +17135,13 @@ snapshots: react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1) uint8arrays: 3.1.1 + '@sphereon/jarm@0.16.1-feature.SPRIND.89.241(typescript@5.6.3)': + dependencies: + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + valibot: 0.42.1(typescript@5.6.3) + transitivePeerDependencies: + - typescript + '@sphereon/jarm@0.16.1-next.231(typescript@5.6.3)': dependencies: '@sphereon/oid4vc-common': 0.16.1-next.231 @@ -17084,6 +17168,14 @@ snapshots: - encoding - typescript + '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.241': + dependencies: + '@sphereon/ssi-types': link:packages/ssi-types + jwt-decode: 4.0.0 + sha.js: 2.4.11 + uint8arrays: 3.1.1 + uuid: 9.0.1 + '@sphereon/oid4vc-common@0.16.1-next.187': dependencies: '@sphereon/ssi-types': link:packages/ssi-types @@ -17100,10 +17192,10 @@ snapshots: uint8arrays: 3.1.1 uuid: 9.0.1 - '@sphereon/oid4vci-client@0.16.1-next.231(encoding@0.1.13)': + '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.241(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-next.231 - '@sphereon/oid4vci-common': 0.16.1-next.231(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17111,9 +17203,9 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-common@0.16.1-next.231(encoding@0.1.13)': + '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.241(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-next.231 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17124,11 +17216,11 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-issuer-server@0.16.1-next.231(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': + '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.241(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-next.231 - '@sphereon/oid4vci-common': 0.16.1-next.231(encoding@0.1.13) - '@sphereon/oid4vci-issuer': 0.16.1-next.231(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + '@sphereon/oid4vci-issuer': 0.16.1-feature.SPRIND.89.241(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-express-support': 0.30.2-feature.mdoc.funke2.367(@noble/hashes@1.6.1)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-types': link:packages/ssi-types body-parser: 1.20.3 @@ -17147,10 +17239,10 @@ snapshots: - passport-http-bearer - supports-color - '@sphereon/oid4vci-issuer@0.16.1-next.231(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': + '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.241(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-next.231 - '@sphereon/oid4vci-common': 0.16.1-next.231(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types uuid: 9.0.1 optionalDependencies: @@ -17736,6 +17828,256 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver + '@sphereon/ssi-sdk.agent-config@0.32.1-next.17(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@veramo/core': 4.2.0(patch_hash=c5oempznsz4br5w3tcuk2i2mau) + debug: 4.3.7 + jsonpointer: 5.0.1 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + url-parse: 1.5.10 + yaml: 2.6.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk.anomaly-detection@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/ssi-sdk.geolocation-store': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk.kv-store-temp': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + cross-fetch: 3.1.8(encoding@0.1.13) + debug: 4.3.7 + dns-query: 0.11.2 + mmdb-lib: 2.1.1 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk.contact-manager@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/ssi-sdk.data-store': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + cross-fetch: 3.1.8(encoding@0.1.13) + debug: 4.3.7 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - bufferutil + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - utf-8-validate + + '@sphereon/ssi-sdk.credential-store@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/pex': 5.0.0-unstable.28 + '@sphereon/pex-models': 2.3.2 + '@sphereon/ssi-sdk.core': link:packages/ssi-sdk-core + '@sphereon/ssi-sdk.data-store': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + cross-fetch: 3.1.8(encoding@0.1.13) + debug: 4.3.7 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + uuid: 9.0.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - bufferutil + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - utf-8-validate + + '@sphereon/ssi-sdk.credential-validation@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3)': + dependencies: + '@sphereon/kmp-mdoc-core': 0.2.0-SNAPSHOT.26 + '@sphereon/ssi-sdk.agent-config': 0.32.1-next.17(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk.core': link:packages/ssi-sdk-core + '@sphereon/ssi-sdk.mdl-mdoc': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3) + '@sphereon/ssi-sdk.sd-jwt': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3) + '@sphereon/ssi-types': link:packages/ssi-types + '@veramo/core': 4.2.0(patch_hash=c5oempznsz4br5w3tcuk2i2mau) + '@veramo/utils': 4.2.0(encoding@0.1.13) + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + cross-fetch: 3.1.8(encoding@0.1.13) + debug: 4.3.7 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - bufferutil + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - typescript + - utf-8-validate + + '@sphereon/ssi-sdk.data-store@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/kmp-mdoc-core': 0.2.0-SNAPSHOT.26 + '@sphereon/pex': 5.0.0-unstable.28 + '@sphereon/ssi-sdk-ext.did-utils': 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk-ext.identifier-resolution': 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk.agent-config': 0.32.1-next.17(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk.core': link:packages/ssi-sdk-core + '@sphereon/ssi-types': link:packages/ssi-types + '@veramo/core': 4.2.0(patch_hash=c5oempznsz4br5w3tcuk2i2mau) + '@veramo/utils': 4.2.0(encoding@0.1.13) + blakejs: 1.2.1 + class-validator: 0.14.1 + debug: 4.3.7 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - bufferutil + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - utf-8-validate + + '@sphereon/ssi-sdk.geolocation-store@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/ssi-sdk.kv-store-temp': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk.issuance-branding@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/ssi-sdk.core': link:packages/ssi-sdk-core + '@sphereon/ssi-sdk.data-store': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + debug: 4.3.7 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - bufferutil + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - utf-8-validate + '@sphereon/ssi-sdk.kv-store-temp@0.30.2-feature.SDK.41.oidf.support.286(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': dependencies: '@veramo/utils': 4.2.0(encoding@0.1.13) @@ -17765,6 +18107,78 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver + '@sphereon/ssi-sdk.kv-store-temp@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@veramo/utils': 4.2.0(encoding@0.1.13) + debug: 4.3.7 + events: 3.3.0 + json-buffer: 3.0.1 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk.mdl-mdoc@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3)': + dependencies: + '@sphereon/did-auth-siop': 0.16.1-next.231(encoding@0.1.13)(typescript@5.6.3) + '@sphereon/kmp-mdoc-core': 0.2.0-SNAPSHOT.26 + '@sphereon/pex': 5.0.0-unstable.28 + '@sphereon/pex-models': 2.3.2 + '@sphereon/ssi-sdk-ext.did-utils': 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk-ext.key-utils': 0.27.0 + '@sphereon/ssi-sdk-ext.x509-utils': 0.27.0 + '@sphereon/ssi-sdk.core': link:packages/ssi-sdk-core + '@sphereon/ssi-types': link:packages/ssi-types + '@veramo/core': 4.2.0(patch_hash=c5oempznsz4br5w3tcuk2i2mau) + '@veramo/did-manager': 4.2.0 + '@veramo/utils': 4.2.0(encoding@0.1.13) + cross-fetch: 3.1.8(encoding@0.1.13) + debug: 4.3.7 + did-resolver: 4.1.0 + multiformats: 9.9.0 + pkijs: 3.2.4 + uint8arrays: 3.1.1 + uuid: 9.0.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - typescript + '@sphereon/ssi-sdk.oidf-client@0.30.2-feature.SDK.41.oidf.support.286(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': dependencies: '@sphereon/openid-federation-client': 0.1.1-unstable.0647eb6(encoding@0.1.13) @@ -17796,6 +18210,37 @@ snapshots: - typeorm-aurora-data-api-driver - utf-8-validate + '@sphereon/ssi-sdk.oidf-client@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/openid-federation-client': 0.1.1-unstable.0647eb6(encoding@0.1.13) + '@sphereon/openid-federation-common': 0.1.1-unstable.0647eb6(encoding@0.1.13) + '@sphereon/openid-federation-open-api': 0.1.1-unstable.0647eb6(encoding@0.1.13) + '@sphereon/ssi-sdk-ext.jwt-service': 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk.resource-resolver': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-types': link:packages/ssi-types + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - bufferutil + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - utf-8-validate + '@sphereon/ssi-sdk.resource-resolver@0.30.2-feature.SDK.41.oidf.support.286(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': dependencies: '@sphereon/ssi-sdk.kv-store-temp': 0.30.2-feature.SDK.41.oidf.support.286(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -17824,6 +18269,105 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver + '@sphereon/ssi-sdk.resource-resolver@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/ssi-sdk.anomaly-detection': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk.kv-store-temp': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + cross-fetch: 3.1.8(encoding@0.1.13) + debug: 4.3.7 + typeorm: 0.3.20(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk.sd-jwt@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3)': + dependencies: + '@sd-jwt/core': 0.7.2 + '@sd-jwt/sd-jwt-vc': 0.7.2 + '@sphereon/ssi-sdk-ext.did-utils': 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk-ext.identifier-resolution': 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk-ext.jwt-service': 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk-ext.key-utils': 0.27.0 + '@sphereon/ssi-sdk-ext.x509-utils': 0.27.0 + '@sphereon/ssi-sdk.agent-config': 0.32.1-next.17(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@sphereon/ssi-sdk.mdl-mdoc': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))(typescript@5.6.3) + '@sphereon/ssi-types': link:packages/ssi-types + '@veramo/utils': 4.2.0(encoding@0.1.13) + debug: 4.3.7 + uint8arrays: 3.1.1 + uuid: 9.0.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - bufferutil + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - typescript + - utf-8-validate + + '@sphereon/ssi-sdk.xstate-machine-persistence@0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3))': + dependencies: + '@sphereon/ssi-sdk.data-store': 0.32.1-next.17(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) + '@veramo/core': 4.2.0(patch_hash=c5oempznsz4br5w3tcuk2i2mau) + debug: 4.3.7 + uuid: 9.0.1 + xstate: 4.38.3 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - bufferutil + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - utf-8-validate + '@sphereon/vc-status-list@7.0.0-next.0(encoding@0.1.13)(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(encoding@0.1.13)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalbazaar/vc-status-list-context': 3.1.1 From 2f19e125be1fb5bd06c97d3d409dd776c9368af6 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Thu, 16 Jan 2025 13:22:07 +0100 Subject: [PATCH 04/29] feat: added first party flow to holder plugin --- packages/ebsi-support/package.json | 8 +- packages/mdl-mdoc/package.json | 6 +- packages/oid4vci-holder/package.json | 9 +- .../oid4vci-holder/src/agent/OID4VCIHolder.ts | 43 +-- packages/oid4vci-holder/src/index.ts | 4 +- .../headlessStateNavListener.ts | 0 .../src/localization/translations/en.json | 3 +- .../src/localization/translations/nl.json | 3 +- .../src/machines/firstPartyMachine.ts | 283 ++++++++++++++++++ .../{machine => machines}/oid4vciMachine.ts | 56 +++- .../OIDC4VCIBrandingMapper.ts | 0 .../src/services/FirstPartyMachineServices.ts | 60 ++++ .../OID4VCIHolderService.ts | 38 ++- .../src/types/FirstPartyMachine.ts | 151 ++++++++++ .../src/types/IOID4VCIHolder.ts | 61 ++-- packages/oid4vci-holder/tsconfig.json | 3 + packages/oid4vci-issuer-rest-api/package.json | 6 +- .../src/OID4VCIRestAPI.ts | 39 ++- .../oid4vci-issuer-rest-client/package.json | 2 +- packages/oid4vci-issuer-store/package.json | 2 +- packages/oid4vci-issuer/package.json | 5 +- packages/oid4vci-issuer/src/functions.ts | 57 ++++ packages/siopv2-oid4vp-common/package.json | 2 +- .../siopv2-oid4vp-common/src/auth-model.ts | 4 + packages/siopv2-oid4vp-op-auth/package.json | 6 +- .../src/agent/DidAuthSiopOpAuthenticator.ts | 33 +- .../src/services/Siopv2MachineService.ts | 4 +- .../src/types/machine/index.ts | 1 + .../src/types/siop-service/index.ts | 14 +- packages/siopv2-oid4vp-rp-auth/package.json | 6 +- .../siopv2-oid4vp-rp-rest-api/package.json | 2 +- .../src/siop-api-functions.ts | 3 +- .../siopv2-oid4vp-rp-rest-api/src/types.ts | 4 - packages/w3c-vc-api/package.json | 2 +- pnpm-lock.yaml | 202 ++++++------- 35 files changed, 911 insertions(+), 211 deletions(-) rename packages/oid4vci-holder/src/{machine => listeners}/headlessStateNavListener.ts (100%) create mode 100644 packages/oid4vci-holder/src/machines/firstPartyMachine.ts rename packages/oid4vci-holder/src/{machine => machines}/oid4vciMachine.ts (93%) rename packages/oid4vci-holder/src/{agent => mappers}/OIDC4VCIBrandingMapper.ts (100%) create mode 100644 packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts rename packages/oid4vci-holder/src/{agent => services}/OID4VCIHolderService.ts (94%) create mode 100644 packages/oid4vci-holder/src/types/FirstPartyMachine.ts diff --git a/packages/ebsi-support/package.json b/packages/ebsi-support/package.json index 2696648f7..485b33595 100644 --- a/packages/ebsi-support/package.json +++ b/packages/ebsi-support/package.json @@ -15,8 +15,8 @@ }, "dependencies": { "@ethersproject/random": "^5.7.0", - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.255", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-resolver-ebsi": "0.27.0", @@ -44,8 +44,8 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.241", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/mdl-mdoc/package.json b/packages/mdl-mdoc/package.json index 02a4a2a93..0ebb73fd7 100644 --- a/packages/mdl-mdoc/package.json +++ b/packages/mdl-mdoc/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", @@ -35,8 +35,8 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.241", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/oid4vci-holder/package.json b/packages/oid4vci-holder/package.json index 909e85529..abda42509 100644 --- a/packages/oid4vci-holder/package.json +++ b/packages/oid4vci-holder/package.json @@ -15,8 +15,9 @@ }, "dependencies": { "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.241", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk-ext.jwt-service": "0.27.0", @@ -30,6 +31,7 @@ "@sphereon/ssi-sdk.mdl-mdoc": "workspace:*", "@sphereon/ssi-sdk.oidf-client": "workspace:*", "@sphereon/ssi-sdk.sd-jwt": "workspace:*", + "@sphereon/ssi-sdk.siopv2-oid4vp-op-auth": "workspace:*", "@sphereon/ssi-sdk.xstate-machine-persistence": "workspace:*", "@sphereon/ssi-types": "workspace:*", "@veramo/core": "4.2.0", @@ -43,7 +45,8 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vc-common": "0.16.1-next.187", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/ssi-sdk.siopv2-oid4vp-common": "workspace:*", "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.27.0", "@types/i18n-js": "^3.8.9", "@types/lodash.memoize": "^4.1.9", diff --git a/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts b/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts index 056129865..51edf98bc 100644 --- a/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts +++ b/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts @@ -70,12 +70,12 @@ import { import { asArray, computeEntryHash } from '@veramo/utils' import { decodeJWT } from 'did-jwt' import { v4 as uuidv4 } from 'uuid' -import { OID4VCIMachine } from '../machine/oid4vciMachine' +import { OID4VCIMachine } from '../machines/oid4vciMachine' import { AddContactIdentityArgs, AssertValidCredentialsArgs, Attribute, - createCredentialsToSelectFromArgs, + CreateCredentialsToSelectFromArgs, CredentialToAccept, CredentialToSelectFromResult, GetContactArgs, @@ -91,6 +91,8 @@ import { OID4VCIHolderOptions, OID4VCIMachine as OID4VCIMachineId, OID4VCIMachineInstanceOpts, + OID4VCIMachineServiceDefinitions, + OID4VCIMachineServices, OnContactIdentityCreatedArgs, OnCredentialStoredArgs, OnIdentifierCreatedArgs, @@ -98,13 +100,14 @@ import { RequestType, RequiredContext, SendNotificationArgs, + StartFirstPartApplicationMachine, StartResult, StoreCredentialBrandingArgs, StoreCredentialsArgs, StoreIssuerBrandingArgs, VerificationResult, VerifyEBSICredentialIssuerArgs, - VerifyEBSICredentialIssuerResult, + VerifyEBSICredentialIssuerResult } from '../types/IOID4VCIHolder' import { getBasicIssuerLocaleBranding, @@ -115,8 +118,8 @@ import { mapCredentialToAccept, selectCredentialLocaleBranding, verifyCredentialToAccept, -} from './OID4VCIHolderService' - + startFirstPartApplicationMachine +} from '../services/OID4VCIHolderService' import 'cross-fetch/polyfill' /** @@ -307,8 +310,8 @@ export class OID4VCIHolder implements IAgentPlugin { */ private async oid4vciHolderGetMachineInterpreter(opts: OID4VCIMachineInstanceOpts, context: RequiredContext): Promise { const authorizationRequestOpts = { ...this.defaultAuthorizationRequestOpts, ...opts.authorizationRequestOpts } - const services = { - start: (args: PrepareStartArgs) => + const services: OID4VCIMachineServiceDefinitions = { + [OID4VCIMachineServices.start]: (args: PrepareStartArgs) => this.oid4vciHolderStart( { ...args, @@ -316,18 +319,18 @@ export class OID4VCIHolder implements IAgentPlugin { }, context, ), - createCredentialsToSelectFrom: (args: createCredentialsToSelectFromArgs) => this.oid4vciHolderCreateCredentialsToSelectFrom(args, context), - getContact: (args: GetContactArgs) => this.oid4vciHolderGetContact(args, context), - getCredentials: (args: GetCredentialsArgs) => - this.oid4vciHolderGetCredentials({ accessTokenOpts: args.accessTokenOpts ?? opts.accessTokenOpts, ...args }, context), - addContactIdentity: (args: AddContactIdentityArgs) => this.oid4vciHolderAddContactIdentity(args, context), - getIssuerBranding: (args: GetIssuerBrandingArgs) => this.oid4vciHolderGetIssuerBranding(args, context), - storeIssuerBranding: (args: StoreIssuerBrandingArgs) => this.oid4vciHolderStoreIssuerBranding(args, context), - assertValidCredentials: (args: AssertValidCredentialsArgs) => this.oid4vciHolderAssertValidCredentials(args, context), - storeCredentialBranding: (args: StoreCredentialBrandingArgs) => this.oid4vciHolderStoreCredentialBranding(args, context), - storeCredentials: (args: StoreCredentialsArgs) => this.oid4vciHolderStoreCredentials(args, context), - sendNotification: (args: SendNotificationArgs) => this.oid4vciHolderSendNotification(args, context), - getFederationTrust: (args: GetFederationTrustArgs) => this.getFederationTrust(args, context), + [OID4VCIMachineServices.startFirstPartApplicationFlow]: (args: StartFirstPartApplicationMachine) => startFirstPartApplicationMachine(args, context), + [OID4VCIMachineServices.createCredentialsToSelectFrom]: (args: CreateCredentialsToSelectFromArgs) => this.oid4vciHolderCreateCredentialsToSelectFrom(args, context), + [OID4VCIMachineServices.getContact]: (args: GetContactArgs) => this.oid4vciHolderGetContact(args, context), + [OID4VCIMachineServices.getCredentials]: (args: GetCredentialsArgs) => this.oid4vciHolderGetCredentials({ accessTokenOpts: args.accessTokenOpts ?? opts.accessTokenOpts, ...args }, context), + [OID4VCIMachineServices.addContactIdentity]: (args: AddContactIdentityArgs) => this.oid4vciHolderAddContactIdentity(args, context), + [OID4VCIMachineServices.getIssuerBranding]: (args: GetIssuerBrandingArgs) => this.oid4vciHolderGetIssuerBranding(args, context), + [OID4VCIMachineServices.storeIssuerBranding]: (args: StoreIssuerBrandingArgs) => this.oid4vciHolderStoreIssuerBranding(args, context), + [OID4VCIMachineServices.assertValidCredentials]: (args: AssertValidCredentialsArgs) => this.oid4vciHolderAssertValidCredentials(args, context), + [OID4VCIMachineServices.storeCredentialBranding]: (args: StoreCredentialBrandingArgs) => this.oid4vciHolderStoreCredentialBranding(args, context), + [OID4VCIMachineServices.storeCredentials]: (args: StoreCredentialsArgs) => this.oid4vciHolderStoreCredentials(args, context), + [OID4VCIMachineServices.sendNotification]: (args: SendNotificationArgs) => this.oid4vciHolderSendNotification(args, context), + [OID4VCIMachineServices.getFederationTrust]: (args: GetFederationTrustArgs) => this.getFederationTrust(args, context), } const oid4vciMachineInstanceArgs: OID4VCIMachineInstanceOpts = { @@ -463,7 +466,7 @@ export class OID4VCIHolder implements IAgentPlugin { } private async oid4vciHolderCreateCredentialsToSelectFrom( - args: createCredentialsToSelectFromArgs, + args: CreateCredentialsToSelectFromArgs, context: RequiredContext, ): Promise> { const { credentialBranding, locale, selectedCredentials /*, openID4VCIClientState*/, credentialsSupported } = args diff --git a/packages/oid4vci-holder/src/index.ts b/packages/oid4vci-holder/src/index.ts index b26549202..36bbed22e 100644 --- a/packages/oid4vci-holder/src/index.ts +++ b/packages/oid4vci-holder/src/index.ts @@ -3,7 +3,7 @@ */ export { OID4VCIHolder, oid4vciHolderContextMethods, signCallback } from './agent/OID4VCIHolder' -export * from './agent/OID4VCIHolderService' +export * from './services/OID4VCIHolderService' export * from './types/IOID4VCIHolder' -export * from './machine/headlessStateNavListener' +export * from './listeners/headlessStateNavListener' export * from './link-handler' diff --git a/packages/oid4vci-holder/src/machine/headlessStateNavListener.ts b/packages/oid4vci-holder/src/listeners/headlessStateNavListener.ts similarity index 100% rename from packages/oid4vci-holder/src/machine/headlessStateNavListener.ts rename to packages/oid4vci-holder/src/listeners/headlessStateNavListener.ts diff --git a/packages/oid4vci-holder/src/localization/translations/en.json b/packages/oid4vci-holder/src/localization/translations/en.json index 927b6ab88..f963b2f51 100644 --- a/packages/oid4vci-holder/src/localization/translations/en.json +++ b/packages/oid4vci-holder/src/localization/translations/en.json @@ -11,5 +11,6 @@ "oid4vci_machine_initiation_error_title": "Initiate OID4VCI provider", "oid4vci_machine_credential_verification_failed_message": "The credential verification resulted in an error.", "oid4vci_machine_credential_verification_schema_failed_message": "The credential schema verification resulted in an error.", - "oid4vci_machine_retrieve_federation_trust_error_title": "Retrieve federation trust" + "oid4vci_machine_retrieve_federation_trust_error_title": "Retrieve federation trust", + "oid4vci_machine_first_party_error_title": "First party flow" } diff --git a/packages/oid4vci-holder/src/localization/translations/nl.json b/packages/oid4vci-holder/src/localization/translations/nl.json index 7c7e50827..81d195693 100644 --- a/packages/oid4vci-holder/src/localization/translations/nl.json +++ b/packages/oid4vci-holder/src/localization/translations/nl.json @@ -10,5 +10,6 @@ "oid4vci_machine_credential_selection_error_title": "Credential selectie", "oid4vci_machine_initiation_error_title": "Initiëren OID4VCI provider", "oid4vci_machine_credential_verification_failed_message": "Verificatie van de credential leidde tot een fout.", - "oid4vci_machine_retrieve_federation_trust_error_title": "Ophalen federatievertrouwen" + "oid4vci_machine_retrieve_federation_trust_error_title": "Ophalen federatievertrouwen", + "oid4vci_machine_first_party_error_title": "Eerste partijstroom" } diff --git a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts new file mode 100644 index 000000000..883614cf3 --- /dev/null +++ b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts @@ -0,0 +1,283 @@ +import { assign, createMachine, DoneInvokeEvent, interpret } from 'xstate' +import { + AuthorizationChallengeCodeResponse, + AuthorizationChallengeError, + AuthorizationChallengeErrorResponse +} from '@sphereon/oid4vci-common' +import { DidAuthConfig } from '@sphereon/ssi-sdk.data-store' +import { CreateConfigResult } from '@sphereon/ssi-sdk.siopv2-oid4vp-op-auth' +import { + createConfig, + getSiopRequest, + sendAuthorizationChallengeRequest, + sendAuthorizationResponse +} from '../services/FirstPartyMachineServices' +import { translate } from '../localization/Localization' +import { ErrorDetails } from '../types/IOID4VCIHolder' +import { + CreateConfigArgs, + CreateFirstPartyMachineOpts, + FirstPartyMachineContext, + FirstPartyMachineEvents, + FirstPartyMachineEventTypes, + FirstPartyMachineInterpreter, + FirstPartyMachineServices, + FirstPartyMachineState, + FirstPartyMachineStatesConfig, + FirstPartyMachineStateTypes, + FirstPartyMachineServiceDefinitions, + FirstPartyStateMachine, + GetSiopRequestArgs, + InstanceFirstPartyMachineOpts, + SiopV2AuthorizationRequestData, + SendAuthorizationResponseArgs +} from '../types/FirstPartyMachine' + +const firstPartyMachineStates: FirstPartyMachineStatesConfig = { + [FirstPartyMachineStateTypes.sendAuthorizationChallengeRequest]: { + id: FirstPartyMachineStateTypes.sendAuthorizationChallengeRequest, + invoke: { + src: FirstPartyMachineServices.sendAuthorizationChallengeRequest, + onDone: { + target: FirstPartyMachineStateTypes.done, + actions: assign({ + authorizationCodeResponse: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent) => _event.data + }) + }, + onError: [ + { + target: FirstPartyMachineStateTypes.createConfig, + cond: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent): boolean => _event.data.error === AuthorizationChallengeError.insufficient_authorization, + actions: assign({ + authSession: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent) => _event.data.auth_session, + presentationUri: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent) => _event.data.presentation, + }), + }, + { + target: FirstPartyMachineStateTypes.error, + actions: assign({ + error: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ + title: translate('oid4vci_machine_verify_credentials_error_title'), // TODO check others + message: _event.data.message, + stack: _event.data.stack, + }), + }), + } + ], + } + }, + [FirstPartyMachineStateTypes.createConfig]: { + id: FirstPartyMachineStateTypes.createConfig, + invoke: { + src: FirstPartyMachineServices.createConfig, + onDone: { + target: FirstPartyMachineStateTypes.getSiopRequest, + actions: assign({ + didAuthConfig: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent) => _event.data, + }), + }, + onError: { + target: FirstPartyMachineStateTypes.error, + actions: assign({ + error: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ + title: translate('siopV2_machine_create_config_error_title'), // TODO check others + message: _event.data.message, + stack: _event.data.stack, + }), + }), + }, + }, + }, + [FirstPartyMachineStateTypes.getSiopRequest]: { + id: FirstPartyMachineStateTypes.getSiopRequest, + invoke: { + src: FirstPartyMachineServices.getSiopRequest, + onDone: { + target: FirstPartyMachineStateTypes.selectCredentials, + actions: assign({ + authorizationRequestData: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent) => _event.data, + }), + }, + onError: { + target: FirstPartyMachineStateTypes.error, + actions: assign({ + error: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ + title: translate('siopV2_machine_get_request_error_title'), + message: _event.data.message, + stack: _event.data.stack, + }), + }), + }, + }, + }, + [FirstPartyMachineStateTypes.selectCredentials]: { + id: FirstPartyMachineStateTypes.selectCredentials, + on: { + [FirstPartyMachineEvents.NEXT]: { + target: FirstPartyMachineStateTypes.sendAuthorizationResponse, + }, + [FirstPartyMachineEvents.DECLINE]: { + target: FirstPartyMachineStateTypes.declined, + }, + [FirstPartyMachineEvents.PREVIOUS]: { + target: FirstPartyMachineStateTypes.aborted, + }, + }, + }, + [FirstPartyMachineStateTypes.sendAuthorizationResponse]: { + id: FirstPartyMachineStateTypes.sendAuthorizationResponse, + invoke: { + src: FirstPartyMachineServices.sendAuthorizationResponse, + onDone: { + target: FirstPartyMachineStateTypes.sendAuthorizationChallengeRequest, + // TODO do we need to return the vci state? as this should contain the authorization_code? + actions: assign({ + presentationDuringIssuanceSession: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent) => _event.data, + }), + }, + onError: { + target: FirstPartyMachineStateTypes.error, + actions: assign({ + error: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ + title: translate('siopV2_machine_get_request_error_title'), // TODO + message: _event.data.message, + stack: _event.data.stack, + }), + }), + }, + } + }, + [FirstPartyMachineStateTypes.aborted]: { + id: FirstPartyMachineStateTypes.aborted, + type: 'final' + }, + [FirstPartyMachineStateTypes.declined]: { + id: FirstPartyMachineStateTypes.declined, + type: 'final' + }, + [FirstPartyMachineStateTypes.error]: { + id: FirstPartyMachineStateTypes.error, + type: 'final', + }, + [FirstPartyMachineStateTypes.done]: { + id: FirstPartyMachineStateTypes.done, + type: 'final', + } +} + +const createFirstPartyActivationMachine = (opts: CreateFirstPartyMachineOpts): FirstPartyStateMachine => { + const initialContext: FirstPartyMachineContext = { + openID4VCIClientState: opts.openID4VCIClientState, + selectedCredentials: [], + }; + + return createMachine( + { + id: opts?.machineId ?? 'FirstParty', + predictableActionArguments: true, + initial: FirstPartyMachineStateTypes.sendAuthorizationChallengeRequest, + context: initialContext, + states: firstPartyMachineStates, + schema: { + events: {} as FirstPartyMachineEventTypes, + services: {} as { + [FirstPartyMachineServices.sendAuthorizationChallengeRequest]: { + data: void + }, + [FirstPartyMachineServices.createConfig]: { + data: CreateConfigResult + }, + [FirstPartyMachineServices.getSiopRequest]: { + data: SiopV2AuthorizationRequestData + }, + [FirstPartyMachineServices.sendAuthorizationResponse]: { + data: string + } + } + } + } + ); +}; + +export class FirstPartyMachine { + private static _instance: FirstPartyMachineInterpreter | undefined; + + static hasInstance(): boolean { + return FirstPartyMachine._instance !== undefined; + } + + static get instance(): FirstPartyMachineInterpreter { + if (!FirstPartyMachine._instance) { + throw Error('Please initialize ESIMActivation machine first'); + } + return FirstPartyMachine._instance; + } + + static clearInstance(opts: {stop: boolean}) { + const {stop} = opts; + if (FirstPartyMachine.hasInstance()) { + if (stop) { + FirstPartyMachine.stopInstance(); + } + } + FirstPartyMachine._instance = undefined; + } + + static stopInstance(): void { + if (!FirstPartyMachine.hasInstance()) { + return; + } + FirstPartyMachine.instance.stop(); + FirstPartyMachine._instance = undefined; + } + + public static newInstance(opts: InstanceFirstPartyMachineOpts): FirstPartyMachineInterpreter { + const { agentContext } = opts + const services: FirstPartyMachineServiceDefinitions = { + [FirstPartyMachineServices.sendAuthorizationChallengeRequest]: sendAuthorizationChallengeRequest, + [FirstPartyMachineServices.createConfig]: (args: CreateConfigArgs) => createConfig(args, agentContext), + [FirstPartyMachineServices.getSiopRequest]: (args: GetSiopRequestArgs) => getSiopRequest(args, agentContext), + [FirstPartyMachineServices.sendAuthorizationResponse]: (args: SendAuthorizationResponseArgs) => sendAuthorizationResponse(args, agentContext), + } + + const newInst: FirstPartyMachineInterpreter = interpret( + createFirstPartyActivationMachine(opts).withConfig({ + services: { + ...services, + ...opts?.services, + }, + guards: { + ...opts?.guards, + }, + }), + ); + + if (typeof opts?.subscription === 'function') { + newInst.onTransition(opts.subscription); + } + + if (opts?.requireCustomNavigationHook !== true) { + newInst.onTransition((snapshot: FirstPartyMachineState): void => { + if (opts?.stateNavigationListener) { + void opts.stateNavigationListener(newInst, snapshot) + } + }); + } + + return newInst; + } + + static getInstance( + opts: InstanceFirstPartyMachineOpts & { + requireExisting?: boolean; + }, + ): FirstPartyMachineInterpreter { + if (!FirstPartyMachine._instance) { + if (opts?.requireExisting === true) { + throw Error(`Existing FirstPartyMachine instance requested, but none was created at this point!`); + } + FirstPartyMachine._instance = FirstPartyMachine.newInstance(opts); + } + return FirstPartyMachine._instance; + } +} diff --git a/packages/oid4vci-holder/src/machine/oid4vciMachine.ts b/packages/oid4vci-holder/src/machines/oid4vciMachine.ts similarity index 93% rename from packages/oid4vci-holder/src/machine/oid4vciMachine.ts rename to packages/oid4vci-holder/src/machines/oid4vciMachine.ts index 11854f303..465a65614 100644 --- a/packages/oid4vci-holder/src/machine/oid4vciMachine.ts +++ b/packages/oid4vci-holder/src/machines/oid4vciMachine.ts @@ -1,4 +1,8 @@ -import { AuthzFlowType, toAuthorizationResponsePayload } from '@sphereon/oid4vci-common' +import { + AuthorizationChallengeCodeResponse, + AuthzFlowType, + toAuthorizationResponsePayload +} from '@sphereon/oid4vci-common' import { IBasicIssuerLocaleBranding, Identity, IIssuerLocaleBranding, Party } from '@sphereon/ssi-sdk.data-store' import { assign, createMachine, DoneInvokeEvent, interpret } from 'xstate' import { translate } from '../localization/Localization' @@ -117,6 +121,10 @@ const oid4vciHasAuthorizationResponse = (ctx: OID4VCIMachineContext, _event: OID return !!ctx.openID4VCIClientState?.authorizationCodeResponse } +const oid4vciIsFirstPartyApplication = (ctx: OID4VCIMachineContext, _event: OID4VCIMachineEventTypes): boolean => { + return !!ctx.serverMetadata?.authorization_challenge_endpoint +} + const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMachine => { const initialContext: OID4VCIMachineContext = { // TODO WAL-671 we need to store the data from OpenIdProvider here in the context and make sure we can restart the machine with it and init the OpenIdProvider @@ -153,7 +161,8 @@ const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMach | { type: OID4VCIMachineGuards.hasSelectedCredentialsGuard } | { type: OID4VCIMachineGuards.hasAuthorizationResponse } | { type: OID4VCIMachineGuards.isOIDFOriginGuard } - | { type: OID4VCIMachineGuards.contactHasLowTrustGuard }, + | { type: OID4VCIMachineGuards.contactHasLowTrustGuard } + | { type: OID4VCIMachineGuards.isFirstPartyApplication }, services: {} as { [OID4VCIMachineServices.start]: { data: StartResult @@ -188,6 +197,9 @@ const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMach [OID4VCIMachineServices.getIssuerBranding]: { data: Array } + [OID4VCIMachineServices.startFirstPartApplicationFlow]: { + data: void + } }, }, context: initialContext, @@ -332,6 +344,10 @@ const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMach target: OID4VCIMachineStates.selectCredentials, cond: OID4VCIMachineGuards.credentialsToSelectRequiredGuard, }, + { + target: OID4VCIMachineStates.startFirstPartApplicationFlow, + cond: OID4VCIMachineGuards.isFirstPartyApplication, + }, { target: OID4VCIMachineStates.initiateAuthorizationRequest, cond: OID4VCIMachineGuards.requireAuthorizationGuard, @@ -422,6 +438,10 @@ const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMach target: OID4VCIMachineStates.selectCredentials, cond: OID4VCIMachineGuards.credentialsToSelectRequiredGuard, }, + { + target: OID4VCIMachineStates.startFirstPartApplicationFlow, + cond: OID4VCIMachineGuards.isFirstPartyApplication, + }, { target: OID4VCIMachineStates.initiateAuthorizationRequest, cond: OID4VCIMachineGuards.requireAuthorizationGuard, @@ -435,6 +455,31 @@ const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMach }, ], }, + [OID4VCIMachineStates.startFirstPartApplicationFlow] :{ + id: OID4VCIMachineStates.startFirstPartApplicationFlow, + invoke: { + src: OID4VCIMachineServices.startFirstPartApplicationFlow, + onDone: { + target: OID4VCIMachineStates.getCredentials, + actions: assign({ + openID4VCIClientState: (_ctx: OID4VCIMachineContext, _event: DoneInvokeEvent) => { + const authorizationCodeResponse = toAuthorizationResponsePayload(_event.data) + return { ..._ctx.openID4VCIClientState!, authorizationCodeResponse } + } + }) + }, + onError: { + target: OID4VCIMachineStates.handleError, + actions: assign({ + error: (_ctx: OID4VCIMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ + title: translate('oid4vci_machine_first_party_error_title'), + message: _event.data.message, + stack: _event.data.stack, + }), + }), + }, + }, + }, [OID4VCIMachineStates.selectCredentials]: { id: OID4VCIMachineStates.selectCredentials, on: { @@ -453,6 +498,10 @@ const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMach [OID4VCIMachineStates.transitionFromSelectingCredentials]: { id: OID4VCIMachineStates.transitionFromSelectingCredentials, always: [ + { + target: OID4VCIMachineStates.startFirstPartApplicationFlow, + cond: OID4VCIMachineGuards.isFirstPartyApplication, + }, { target: OID4VCIMachineStates.verifyPin, cond: OID4VCIMachineGuards.requirePinGuard, @@ -726,6 +775,7 @@ export class OID4VCIMachine { oid4vciHasAuthorizationResponse, oid4vciIsOIDFOriginGuard, oid4vciContactHasLowTrustGuard, + oid4vciIsFirstPartyApplication, ...opts?.guards, }, }), @@ -737,7 +787,7 @@ export class OID4VCIMachine { if (opts?.requireCustomNavigationHook !== true) { if (typeof opts?.stateNavigationListener === 'function') { interpreter.onTransition((snapshot: OID4VCIMachineState): void => { - if (opts?.stateNavigationListener !== undefined) { + if (opts?.stateNavigationListener) { opts.stateNavigationListener(interpreter, snapshot) } }) diff --git a/packages/oid4vci-holder/src/agent/OIDC4VCIBrandingMapper.ts b/packages/oid4vci-holder/src/mappers/OIDC4VCIBrandingMapper.ts similarity index 100% rename from packages/oid4vci-holder/src/agent/OIDC4VCIBrandingMapper.ts rename to packages/oid4vci-holder/src/mappers/OIDC4VCIBrandingMapper.ts diff --git a/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts b/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts new file mode 100644 index 000000000..cdfeedfef --- /dev/null +++ b/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts @@ -0,0 +1,60 @@ +import { OpenID4VCIClient } from '@sphereon/oid4vci-client' +import { AuthorizationChallengeValidationResponse } from '@sphereon/ssi-sdk.siopv2-oid4vp-common' +import { AuthorizationChallengeCodeResponse } from '@sphereon/oid4vci-common' +import { CreateConfigResult } from '@sphereon/ssi-sdk.siopv2-oid4vp-op-auth' +import { RequiredContext } from '../types/IOID4VCIHolder' +import { + CreateConfigArgs, + GetSiopRequestArgs, + SendAuthorizationChallengeRequestArgs, + SendAuthorizationResponseArgs, + SiopV2AuthorizationRequestData +} from '../types/FirstPartyMachine' + +export const sendAuthorizationChallengeRequest = async (args: SendAuthorizationChallengeRequestArgs): Promise => { + const { openID4VCIClientState, authSession, presentationDuringIssuanceSession } = args + + const oid4vciClient = await OpenID4VCIClient.fromState({ state: openID4VCIClientState }) + return oid4vciClient.acquireAuthorizationChallengeCode({ + clientId: oid4vciClient.clientId, + ...(authSession && { authSession }), + ...(presentationDuringIssuanceSession && { presentationDuringIssuanceSession }) + }) +} + +export const createConfig = async (args: CreateConfigArgs, context: RequiredContext): Promise => { + const { presentationUri } = args; + + if (!presentationUri) { + return Promise.reject(Error('Missing presentation uri in context')); + } + + return context.agent.siopCreateConfig({ url: presentationUri }) +}; + +export const getSiopRequest = async (args: GetSiopRequestArgs, context: RequiredContext): Promise => { + const {didAuthConfig, presentationUri} = args; + + if (presentationUri === undefined) { + return Promise.reject(Error('Missing presentation uri in context')); + } + + if (didAuthConfig === undefined) { + return Promise.reject(Error('Missing did auth config in context')); + } + + return context.agent.siopGetSiopRequest({ didAuthConfig, url: presentationUri }) +} + +export const sendAuthorizationResponse = async (args: SendAuthorizationResponseArgs, context: RequiredContext): Promise => { + const { didAuthConfig, authorizationRequestData, selectedCredentials } = args + + const responseData = await context.agent.siopSendResponse({ + authorizationRequestData, + selectedCredentials, + didAuthConfig, + isFirstParty: true + }) + + return (responseData.body).presentation_during_issuance_session +} diff --git a/packages/oid4vci-holder/src/agent/OID4VCIHolderService.ts b/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts similarity index 94% rename from packages/oid4vci-holder/src/agent/OID4VCIHolderService.ts rename to packages/oid4vci-holder/src/services/OID4VCIHolderService.ts index 4ac379450..bf7b7f27d 100644 --- a/packages/oid4vci-holder/src/agent/OID4VCIHolderService.ts +++ b/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts @@ -10,6 +10,7 @@ import { getTypesFromObject, MetadataDisplay, OpenId4VCIVersion, + AuthorizationChallengeCodeResponse } from '@sphereon/oid4vci-common' import { KeyUse } from '@sphereon/ssi-sdk-ext.did-resolver-jwk' import { getOrCreatePrimaryIdentifier, SupportedDidMethodEnum } from '@sphereon/ssi-sdk-ext.did-utils' @@ -56,12 +57,16 @@ import { SelectAppLocaleBrandingArgs, VerificationResult, VerifyCredentialToAcceptArgs, + StartFirstPartApplicationMachine, + RequiredContext } from '../types/IOID4VCIHolder' import { oid4vciGetCredentialBrandingFrom, sdJwtGetCredentialBrandingFrom, issuerLocaleBrandingFrom -} from './OIDC4VCIBrandingMapper' +} from '../mappers/OIDC4VCIBrandingMapper' +import { FirstPartyMachine } from '../machines/firstPartyMachine' +import { FirstPartyMachineState, FirstPartyMachineStateTypes } from '../types/FirstPartyMachine' export const getCredentialBranding = async (args: GetCredentialBrandingArgs): Promise>> => { const { credentialsSupported, context } = args @@ -615,3 +620,34 @@ export const getIssuanceCryptoSuite = async (opts: GetIssuanceCryptoSuiteArgs): return Promise.reject(Error(`Credential format '${credentialSupported.format}' not supported`)) } } + +export const startFirstPartApplicationMachine = async (args: StartFirstPartApplicationMachine, context: RequiredContext): Promise => { + const { openID4VCIClientState } = args + + if (!openID4VCIClientState) { + return Promise.reject(Error('Missing openID4VCI client state in context')) + } + + const firstPartyMachineInstance = FirstPartyMachine.newInstance({ openID4VCIClientState, agentContext: context }); + + return new Promise((resolve, reject) => { + try { + firstPartyMachineInstance.onTransition((state: FirstPartyMachineState) => { + if (state.matches(FirstPartyMachineStateTypes.done)) { + const authorizationCodeResponse = state.context.authorizationCodeResponse + if (!authorizationCodeResponse) { + reject(Error('No authorizationCodeResponse acquired')); + } + resolve(authorizationCodeResponse); + } else if (state.matches(FirstPartyMachineStateTypes.aborted)) { + resolve(undefined); + } else if (state.matches(FirstPartyMachineStateTypes.error)) { + reject(state.context.error); + } + }) + firstPartyMachineInstance.start(); + } catch (error) { + reject(error); + } + }); +}; diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts new file mode 100644 index 000000000..4ddf35c86 --- /dev/null +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -0,0 +1,151 @@ +import { + BaseActionObject, + Interpreter, + ResolveTypegenMeta, + ServiceMap, State, + StateMachine, + StatesConfig, + TypegenDisabled +} from 'xstate' +import { OpenID4VCIClientState } from '@sphereon/oid4vci-client' +import { DidAuthConfig } from '@sphereon/ssi-sdk.data-store' +import { + PresentationDefinitionWithLocation, + RPRegistrationMetadataPayload +} from '@sphereon/did-auth-siop' +import { UniqueDigitalCredential } from '@sphereon/ssi-sdk.credential-store' +import { AuthorizationChallengeCodeResponse } from '@sphereon/oid4vci-common' +import { IIdentifier } from '@veramo/core' +import { ErrorDetails, RequiredContext } from './IOID4VCIHolder' + +export enum FirstPartyMachineStateTypes { + sendAuthorizationChallengeRequest = 'sendAuthorizationChallengeRequest', + sendAuthorizationResponse = 'sendAuthorizationResponse', + selectCredentials = 'selectCredentials', + createConfig = 'createConfig', + getSiopRequest = 'getSiopRequest', + error = 'error', + done = 'done', + aborted = 'aborted', + declined = 'declined' +} + +export enum FirstPartyMachineServices { + sendAuthorizationChallengeRequest = 'sendAuthorizationChallengeRequest', + sendAuthorizationResponse = 'sendAuthorizationResponse', + createConfig = 'createConfig', + getSiopRequest = 'getSiopRequest', +} + +export type FirstPartyMachineStates = Record; + +export type FirstPartyMachineContext = { + openID4VCIClientState: OpenID4VCIClientState + selectedCredentials: Array + authSession?: string + presentationUri?: string + identifier?: IIdentifier + didAuthConfig?: Omit + authorizationRequestData?: SiopV2AuthorizationRequestData + presentationDuringIssuanceSession?: string + authorizationCodeResponse?: AuthorizationChallengeCodeResponse + error?: ErrorDetails; +}; + +export enum FirstPartyMachineEvents { + NEXT = 'NEXT', + PREVIOUS = 'PREVIOUS', + DECLINE = 'DECLINE' // TODO not sure if we need this, will correct this after implementing the UI +} + +export type NextEvent = {type: FirstPartyMachineEvents.NEXT}; +export type PreviousEvent = {type: FirstPartyMachineEvents.PREVIOUS}; +export type DeclineEvent = {type: FirstPartyMachineEvents.DECLINE}; + +export type FirstPartyMachineEventTypes = + NextEvent | + PreviousEvent | + DeclineEvent + +export type FirstPartyMachineStatesConfig = StatesConfig< + FirstPartyMachineContext, + { + states: FirstPartyMachineStates; + }, + FirstPartyMachineEventTypes, + any +>; + +export type CreateFirstPartyMachineOpts = { + openID4VCIClientState: OpenID4VCIClientState + agentContext: RequiredContext + machineId?: string; +}; + +export type FirstPartyStateMachine = StateMachine< + FirstPartyMachineContext, + any, + FirstPartyMachineEventTypes, + { + value: any; + context: FirstPartyMachineContext; + }, + BaseActionObject, + ServiceMap, + ResolveTypegenMeta +>; + +export type FirstPartyMachineInterpreter = Interpreter< + FirstPartyMachineContext, + any, + FirstPartyMachineEventTypes, + { + value: any; + context: FirstPartyMachineContext; + }, + any +>; + +export type InstanceFirstPartyMachineOpts = { + services?: any; + guards?: any; + subscription?: () => void; + requireCustomNavigationHook?: boolean; + stateNavigationListener?: (firstPartyMachine: FirstPartyMachineInterpreter, state: FirstPartyMachineState, navigation?: any) => Promise +} & CreateFirstPartyMachineOpts; + +export type FirstPartyMachineState = State< + FirstPartyMachineContext, + FirstPartyMachineEventTypes, + any, + { + value: any; + context: FirstPartyMachineContext; + }, + any +>; + +export type FirstPartyMachineServiceDefinitions = Record< + keyof typeof FirstPartyMachineServices, + (...args: Array) => any +>; + +export type SendAuthorizationChallengeRequestArgs = Pick + +export type SendAuthorizationResponseArgs = Pick + +export type CreateConfigArgs = Pick + +export type GetSiopRequestArgs = Pick + +export type SiopV2AuthorizationRequestData = { + correlationId: string; + registrationMetadataPayload: RPRegistrationMetadataPayload; + issuer?: string; + name?: string; + uri?: URL; + clientIdScheme?: string; + clientId?: string; + entityId?: string; + presentationDefinitions?: PresentationDefinitionWithLocation[]; +}; diff --git a/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts b/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts index e2199aa92..3fc69afdb 100644 --- a/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts +++ b/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts @@ -37,6 +37,8 @@ import { import { IIssuanceBranding } from '@sphereon/ssi-sdk.issuance-branding' import { ImDLMdoc } from '@sphereon/ssi-sdk.mdl-mdoc' import { ISDJwtPlugin } from '@sphereon/ssi-sdk.sd-jwt' +import { ICredentialValidation, SchemaValidation } from '@sphereon/ssi-sdk.credential-validation' +import { IDidAuthSiopOpAuthenticator } from '@sphereon/ssi-sdk.siopv2-oid4vp-op-auth' import { Hasher, IVerifiableCredential, @@ -62,7 +64,6 @@ import { VerificationPolicies, } from '@veramo/core' import { BaseActionObject, Interpreter, ResolveTypegenMeta, ServiceMap, State, StateMachine, TypegenDisabled } from 'xstate' -import { ICredentialValidation, SchemaValidation } from '@sphereon/ssi-sdk.credential-validation' export interface IOID4VCIHolder extends IPluginMethodMap { oid4vciHolderGetIssuerMetadata(args: GetIssuerMetadataArgs, context: RequiredContext): Promise @@ -72,7 +73,7 @@ export interface IOID4VCIHolder extends IPluginMethodMap { oid4vciHolderStart(args: PrepareStartArgs, context: RequiredContext): Promise oid4vciHolderCreateCredentialsToSelectFrom( - args: createCredentialsToSelectFromArgs, + args: CreateCredentialsToSelectFromArgs, context: RequiredContext, ): Promise> @@ -144,7 +145,7 @@ export type PrepareStartArgs = Pick< OID4VCIMachineContext, 'requestData' | 'authorizationRequestOpts' | 'didMethodPreferences' | 'issuanceOpt' | 'accessTokenOpts' > -export type createCredentialsToSelectFromArgs = Pick< +export type CreateCredentialsToSelectFromArgs = Pick< OID4VCIMachineContext, 'credentialsSupported' | 'credentialBranding' | 'selectedCredentials' | 'locale' | 'openID4VCIClientState' > @@ -170,6 +171,7 @@ export type SendNotificationArgs = Pick< 'credentialsToAccept' | 'serverMetadata' | 'credentialsSupported' | 'openID4VCIClientState' > & { notificationRequest?: NotificationRequest; stored: boolean } export type GetFederationTrustArgs = Pick +export type StartFirstPartApplicationMachine = Pick export enum OID4VCIHolderEvent { CONTACT_IDENTITY_CREATED = 'contact_identity_created', @@ -245,6 +247,7 @@ export enum OID4VCIMachineStates { storeIssuerBranding = 'storeIssuerBranding', addIssuerBrandingAfterIdentity = 'addIssuerBrandingAfterIdentity', transitionFromContactSetup = 'transitionFromContactSetup', + startFirstPartApplicationFlow = 'startFirstPartApplicationFlow', selectCredentials = 'selectCredentials', transitionFromSelectingCredentials = 'transitionFromSelectingCredentials', verifyPin = 'verifyPin', @@ -370,6 +373,7 @@ export enum OID4VCIMachineGuards { hasSelectedCredentialsGuard = 'oid4vciHasSelectedCredentialsGuard', isOIDFOriginGuard = 'oid4vciIsOIDFOriginGuard', contactHasLowTrustGuard = 'oid4vciContactHasLowTrustGuard', + isFirstPartyApplication = 'oid4vciIsFirstPartyApplication' } export enum OID4VCIMachineServices { @@ -380,14 +384,19 @@ export enum OID4VCIMachineServices { createCredentialsToSelectFrom = 'createCredentialsToSelectFrom', getIssuerBranding = 'getIssuerBranding', storeIssuerBranding = 'storeIssuerBranding', - createCredentialSelection = 'createCredentialSelection', getCredentials = 'getCredentials', assertValidCredentials = 'assertValidCredentials', storeCredentialBranding = 'storeCredentialBranding', sendNotification = 'sendNotification', storeCredentials = 'storeCredentials', + startFirstPartApplicationFlow = 'startFirstPartApplicationFlow' } +export type OID4VCIMachineServiceDefinitions = Record< + keyof typeof OID4VCIMachineServices, + (...args: Array) => any +>; + export type NextEvent = { type: OID4VCIMachineEvents.NEXT } export type PreviousEvent = { type: OID4VCIMachineEvents.PREVIOUS } export type DeclineEvent = { type: OID4VCIMachineEvents.DECLINE } @@ -397,14 +406,9 @@ export type VerificationCodeEvent = { type: OID4VCIMachineEvents.SET_VERIFICATIO export type ContactConsentEvent = { type: OID4VCIMachineEvents.SET_CONTACT_CONSENT; data: boolean } export type ContactAliasEvent = { type: OID4VCIMachineEvents.SET_CONTACT_ALIAS; data: string } export type SetAuthorizationCodeURLEvent = { type: OID4VCIMachineEvents.SET_AUTHORIZATION_CODE_URL; data: string } -export type InvokeAuthorizationRequestEvent = { - type: OID4VCIMachineEvents.INVOKED_AUTHORIZATION_CODE_REQUEST - data: string -} -export type AuthorizationResponseEvent = { - type: OID4VCIMachineEvents.PROVIDE_AUTHORIZATION_CODE_RESPONSE - data: string | AuthorizationResponse -} +export type InvokeAuthorizationRequestEvent = { type: OID4VCIMachineEvents.INVOKED_AUTHORIZATION_CODE_REQUEST, data: string } +export type AuthorizationResponseEvent = { type: OID4VCIMachineEvents.PROVIDE_AUTHORIZATION_CODE_RESPONSE, data: string | AuthorizationResponse } + export type OID4VCIMachineEventTypes = | NextEvent | PreviousEvent @@ -633,22 +637,6 @@ export interface VerifyCredentialArgs { [x: string]: any } -export type RequiredContext = IAgentContext< - IIssuanceBranding & - IContactManager & - ICredentialValidation & - ICredentialVerifier & - ICredentialIssuer & - ICredentialStore & - IIdentifierResolution & - IJwtService & - IDIDManager & - IResolver & - IKeyManager & - ISDJwtPlugin & - ImDLMdoc -> - export type IssuerType = 'RootTAO' | 'TAO' | 'TI' | 'Revoked or Undefined' export type VerifyEBSICredentialIssuerArgs = { @@ -724,3 +712,20 @@ export type DynamicRegistrationClientMetadataDisplay = Pick< > export type DidAgents = TAgent + +export type RequiredContext = IAgentContext< + IIssuanceBranding & + IContactManager & + ICredentialValidation & + ICredentialVerifier & + ICredentialIssuer & + ICredentialStore & + IIdentifierResolution & + IJwtService & + IDIDManager & + IResolver & + IKeyManager & + ISDJwtPlugin & + ImDLMdoc & + IDidAuthSiopOpAuthenticator +> diff --git a/packages/oid4vci-holder/tsconfig.json b/packages/oid4vci-holder/tsconfig.json index a3efa7e7d..4ada108e9 100644 --- a/packages/oid4vci-holder/tsconfig.json +++ b/packages/oid4vci-holder/tsconfig.json @@ -40,6 +40,9 @@ }, { "path": "../oidf-client" + }, + { + "path": "../siopv2-oid4vp-op-auth" } ] } diff --git a/packages/oid4vci-issuer-rest-api/package.json b/packages/oid4vci-issuer-rest-api/package.json index 78d81c380..694c62f56 100644 --- a/packages/oid4vci-issuer-rest-api/package.json +++ b/packages/oid4vci-issuer-rest-api/package.json @@ -11,9 +11,9 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", - "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.241", - "@sphereon/oid4vci-issuer-server": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-issuer-server": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer-rest-api/src/OID4VCIRestAPI.ts b/packages/oid4vci-issuer-rest-api/src/OID4VCIRestAPI.ts index 459ef52f0..e4aa89842 100644 --- a/packages/oid4vci-issuer-rest-api/src/OID4VCIRestAPI.ts +++ b/packages/oid4vci-issuer-rest-api/src/OID4VCIRestAPI.ts @@ -2,7 +2,13 @@ import { CredentialDataSupplier, VcIssuer } from '@sphereon/oid4vci-issuer' import { OID4VCIServer } from '@sphereon/oid4vci-issuer-server' import { IOID4VCIServerOpts } from '@sphereon/oid4vci-issuer-server' import { ExpressSupport } from '@sphereon/ssi-express-support' -import { getAccessTokenSignerCallback, IIssuerInstanceArgs, IssuerInstance } from '@sphereon/ssi-sdk.oid4vci-issuer' +import { + createAuthRequestUriCallback, + getAccessTokenSignerCallback, + IIssuerInstanceArgs, + IssuerInstance, + verifyAuthResponseCallback +} from '@sphereon/ssi-sdk.oid4vci-issuer' import { DIDDocument } from 'did-resolver' import { Express } from 'express' import { IRequiredContext } from './types' @@ -56,6 +62,37 @@ export class OID4VCIRestAPI { args.context, ) } + + if (opts?.endpointOpts.authorizationChallengeOpts?.enabled === true) { + if (typeof opts?.endpointOpts.authorizationChallengeOpts.createAuthRequestUriCallback !== 'function') { + if (!opts.endpointOpts.authorizationChallengeOpts?.createAuthRequestUriEndpointPath) { + throw Error( + `Unable to set createAuthRequestUriCallback. No createAuthRequestUriEndpointPath present in options`, + ) + } + + opts.endpointOpts.authorizationChallengeOpts.createAuthRequestUriCallback = await createAuthRequestUriCallback( + { + path: opts.endpointOpts.authorizationChallengeOpts.createAuthRequestUriEndpointPath, + } + ) + } + + if (typeof opts?.endpointOpts.authorizationChallengeOpts?.verifyAuthResponseCallback !== 'function') { + if (!opts.endpointOpts.authorizationChallengeOpts?.verifyAuthResponseEndpointPath) { + throw Error( + `Unable to set verifyAuthResponseCallback. No createAuthRequestUriEndpointPath present in options`, + ) + } + + opts.endpointOpts.authorizationChallengeOpts.verifyAuthResponseCallback = await verifyAuthResponseCallback( + { + path: opts.endpointOpts.authorizationChallengeOpts.verifyAuthResponseEndpointPath, + } + ) + } + } + return new OID4VCIRestAPI({ context, issuerInstanceArgs, expressSupport, opts, instance, issuer }) } diff --git a/packages/oid4vci-issuer-rest-client/package.json b/packages/oid4vci-issuer-rest-client/package.json index 8b388f2e2..b68f9e1d6 100644 --- a/packages/oid4vci-issuer-rest-client/package.json +++ b/packages/oid4vci-issuer-rest-client/package.json @@ -16,7 +16,7 @@ "generate-plugin-schema": "ts-node ../../packages/dev/bin/sphereon.js dev generate-plugin-schema" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-types": "workspace:*", "@veramo/core": "4.2.0", "cross-fetch": "^3.1.8" diff --git a/packages/oid4vci-issuer-store/package.json b/packages/oid4vci-issuer-store/package.json index 10cd09a56..22be26de2 100644 --- a/packages/oid4vci-issuer-store/package.json +++ b/packages/oid4vci-issuer-store/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer/package.json b/packages/oid4vci-issuer/package.json index 3c71b92cb..0a04bfb4d 100644 --- a/packages/oid4vci-issuer/package.json +++ b/packages/oid4vci-issuer/package.json @@ -14,8 +14,8 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.241", - "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.241", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.agent-config": "workspace:*", @@ -35,6 +35,7 @@ "uuid": "^9.0.1" }, "devDependencies": { + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", "@sphereon/did-uni-client": "^0.6.3", "@veramo/did-provider-key": "4.2.0", "@veramo/did-resolver": "4.2.0", diff --git a/packages/oid4vci-issuer/src/functions.ts b/packages/oid4vci-issuer/src/functions.ts index cdd295e06..4934ab186 100644 --- a/packages/oid4vci-issuer/src/functions.ts +++ b/packages/oid4vci-issuer/src/functions.ts @@ -20,6 +20,8 @@ import { createJWT, decodeJWT, JWTVerifyOptions, verifyJWT } from 'did-jwt' import { Resolvable } from 'did-resolver' import { jwtDecode } from 'jwt-decode' import { IIssuerOptions, IRequiredContext } from './types/IOID4VCIIssuer' +import fetch from 'cross-fetch' +import { AuthorizationResponseStateStatus } from '@sphereon/did-auth-siop' export function getJwtVerifyCallback({ verifyOpts }: { verifyOpts?: JWTVerifyOptions }, _context: IRequiredContext) { return async (args: { jwt: string; kid?: string }): Promise> => { @@ -323,3 +325,58 @@ export async function createVciIssuer( ) ).build() } + +export async function createAuthRequestUriCallback(opts: { path: string }): Promise<(presentationDefinitionId: string) => Promise> { + async function authRequestUriCallback(presentationDefinitionId: string): Promise { + const path = opts.path.replace(':definitionId', presentationDefinitionId) + return fetch(path, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + } + }) + .then(async (response): Promise => { + if (response.status >= 400) { + return Promise.reject(Error(await response.text())) + } else { + const responseData = await response.json(); + + if (!responseData.authRequestURI) { + return Promise.reject(Error('Missing auth request uri in response body')) + } + + return responseData.authRequestURI + } + }) + + } + + return authRequestUriCallback +} + +export async function verifyAuthResponseCallback(opts: { path: string }): Promise<(presentationDefinitionId: string, correlationId: string) => Promise> { + async function verifyAuthResponseCallback(presentationDefinitionId: string, correlationId: string): Promise { + return fetch(opts.path, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ definitionId: presentationDefinitionId, correlationId }), + }) + .then(async (response): Promise => { + if (response.status >= 400) { + return Promise.reject(Error(await response.text())) + } else { + const responseData = await response.json(); + + if (!responseData.status) { + return Promise.reject(Error('Missing status in response body')) + } + + return responseData.status === AuthorizationResponseStateStatus.VERIFIED + } + }) + } + + return verifyAuthResponseCallback +} diff --git a/packages/siopv2-oid4vp-common/package.json b/packages/siopv2-oid4vp-common/package.json index c8a0ea888..db0e14b46 100644 --- a/packages/siopv2-oid4vp-common/package.json +++ b/packages/siopv2-oid4vp-common/package.json @@ -12,7 +12,7 @@ "access": "public" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-types": "workspace:*", "uint8arrays": "3.1.1" diff --git a/packages/siopv2-oid4vp-common/src/auth-model.ts b/packages/siopv2-oid4vp-common/src/auth-model.ts index 9cc564d70..0d3c7bec3 100644 --- a/packages/siopv2-oid4vp-common/src/auth-model.ts +++ b/packages/siopv2-oid4vp-common/src/auth-model.ts @@ -6,6 +6,10 @@ export interface ClaimPayloadCommonOpts { [x: string]: any } +export interface AuthorizationChallengeValidationResponse { + presentation_during_issuance_session: string; +} + export type AuthorizationRequestStateStatus = 'created' | 'sent' | 'received' | 'verified' | 'error' export type AuthorizationResponseStateStatus = 'created' | 'sent' | 'received' | 'verified' | 'error' diff --git a/packages/siopv2-oid4vp-op-auth/package.json b/packages/siopv2-oid4vp-op-auth/package.json index c4f7b0266..fa219290e 100644 --- a/packages/siopv2-oid4vp-op-auth/package.json +++ b/packages/siopv2-oid4vp-op-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.241", - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.255", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", diff --git a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts index 25b3aacae..66f57ab22 100644 --- a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts +++ b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts @@ -25,32 +25,30 @@ import { import { Siopv2Machine } from '../machine/Siopv2Machine' import { getSelectableCredentials, siopSendAuthorizationResponse, translateCorrelationIdToName } from '../services/Siopv2MachineService' import { OpSession } from '../session' +import { PEX, Status } from '@sphereon/pex' +import { computeEntryHash } from '@veramo/utils' +import { UniqueDigitalCredential } from '@sphereon/ssi-sdk.credential-store' +import { EventEmitter } from 'events' import { + AddIdentityArgs, + CreateConfigArgs, + CreateConfigResult, + GetSiopRequestArgs, IDidAuthSiopOpAuthenticator, IGetSiopSessionArgs, IRegisterCustomApprovalForSiopArgs, IRemoveCustomApprovalForSiopArgs, IRemoveSiopSessionArgs, IRequiredContext, -} from '../types/IDidAuthSiopOpAuthenticator' -import { Siopv2Machine as Siopv2MachineId, Siopv2MachineInstanceOpts } from '../types/machine' - -import { - AddIdentityArgs, - CreateConfigArgs, - CreateConfigResult, - GetSiopRequestArgs, OnContactIdentityCreatedArgs, OnIdentifierCreatedArgs, RetrieveContactArgs, SendResponseArgs, Siopv2AuthorizationRequestData, Siopv2HolderEvent, -} from '../types/siop-service' -import { PEX, Status } from '@sphereon/pex' -import { computeEntryHash } from '@veramo/utils' -import { UniqueDigitalCredential } from '@sphereon/ssi-sdk.credential-store' -import { EventEmitter } from 'events' + Siopv2Machine as Siopv2MachineId, + Siopv2MachineInstanceOpts +} from '../types' const logger = Loggers.DEFAULT.options(LOGGER_NAMESPACE, {}).get(LOGGER_NAMESPACE) @@ -185,8 +183,8 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { return Siopv2Machine.newInstance(siopv2MachineOpts) } - private async siopCreateConfig(args: CreateConfigArgs): Promise { - const { url } = args + private async siopCreateConfig(context: TContext): Promise { + const { url } = context if (!url) { return Promise.reject(Error('Missing request uri in context')) @@ -200,7 +198,7 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { } } - private async siopGetSiopRequest(args: GetSiopRequestArgs, context: RequiredContext): Promise { + private async siopGetSiopRequest(args: GetSiopRequestArgs, context: RequiredContext): Promise { //GetSiopRequestArgs const { agent } = context const { didAuthConfig } = args @@ -332,7 +330,7 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { } private async siopSendResponse(args: SendResponseArgs, context: RequiredContext): Promise { - const { didAuthConfig, authorizationRequestData, selectedCredentials } = args + const { didAuthConfig, authorizationRequestData, selectedCredentials, isFirstParty } = args if (didAuthConfig === undefined) { return Promise.reject(Error('Missing config in context')) @@ -378,6 +376,7 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { sessionId: didAuthConfig.sessionId, ...(args.idOpts && { idOpts: args.idOpts }), ...(authorizationRequestData.presentationDefinitions !== undefined && { verifiableCredentialsWithDefinition }), + isFirstParty }, context, ) diff --git a/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts b/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts index 46eadf91c..b02fd1b70 100644 --- a/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts +++ b/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts @@ -48,12 +48,13 @@ export const siopSendAuthorizationResponse = async ( sessionId: string verifiableCredentialsWithDefinition?: VerifiableCredentialsWithDefinition[] idOpts?: ManagedIdentifierOptsOrResult + isFirstParty?: boolean }, context: RequiredContext, ) => { const { agent } = context const agentContext = { ...context, agent: context.agent as DidAgents } - let { idOpts } = args + let { idOpts, isFirstParty } = args if (connectionType !== ConnectionType.SIOPv2_OpenID4VP) { return Promise.reject(Error(`No supported authentication provider for type: ${connectionType}`)) @@ -162,6 +163,7 @@ export const siopSendAuthorizationResponse = async ( ...(presentationSubmission && { presentationSubmission }), // todo: Change issuer value in case we do not use identifier. Use key.meta.jwkThumbprint then responseSignerOpts: idOpts!, + isFirstParty, }) } diff --git a/packages/siopv2-oid4vp-op-auth/src/types/machine/index.ts b/packages/siopv2-oid4vp-op-auth/src/types/machine/index.ts index 481403e16..d2c5f5063 100644 --- a/packages/siopv2-oid4vp-op-auth/src/types/machine/index.ts +++ b/packages/siopv2-oid4vp-op-auth/src/types/machine/index.ts @@ -18,6 +18,7 @@ export type Siopv2MachineContext = { contactAlias: string selectableCredentialsMap?: SelectableCredentialsMap selectedCredentials: Array + isFirstParty?: boolean error?: ErrorDetails } diff --git a/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts b/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts index 0fd3fb152..38683f2d8 100644 --- a/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts +++ b/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts @@ -19,12 +19,18 @@ export type GetMachineArgs = { stateNavigationListener?: (siopv2Machine: Siopv2MachineInterpreter, state: Siopv2MachineState, navigation?: any) => Promise } -export type CreateConfigArgs = Pick +export type CreateConfigArgs = { url: string }//Pick // TContext extends { url: string } //Pick // TODO create function args export type CreateConfigResult = Omit -export type GetSiopRequestArgs = Pick +export type GetSiopRequestArgs = { didAuthConfig?: Omit, url: string }//Pick // TODO export type RetrieveContactArgs = Pick export type AddIdentityArgs = Pick -export type SendResponseArgs = Pick +export type SendResponseArgs = { + didAuthConfig?: Omit, + authorizationRequestData?: Siopv2AuthorizationRequestData, + selectedCredentials: Array + idOpts?: ManagedIdentifierOptsOrResult + isFirstParty?: boolean +} //Pick export type GetSelectableCredentialsArgs = Pick export enum Siopv2HolderEvent { @@ -38,7 +44,7 @@ export enum SupportedLanguage { } export type Siopv2AuthorizationResponseData = { - body?: string + body?: string | Record url?: string queryParams?: Record } diff --git a/packages/siopv2-oid4vp-rp-auth/package.json b/packages/siopv2-oid4vp-rp-auth/package.json index ffb33bcb1..7da3330a5 100644 --- a/packages/siopv2-oid4vp-rp-auth/package.json +++ b/packages/siopv2-oid4vp-rp-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.241", - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.255", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", diff --git a/packages/siopv2-oid4vp-rp-rest-api/package.json b/packages/siopv2-oid4vp-rp-rest-api/package.json index 526dd83c9..af1484ea9 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/package.json +++ b/packages/siopv2-oid4vp-rp-rest-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-sdk.credential-validation": "workspace:*", diff --git a/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts b/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts index 6c9a286da..27a9afa5f 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts +++ b/packages/siopv2-oid4vp-rp-rest-api/src/siop-api-functions.ts @@ -1,8 +1,9 @@ import { AuthorizationResponsePayload, PresentationDefinitionLocation } from '@sphereon/did-auth-siop' import { checkAuth, ISingleEndpointOpts, sendErrorResponse } from '@sphereon/ssi-express-support' +import { AuthorizationChallengeValidationResponse } from '@sphereon/ssi-sdk.siopv2-oid4vp-common' import { PresentationSubmission } from '@sphereon/ssi-types' import { Request, Response, Router } from 'express' -import { AuthorizationChallengeValidationResponse, IRequiredContext } from './types' +import { IRequiredContext } from './types' export function verifyAuthResponseSIOPv2Endpoint( router: Router, diff --git a/packages/siopv2-oid4vp-rp-rest-api/src/types.ts b/packages/siopv2-oid4vp-rp-rest-api/src/types.ts index 28d713a41..cdc4a2233 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/src/types.ts +++ b/packages/siopv2-oid4vp-rp-rest-api/src/types.ts @@ -24,9 +24,5 @@ export interface ICreateAuthRequestWebappEndpointOpts extends ISingleEndpointOpt nonce?: string } -export interface AuthorizationChallengeValidationResponse { - presentation_during_issuance_session: string; -} - export type IRequiredPlugins = ICredentialVerifier & ISIOPv2RP & IPresentationExchange & IPDManager export type IRequiredContext = IAgentContext diff --git a/packages/w3c-vc-api/package.json b/packages/w3c-vc-api/package.json index 7cfc9ce66..8123f4443 100644 --- a/packages/w3c-vc-api/package.json +++ b/packages/w3c-vc-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/agent.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.241", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.agent-config": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7e03b2d06..6fec37130 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -615,11 +615,11 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -697,11 +697,11 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -914,8 +914,8 @@ importers: packages/mdl-mdoc: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 @@ -972,11 +972,11 @@ importers: version: 9.0.1 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1144,15 +1144,18 @@ importers: packages/oid4vci-holder: dependencies: + '@sphereon/did-auth-siop': + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1192,6 +1195,9 @@ importers: '@sphereon/ssi-sdk.sd-jwt': specifier: workspace:* version: link:../sd-jwt + '@sphereon/ssi-sdk.siopv2-oid4vp-op-auth': + specifier: workspace:* + version: link:../siopv2-oid4vp-op-auth '@sphereon/ssi-sdk.xstate-machine-persistence': specifier: workspace:* version: link:../xstate-persistence @@ -1227,11 +1233,14 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vc-common': - specifier: 0.16.1-next.187 - version: 0.16.1-next.187 + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255 '@sphereon/ssi-sdk-ext.did-resolver-jwk': specifier: 0.27.0 version: 0.27.0 + '@sphereon/ssi-sdk.siopv2-oid4vp-common': + specifier: workspace:* + version: link:../siopv2-oid4vp-common '@types/i18n-js': specifier: ^3.8.9 version: 3.8.9 @@ -1260,11 +1269,11 @@ importers: packages/oid4vci-issuer: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1317,6 +1326,9 @@ importers: specifier: ^9.0.1 version: 9.0.1 devDependencies: + '@sphereon/did-auth-siop': + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': specifier: ^0.6.3 version: 0.6.3(encoding@0.1.13) @@ -1339,14 +1351,14 @@ importers: packages/oid4vci-issuer-rest-api: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/oid4vci-issuer-server': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1505,8 +1517,8 @@ importers: packages/oid4vci-issuer-rest-client: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/ssi-types': specifier: workspace:* version: link:../ssi-types @@ -1542,8 +1554,8 @@ importers: packages/oid4vci-issuer-store: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -2240,8 +2252,8 @@ importers: packages/siopv2-oid4vp-common: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-sdk.core': specifier: workspace:* version: link:../ssi-sdk-core @@ -2262,14 +2274,14 @@ importers: packages/siopv2-oid4vp-op-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241 + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2395,14 +2407,14 @@ importers: packages/siopv2-oid4vp-rp-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241 + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2483,8 +2495,8 @@ importers: packages/siopv2-oid4vp-rp-rest-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -3592,8 +3604,8 @@ importers: packages/w3c-vc-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.241 - version: 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.255 + version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -6001,12 +6013,12 @@ packages: '@sinonjs/fake-timers@8.1.0': resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.241': - resolution: {integrity: sha512-RgweId9jsfgz0y9SkCwEFgAGWZ/yiQOLs7sfwA5Sj2dvpQB2m09ziH80Jbvl4orXl4YpNPC9j2MWttd81vWpoA==} + '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.255': + resolution: {integrity: sha512-XrqaSutoZbYJ3mNrjM+ccvcn9Gtf6k6WACyhg5nEC5pZVsVlnSUnvNbaK6R402SZOhhLFvMMd84jO+J8d8g+UQ==} engines: {node: '>=18'} - '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.241': - resolution: {integrity: sha512-GkARCVHC5HBZhf44YJhW5YpasGQVnijqjbK+ynCD2TmovQYluUwfJ4cH5wdZYW32XuGO6RibIdvkwKRt61vP2g==} + '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.255': + resolution: {integrity: sha512-pflZA3/fFye56XZ2YQ+dmi3fflhkL4QdCOe1taQ6hABiCV8/3mWOCn/JptQe9n3PH1FeyiaJkCeSRsUVRRShTw==} engines: {node: '>=18'} '@sphereon/did-provider-oyd@0.27.0': @@ -6029,8 +6041,8 @@ packages: '@sphereon/react-native-argon2': ^2.0.9 react-native: '>=0.60.0' - '@sphereon/jarm@0.16.1-feature.SPRIND.89.241': - resolution: {integrity: sha512-cKdWaLU6XOtDj/6df/fENR2TJ1z0GfDsDnbYvtII+IDwjoA0G4o9If1qYi4T0jigX/SZ8U4vURKzsiQnmX94Sg==} + '@sphereon/jarm@0.16.1-feature.SPRIND.89.255': + resolution: {integrity: sha512-nb0L/F6tf8HDoCmwjORpofDzcvQO/5IsXW20CKF89nj+jI5kb+jxOj3n3KDSwRldLOc85RMeQtDvX0ss8srbRg==} engines: {node: '>=18'} '@sphereon/kmp-mdoc-core@0.2.0-SNAPSHOT.26': @@ -6040,24 +6052,20 @@ packages: '@sphereon/lto-did-ts@0.1.8-unstable.0': resolution: {integrity: sha512-3jzwwuYX/VYuze+T9/yg4PcsJ5iNNwAfTp4WfS4aSfPFBErDAfKXqn6kOb0wFYGkhejr3Jz+rljPC2iKZiHiGA==} - '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.241': - resolution: {integrity: sha512-3OLMH7tUiqiq7GGNq5dEt9vSqCgNuhyhlChIoXoSDJ/DMETldwY5xKxQH9urrJWxEYpCkCcjubjZkJ5V7SBKgg==} + '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.255': + resolution: {integrity: sha512-lrixDkmRGFa17Bo/1dGifnypK8QMZLF/XhJfJ4mt8AHgdg2YRmhYCXfnpnlq9FBH7OxT/X3/eCTuaH38nddlfA==} engines: {node: '>=18'} - '@sphereon/oid4vc-common@0.16.1-next.187': - resolution: {integrity: sha512-OYOT3Z3moNb6JyGHYX9tcaOcrCAUn9opNKQ9wuKoiSyckXS6RZXinuDlGETISnMCf3cQZCWAHOc6ctfHv1eHDw==} + '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.255': + resolution: {integrity: sha512-9+qsHNwiI7OFVqSC3d1BKEDcAjdlOq5N9xtM0D8Sq0vutbnzFI4vgUwkLKovHeCIMMMYXg9yTy0jlO/aWvkbUA==} engines: {node: '>=18'} - '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.241': - resolution: {integrity: sha512-S3mfAGNxeV/z3SX3ucssNbfcUYTgykoj6X4WD5J+WxMe1kvvvnd10Ut5bej25idG6p003sAkLg8fLWaCqSO8QQ==} + '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.255': + resolution: {integrity: sha512-c6CqbP3T0lZ8bekUpcosGFBvF9QZ3Abdmw0jxBIExiTetH8LqeZOKegGnnRKhnZTe9rkYe5e//Q5lzLskpWwdg==} engines: {node: '>=18'} - '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.241': - resolution: {integrity: sha512-gW8UNj0q1UlgRG+Oc7uqWl3XMWhFwhjDSrYw2Rzlr5xsTAifiYkXiaEO7H214RiDPXxPyiVSliJvrIk88aRFaw==} - engines: {node: '>=18'} - - '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.241': - resolution: {integrity: sha512-Ld9xWLe6jCQFPnoeMdSgdXjDGyrSuqshkgGFr1/XkEwFN31kg3lJov1i/DYMo3TbBl0bEjeZNufLwYjAZiyw9A==} + '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.255': + resolution: {integrity: sha512-tgWvV+v8obtXPVSlsyvnH3qZ60oKJ9lXqaCN4vqjCrhpHvh+Vr2Wd5ZkJJdP+nw95pg/moZ4fHI+HL5uV7+0tg==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -6065,8 +6073,8 @@ packages: awesome-qr: optional: true - '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.241': - resolution: {integrity: sha512-NapDZH7O1kkCsHRbqCmPn+AILYBPBkySzlqr8l0HhhChdH0Lc4iDrscuw80JPP7y5nD1JptAejOKSPQLAKr9mg==} + '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.255': + resolution: {integrity: sha512-Mt53MXifrshAmkE0fCvJCbGckF/cSa6j37sVXYmdg21m+Yq0i/NLVTOnq+KwnmtgOpasQZCvqn5Y4l8rjCIqBQ==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -16982,11 +16990,11 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3)': dependencies: - '@sphereon/did-auth-siop': 0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3) + '@sphereon/did-auth-siop': 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': 0.6.3(encoding@0.1.13) - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 '@sphereon/wellknown-dids-client': 0.1.3(encoding@0.1.13) did-jwt: 6.11.6(patch_hash=afqywxnnjnsy6hwgax66dyyiey) did-resolver: 4.1.0 @@ -16995,11 +17003,11 @@ snapshots: - supports-color - typescript - '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.241(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@sphereon/jarm': 0.16.1-feature.SPRIND.89.241(typescript@5.6.3) - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + '@sphereon/jarm': 0.16.1-feature.SPRIND.89.255(typescript@5.6.3) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 '@sphereon/pex': 5.0.0-unstable.28 '@sphereon/pex-models': 2.3.2 '@sphereon/ssi-types': link:packages/ssi-types @@ -17060,9 +17068,9 @@ snapshots: react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1) uint8arrays: 3.1.1 - '@sphereon/jarm@0.16.1-feature.SPRIND.89.241(typescript@5.6.3)': + '@sphereon/jarm@0.16.1-feature.SPRIND.89.255(typescript@5.6.3)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 valibot: 0.42.1(typescript@5.6.3) transitivePeerDependencies: - typescript @@ -17086,15 +17094,7 @@ snapshots: - encoding - typescript - '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.241': - dependencies: - '@sphereon/ssi-types': link:packages/ssi-types - jwt-decode: 4.0.0 - sha.js: 2.4.11 - uint8arrays: 3.1.1 - uuid: 9.0.1 - - '@sphereon/oid4vc-common@0.16.1-next.187': + '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.255': dependencies: '@sphereon/ssi-types': link:packages/ssi-types jwt-decode: 4.0.0 @@ -17102,10 +17102,10 @@ snapshots: uint8arrays: 3.1.1 uuid: 9.0.1 - '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.241(encoding@0.1.13)': + '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.255(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17113,9 +17113,9 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.241(encoding@0.1.13)': + '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.255(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17126,11 +17126,11 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.241(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': + '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.255(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) - '@sphereon/oid4vci-issuer': 0.16.1-feature.SPRIND.89.241(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + '@sphereon/oid4vci-issuer': 0.16.1-feature.SPRIND.89.255(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-express-support': 0.30.2-feature.mdoc.funke2.367(@noble/hashes@1.6.1)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-types': link:packages/ssi-types body-parser: 1.20.3 @@ -17149,10 +17149,10 @@ snapshots: - passport-http-bearer - supports-color - '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.241(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': + '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.255(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.241 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.241(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types uuid: 9.0.1 optionalDependencies: From 60533d5fc4fd98d02502dd45670978b1b67f3dea Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Thu, 16 Jan 2025 13:58:36 +0100 Subject: [PATCH 05/29] chore: set correct localization keys --- packages/oid4vci-holder/src/localization/translations/en.json | 4 +++- packages/oid4vci-holder/src/localization/translations/nl.json | 4 +++- packages/oid4vci-holder/src/machines/firstPartyMachine.ts | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/oid4vci-holder/src/localization/translations/en.json b/packages/oid4vci-holder/src/localization/translations/en.json index f963b2f51..267c4a798 100644 --- a/packages/oid4vci-holder/src/localization/translations/en.json +++ b/packages/oid4vci-holder/src/localization/translations/en.json @@ -12,5 +12,7 @@ "oid4vci_machine_credential_verification_failed_message": "The credential verification resulted in an error.", "oid4vci_machine_credential_verification_schema_failed_message": "The credential schema verification resulted in an error.", "oid4vci_machine_retrieve_federation_trust_error_title": "Retrieve federation trust", - "oid4vci_machine_first_party_error_title": "First party flow" + "oid4vci_machine_first_party_error_title": "First party flow", + "oid4vci_machine_send_authorization_challenge_request_error_title": "Sending authorization challenge request", + "oid4vci_machine_create_config_error_title": "Creating siopV2 config" } diff --git a/packages/oid4vci-holder/src/localization/translations/nl.json b/packages/oid4vci-holder/src/localization/translations/nl.json index 81d195693..3260a0d86 100644 --- a/packages/oid4vci-holder/src/localization/translations/nl.json +++ b/packages/oid4vci-holder/src/localization/translations/nl.json @@ -11,5 +11,7 @@ "oid4vci_machine_initiation_error_title": "Initiëren OID4VCI provider", "oid4vci_machine_credential_verification_failed_message": "Verificatie van de credential leidde tot een fout.", "oid4vci_machine_retrieve_federation_trust_error_title": "Ophalen federatievertrouwen", - "oid4vci_machine_first_party_error_title": "Eerste partijstroom" + "oid4vci_machine_first_party_error_title": "Eerste partijstroom", + "oid4vci_machine_send_authorization_challenge_request_error_title": "Versturen autorisatie-uitdaging aanvraag", + "oid4vci_machine_create_config_error_title": "SiopV2-configuratie aanmaken" } diff --git a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts index 883614cf3..485b5fb77 100644 --- a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts +++ b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts @@ -57,7 +57,7 @@ const firstPartyMachineStates: FirstPartyMachineStatesConfig = { target: FirstPartyMachineStateTypes.error, actions: assign({ error: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ - title: translate('oid4vci_machine_verify_credentials_error_title'), // TODO check others + title: translate('oid4vci_machine_send_authorization_challenge_request_error_title'), message: _event.data.message, stack: _event.data.stack, }), @@ -80,7 +80,7 @@ const firstPartyMachineStates: FirstPartyMachineStatesConfig = { target: FirstPartyMachineStateTypes.error, actions: assign({ error: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ - title: translate('siopV2_machine_create_config_error_title'), // TODO check others + title: translate('oid4vci_machine_create_config_error_title'), message: _event.data.message, stack: _event.data.stack, }), From b23d4e6095cb9481e9bc9d504490d03ea152d828 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Thu, 16 Jan 2025 14:06:20 +0100 Subject: [PATCH 06/29] chore: cleanup --- .../oid4vci-holder/src/localization/translations/en.json | 3 ++- .../oid4vci-holder/src/localization/translations/nl.json | 3 ++- .../oid4vci-holder/src/machines/firstPartyMachine.ts | 3 +-- .../src/agent/DidAuthSiopOpAuthenticator.ts | 2 +- .../src/types/siop-service/index.ts | 9 ++++++--- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/oid4vci-holder/src/localization/translations/en.json b/packages/oid4vci-holder/src/localization/translations/en.json index 267c4a798..668c54415 100644 --- a/packages/oid4vci-holder/src/localization/translations/en.json +++ b/packages/oid4vci-holder/src/localization/translations/en.json @@ -14,5 +14,6 @@ "oid4vci_machine_retrieve_federation_trust_error_title": "Retrieve federation trust", "oid4vci_machine_first_party_error_title": "First party flow", "oid4vci_machine_send_authorization_challenge_request_error_title": "Sending authorization challenge request", - "oid4vci_machine_create_config_error_title": "Creating siopV2 config" + "oid4vci_machine_create_config_error_title": "Creating siopV2 config", + "oid4vci_machine_get_request_error_title": "Getting siopV2 request" } diff --git a/packages/oid4vci-holder/src/localization/translations/nl.json b/packages/oid4vci-holder/src/localization/translations/nl.json index 3260a0d86..587d8ec55 100644 --- a/packages/oid4vci-holder/src/localization/translations/nl.json +++ b/packages/oid4vci-holder/src/localization/translations/nl.json @@ -13,5 +13,6 @@ "oid4vci_machine_retrieve_federation_trust_error_title": "Ophalen federatievertrouwen", "oid4vci_machine_first_party_error_title": "Eerste partijstroom", "oid4vci_machine_send_authorization_challenge_request_error_title": "Versturen autorisatie-uitdaging aanvraag", - "oid4vci_machine_create_config_error_title": "SiopV2-configuratie aanmaken" + "oid4vci_machine_create_config_error_title": "SiopV2-configuratie aanmaken", + "oid4vci_machine_get_request_error_title": "SiopV2-verzoek ophalen" } diff --git a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts index 485b5fb77..32eaa6834 100644 --- a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts +++ b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts @@ -130,7 +130,6 @@ const firstPartyMachineStates: FirstPartyMachineStatesConfig = { src: FirstPartyMachineServices.sendAuthorizationResponse, onDone: { target: FirstPartyMachineStateTypes.sendAuthorizationChallengeRequest, - // TODO do we need to return the vci state? as this should contain the authorization_code? actions: assign({ presentationDuringIssuanceSession: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent) => _event.data, }), @@ -139,7 +138,7 @@ const firstPartyMachineStates: FirstPartyMachineStatesConfig = { target: FirstPartyMachineStateTypes.error, actions: assign({ error: (_ctx: FirstPartyMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ - title: translate('siopV2_machine_get_request_error_title'), // TODO + title: translate('oid4vci_machine_get_request_error_title'), message: _event.data.message, stack: _event.data.stack, }), diff --git a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts index 66f57ab22..639f9a8d5 100644 --- a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts +++ b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts @@ -198,7 +198,7 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { } } - private async siopGetSiopRequest(args: GetSiopRequestArgs, context: RequiredContext): Promise { //GetSiopRequestArgs + private async siopGetSiopRequest(args: GetSiopRequestArgs, context: RequiredContext): Promise { const { agent } = context const { didAuthConfig } = args diff --git a/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts b/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts index 38683f2d8..b83c728a2 100644 --- a/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts +++ b/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts @@ -19,10 +19,12 @@ export type GetMachineArgs = { stateNavigationListener?: (siopv2Machine: Siopv2MachineInterpreter, state: Siopv2MachineState, navigation?: any) => Promise } -export type CreateConfigArgs = { url: string }//Pick // TContext extends { url: string } //Pick // TODO create function args +export type CreateConfigArgs = { url: string } export type CreateConfigResult = Omit -export type GetSiopRequestArgs = { didAuthConfig?: Omit, url: string }//Pick // TODO +export type GetSiopRequestArgs = { didAuthConfig?: Omit, url: string } +// FIXME it would be nicer if these function are not tied to a certain machine so that we can start calling them for anywhere export type RetrieveContactArgs = Pick +// FIXME it would be nicer if these function are not tied to a certain machine so that we can start calling them for anywhere export type AddIdentityArgs = Pick export type SendResponseArgs = { didAuthConfig?: Omit, @@ -30,7 +32,8 @@ export type SendResponseArgs = { selectedCredentials: Array idOpts?: ManagedIdentifierOptsOrResult isFirstParty?: boolean -} //Pick +} +// FIXME it would be nicer if these function are not tied to a certain machine so that we can start calling them for anywhere export type GetSelectableCredentialsArgs = Pick export enum Siopv2HolderEvent { From e6cf6dae08fbf1c281a5cd12b5ad73807bb1c8fe Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 10:05:28 +0100 Subject: [PATCH 07/29] chore: add option to set navigation listener for first party machine --- .../oid4vci-holder/src/agent/OID4VCIHolder.ts | 2 +- .../oid4vci-holder/src/link-handler/index.ts | 17 ++++++++++++----- .../src/services/OID4VCIHolderService.ts | 8 ++++++-- .../src/types/FirstPartyMachine.ts | 4 +++- .../oid4vci-holder/src/types/IOID4VCIHolder.ts | 11 ++++++++--- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts b/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts index 51edf98bc..e3019e63f 100644 --- a/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts +++ b/packages/oid4vci-holder/src/agent/OID4VCIHolder.ts @@ -319,7 +319,7 @@ export class OID4VCIHolder implements IAgentPlugin { }, context, ), - [OID4VCIMachineServices.startFirstPartApplicationFlow]: (args: StartFirstPartApplicationMachine) => startFirstPartApplicationMachine(args, context), + [OID4VCIMachineServices.startFirstPartApplicationFlow]: (args: StartFirstPartApplicationMachine) => startFirstPartApplicationMachine({ ...args, stateNavigationListener: opts.firstPartyStateNavigationListener }, context), [OID4VCIMachineServices.createCredentialsToSelectFrom]: (args: CreateCredentialsToSelectFromArgs) => this.oid4vciHolderCreateCredentialsToSelectFrom(args, context), [OID4VCIMachineServices.getContact]: (args: GetContactArgs) => this.oid4vciHolderGetContact(args, context), [OID4VCIMachineServices.getCredentials]: (args: GetCredentialsArgs) => this.oid4vciHolderGetCredentials({ accessTokenOpts: args.accessTokenOpts ?? opts.accessTokenOpts, ...args }, context), diff --git a/packages/oid4vci-holder/src/link-handler/index.ts b/packages/oid4vci-holder/src/link-handler/index.ts index d08c86d30..6532e8fe7 100644 --- a/packages/oid4vci-holder/src/link-handler/index.ts +++ b/packages/oid4vci-holder/src/link-handler/index.ts @@ -3,23 +3,28 @@ import { AuthorizationRequestOpts, AuthorizationServerClientOpts, AuthzFlowType, import { DefaultLinkPriorities, LinkHandlerAdapter } from '@sphereon/ssi-sdk.core' import { IMachineStatePersistence, interpreterStartOrResume, SerializableState } from '@sphereon/ssi-sdk.xstate-machine-persistence' import { IAgentContext } from '@veramo/core' -import { GetMachineArgs, IOID4VCIHolder, OID4VCIMachineEvents, OID4VCIMachineInterpreter, OID4VCIMachineState } from '../types/IOID4VCIHolder' +import { + GetMachineArgs, + IOID4VCIHolder, + OID4VCIMachineEvents, + OID4VCIMachineStateNavigationListener +} from '../types/IOID4VCIHolder' +import { FirstPartyMachineStateNavigationListener } from '../types/FirstPartyMachine' /** * This handler only handles credential offer links (either by value or by reference) */ export class OID4VCIHolderLinkHandler extends LinkHandlerAdapter { private readonly context: IAgentContext - private readonly stateNavigationListener: - | ((oid4vciMachine: OID4VCIMachineInterpreter, state: OID4VCIMachineState, navigation?: any) => Promise) - | undefined + private readonly stateNavigationListener?: OID4VCIMachineStateNavigationListener + private readonly firstPartyStateNavigationListener?: FirstPartyMachineStateNavigationListener private readonly noStateMachinePersistence: boolean private readonly authorizationRequestOpts?: AuthorizationRequestOpts private readonly clientOpts?: AuthorizationServerClientOpts private readonly trustAnchors?: Array constructor( - args: Pick & { + args: Pick & { priority?: number | DefaultLinkPriorities protocols?: Array noStateMachinePersistence?: boolean @@ -32,6 +37,7 @@ export class OID4VCIHolderLinkHandler extends LinkHandlerAdapter { this.context = args.context this.noStateMachinePersistence = args.noStateMachinePersistence === true this.stateNavigationListener = args.stateNavigationListener + this.firstPartyStateNavigationListener = args.firstPartyStateNavigationListener this.trustAnchors = args.trustAnchors } @@ -63,6 +69,7 @@ export class OID4VCIHolderLinkHandler extends LinkHandlerAdapter { authorizationRequestOpts: { ...this.authorizationRequestOpts, ...opts?.authorizationRequestOpts }, ...((clientOpts.clientId || clientOpts.clientAssertionType) && { clientOpts: clientOpts as AuthorizationServerClientOpts }), stateNavigationListener: this.stateNavigationListener, + firstPartyStateNavigationListener: this.firstPartyStateNavigationListener }) const interpreter = oid4vciMachine.interpreter diff --git a/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts b/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts index bf7b7f27d..bbbf93813 100644 --- a/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts +++ b/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts @@ -622,13 +622,17 @@ export const getIssuanceCryptoSuite = async (opts: GetIssuanceCryptoSuiteArgs): } export const startFirstPartApplicationMachine = async (args: StartFirstPartApplicationMachine, context: RequiredContext): Promise => { - const { openID4VCIClientState } = args + const { openID4VCIClientState, stateNavigationListener } = args if (!openID4VCIClientState) { return Promise.reject(Error('Missing openID4VCI client state in context')) } - const firstPartyMachineInstance = FirstPartyMachine.newInstance({ openID4VCIClientState, agentContext: context }); + const firstPartyMachineInstance = FirstPartyMachine.newInstance({ + openID4VCIClientState, + agentContext: context, + stateNavigationListener + }); return new Promise((resolve, reject) => { try { diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts index 4ddf35c86..4102f65a5 100644 --- a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -106,12 +106,14 @@ export type FirstPartyMachineInterpreter = Interpreter< any >; +export type FirstPartyMachineStateNavigationListener = (firstPartyMachine: FirstPartyMachineInterpreter, state: FirstPartyMachineState, navigation?: any) => Promise + export type InstanceFirstPartyMachineOpts = { services?: any; guards?: any; subscription?: () => void; requireCustomNavigationHook?: boolean; - stateNavigationListener?: (firstPartyMachine: FirstPartyMachineInterpreter, state: FirstPartyMachineState, navigation?: any) => Promise + stateNavigationListener?: FirstPartyMachineStateNavigationListener } & CreateFirstPartyMachineOpts; export type FirstPartyMachineState = State< diff --git a/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts b/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts index 3fc69afdb..eb5d664c8 100644 --- a/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts +++ b/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts @@ -64,6 +64,7 @@ import { VerificationPolicies, } from '@veramo/core' import { BaseActionObject, Interpreter, ResolveTypegenMeta, ServiceMap, State, StateMachine, TypegenDisabled } from 'xstate' +import { FirstPartyMachineStateNavigationListener } from './FirstPartyMachine' export interface IOID4VCIHolder extends IPluginMethodMap { oid4vciHolderGetIssuerMetadata(args: GetIssuerMetadataArgs, context: RequiredContext): Promise @@ -138,7 +139,8 @@ export type GetMachineArgs = { clientOpts?: AuthorizationServerClientOpts didMethodPreferences?: Array issuanceOpt?: Partial - stateNavigationListener?: (oid4vciMachine: OID4VCIMachineInterpreter, state: OID4VCIMachineState, navigation?: any) => Promise + stateNavigationListener?: OID4VCIMachineStateNavigationListener + firstPartyStateNavigationListener?: FirstPartyMachineStateNavigationListener } export type PrepareStartArgs = Pick< @@ -171,7 +173,7 @@ export type SendNotificationArgs = Pick< 'credentialsToAccept' | 'serverMetadata' | 'credentialsSupported' | 'openID4VCIClientState' > & { notificationRequest?: NotificationRequest; stored: boolean } export type GetFederationTrustArgs = Pick -export type StartFirstPartApplicationMachine = Pick +export type StartFirstPartApplicationMachine = Pick & { stateNavigationListener?: FirstPartyMachineStateNavigationListener } export enum OID4VCIHolderEvent { CONTACT_IDENTITY_CREATED = 'contact_identity_created', @@ -317,6 +319,8 @@ export type CreateOID4VCIMachineOpts = { issuanceOpt?: IssuanceOpts } +export type OID4VCIMachineStateNavigationListener = (oid4vciMachine: OID4VCIMachineInterpreter, state: OID4VCIMachineState, navigation?: any) => Promise + export type OID4VCIMachineInstanceOpts = { services?: any guards?: any @@ -325,7 +329,8 @@ export type OID4VCIMachineInstanceOpts = { authorizationRequestOpts?: AuthorizationRequestOpts didMethodPreferences?: Array issuanceOpt?: IssuanceOpts // restrict the issuance to these opts - stateNavigationListener?: (oid4vciMachine: OID4VCIMachineInterpreter, state: OID4VCIMachineState, navigation?: any) => Promise + stateNavigationListener?: OID4VCIMachineStateNavigationListener + firstPartyStateNavigationListener?: FirstPartyMachineStateNavigationListener } & CreateOID4VCIMachineOpts export type OID4VCIProviderProps = { From b2ac54c7f7e839392caa28a5ec983222c2027768 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 11:36:54 +0100 Subject: [PATCH 08/29] chore: for first party flow use presentation id from issuer options --- packages/ebsi-support/package.json | 8 +- packages/mdl-mdoc/package.json | 6 +- packages/oid4vci-holder/package.json | 8 +- packages/oid4vci-issuer-rest-api/package.json | 6 +- .../src/OID4VCIRestAPI.ts | 12 +- .../oid4vci-issuer-rest-client/package.json | 2 +- packages/oid4vci-issuer-store/package.json | 2 +- packages/oid4vci-issuer/package.json | 6 +- packages/oid4vci-issuer/src/functions.ts | 12 +- .../src/types/IOID4VCIIssuer.ts | 6 + packages/siopv2-oid4vp-common/package.json | 2 +- packages/siopv2-oid4vp-op-auth/package.json | 6 +- packages/siopv2-oid4vp-rp-auth/package.json | 6 +- .../siopv2-oid4vp-rp-rest-api/package.json | 2 +- packages/w3c-vc-api/package.json | 2 +- pnpm-lock.yaml | 186 +++++++++--------- 16 files changed, 143 insertions(+), 129 deletions(-) diff --git a/packages/ebsi-support/package.json b/packages/ebsi-support/package.json index 485b33595..7fb8674a5 100644 --- a/packages/ebsi-support/package.json +++ b/packages/ebsi-support/package.json @@ -15,8 +15,8 @@ }, "dependencies": { "@ethersproject/random": "^5.7.0", - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.256", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-resolver-ebsi": "0.27.0", @@ -44,8 +44,8 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/mdl-mdoc/package.json b/packages/mdl-mdoc/package.json index 0ebb73fd7..dcdd15297 100644 --- a/packages/mdl-mdoc/package.json +++ b/packages/mdl-mdoc/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", @@ -35,8 +35,8 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/oid4vci-holder/package.json b/packages/oid4vci-holder/package.json index abda42509..48dad1e6b 100644 --- a/packages/oid4vci-holder/package.json +++ b/packages/oid4vci-holder/package.json @@ -15,9 +15,9 @@ }, "dependencies": { "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk-ext.jwt-service": "0.27.0", @@ -45,7 +45,7 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-sdk.siopv2-oid4vp-common": "workspace:*", "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.27.0", "@types/i18n-js": "^3.8.9", diff --git a/packages/oid4vci-issuer-rest-api/package.json b/packages/oid4vci-issuer-rest-api/package.json index 694c62f56..30d0c23c4 100644 --- a/packages/oid4vci-issuer-rest-api/package.json +++ b/packages/oid4vci-issuer-rest-api/package.json @@ -11,9 +11,9 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vci-issuer-server": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-issuer-server": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer-rest-api/src/OID4VCIRestAPI.ts b/packages/oid4vci-issuer-rest-api/src/OID4VCIRestAPI.ts index e4aa89842..fd355d789 100644 --- a/packages/oid4vci-issuer-rest-api/src/OID4VCIRestAPI.ts +++ b/packages/oid4vci-issuer-rest-api/src/OID4VCIRestAPI.ts @@ -7,7 +7,7 @@ import { getAccessTokenSignerCallback, IIssuerInstanceArgs, IssuerInstance, - verifyAuthResponseCallback + createVerifyAuthResponseCallback } from '@sphereon/ssi-sdk.oid4vci-issuer' import { DIDDocument } from 'did-resolver' import { Express } from 'express' @@ -64,6 +64,12 @@ export class OID4VCIRestAPI { } if (opts?.endpointOpts.authorizationChallengeOpts?.enabled === true) { + if (!instance.issuerOptions.presentationDefinitionId) { + throw Error( + `Unable to set createAuthRequestUriCallback. No presentationDefinitionId present in issuer options`, + ) + } + if (typeof opts?.endpointOpts.authorizationChallengeOpts.createAuthRequestUriCallback !== 'function') { if (!opts.endpointOpts.authorizationChallengeOpts?.createAuthRequestUriEndpointPath) { throw Error( @@ -74,6 +80,7 @@ export class OID4VCIRestAPI { opts.endpointOpts.authorizationChallengeOpts.createAuthRequestUriCallback = await createAuthRequestUriCallback( { path: opts.endpointOpts.authorizationChallengeOpts.createAuthRequestUriEndpointPath, + presentationDefinitionId: instance.issuerOptions.presentationDefinitionId } ) } @@ -85,9 +92,10 @@ export class OID4VCIRestAPI { ) } - opts.endpointOpts.authorizationChallengeOpts.verifyAuthResponseCallback = await verifyAuthResponseCallback( + opts.endpointOpts.authorizationChallengeOpts.verifyAuthResponseCallback = await createVerifyAuthResponseCallback( { path: opts.endpointOpts.authorizationChallengeOpts.verifyAuthResponseEndpointPath, + presentationDefinitionId: instance.issuerOptions.presentationDefinitionId } ) } diff --git a/packages/oid4vci-issuer-rest-client/package.json b/packages/oid4vci-issuer-rest-client/package.json index b68f9e1d6..ab1c56993 100644 --- a/packages/oid4vci-issuer-rest-client/package.json +++ b/packages/oid4vci-issuer-rest-client/package.json @@ -16,7 +16,7 @@ "generate-plugin-schema": "ts-node ../../packages/dev/bin/sphereon.js dev generate-plugin-schema" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-types": "workspace:*", "@veramo/core": "4.2.0", "cross-fetch": "^3.1.8" diff --git a/packages/oid4vci-issuer-store/package.json b/packages/oid4vci-issuer-store/package.json index 22be26de2..087fa9952 100644 --- a/packages/oid4vci-issuer-store/package.json +++ b/packages/oid4vci-issuer-store/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer/package.json b/packages/oid4vci-issuer/package.json index 0a04bfb4d..de623a1c5 100644 --- a/packages/oid4vci-issuer/package.json +++ b/packages/oid4vci-issuer/package.json @@ -14,8 +14,8 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.255", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.agent-config": "workspace:*", @@ -35,7 +35,7 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", "@sphereon/did-uni-client": "^0.6.3", "@veramo/did-provider-key": "4.2.0", "@veramo/did-resolver": "4.2.0", diff --git a/packages/oid4vci-issuer/src/functions.ts b/packages/oid4vci-issuer/src/functions.ts index 4934ab186..b727e75dd 100644 --- a/packages/oid4vci-issuer/src/functions.ts +++ b/packages/oid4vci-issuer/src/functions.ts @@ -326,9 +326,9 @@ export async function createVciIssuer( ).build() } -export async function createAuthRequestUriCallback(opts: { path: string }): Promise<(presentationDefinitionId: string) => Promise> { - async function authRequestUriCallback(presentationDefinitionId: string): Promise { - const path = opts.path.replace(':definitionId', presentationDefinitionId) +export async function createAuthRequestUriCallback(opts: { path: string, presentationDefinitionId: string }): Promise<(presentationDefinitionId: string) => Promise> { + async function authRequestUriCallback(): Promise { + const path = opts.path.replace(':definitionId', opts.presentationDefinitionId) return fetch(path, { method: 'POST', headers: { @@ -354,14 +354,14 @@ export async function createAuthRequestUriCallback(opts: { path: string }): Prom return authRequestUriCallback } -export async function verifyAuthResponseCallback(opts: { path: string }): Promise<(presentationDefinitionId: string, correlationId: string) => Promise> { - async function verifyAuthResponseCallback(presentationDefinitionId: string, correlationId: string): Promise { +export async function createVerifyAuthResponseCallback(opts: { path: string, presentationDefinitionId: string }): Promise<(presentationDefinitionId: string, correlationId: string) => Promise> { + async function verifyAuthResponseCallback(correlationId: string): Promise { return fetch(opts.path, { method: 'POST', headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify({ definitionId: presentationDefinitionId, correlationId }), + body: JSON.stringify({ definitionId: opts.presentationDefinitionId, correlationId }), }) .then(async (response): Promise => { if (response.status >= 400) { diff --git a/packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts b/packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts index 84bd75148..8f79f3659 100644 --- a/packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts +++ b/packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts @@ -82,6 +82,12 @@ export interface IIssuerOptions { didOpts?: IDIDOptions userPinRequired?: boolean cNonceExpiresIn?: number + + /** + * Used in the callbacks for the first party flow + */ + // FIXME we need to start supporting a map with a definition id per credential, we can use the credential offer session to check which credential is being issued and then look it up in this map + presentationDefinitionId?: string } export interface IMetadataOptions { diff --git a/packages/siopv2-oid4vp-common/package.json b/packages/siopv2-oid4vp-common/package.json index db0e14b46..4fd0d85d6 100644 --- a/packages/siopv2-oid4vp-common/package.json +++ b/packages/siopv2-oid4vp-common/package.json @@ -12,7 +12,7 @@ "access": "public" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-types": "workspace:*", "uint8arrays": "3.1.1" diff --git a/packages/siopv2-oid4vp-op-auth/package.json b/packages/siopv2-oid4vp-op-auth/package.json index fa219290e..294c7b168 100644 --- a/packages/siopv2-oid4vp-op-auth/package.json +++ b/packages/siopv2-oid4vp-op-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.256", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", diff --git a/packages/siopv2-oid4vp-rp-auth/package.json b/packages/siopv2-oid4vp-rp-auth/package.json index 7da3330a5..aacd426f9 100644 --- a/packages/siopv2-oid4vp-rp-auth/package.json +++ b/packages/siopv2-oid4vp-rp-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.255", - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.256", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", diff --git a/packages/siopv2-oid4vp-rp-rest-api/package.json b/packages/siopv2-oid4vp-rp-rest-api/package.json index af1484ea9..3ed9dff9e 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/package.json +++ b/packages/siopv2-oid4vp-rp-rest-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-sdk.credential-validation": "workspace:*", diff --git a/packages/w3c-vc-api/package.json b/packages/w3c-vc-api/package.json index 8123f4443..b3f014ddf 100644 --- a/packages/w3c-vc-api/package.json +++ b/packages/w3c-vc-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/agent.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.255", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.agent-config": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6fec37130..7d9e8e605 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -615,11 +615,11 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -697,11 +697,11 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -914,8 +914,8 @@ importers: packages/mdl-mdoc: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 @@ -972,11 +972,11 @@ importers: version: 9.0.1 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1145,17 +1145,17 @@ importers: packages/oid4vci-holder: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1233,8 +1233,8 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255 + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256 '@sphereon/ssi-sdk-ext.did-resolver-jwk': specifier: 0.27.0 version: 0.27.0 @@ -1269,11 +1269,11 @@ importers: packages/oid4vci-issuer: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1327,8 +1327,8 @@ importers: version: 9.0.1 devDependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': specifier: ^0.6.3 version: 0.6.3(encoding@0.1.13) @@ -1351,14 +1351,14 @@ importers: packages/oid4vci-issuer-rest-api: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/oid4vci-issuer-server': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1517,8 +1517,8 @@ importers: packages/oid4vci-issuer-rest-client: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/ssi-types': specifier: workspace:* version: link:../ssi-types @@ -1554,8 +1554,8 @@ importers: packages/oid4vci-issuer-store: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -2252,8 +2252,8 @@ importers: packages/siopv2-oid4vp-common: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-sdk.core': specifier: workspace:* version: link:../ssi-sdk-core @@ -2274,14 +2274,14 @@ importers: packages/siopv2-oid4vp-op-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255 + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2407,14 +2407,14 @@ importers: packages/siopv2-oid4vp-rp-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255 + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2495,8 +2495,8 @@ importers: packages/siopv2-oid4vp-rp-rest-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -3604,8 +3604,8 @@ importers: packages/w3c-vc-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.255 - version: 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.256 + version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -6013,12 +6013,12 @@ packages: '@sinonjs/fake-timers@8.1.0': resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.255': - resolution: {integrity: sha512-XrqaSutoZbYJ3mNrjM+ccvcn9Gtf6k6WACyhg5nEC5pZVsVlnSUnvNbaK6R402SZOhhLFvMMd84jO+J8d8g+UQ==} + '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.256': + resolution: {integrity: sha512-3ab5t3C5JVT7VhjlfQ7r/BeYbGgrk5pJ2OeaIFb6yqIx7CdKeUMqgxREwWSr+E2Ik5wWFNSGHAOUguOeC0Aozw==} engines: {node: '>=18'} - '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.255': - resolution: {integrity: sha512-pflZA3/fFye56XZ2YQ+dmi3fflhkL4QdCOe1taQ6hABiCV8/3mWOCn/JptQe9n3PH1FeyiaJkCeSRsUVRRShTw==} + '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.256': + resolution: {integrity: sha512-3/GAIozC4eicgyr/ITRdW2HcCQHRoQiSf+5VthMdGXH2IGtjMCWH+JTshXv8gfp5ScTODcIvqsIy7v6H/bajnQ==} engines: {node: '>=18'} '@sphereon/did-provider-oyd@0.27.0': @@ -6041,8 +6041,8 @@ packages: '@sphereon/react-native-argon2': ^2.0.9 react-native: '>=0.60.0' - '@sphereon/jarm@0.16.1-feature.SPRIND.89.255': - resolution: {integrity: sha512-nb0L/F6tf8HDoCmwjORpofDzcvQO/5IsXW20CKF89nj+jI5kb+jxOj3n3KDSwRldLOc85RMeQtDvX0ss8srbRg==} + '@sphereon/jarm@0.16.1-feature.SPRIND.89.256': + resolution: {integrity: sha512-cVFcfsllYm0CCMgn0sA72b1mqAhd4dzYYCnKYPTJlSKsv0I/WkBPly7tDSOpJ7TXh1j5Xe3DVrHCZ0PAGM3b2Q==} engines: {node: '>=18'} '@sphereon/kmp-mdoc-core@0.2.0-SNAPSHOT.26': @@ -6052,20 +6052,20 @@ packages: '@sphereon/lto-did-ts@0.1.8-unstable.0': resolution: {integrity: sha512-3jzwwuYX/VYuze+T9/yg4PcsJ5iNNwAfTp4WfS4aSfPFBErDAfKXqn6kOb0wFYGkhejr3Jz+rljPC2iKZiHiGA==} - '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.255': - resolution: {integrity: sha512-lrixDkmRGFa17Bo/1dGifnypK8QMZLF/XhJfJ4mt8AHgdg2YRmhYCXfnpnlq9FBH7OxT/X3/eCTuaH38nddlfA==} + '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.256': + resolution: {integrity: sha512-PED+OnPUW+pqjleKUPesMqJhHKWTiyFvDIfXctVC8b2zpIxe5tLfPdDz6Q/SyjM2j1K/9J3/xS8W7JjXYmRvMg==} engines: {node: '>=18'} - '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.255': - resolution: {integrity: sha512-9+qsHNwiI7OFVqSC3d1BKEDcAjdlOq5N9xtM0D8Sq0vutbnzFI4vgUwkLKovHeCIMMMYXg9yTy0jlO/aWvkbUA==} + '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.256': + resolution: {integrity: sha512-nT7lwc2WpdmUmuNAynPk4y1wki8KOp0ky84Vo7xBzsv7dnj5UaXaenDW/yIw0Ft0FYSCrFWM0fmzCwq65nhoiQ==} engines: {node: '>=18'} - '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.255': - resolution: {integrity: sha512-c6CqbP3T0lZ8bekUpcosGFBvF9QZ3Abdmw0jxBIExiTetH8LqeZOKegGnnRKhnZTe9rkYe5e//Q5lzLskpWwdg==} + '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.256': + resolution: {integrity: sha512-rGxn7eKo+OJmwO+0YKYF3MYE56J41tar4Bz768rCnN4EqS3RD37vA+PkWDywi7SuVQToQcvCRZVen/WAiKOCMg==} engines: {node: '>=18'} - '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.255': - resolution: {integrity: sha512-tgWvV+v8obtXPVSlsyvnH3qZ60oKJ9lXqaCN4vqjCrhpHvh+Vr2Wd5ZkJJdP+nw95pg/moZ4fHI+HL5uV7+0tg==} + '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.256': + resolution: {integrity: sha512-edt+QYom49imWVdzvQCPJykBuV8qXtJeLB1rZbKHGVMUDrM1PRkUZ/MrQw14Z7qnS5D1j+wGHUHVs/Wl0DHTrA==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -6073,8 +6073,8 @@ packages: awesome-qr: optional: true - '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.255': - resolution: {integrity: sha512-Mt53MXifrshAmkE0fCvJCbGckF/cSa6j37sVXYmdg21m+Yq0i/NLVTOnq+KwnmtgOpasQZCvqn5Y4l8rjCIqBQ==} + '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.256': + resolution: {integrity: sha512-NnM2JEePzgVueIOoqU/GWt2gGiXHS1QistYXV3lTTc+KQ1KV4DRGrKYErCCWSdYcjyqEPepIo42joxVWdon5fQ==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -16990,11 +16990,11 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3)': dependencies: - '@sphereon/did-auth-siop': 0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3) + '@sphereon/did-auth-siop': 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': 0.6.3(encoding@0.1.13) - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 '@sphereon/wellknown-dids-client': 0.1.3(encoding@0.1.13) did-jwt: 6.11.6(patch_hash=afqywxnnjnsy6hwgax66dyyiey) did-resolver: 4.1.0 @@ -17003,11 +17003,11 @@ snapshots: - supports-color - typescript - '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.255(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@sphereon/jarm': 0.16.1-feature.SPRIND.89.255(typescript@5.6.3) - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 + '@sphereon/jarm': 0.16.1-feature.SPRIND.89.256(typescript@5.6.3) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 '@sphereon/pex': 5.0.0-unstable.28 '@sphereon/pex-models': 2.3.2 '@sphereon/ssi-types': link:packages/ssi-types @@ -17068,9 +17068,9 @@ snapshots: react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1) uint8arrays: 3.1.1 - '@sphereon/jarm@0.16.1-feature.SPRIND.89.255(typescript@5.6.3)': + '@sphereon/jarm@0.16.1-feature.SPRIND.89.256(typescript@5.6.3)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 valibot: 0.42.1(typescript@5.6.3) transitivePeerDependencies: - typescript @@ -17094,7 +17094,7 @@ snapshots: - encoding - typescript - '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.255': + '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.256': dependencies: '@sphereon/ssi-types': link:packages/ssi-types jwt-decode: 4.0.0 @@ -17102,10 +17102,10 @@ snapshots: uint8arrays: 3.1.1 uuid: 9.0.1 - '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.255(encoding@0.1.13)': + '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.256(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17113,9 +17113,9 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.255(encoding@0.1.13)': + '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.256(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17126,11 +17126,11 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.255(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': + '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.256(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) - '@sphereon/oid4vci-issuer': 0.16.1-feature.SPRIND.89.255(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + '@sphereon/oid4vci-issuer': 0.16.1-feature.SPRIND.89.256(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-express-support': 0.30.2-feature.mdoc.funke2.367(@noble/hashes@1.6.1)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-types': link:packages/ssi-types body-parser: 1.20.3 @@ -17149,10 +17149,10 @@ snapshots: - passport-http-bearer - supports-color - '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.255(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': + '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.256(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.255 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.255(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types uuid: 9.0.1 optionalDependencies: From 80d4b220530c46e8ca74544531360a14545638bb Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 11:45:18 +0100 Subject: [PATCH 09/29] chore: fixes --- packages/oid4vci-issuer/src/functions.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oid4vci-issuer/src/functions.ts b/packages/oid4vci-issuer/src/functions.ts index b727e75dd..e2ddfcbef 100644 --- a/packages/oid4vci-issuer/src/functions.ts +++ b/packages/oid4vci-issuer/src/functions.ts @@ -326,7 +326,7 @@ export async function createVciIssuer( ).build() } -export async function createAuthRequestUriCallback(opts: { path: string, presentationDefinitionId: string }): Promise<(presentationDefinitionId: string) => Promise> { +export async function createAuthRequestUriCallback(opts: { path: string, presentationDefinitionId: string }): Promise<() => Promise> { async function authRequestUriCallback(): Promise { const path = opts.path.replace(':definitionId', opts.presentationDefinitionId) return fetch(path, { @@ -354,7 +354,7 @@ export async function createAuthRequestUriCallback(opts: { path: string, present return authRequestUriCallback } -export async function createVerifyAuthResponseCallback(opts: { path: string, presentationDefinitionId: string }): Promise<(presentationDefinitionId: string, correlationId: string) => Promise> { +export async function createVerifyAuthResponseCallback(opts: { path: string, presentationDefinitionId: string }): Promise<(correlationId: string) => Promise> { async function verifyAuthResponseCallback(correlationId: string): Promise { return fetch(opts.path, { method: 'POST', From f5b162f3b2ec3dd27b270b8255b51d5d052a3c2c Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 12:51:00 +0100 Subject: [PATCH 10/29] chore: added contact to first party machine context --- packages/oid4vci-holder/src/machines/firstPartyMachine.ts | 1 + packages/oid4vci-holder/src/types/FirstPartyMachine.ts | 4 +++- packages/oid4vci-holder/src/types/IOID4VCIHolder.ts | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts index 32eaa6834..bae846237 100644 --- a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts +++ b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts @@ -167,6 +167,7 @@ const firstPartyMachineStates: FirstPartyMachineStatesConfig = { const createFirstPartyActivationMachine = (opts: CreateFirstPartyMachineOpts): FirstPartyStateMachine => { const initialContext: FirstPartyMachineContext = { openID4VCIClientState: opts.openID4VCIClientState, + contact: opts.contact, selectedCredentials: [], }; diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts index 4102f65a5..eddff6656 100644 --- a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -8,7 +8,7 @@ import { TypegenDisabled } from 'xstate' import { OpenID4VCIClientState } from '@sphereon/oid4vci-client' -import { DidAuthConfig } from '@sphereon/ssi-sdk.data-store' +import { DidAuthConfig, Party } from '@sphereon/ssi-sdk.data-store' import { PresentationDefinitionWithLocation, RPRegistrationMetadataPayload @@ -42,6 +42,7 @@ export type FirstPartyMachineStates = Record; export type FirstPartyMachineContext = { openID4VCIClientState: OpenID4VCIClientState selectedCredentials: Array + contact: Party authSession?: string presentationUri?: string identifier?: IIdentifier @@ -78,6 +79,7 @@ export type FirstPartyMachineStatesConfig = StatesConfig< export type CreateFirstPartyMachineOpts = { openID4VCIClientState: OpenID4VCIClientState + contact: Party agentContext: RequiredContext machineId?: string; }; diff --git a/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts b/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts index eb5d664c8..06b6ef1d2 100644 --- a/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts +++ b/packages/oid4vci-holder/src/types/IOID4VCIHolder.ts @@ -173,7 +173,7 @@ export type SendNotificationArgs = Pick< 'credentialsToAccept' | 'serverMetadata' | 'credentialsSupported' | 'openID4VCIClientState' > & { notificationRequest?: NotificationRequest; stored: boolean } export type GetFederationTrustArgs = Pick -export type StartFirstPartApplicationMachine = Pick & { stateNavigationListener?: FirstPartyMachineStateNavigationListener } +export type StartFirstPartApplicationMachine = Pick & { stateNavigationListener?: FirstPartyMachineStateNavigationListener } export enum OID4VCIHolderEvent { CONTACT_IDENTITY_CREATED = 'contact_identity_created', From 110209f61afef68b8a74e106a08ad3dfc213f515 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 12:54:56 +0100 Subject: [PATCH 11/29] chore: instance fix --- .../oid4vci-holder/src/services/OID4VCIHolderService.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts b/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts index bbbf93813..13c1fc901 100644 --- a/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts +++ b/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts @@ -622,14 +622,19 @@ export const getIssuanceCryptoSuite = async (opts: GetIssuanceCryptoSuiteArgs): } export const startFirstPartApplicationMachine = async (args: StartFirstPartApplicationMachine, context: RequiredContext): Promise => { - const { openID4VCIClientState, stateNavigationListener } = args + const { openID4VCIClientState, stateNavigationListener, contact } = args if (!openID4VCIClientState) { return Promise.reject(Error('Missing openID4VCI client state in context')) } + if (!contact) { + return Promise.reject(Error('Missing contact in context')) + } + const firstPartyMachineInstance = FirstPartyMachine.newInstance({ openID4VCIClientState, + contact, agentContext: context, stateNavigationListener }); From aacd184685d0fa7a26b68c9809dd6c8bd051c466 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 13:21:02 +0100 Subject: [PATCH 12/29] chore: added select credentials event --- .../oid4vci-holder/src/machines/firstPartyMachine.ts | 6 +++++- packages/oid4vci-holder/src/types/FirstPartyMachine.ts | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts index bae846237..af9b09aa7 100644 --- a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts +++ b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts @@ -30,7 +30,8 @@ import { GetSiopRequestArgs, InstanceFirstPartyMachineOpts, SiopV2AuthorizationRequestData, - SendAuthorizationResponseArgs + SendAuthorizationResponseArgs, + SelectCredentialsEvent } from '../types/FirstPartyMachine' const firstPartyMachineStates: FirstPartyMachineStatesConfig = { @@ -113,6 +114,9 @@ const firstPartyMachineStates: FirstPartyMachineStatesConfig = { [FirstPartyMachineStateTypes.selectCredentials]: { id: FirstPartyMachineStateTypes.selectCredentials, on: { + [FirstPartyMachineEvents.SET_SELECTED_CREDENTIALS]: { + actions: assign({selectedCredentials: (_ctx: FirstPartyMachineContext, _event: SelectCredentialsEvent) => _event.data}), + }, [FirstPartyMachineEvents.NEXT]: { target: FirstPartyMachineStateTypes.sendAuthorizationResponse, }, diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts index eddff6656..50c58c0c0 100644 --- a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -56,17 +56,23 @@ export type FirstPartyMachineContext = { export enum FirstPartyMachineEvents { NEXT = 'NEXT', PREVIOUS = 'PREVIOUS', - DECLINE = 'DECLINE' // TODO not sure if we need this, will correct this after implementing the UI + DECLINE = 'DECLINE', + SET_SELECTED_CREDENTIALS = 'SET_SELECTED_CREDENTIALS' } export type NextEvent = {type: FirstPartyMachineEvents.NEXT}; export type PreviousEvent = {type: FirstPartyMachineEvents.PREVIOUS}; export type DeclineEvent = {type: FirstPartyMachineEvents.DECLINE}; +export type SelectCredentialsEvent = { + type: FirstPartyMachineEvents.SET_SELECTED_CREDENTIALS; + data: Array; +}; export type FirstPartyMachineEventTypes = NextEvent | PreviousEvent | - DeclineEvent + DeclineEvent | + SelectCredentialsEvent export type FirstPartyMachineStatesConfig = StatesConfig< FirstPartyMachineContext, From cd879d7a189ea1812d23aa1ddf8dcfcbc5b43636 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 13:44:29 +0100 Subject: [PATCH 13/29] chore: added first party machine navigation type --- packages/oid4vci-holder/src/types/FirstPartyMachine.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts index 50c58c0c0..db360df68 100644 --- a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -159,3 +159,11 @@ export type SiopV2AuthorizationRequestData = { entityId?: string; presentationDefinitions?: PresentationDefinitionWithLocation[]; }; + +export type FirstPartyMachineNavigationArgs = { + oid4vciMachine: FirstPartyMachineInterpreter + state: FirstPartyMachineState + navigation: any + onNext?: () => void + onBack?: () => void +} From af5d5c8a193be9fb63f1d2c431a018f276f474fe Mon Sep 17 00:00:00 2001 From: sanderPostma Date: Fri, 17 Jan 2025 14:12:24 +0100 Subject: [PATCH 14/29] chore: added endpointOpts & presentationDefinitionId --- packages/ebsi-support/package.json | 8 +- packages/mdl-mdoc/package.json | 6 +- packages/oid4vci-holder/package.json | 8 +- packages/oid4vci-issuer-rest-api/package.json | 6 +- .../oid4vci-issuer-rest-client/package.json | 2 +- packages/oid4vci-issuer-store/package.json | 2 +- .../src/types/IOID4VCIStore.ts | 7 + packages/oid4vci-issuer/package.json | 6 +- packages/siopv2-oid4vp-common/package.json | 2 +- packages/siopv2-oid4vp-op-auth/package.json | 6 +- packages/siopv2-oid4vp-rp-auth/package.json | 6 +- .../siopv2-oid4vp-rp-rest-api/package.json | 2 +- packages/w3c-vc-api/package.json | 2 +- pnpm-lock.yaml | 186 +++++++++--------- 14 files changed, 128 insertions(+), 121 deletions(-) diff --git a/packages/ebsi-support/package.json b/packages/ebsi-support/package.json index 7fb8674a5..5be0fe36c 100644 --- a/packages/ebsi-support/package.json +++ b/packages/ebsi-support/package.json @@ -15,8 +15,8 @@ }, "dependencies": { "@ethersproject/random": "^5.7.0", - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.257", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-resolver-ebsi": "0.27.0", @@ -44,8 +44,8 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/mdl-mdoc/package.json b/packages/mdl-mdoc/package.json index dcdd15297..f3479d6ac 100644 --- a/packages/mdl-mdoc/package.json +++ b/packages/mdl-mdoc/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", @@ -35,8 +35,8 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/oid4vci-holder/package.json b/packages/oid4vci-holder/package.json index 48dad1e6b..e81cb6eae 100644 --- a/packages/oid4vci-holder/package.json +++ b/packages/oid4vci-holder/package.json @@ -15,9 +15,9 @@ }, "dependencies": { "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk-ext.jwt-service": "0.27.0", @@ -45,7 +45,7 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-sdk.siopv2-oid4vp-common": "workspace:*", "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.27.0", "@types/i18n-js": "^3.8.9", diff --git a/packages/oid4vci-issuer-rest-api/package.json b/packages/oid4vci-issuer-rest-api/package.json index 30d0c23c4..b73ad7e3e 100644 --- a/packages/oid4vci-issuer-rest-api/package.json +++ b/packages/oid4vci-issuer-rest-api/package.json @@ -11,9 +11,9 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vci-issuer-server": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-issuer-server": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer-rest-client/package.json b/packages/oid4vci-issuer-rest-client/package.json index ab1c56993..ea3f4bb2a 100644 --- a/packages/oid4vci-issuer-rest-client/package.json +++ b/packages/oid4vci-issuer-rest-client/package.json @@ -16,7 +16,7 @@ "generate-plugin-schema": "ts-node ../../packages/dev/bin/sphereon.js dev generate-plugin-schema" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-types": "workspace:*", "@veramo/core": "4.2.0", "cross-fetch": "^3.1.8" diff --git a/packages/oid4vci-issuer-store/package.json b/packages/oid4vci-issuer-store/package.json index 087fa9952..1bff5aeb9 100644 --- a/packages/oid4vci-issuer-store/package.json +++ b/packages/oid4vci-issuer-store/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts b/packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts index 892b4848d..2b6614109 100644 --- a/packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts +++ b/packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts @@ -65,6 +65,12 @@ export interface IIssuerOptions { didOpts?: IDIDOptions userPinRequired?: boolean cNonceExpiresIn?: number + + /** + * Used in the callbacks for the first party flow + */ + // FIXME we need to start supporting a map with a definition id per credential, we can use the credential offer session to check which credential is being issued and then look it up in this map + presentationDefinitionId?: string } export interface IMetadataOptions { @@ -102,6 +108,7 @@ export interface IMetadataPersistArgs extends Ioid4vciStorePersistArgs, IMetadat export interface IIssuerOptsPersistArgs extends Ioid4vciStorePersistArgs { issuerOpts: IIssuerOptions + endpointOpts: unknown // FIXME these types are all in OID4VC all over the place } export interface Ioid4vciStorePersistArgs { correlationId: string // The credential Issuer to store the metadata for diff --git a/packages/oid4vci-issuer/package.json b/packages/oid4vci-issuer/package.json index de623a1c5..512aa0922 100644 --- a/packages/oid4vci-issuer/package.json +++ b/packages/oid4vci-issuer/package.json @@ -14,8 +14,8 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.256", + "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.agent-config": "workspace:*", @@ -35,7 +35,7 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", "@sphereon/did-uni-client": "^0.6.3", "@veramo/did-provider-key": "4.2.0", "@veramo/did-resolver": "4.2.0", diff --git a/packages/siopv2-oid4vp-common/package.json b/packages/siopv2-oid4vp-common/package.json index 4fd0d85d6..e10ecd273 100644 --- a/packages/siopv2-oid4vp-common/package.json +++ b/packages/siopv2-oid4vp-common/package.json @@ -12,7 +12,7 @@ "access": "public" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-types": "workspace:*", "uint8arrays": "3.1.1" diff --git a/packages/siopv2-oid4vp-op-auth/package.json b/packages/siopv2-oid4vp-op-auth/package.json index 294c7b168..efd355a2c 100644 --- a/packages/siopv2-oid4vp-op-auth/package.json +++ b/packages/siopv2-oid4vp-op-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.257", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", diff --git a/packages/siopv2-oid4vp-rp-auth/package.json b/packages/siopv2-oid4vp-rp-auth/package.json index aacd426f9..6c39c0b1f 100644 --- a/packages/siopv2-oid4vp-rp-auth/package.json +++ b/packages/siopv2-oid4vp-rp-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.256", - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.257", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", diff --git a/packages/siopv2-oid4vp-rp-rest-api/package.json b/packages/siopv2-oid4vp-rp-rest-api/package.json index 3ed9dff9e..fb900029c 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/package.json +++ b/packages/siopv2-oid4vp-rp-rest-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-sdk.credential-validation": "workspace:*", diff --git a/packages/w3c-vc-api/package.json b/packages/w3c-vc-api/package.json index b3f014ddf..e1b48bad4 100644 --- a/packages/w3c-vc-api/package.json +++ b/packages/w3c-vc-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/agent.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.256", + "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.agent-config": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d9e8e605..1b0ec82cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -615,11 +615,11 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -697,11 +697,11 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -914,8 +914,8 @@ importers: packages/mdl-mdoc: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 @@ -972,11 +972,11 @@ importers: version: 9.0.1 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1145,17 +1145,17 @@ importers: packages/oid4vci-holder: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1233,8 +1233,8 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256 + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257 '@sphereon/ssi-sdk-ext.did-resolver-jwk': specifier: 0.27.0 version: 0.27.0 @@ -1269,11 +1269,11 @@ importers: packages/oid4vci-issuer: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1327,8 +1327,8 @@ importers: version: 9.0.1 devDependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': specifier: ^0.6.3 version: 0.6.3(encoding@0.1.13) @@ -1351,14 +1351,14 @@ importers: packages/oid4vci-issuer-rest-api: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/oid4vci-issuer-server': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1517,8 +1517,8 @@ importers: packages/oid4vci-issuer-rest-client: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/ssi-types': specifier: workspace:* version: link:../ssi-types @@ -1554,8 +1554,8 @@ importers: packages/oid4vci-issuer-store: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -2252,8 +2252,8 @@ importers: packages/siopv2-oid4vp-common: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-sdk.core': specifier: workspace:* version: link:../ssi-sdk-core @@ -2274,14 +2274,14 @@ importers: packages/siopv2-oid4vp-op-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256 + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2407,14 +2407,14 @@ importers: packages/siopv2-oid4vp-rp-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256 + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2495,8 +2495,8 @@ importers: packages/siopv2-oid4vp-rp-rest-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -3604,8 +3604,8 @@ importers: packages/w3c-vc-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.256 - version: 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-feature.SPRIND.89.257 + version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -6013,12 +6013,12 @@ packages: '@sinonjs/fake-timers@8.1.0': resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.256': - resolution: {integrity: sha512-3ab5t3C5JVT7VhjlfQ7r/BeYbGgrk5pJ2OeaIFb6yqIx7CdKeUMqgxREwWSr+E2Ik5wWFNSGHAOUguOeC0Aozw==} + '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.257': + resolution: {integrity: sha512-9TC9G2Zf81LdacLwNqPGY7oMMi2uPsR8PcfhQpGj/PdBYDL0klSdkSGQFLypkPZU4ztUY8FQsSi6c+51bIRJug==} engines: {node: '>=18'} - '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.256': - resolution: {integrity: sha512-3/GAIozC4eicgyr/ITRdW2HcCQHRoQiSf+5VthMdGXH2IGtjMCWH+JTshXv8gfp5ScTODcIvqsIy7v6H/bajnQ==} + '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.257': + resolution: {integrity: sha512-hL3o7ZVGMDY+KFkKsr184Xktw+H40CCAW5EK31zXWiVQqavJTeDkG+gBqT2ci1phZxnmYYok9yk8pYl5A541Xw==} engines: {node: '>=18'} '@sphereon/did-provider-oyd@0.27.0': @@ -6041,8 +6041,8 @@ packages: '@sphereon/react-native-argon2': ^2.0.9 react-native: '>=0.60.0' - '@sphereon/jarm@0.16.1-feature.SPRIND.89.256': - resolution: {integrity: sha512-cVFcfsllYm0CCMgn0sA72b1mqAhd4dzYYCnKYPTJlSKsv0I/WkBPly7tDSOpJ7TXh1j5Xe3DVrHCZ0PAGM3b2Q==} + '@sphereon/jarm@0.16.1-feature.SPRIND.89.257': + resolution: {integrity: sha512-0r3ZFvEDRHau2oO6E94i0Fo3qLQlbwlSP0JtDKTFl6190RJBN/g/GYCFEUj4AH9hjlfgc6lvF0YY2Y0uYng3Ag==} engines: {node: '>=18'} '@sphereon/kmp-mdoc-core@0.2.0-SNAPSHOT.26': @@ -6052,20 +6052,20 @@ packages: '@sphereon/lto-did-ts@0.1.8-unstable.0': resolution: {integrity: sha512-3jzwwuYX/VYuze+T9/yg4PcsJ5iNNwAfTp4WfS4aSfPFBErDAfKXqn6kOb0wFYGkhejr3Jz+rljPC2iKZiHiGA==} - '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.256': - resolution: {integrity: sha512-PED+OnPUW+pqjleKUPesMqJhHKWTiyFvDIfXctVC8b2zpIxe5tLfPdDz6Q/SyjM2j1K/9J3/xS8W7JjXYmRvMg==} + '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.257': + resolution: {integrity: sha512-zkbcTwMnf1CgNlfF3xbvcOF1UhLewrzTZ6xI9Qijp0xcWEKCcNKYgsuO2Rx7kwhWGJjjKMjw3kCU/0N3VPxzMQ==} engines: {node: '>=18'} - '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.256': - resolution: {integrity: sha512-nT7lwc2WpdmUmuNAynPk4y1wki8KOp0ky84Vo7xBzsv7dnj5UaXaenDW/yIw0Ft0FYSCrFWM0fmzCwq65nhoiQ==} + '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.257': + resolution: {integrity: sha512-LeY3pqki3JlGlgF5JnUgm1kJwnh2tSGdkNYmkY2uwZUh2lp56zpiQ0CYDiz7c3Ho6I3iddR2seV0FrORRYSGEA==} engines: {node: '>=18'} - '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.256': - resolution: {integrity: sha512-rGxn7eKo+OJmwO+0YKYF3MYE56J41tar4Bz768rCnN4EqS3RD37vA+PkWDywi7SuVQToQcvCRZVen/WAiKOCMg==} + '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.257': + resolution: {integrity: sha512-z2iDdWj2+2qrzIWk0k11i/jiwboZwGIzUuPJhzHeSGkoYVycRFYbSAwvsQ2YC/6p+xqtsxeTRuQ6n6BFle134Q==} engines: {node: '>=18'} - '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.256': - resolution: {integrity: sha512-edt+QYom49imWVdzvQCPJykBuV8qXtJeLB1rZbKHGVMUDrM1PRkUZ/MrQw14Z7qnS5D1j+wGHUHVs/Wl0DHTrA==} + '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.257': + resolution: {integrity: sha512-afPxe+m8bmVQsMRkaNN7EjDj/Bfu14u1AKeZzhngbkyrL2eWznaO/ZYzhBK/ik/q0Zp7+opu3mUBiYgn0OiuYQ==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -6073,8 +6073,8 @@ packages: awesome-qr: optional: true - '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.256': - resolution: {integrity: sha512-NnM2JEePzgVueIOoqU/GWt2gGiXHS1QistYXV3lTTc+KQ1KV4DRGrKYErCCWSdYcjyqEPepIo42joxVWdon5fQ==} + '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.257': + resolution: {integrity: sha512-sWqG2nrjkyRPsr8elgNTdzEP7glSt5D9LbB8f4AT5nZmX48PIa31jXntvawIaVdQkpGm1TN1ZBXez+Or2/W0/g==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -16990,11 +16990,11 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3)': dependencies: - '@sphereon/did-auth-siop': 0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3) + '@sphereon/did-auth-siop': 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': 0.6.3(encoding@0.1.13) - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 '@sphereon/wellknown-dids-client': 0.1.3(encoding@0.1.13) did-jwt: 6.11.6(patch_hash=afqywxnnjnsy6hwgax66dyyiey) did-resolver: 4.1.0 @@ -17003,11 +17003,11 @@ snapshots: - supports-color - typescript - '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.256(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@sphereon/jarm': 0.16.1-feature.SPRIND.89.256(typescript@5.6.3) - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 + '@sphereon/jarm': 0.16.1-feature.SPRIND.89.257(typescript@5.6.3) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 '@sphereon/pex': 5.0.0-unstable.28 '@sphereon/pex-models': 2.3.2 '@sphereon/ssi-types': link:packages/ssi-types @@ -17068,9 +17068,9 @@ snapshots: react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1) uint8arrays: 3.1.1 - '@sphereon/jarm@0.16.1-feature.SPRIND.89.256(typescript@5.6.3)': + '@sphereon/jarm@0.16.1-feature.SPRIND.89.257(typescript@5.6.3)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 valibot: 0.42.1(typescript@5.6.3) transitivePeerDependencies: - typescript @@ -17094,7 +17094,7 @@ snapshots: - encoding - typescript - '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.256': + '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.257': dependencies: '@sphereon/ssi-types': link:packages/ssi-types jwt-decode: 4.0.0 @@ -17102,10 +17102,10 @@ snapshots: uint8arrays: 3.1.1 uuid: 9.0.1 - '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.256(encoding@0.1.13)': + '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.257(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17113,9 +17113,9 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.256(encoding@0.1.13)': + '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.257(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17126,11 +17126,11 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.256(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': + '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.257(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) - '@sphereon/oid4vci-issuer': 0.16.1-feature.SPRIND.89.256(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + '@sphereon/oid4vci-issuer': 0.16.1-feature.SPRIND.89.257(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-express-support': 0.30.2-feature.mdoc.funke2.367(@noble/hashes@1.6.1)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-types': link:packages/ssi-types body-parser: 1.20.3 @@ -17149,10 +17149,10 @@ snapshots: - passport-http-bearer - supports-color - '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.256(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': + '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.257(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.256 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.256(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 + '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types uuid: 9.0.1 optionalDependencies: From 9953373397c4625a15113d721607f76c287f4b4a Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 15:03:28 +0100 Subject: [PATCH 15/29] chore: added correct exports --- packages/oid4vci-holder/src/index.ts | 2 ++ packages/oid4vci-holder/src/types/FirstPartyMachine.ts | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/oid4vci-holder/src/index.ts b/packages/oid4vci-holder/src/index.ts index 36bbed22e..9d58b8849 100644 --- a/packages/oid4vci-holder/src/index.ts +++ b/packages/oid4vci-holder/src/index.ts @@ -4,6 +4,8 @@ export { OID4VCIHolder, oid4vciHolderContextMethods, signCallback } from './agent/OID4VCIHolder' export * from './services/OID4VCIHolderService' +export * from './services/FirstPartyMachineServices' export * from './types/IOID4VCIHolder' +export * from './types/FirstPartyMachine' export * from './listeners/headlessStateNavListener' export * from './link-handler' diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts index db360df68..75a3456ea 100644 --- a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -60,10 +60,10 @@ export enum FirstPartyMachineEvents { SET_SELECTED_CREDENTIALS = 'SET_SELECTED_CREDENTIALS' } -export type NextEvent = {type: FirstPartyMachineEvents.NEXT}; -export type PreviousEvent = {type: FirstPartyMachineEvents.PREVIOUS}; -export type DeclineEvent = {type: FirstPartyMachineEvents.DECLINE}; -export type SelectCredentialsEvent = { +type NextEvent = {type: FirstPartyMachineEvents.NEXT}; +type PreviousEvent = {type: FirstPartyMachineEvents.PREVIOUS}; +type DeclineEvent = {type: FirstPartyMachineEvents.DECLINE}; +type SelectCredentialsEvent = { type: FirstPartyMachineEvents.SET_SELECTED_CREDENTIALS; data: Array; }; From 583667373df79dd9968e4a74760a3f49d5496540 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 15:10:53 +0100 Subject: [PATCH 16/29] chore: export type --- packages/oid4vci-holder/src/types/FirstPartyMachine.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts index 75a3456ea..fd3c78238 100644 --- a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -63,7 +63,7 @@ export enum FirstPartyMachineEvents { type NextEvent = {type: FirstPartyMachineEvents.NEXT}; type PreviousEvent = {type: FirstPartyMachineEvents.PREVIOUS}; type DeclineEvent = {type: FirstPartyMachineEvents.DECLINE}; -type SelectCredentialsEvent = { +export type SelectCredentialsEvent = { type: FirstPartyMachineEvents.SET_SELECTED_CREDENTIALS; data: Array; }; From bce6d49bde7394697d154ca02d66f0372c6b3c6b Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 15:18:56 +0100 Subject: [PATCH 17/29] chore: fix type exports --- .../src/machines/firstPartyMachine.ts | 4 ++-- .../src/types/FirstPartyMachine.ts | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts index af9b09aa7..40320a443 100644 --- a/packages/oid4vci-holder/src/machines/firstPartyMachine.ts +++ b/packages/oid4vci-holder/src/machines/firstPartyMachine.ts @@ -31,7 +31,7 @@ import { InstanceFirstPartyMachineOpts, SiopV2AuthorizationRequestData, SendAuthorizationResponseArgs, - SelectCredentialsEvent + FirstPartySelectCredentialsEvent } from '../types/FirstPartyMachine' const firstPartyMachineStates: FirstPartyMachineStatesConfig = { @@ -115,7 +115,7 @@ const firstPartyMachineStates: FirstPartyMachineStatesConfig = { id: FirstPartyMachineStateTypes.selectCredentials, on: { [FirstPartyMachineEvents.SET_SELECTED_CREDENTIALS]: { - actions: assign({selectedCredentials: (_ctx: FirstPartyMachineContext, _event: SelectCredentialsEvent) => _event.data}), + actions: assign({selectedCredentials: (_ctx: FirstPartyMachineContext, _event: FirstPartySelectCredentialsEvent) => _event.data}), }, [FirstPartyMachineEvents.NEXT]: { target: FirstPartyMachineStateTypes.sendAuthorizationResponse, diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts index fd3c78238..7f6c1cee8 100644 --- a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -60,19 +60,19 @@ export enum FirstPartyMachineEvents { SET_SELECTED_CREDENTIALS = 'SET_SELECTED_CREDENTIALS' } -type NextEvent = {type: FirstPartyMachineEvents.NEXT}; -type PreviousEvent = {type: FirstPartyMachineEvents.PREVIOUS}; -type DeclineEvent = {type: FirstPartyMachineEvents.DECLINE}; -export type SelectCredentialsEvent = { +export type FirstPartyNextEvent = {type: FirstPartyMachineEvents.NEXT}; +export type FirstPartyPreviousEvent = {type: FirstPartyMachineEvents.PREVIOUS}; +export type FirstPartyDeclineEvent = {type: FirstPartyMachineEvents.DECLINE}; +export type FirstPartySelectCredentialsEvent = { type: FirstPartyMachineEvents.SET_SELECTED_CREDENTIALS; data: Array; }; export type FirstPartyMachineEventTypes = - NextEvent | - PreviousEvent | - DeclineEvent | - SelectCredentialsEvent + FirstPartyNextEvent | + FirstPartyPreviousEvent | + FirstPartyDeclineEvent | + FirstPartySelectCredentialsEvent export type FirstPartyMachineStatesConfig = StatesConfig< FirstPartyMachineContext, From 4972075cf746ed7d20b87f13aa508a2c85760a92 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 17 Jan 2025 15:33:15 +0100 Subject: [PATCH 18/29] chore: field name change --- packages/oid4vci-holder/src/types/FirstPartyMachine.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts index 7f6c1cee8..18a7ccc28 100644 --- a/packages/oid4vci-holder/src/types/FirstPartyMachine.ts +++ b/packages/oid4vci-holder/src/types/FirstPartyMachine.ts @@ -161,7 +161,7 @@ export type SiopV2AuthorizationRequestData = { }; export type FirstPartyMachineNavigationArgs = { - oid4vciMachine: FirstPartyMachineInterpreter + firstPartyMachine: FirstPartyMachineInterpreter state: FirstPartyMachineState navigation: any onNext?: () => void From 0d31428c25bf21dadd115404e6b7f6638587bc3b Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Tue, 21 Jan 2025 10:58:28 +0100 Subject: [PATCH 19/29] chore: generate new client id when client has none --- .../oid4vci-holder/src/services/FirstPartyMachineServices.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts b/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts index cdfeedfef..e9d3858cf 100644 --- a/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts +++ b/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts @@ -2,6 +2,7 @@ import { OpenID4VCIClient } from '@sphereon/oid4vci-client' import { AuthorizationChallengeValidationResponse } from '@sphereon/ssi-sdk.siopv2-oid4vp-common' import { AuthorizationChallengeCodeResponse } from '@sphereon/oid4vci-common' import { CreateConfigResult } from '@sphereon/ssi-sdk.siopv2-oid4vp-op-auth' +import { v4 as uuidv4 } from 'uuid' import { RequiredContext } from '../types/IOID4VCIHolder' import { CreateConfigArgs, @@ -16,7 +17,7 @@ export const sendAuthorizationChallengeRequest = async (args: SendAuthorizationC const oid4vciClient = await OpenID4VCIClient.fromState({ state: openID4VCIClientState }) return oid4vciClient.acquireAuthorizationChallengeCode({ - clientId: oid4vciClient.clientId, + clientId: oid4vciClient.clientId ?? uuidv4(), ...(authSession && { authSession }), ...(presentationDuringIssuanceSession && { presentationDuringIssuanceSession }) }) From ba19df32a85046c950f7510ae6cd04ecc667b2a8 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Tue, 21 Jan 2025 12:10:14 +0100 Subject: [PATCH 20/29] chore: set issuer state --- packages/oid4vci-holder/src/machines/oid4vciMachine.ts | 4 ++-- .../oid4vci-holder/src/services/FirstPartyMachineServices.ts | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/oid4vci-holder/src/machines/oid4vciMachine.ts b/packages/oid4vci-holder/src/machines/oid4vciMachine.ts index 465a65614..57e7b3fe3 100644 --- a/packages/oid4vci-holder/src/machines/oid4vciMachine.ts +++ b/packages/oid4vci-holder/src/machines/oid4vciMachine.ts @@ -471,8 +471,8 @@ const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMach onError: { target: OID4VCIMachineStates.handleError, actions: assign({ - error: (_ctx: OID4VCIMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ - title: translate('oid4vci_machine_first_party_error_title'), + error: (_ctx: OID4VCIMachineContext, _event: DoneInvokeEvent): ErrorDetails => ({ + title: _event.data.title ?? translate('oid4vci_machine_first_party_error_title'), message: _event.data.message, stack: _event.data.stack, }), diff --git a/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts b/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts index e9d3858cf..6c9e743e4 100644 --- a/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts +++ b/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts @@ -19,6 +19,8 @@ export const sendAuthorizationChallengeRequest = async (args: SendAuthorizationC return oid4vciClient.acquireAuthorizationChallengeCode({ clientId: oid4vciClient.clientId ?? uuidv4(), ...(authSession && { authSession }), + ...(openID4VCIClientState.credentialOffer?.preAuthorizedCode && { issuerState: openID4VCIClientState.credentialOffer?.preAuthorizedCode }), + ...(openID4VCIClientState.credentialOffer?.issuerState && { issuerState: openID4VCIClientState.credentialOffer?.issuerState }), ...(presentationDuringIssuanceSession && { presentationDuringIssuanceSession }) }) } From 7fa62780657a200fb2671aa7764becbd56f01749 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Tue, 21 Jan 2025 15:14:33 +0100 Subject: [PATCH 21/29] chore: add hasher option on did auth siop authenticator --- .../src/services/FirstPartyMachineServices.ts | 4 ++-- .../src/agent/DidAuthSiopOpAuthenticator.ts | 8 +++++--- .../siopv2-oid4vp-op-auth/src/types/siop-service/index.ts | 2 ++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts b/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts index 6c9e743e4..b486bda5e 100644 --- a/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts +++ b/packages/oid4vci-holder/src/services/FirstPartyMachineServices.ts @@ -19,8 +19,8 @@ export const sendAuthorizationChallengeRequest = async (args: SendAuthorizationC return oid4vciClient.acquireAuthorizationChallengeCode({ clientId: oid4vciClient.clientId ?? uuidv4(), ...(authSession && { authSession }), - ...(openID4VCIClientState.credentialOffer?.preAuthorizedCode && { issuerState: openID4VCIClientState.credentialOffer?.preAuthorizedCode }), - ...(openID4VCIClientState.credentialOffer?.issuerState && { issuerState: openID4VCIClientState.credentialOffer?.issuerState }), + ...(!authSession && openID4VCIClientState.credentialOffer?.preAuthorizedCode && { issuerState: openID4VCIClientState.credentialOffer?.preAuthorizedCode }), + ...(!authSession && openID4VCIClientState.credentialOffer?.issuerState && { issuerState: openID4VCIClientState.credentialOffer?.issuerState }), ...(presentationDuringIssuanceSession && { presentationDuringIssuanceSession }) }) } diff --git a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts index 639f9a8d5..74b09df38 100644 --- a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts +++ b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts @@ -8,7 +8,7 @@ import { NonPersistedIdentity, Party, } from '@sphereon/ssi-sdk.data-store' -import { Loggers } from '@sphereon/ssi-types' +import { Hasher, Loggers } from '@sphereon/ssi-types' import { IAgentPlugin } from '@veramo/core' import { v4 as uuidv4 } from 'uuid' import { @@ -84,6 +84,7 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { siopGetSelectableCredentials: this.siopGetSelectableCredentials.bind(this), } + private readonly hasher?: Hasher private readonly sessions: Map private readonly customApprovals: Record Promise> private readonly presentationSignCallback?: PresentationSignCallback @@ -97,13 +98,14 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { customApprovals?: Record Promise>, options?: DidAuthSiopOpAuthenticatorOptions, ) { - const { onContactIdentityCreated, onIdentifierCreated } = options ?? {} + const { onContactIdentityCreated, onIdentifierCreated, hasher } = { ...options } this.onContactIdentityCreated = onContactIdentityCreated this.onIdentifierCreated = onIdentifierCreated this.sessions = new Map() this.customApprovals = customApprovals || {} this.presentationSignCallback = presentationSignCallback + this.hasher = hasher } public async onEvent(event: any, context: RequiredContext): Promise { @@ -340,7 +342,7 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { return Promise.reject(Error('Missing authorization request data in context')) } - const pex = new PEX() + const pex = new PEX({ hasher: this.hasher }) const verifiableCredentialsWithDefinition: Array = [] authorizationRequestData.presentationDefinitions?.forEach((presentationDefinition) => { diff --git a/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts b/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts index b83c728a2..0252c0f98 100644 --- a/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts +++ b/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts @@ -7,10 +7,12 @@ import { IIssuanceBranding } from '@sphereon/ssi-sdk.issuance-branding' import { IAgentContext, IDIDManager, IIdentifier, IResolver } from '@veramo/core' import { IDidAuthSiopOpAuthenticator } from '../IDidAuthSiopOpAuthenticator' import { Siopv2MachineContext, Siopv2MachineInterpreter, Siopv2MachineState } from '../machine' +import { Hasher } from '@sphereon/ssi-types' export type DidAuthSiopOpAuthenticatorOptions = { onContactIdentityCreated?: (args: OnContactIdentityCreatedArgs) => Promise onIdentifierCreated?: (args: OnIdentifierCreatedArgs) => Promise + hasher?: Hasher } export type GetMachineArgs = { From 8f989fe1e014b01ecbc2fc0bccbf6fc70486b988 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Tue, 21 Jan 2025 15:18:28 +0100 Subject: [PATCH 22/29] chore: refactor DidAuthSiopOpAuthenticator to use an object as options --- .../src/agent/DidAuthSiopOpAuthenticator.ts | 23 ++++++++++--------- .../src/types/siop-service/index.ts | 8 ++++++- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts index 74b09df38..104b1af96 100644 --- a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts +++ b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts @@ -88,24 +88,25 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { private readonly sessions: Map private readonly customApprovals: Record Promise> private readonly presentationSignCallback?: PresentationSignCallback - private readonly onContactIdentityCreated?: (args: OnContactIdentityCreatedArgs) => Promise private readonly onIdentifierCreated?: (args: OnIdentifierCreatedArgs) => Promise private readonly eventEmitter?: EventEmitter - constructor( - presentationSignCallback?: PresentationSignCallback, - customApprovals?: Record Promise>, - options?: DidAuthSiopOpAuthenticatorOptions, - ) { - const { onContactIdentityCreated, onIdentifierCreated, hasher } = { ...options } + constructor(options?: DidAuthSiopOpAuthenticatorOptions) { + const { + onContactIdentityCreated, + onIdentifierCreated, + hasher, + customApprovals = {}, + presentationSignCallback + } = { ...options } + + this.hasher = hasher this.onContactIdentityCreated = onContactIdentityCreated this.onIdentifierCreated = onIdentifierCreated - - this.sessions = new Map() - this.customApprovals = customApprovals || {} this.presentationSignCallback = presentationSignCallback - this.hasher = hasher + this.sessions = new Map() + this.customApprovals = customApprovals } public async onEvent(event: any, context: RequiredContext): Promise { diff --git a/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts b/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts index 0252c0f98..842de04b9 100644 --- a/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts +++ b/packages/siopv2-oid4vp-op-auth/src/types/siop-service/index.ts @@ -1,4 +1,8 @@ -import { PresentationDefinitionWithLocation, RPRegistrationMetadataPayload } from '@sphereon/did-auth-siop' +import { + PresentationDefinitionWithLocation, + PresentationSignCallback, + RPRegistrationMetadataPayload, VerifiedAuthorizationRequest +} from '@sphereon/did-auth-siop' import { IIdentifierResolution, ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution' import { IContactManager } from '@sphereon/ssi-sdk.contact-manager' import { ICredentialStore, UniqueDigitalCredential } from '@sphereon/ssi-sdk.credential-store' @@ -10,6 +14,8 @@ import { Siopv2MachineContext, Siopv2MachineInterpreter, Siopv2MachineState } fr import { Hasher } from '@sphereon/ssi-types' export type DidAuthSiopOpAuthenticatorOptions = { + presentationSignCallback?: PresentationSignCallback + customApprovals?: Record Promise> onContactIdentityCreated?: (args: OnContactIdentityCreatedArgs) => Promise onIdentifierCreated?: (args: OnIdentifierCreatedArgs) => Promise hasher?: Hasher From 78cc6361016eb4045fb70491abbe8303ae24832c Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Tue, 21 Jan 2025 15:41:28 +0100 Subject: [PATCH 23/29] chore: fix plugin args --- packages/siopv2-oid4vp-op-auth/__tests__/restAgent.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/siopv2-oid4vp-op-auth/__tests__/restAgent.test.ts b/packages/siopv2-oid4vp-op-auth/__tests__/restAgent.test.ts index 6adeb496a..461ae9193 100644 --- a/packages/siopv2-oid4vp-op-auth/__tests__/restAgent.test.ts +++ b/packages/siopv2-oid4vp-op-auth/__tests__/restAgent.test.ts @@ -43,7 +43,7 @@ const getAgent = (options?: IAgentOptions) => createAgent({ ...options, plugins: [ - new DidAuthSiopOpAuthenticator(presentationSignCallback), + new DidAuthSiopOpAuthenticator({ presentationSignCallback }), new DIDResolverPlugin({ resolver: new Resolver({ ...getDidKeyResolver(), From bd4a6141b588fb571fc6bb810a5e600bf63e1708 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Tue, 21 Jan 2025 16:54:39 +0100 Subject: [PATCH 24/29] chore: set hasher on getOID4VP --- .../siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts b/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts index b02fd1b70..04eeea625 100644 --- a/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts +++ b/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts @@ -68,7 +68,7 @@ export const siopSendAuthorizationResponse = async ( let presentationsAndDefs: VerifiablePresentationWithDefinition[] | undefined let presentationSubmission: PresentationSubmission | undefined if (await session.hasPresentationDefinitions()) { - const oid4vp: OID4VP = await session.getOID4VP({}) + const oid4vp: OID4VP = await session.getOID4VP({ hasher: this.hasher }) const credentialsAndDefinitions = args.verifiableCredentialsWithDefinition ? args.verifiableCredentialsWithDefinition From 84eee9664896027d809b608b09184fb7fa44eb92 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Tue, 21 Jan 2025 17:01:13 +0100 Subject: [PATCH 25/29] chore: args fix --- .../src/agent/DidAuthSiopOpAuthenticator.ts | 3 ++- .../src/services/Siopv2MachineService.ts | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts index 104b1af96..5957f3aab 100644 --- a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts +++ b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts @@ -379,7 +379,8 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { sessionId: didAuthConfig.sessionId, ...(args.idOpts && { idOpts: args.idOpts }), ...(authorizationRequestData.presentationDefinitions !== undefined && { verifiableCredentialsWithDefinition }), - isFirstParty + isFirstParty, + hasher: this.hasher }, context, ) diff --git a/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts b/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts index 04eeea625..a9c2cbe88 100644 --- a/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts +++ b/packages/siopv2-oid4vp-op-auth/src/services/Siopv2MachineService.ts @@ -4,7 +4,7 @@ import { InputDescriptorV1, InputDescriptorV2, PresentationDefinitionV1, Present import { isOID4VCIssuerIdentifier, ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution' import { verifiableCredentialForRoleFilter } from '@sphereon/ssi-sdk.credential-store' import { ConnectionType, CredentialRole } from '@sphereon/ssi-sdk.data-store' -import { CredentialMapper, Loggers, PresentationSubmission } from '@sphereon/ssi-types' +import { CredentialMapper, Hasher, Loggers, PresentationSubmission } from '@sphereon/ssi-types' import { OID4VP, OpSession } from '../session' import { DidAgents, @@ -49,12 +49,13 @@ export const siopSendAuthorizationResponse = async ( verifiableCredentialsWithDefinition?: VerifiableCredentialsWithDefinition[] idOpts?: ManagedIdentifierOptsOrResult isFirstParty?: boolean + hasher?: Hasher }, context: RequiredContext, ) => { const { agent } = context const agentContext = { ...context, agent: context.agent as DidAgents } - let { idOpts, isFirstParty } = args + let { idOpts, isFirstParty, hasher } = args if (connectionType !== ConnectionType.SIOPv2_OpenID4VP) { return Promise.reject(Error(`No supported authentication provider for type: ${connectionType}`)) @@ -68,7 +69,7 @@ export const siopSendAuthorizationResponse = async ( let presentationsAndDefs: VerifiablePresentationWithDefinition[] | undefined let presentationSubmission: PresentationSubmission | undefined if (await session.hasPresentationDefinitions()) { - const oid4vp: OID4VP = await session.getOID4VP({ hasher: this.hasher }) + const oid4vp: OID4VP = await session.getOID4VP({ hasher }) const credentialsAndDefinitions = args.verifiableCredentialsWithDefinition ? args.verifiableCredentialsWithDefinition From 6200d5deb8396f63dbed26bff6341d17b5bf26e8 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Tue, 21 Jan 2025 17:32:45 +0100 Subject: [PATCH 26/29] chore: added hasher to args --- .../src/agent/DidAuthSiopOpAuthenticator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts index 5957f3aab..ce7dbc318 100644 --- a/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts +++ b/packages/siopv2-oid4vp-op-auth/src/agent/DidAuthSiopOpAuthenticator.ts @@ -216,7 +216,7 @@ export class DidAuthSiopOpAuthenticator implements IAgentPlugin { const session: OpSession = await agent .siopGetOPSession({ sessionId }) - .catch(async () => await agent.siopRegisterOPSession({ requestJwtOrUri: redirectUrl, sessionId, op: { eventEmitter: this.eventEmitter } })) + .catch(async () => await agent.siopRegisterOPSession({ requestJwtOrUri: redirectUrl, sessionId, op: { eventEmitter: this.eventEmitter, hasher: this.hasher } })) logger.debug(`session: ${JSON.stringify(session.id, null, 2)}`) const verifiedAuthorizationRequest = await session.getAuthorizationRequest() From d30c8af2ff8fd5c6facfb8d591ec4f26fc9fc95b Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Wed, 22 Jan 2025 10:46:50 +0100 Subject: [PATCH 27/29] chore: delegate declined and aborted events from the first party machine --- .../src/machines/oid4vciMachine.ts | 29 +++++++++++++------ .../src/services/OID4VCIHolderService.ts | 8 +++-- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/packages/oid4vci-holder/src/machines/oid4vciMachine.ts b/packages/oid4vci-holder/src/machines/oid4vciMachine.ts index 57e7b3fe3..bf5c21d76 100644 --- a/packages/oid4vci-holder/src/machines/oid4vciMachine.ts +++ b/packages/oid4vci-holder/src/machines/oid4vciMachine.ts @@ -33,6 +33,7 @@ import { SetAuthorizationCodeURLEvent, VerificationCodeEvent, } from '../types/IOID4VCIHolder' +import { FirstPartyMachineStateTypes } from '../types/FirstPartyMachine' const oid4vciHasNoContactGuard = (_ctx: OID4VCIMachineContext, _event: OID4VCIMachineEventTypes): boolean => { const { contact } = _ctx @@ -459,15 +460,25 @@ const createOID4VCIMachine = (opts?: CreateOID4VCIMachineOpts): OID4VCIStateMach id: OID4VCIMachineStates.startFirstPartApplicationFlow, invoke: { src: OID4VCIMachineServices.startFirstPartApplicationFlow, - onDone: { - target: OID4VCIMachineStates.getCredentials, - actions: assign({ - openID4VCIClientState: (_ctx: OID4VCIMachineContext, _event: DoneInvokeEvent) => { - const authorizationCodeResponse = toAuthorizationResponsePayload(_event.data) - return { ..._ctx.openID4VCIClientState!, authorizationCodeResponse } - } - }) - }, + onDone: [ + { + target: OID4VCIMachineStates.aborted, + cond: (_ctx: OID4VCIMachineContext, _event: DoneInvokeEvent): boolean => _event.data === FirstPartyMachineStateTypes.aborted, + }, + { + target: OID4VCIMachineStates.declined, + cond: (_ctx: OID4VCIMachineContext, _event: DoneInvokeEvent): boolean => _event.data === FirstPartyMachineStateTypes.declined, + }, + { + target: OID4VCIMachineStates.getCredentials, + actions: assign({ + openID4VCIClientState: (_ctx: OID4VCIMachineContext, _event: DoneInvokeEvent) => { + const authorizationCodeResponse = toAuthorizationResponsePayload(_event.data) + return { ..._ctx.openID4VCIClientState!, authorizationCodeResponse } + } + }) + } + ], onError: { target: OID4VCIMachineStates.handleError, actions: assign({ diff --git a/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts b/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts index 13c1fc901..f480f4cf6 100644 --- a/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts +++ b/packages/oid4vci-holder/src/services/OID4VCIHolderService.ts @@ -621,7 +621,7 @@ export const getIssuanceCryptoSuite = async (opts: GetIssuanceCryptoSuiteArgs): } } -export const startFirstPartApplicationMachine = async (args: StartFirstPartApplicationMachine, context: RequiredContext): Promise => { +export const startFirstPartApplicationMachine = async (args: StartFirstPartApplicationMachine, context: RequiredContext): Promise => { const { openID4VCIClientState, stateNavigationListener, contact } = args if (!openID4VCIClientState) { @@ -647,9 +647,11 @@ export const startFirstPartApplicationMachine = async (args: StartFirstPartAppli if (!authorizationCodeResponse) { reject(Error('No authorizationCodeResponse acquired')); } - resolve(authorizationCodeResponse); + resolve(authorizationCodeResponse!); } else if (state.matches(FirstPartyMachineStateTypes.aborted)) { - resolve(undefined); + resolve(FirstPartyMachineStateTypes.aborted); + } else if (state.matches(FirstPartyMachineStateTypes.declined)) { + resolve(FirstPartyMachineStateTypes.declined); } else if (state.matches(FirstPartyMachineStateTypes.error)) { reject(state.context.error); } From 432128a0ed47b1277eece33b4214069b1765ba17 Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Wed, 22 Jan 2025 11:15:39 +0100 Subject: [PATCH 28/29] chore: added ticket number to FIXME --- packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts | 2 +- packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts b/packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts index 2b6614109..53c6018cf 100644 --- a/packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts +++ b/packages/oid4vci-issuer-store/src/types/IOID4VCIStore.ts @@ -69,7 +69,7 @@ export interface IIssuerOptions { /** * Used in the callbacks for the first party flow */ - // FIXME we need to start supporting a map with a definition id per credential, we can use the credential offer session to check which credential is being issued and then look it up in this map + // FIXME SPRIND-151 we need to start supporting a map with a definition id per credential, we can use the credential offer session to check which credential is being issued and then look it up in this map presentationDefinitionId?: string } diff --git a/packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts b/packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts index 8f79f3659..5866485ca 100644 --- a/packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts +++ b/packages/oid4vci-issuer/src/types/IOID4VCIIssuer.ts @@ -86,7 +86,7 @@ export interface IIssuerOptions { /** * Used in the callbacks for the first party flow */ - // FIXME we need to start supporting a map with a definition id per credential, we can use the credential offer session to check which credential is being issued and then look it up in this map + // FIXME SPRIND-151 we need to start supporting a map with a definition id per credential, we can use the credential offer session to check which credential is being issued and then look it up in this map presentationDefinitionId?: string } From 4b0cd7ed5f57103a902698e310591181d3b998ce Mon Sep 17 00:00:00 2001 From: "A.G.J. Cate" Date: Fri, 24 Jan 2025 15:08:40 +0100 Subject: [PATCH 29/29] chore: update packages --- packages/ebsi-support/package.json | 8 +- packages/mdl-mdoc/package.json | 6 +- packages/oid4vci-holder/package.json | 8 +- packages/oid4vci-issuer-rest-api/package.json | 6 +- .../oid4vci-issuer-rest-client/package.json | 2 +- packages/oid4vci-issuer-store/package.json | 2 +- packages/oid4vci-issuer/package.json | 6 +- packages/siopv2-oid4vp-common/package.json | 2 +- packages/siopv2-oid4vp-op-auth/package.json | 6 +- .../src/session/OpSession.ts | 2 +- packages/siopv2-oid4vp-rp-auth/package.json | 6 +- .../siopv2-oid4vp-rp-auth/src/functions.ts | 5 +- .../siopv2-oid4vp-rp-rest-api/package.json | 2 +- packages/w3c-vc-api/package.json | 2 +- pnpm-lock.yaml | 208 ++++++++++-------- 15 files changed, 148 insertions(+), 123 deletions(-) diff --git a/packages/ebsi-support/package.json b/packages/ebsi-support/package.json index 5be0fe36c..87e698bb0 100644 --- a/packages/ebsi-support/package.json +++ b/packages/ebsi-support/package.json @@ -15,8 +15,8 @@ }, "dependencies": { "@ethersproject/random": "^5.7.0", - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", + "@sphereon/did-auth-siop-adapter": "0.16.1-next.339", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-resolver-ebsi": "0.27.0", @@ -44,8 +44,8 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-client": "0.16.1-next.339", + "@sphereon/oid4vci-common": "0.16.1-next.339", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/mdl-mdoc/package.json b/packages/mdl-mdoc/package.json index f3479d6ac..e079c408e 100644 --- a/packages/mdl-mdoc/package.json +++ b/packages/mdl-mdoc/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", @@ -35,8 +35,8 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-client": "0.16.1-next.339", + "@sphereon/oid4vci-common": "0.16.1-next.339", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.key-manager": "0.27.0", "@sphereon/ssi-sdk-ext.kms-local": "0.27.0", diff --git a/packages/oid4vci-holder/package.json b/packages/oid4vci-holder/package.json index e81cb6eae..3ec00c889 100644 --- a/packages/oid4vci-holder/package.json +++ b/packages/oid4vci-holder/package.json @@ -15,9 +15,9 @@ }, "dependencies": { "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26", - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vci-client": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", + "@sphereon/oid4vci-client": "0.16.1-next.339", + "@sphereon/oid4vci-common": "0.16.1-next.339", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk-ext.jwt-service": "0.27.0", @@ -45,7 +45,7 @@ "xstate": "^4.38.3" }, "devDependencies": { - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vc-common": "0.16.1-next.339", "@sphereon/ssi-sdk.siopv2-oid4vp-common": "workspace:*", "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.27.0", "@types/i18n-js": "^3.8.9", diff --git a/packages/oid4vci-issuer-rest-api/package.json b/packages/oid4vci-issuer-rest-api/package.json index b73ad7e3e..b3cbf2575 100644 --- a/packages/oid4vci-issuer-rest-api/package.json +++ b/packages/oid4vci-issuer-rest-api/package.json @@ -11,9 +11,9 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vci-issuer-server": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-common": "0.16.1-next.339", + "@sphereon/oid4vci-issuer": "0.16.1-next.339", + "@sphereon/oid4vci-issuer-server": "0.16.1-next.339", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer-rest-client/package.json b/packages/oid4vci-issuer-rest-client/package.json index ea3f4bb2a..413e719aa 100644 --- a/packages/oid4vci-issuer-rest-client/package.json +++ b/packages/oid4vci-issuer-rest-client/package.json @@ -16,7 +16,7 @@ "generate-plugin-schema": "ts-node ../../packages/dev/bin/sphereon.js dev generate-plugin-schema" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-common": "0.16.1-next.339", "@sphereon/ssi-types": "workspace:*", "@veramo/core": "4.2.0", "cross-fetch": "^3.1.8" diff --git a/packages/oid4vci-issuer-store/package.json b/packages/oid4vci-issuer-store/package.json index 1bff5aeb9..ed597c783 100644 --- a/packages/oid4vci-issuer-store/package.json +++ b/packages/oid4vci-issuer-store/package.json @@ -14,7 +14,7 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-common": "0.16.1-next.339", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.kv-store-temp": "workspace:*", diff --git a/packages/oid4vci-issuer/package.json b/packages/oid4vci-issuer/package.json index 512aa0922..41e9ce3de 100644 --- a/packages/oid4vci-issuer/package.json +++ b/packages/oid4vci-issuer/package.json @@ -14,8 +14,8 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/oid4vci-common": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vci-issuer": "0.16.1-feature.SPRIND.89.257", + "@sphereon/oid4vci-common": "0.16.1-next.339", + "@sphereon/oid4vci-issuer": "0.16.1-next.339", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", "@sphereon/ssi-sdk.agent-config": "workspace:*", @@ -35,7 +35,7 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", "@sphereon/did-uni-client": "^0.6.3", "@veramo/did-provider-key": "4.2.0", "@veramo/did-resolver": "4.2.0", diff --git a/packages/siopv2-oid4vp-common/package.json b/packages/siopv2-oid4vp-common/package.json index e10ecd273..e084da24e 100644 --- a/packages/siopv2-oid4vp-common/package.json +++ b/packages/siopv2-oid4vp-common/package.json @@ -12,7 +12,7 @@ "access": "public" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-types": "workspace:*", "uint8arrays": "3.1.1" diff --git a/packages/siopv2-oid4vp-op-auth/package.json b/packages/siopv2-oid4vp-op-auth/package.json index efd355a2c..eb08fb0d5 100644 --- a/packages/siopv2-oid4vp-op-auth/package.json +++ b/packages/siopv2-oid4vp-op-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", + "@sphereon/did-auth-siop-adapter": "0.16.1-next.339", + "@sphereon/oid4vc-common": "0.16.1-next.339", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/pex-models": "^2.3.2", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", diff --git a/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts b/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts index d03e8a9b5..2a20b752c 100644 --- a/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts +++ b/packages/siopv2-oid4vp-op-auth/src/session/OpSession.ts @@ -240,7 +240,7 @@ export class OpSession { private createPresentationVerificationCallback(context: IRequiredContext) { async function presentationVerificationCallback( args: W3CVerifiablePresentation | CompactSdJwtVc, - presentationSubmission: PresentationSubmission, + presentationSubmission?: PresentationSubmission, ): Promise { let result: IVerifyResult if (CredentialMapper.isSdJwtEncoded(args)) { diff --git a/packages/siopv2-oid4vp-rp-auth/package.json b/packages/siopv2-oid4vp-rp-auth/package.json index 6c39c0b1f..51bf9bdef 100644 --- a/packages/siopv2-oid4vp-rp-auth/package.json +++ b/packages/siopv2-oid4vp-rp-auth/package.json @@ -14,9 +14,9 @@ "build:clean": "tsc --build --clean && tsc --build" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", - "@sphereon/did-auth-siop-adapter": "0.16.1-feature.SPRIND.89.257", - "@sphereon/oid4vc-common": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", + "@sphereon/did-auth-siop-adapter": "0.16.1-next.339", + "@sphereon/oid4vc-common": "0.16.1-next.339", "@sphereon/pex": "5.0.0-unstable.28", "@sphereon/ssi-sdk-ext.did-utils": "0.27.0", "@sphereon/ssi-sdk-ext.identifier-resolution": "0.27.0", diff --git a/packages/siopv2-oid4vp-rp-auth/src/functions.ts b/packages/siopv2-oid4vp-rp-auth/src/functions.ts index 23f19fcf4..61091fed6 100644 --- a/packages/siopv2-oid4vp-rp-auth/src/functions.ts +++ b/packages/siopv2-oid4vp-rp-auth/src/functions.ts @@ -64,7 +64,7 @@ export function getPresentationVerificationCallback( ): PresentationVerificationCallback { async function presentationVerificationCallback( args: any, // FIXME any - presentationSubmission: PresentationSubmission, + presentationSubmission?: PresentationSubmission, ): Promise { if (CredentialMapper.isSdJwtEncoded(args)) { const result: IVerifySdJwtPresentationResult = await context.agent.verifySdJwtPresentation({ @@ -80,6 +80,9 @@ export function getPresentationVerificationCallback( if (context.agent.mdocOid4vpRPVerify === undefined) { return Promise.reject('ImDLMdoc agent plugin must be enabled to support MsoMdoc types') } + if (!presentationSubmission) { + return Promise.reject('No presentationSubmission present') + } const verifyResult = await context.agent.mdocOid4vpRPVerify({ vp_token: args, presentation_submission: presentationSubmission, diff --git a/packages/siopv2-oid4vp-rp-rest-api/package.json b/packages/siopv2-oid4vp-rp-rest-api/package.json index fb900029c..424f3f785 100644 --- a/packages/siopv2-oid4vp-rp-rest-api/package.json +++ b/packages/siopv2-oid4vp-rp-rest-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/RestAPI.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", "@sphereon/ssi-sdk.credential-validation": "workspace:*", diff --git a/packages/w3c-vc-api/package.json b/packages/w3c-vc-api/package.json index e1b48bad4..8dc47b5c9 100644 --- a/packages/w3c-vc-api/package.json +++ b/packages/w3c-vc-api/package.json @@ -11,7 +11,7 @@ "start:dev": "ts-node __tests__/agent.ts" }, "dependencies": { - "@sphereon/did-auth-siop": "0.16.1-feature.SPRIND.89.257", + "@sphereon/did-auth-siop": "0.16.1-next.339", "@sphereon/ssi-express-support": "workspace:*", "@sphereon/ssi-sdk.agent-config": "workspace:*", "@sphereon/ssi-sdk.core": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b0ec82cf..6a77e27d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -615,11 +615,11 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -697,11 +697,11 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -914,8 +914,8 @@ importers: packages/mdl-mdoc: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 @@ -972,11 +972,11 @@ importers: version: 9.0.1 devDependencies: '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1145,17 +1145,17 @@ importers: packages/oid4vci-holder: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/kmp-mdoc-core': specifier: 0.2.0-SNAPSHOT.26 version: 0.2.0-SNAPSHOT.26 '@sphereon/oid4vci-client': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1233,8 +1233,8 @@ importers: version: 4.38.3 devDependencies: '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257 + specifier: 0.16.1-next.339 + version: 0.16.1-next.339 '@sphereon/ssi-sdk-ext.did-resolver-jwk': specifier: 0.27.0 version: 0.27.0 @@ -1269,11 +1269,11 @@ importers: packages/oid4vci-issuer: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -1327,8 +1327,8 @@ importers: version: 9.0.1 devDependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': specifier: ^0.6.3 version: 0.6.3(encoding@0.1.13) @@ -1351,14 +1351,14 @@ importers: packages/oid4vci-issuer-rest-api: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/oid4vci-issuer': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/oid4vci-issuer-server': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -1517,8 +1517,8 @@ importers: packages/oid4vci-issuer-rest-client: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/ssi-types': specifier: workspace:* version: link:../ssi-types @@ -1554,8 +1554,8 @@ importers: packages/oid4vci-issuer-store: dependencies: '@sphereon/oid4vci-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13) '@sphereon/ssi-sdk-ext.did-utils': specifier: 0.27.0 version: 0.27.0(encoding@0.1.13)(pg@8.13.1)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3)) @@ -2252,8 +2252,8 @@ importers: packages/siopv2-oid4vp-common: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-sdk.core': specifier: workspace:* version: link:../ssi-sdk-core @@ -2274,14 +2274,14 @@ importers: packages/siopv2-oid4vp-op-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257 + specifier: 0.16.1-next.339 + version: 0.16.1-next.339 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2407,14 +2407,14 @@ importers: packages/siopv2-oid4vp-rp-auth: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-auth-siop-adapter': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/oid4vc-common': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257 + specifier: 0.16.1-next.339 + version: 0.16.1-next.339 '@sphereon/pex': specifier: 5.0.0-unstable.28 version: 5.0.0-unstable.28 @@ -2495,8 +2495,8 @@ importers: packages/siopv2-oid4vp-rp-rest-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -3604,8 +3604,8 @@ importers: packages/w3c-vc-api: dependencies: '@sphereon/did-auth-siop': - specifier: 0.16.1-feature.SPRIND.89.257 - version: 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + specifier: 0.16.1-next.339 + version: 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/ssi-express-support': specifier: workspace:* version: link:../ssi-express-support @@ -6013,12 +6013,12 @@ packages: '@sinonjs/fake-timers@8.1.0': resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.257': - resolution: {integrity: sha512-9TC9G2Zf81LdacLwNqPGY7oMMi2uPsR8PcfhQpGj/PdBYDL0klSdkSGQFLypkPZU4ztUY8FQsSi6c+51bIRJug==} + '@sphereon/did-auth-siop-adapter@0.16.1-next.339': + resolution: {integrity: sha512-HeBxuv4Q8b2p6act0TL/80F2tef5OpnBxcliakzdt/GsmPwBzwczW1ViFQiCdO76JMvmjza50RSzU6f0jFVY8Q==} engines: {node: '>=18'} - '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.257': - resolution: {integrity: sha512-hL3o7ZVGMDY+KFkKsr184Xktw+H40CCAW5EK31zXWiVQqavJTeDkG+gBqT2ci1phZxnmYYok9yk8pYl5A541Xw==} + '@sphereon/did-auth-siop@0.16.1-next.339': + resolution: {integrity: sha512-1gfsJBjzwVQcjceXEjTgxU3OZPX0C9cikR3tlogOz4pD4Yy9TL4bz+tIEk0FJup2U09LfQw/MdTNFWjfbAvYJQ==} engines: {node: '>=18'} '@sphereon/did-provider-oyd@0.27.0': @@ -6041,8 +6041,8 @@ packages: '@sphereon/react-native-argon2': ^2.0.9 react-native: '>=0.60.0' - '@sphereon/jarm@0.16.1-feature.SPRIND.89.257': - resolution: {integrity: sha512-0r3ZFvEDRHau2oO6E94i0Fo3qLQlbwlSP0JtDKTFl6190RJBN/g/GYCFEUj4AH9hjlfgc6lvF0YY2Y0uYng3Ag==} + '@sphereon/jarm@0.16.1-next.339': + resolution: {integrity: sha512-PQABG/rZpK1ypZqfHRV3HuxVDxclRJnD41A8fnr8EQB5JFKElSQ/SWEIWi7DD1HeWqzZnRiLWt1boPuWjgphOQ==} engines: {node: '>=18'} '@sphereon/kmp-mdoc-core@0.2.0-SNAPSHOT.26': @@ -6052,20 +6052,20 @@ packages: '@sphereon/lto-did-ts@0.1.8-unstable.0': resolution: {integrity: sha512-3jzwwuYX/VYuze+T9/yg4PcsJ5iNNwAfTp4WfS4aSfPFBErDAfKXqn6kOb0wFYGkhejr3Jz+rljPC2iKZiHiGA==} - '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.257': - resolution: {integrity: sha512-zkbcTwMnf1CgNlfF3xbvcOF1UhLewrzTZ6xI9Qijp0xcWEKCcNKYgsuO2Rx7kwhWGJjjKMjw3kCU/0N3VPxzMQ==} + '@sphereon/oid4vc-common@0.16.1-next.339': + resolution: {integrity: sha512-Ttw49G8liVpR/qZTuBX9YVI8vYb3rbtWAUr8Ra5GRGQo8+xE22dT5gMK0BwTeg6CRik3zhYnW6L4LN/NRPuhIA==} engines: {node: '>=18'} - '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.257': - resolution: {integrity: sha512-LeY3pqki3JlGlgF5JnUgm1kJwnh2tSGdkNYmkY2uwZUh2lp56zpiQ0CYDiz7c3Ho6I3iddR2seV0FrORRYSGEA==} + '@sphereon/oid4vci-client@0.16.1-next.339': + resolution: {integrity: sha512-bPkiQGauf8LjkfI8LXVBw494Z8ttCT439420PlzWohm5aYytcEw7DL/Sn+5+ME+4aHzzb4khXAVqjpSlrySSDA==} engines: {node: '>=18'} - '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.257': - resolution: {integrity: sha512-z2iDdWj2+2qrzIWk0k11i/jiwboZwGIzUuPJhzHeSGkoYVycRFYbSAwvsQ2YC/6p+xqtsxeTRuQ6n6BFle134Q==} + '@sphereon/oid4vci-common@0.16.1-next.339': + resolution: {integrity: sha512-ZZGh6xxtmeiJy5+sic8F+YZkZucx1vuYQ4wqG0bhcu17zOkvyqvW5S54G2o1K8ZVYjPTuBkI402nuqAoMGgLGg==} engines: {node: '>=18'} - '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.257': - resolution: {integrity: sha512-afPxe+m8bmVQsMRkaNN7EjDj/Bfu14u1AKeZzhngbkyrL2eWznaO/ZYzhBK/ik/q0Zp7+opu3mUBiYgn0OiuYQ==} + '@sphereon/oid4vci-issuer-server@0.16.1-next.339': + resolution: {integrity: sha512-6Cbrs3PSPIY1tNTyCHYGLdQgLSu/ie38OIllyhrJLuCtCpxsdRR0AE0lQi06gJMpt6S90L1sKEPKbn2lLJF22Q==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -6073,8 +6073,8 @@ packages: awesome-qr: optional: true - '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.257': - resolution: {integrity: sha512-sWqG2nrjkyRPsr8elgNTdzEP7glSt5D9LbB8f4AT5nZmX48PIa31jXntvawIaVdQkpGm1TN1ZBXez+Or2/W0/g==} + '@sphereon/oid4vci-issuer@0.16.1-next.339': + resolution: {integrity: sha512-1iGdjtle4KjzqEdYL7CLG7lijwPGebagkksan6C7FA5NlSUjnS8jUt9CElrHZY/pbznCVh+qfr/dBVbhl6uuUg==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -8177,6 +8177,9 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dcql@0.2.19: + resolution: {integrity: sha512-/EvT8tArlg8zFsTQbRn6PijfeQ3nUwuEeCRDpptWcYqE8Wyt8J9Sb44gMPFzVCoIEb3R0M7Hl+XWkUMobC8jXQ==} + debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -13302,6 +13305,14 @@ packages: typescript: optional: true + valibot@1.0.0-beta.8: + resolution: {integrity: sha512-OPAwJZtowb0j91b+bd77+ny7D1VVzsCzD7Jl9waLUlMprTsfI9Y3HHbW3hAQD7wKDKHsmGEesuiYWaYvcZL2wg==} + peerDependencies: + typescript: 5.6.3 + peerDependenciesMeta: + typescript: + optional: true + valid-url@1.0.9: resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} @@ -16990,11 +17001,11 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@sphereon/did-auth-siop-adapter@0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop-adapter@0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3)': dependencies: - '@sphereon/did-auth-siop': 0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3) + '@sphereon/did-auth-siop': 0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3) '@sphereon/did-uni-client': 0.6.3(encoding@0.1.13) - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 + '@sphereon/oid4vc-common': 0.16.1-next.339 '@sphereon/wellknown-dids-client': 0.1.3(encoding@0.1.13) did-jwt: 6.11.6(patch_hash=afqywxnnjnsy6hwgax66dyyiey) did-resolver: 4.1.0 @@ -17003,15 +17014,16 @@ snapshots: - supports-color - typescript - '@sphereon/did-auth-siop@0.16.1-feature.SPRIND.89.257(encoding@0.1.13)(typescript@5.6.3)': + '@sphereon/did-auth-siop@0.16.1-next.339(encoding@0.1.13)(typescript@5.6.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@sphereon/jarm': 0.16.1-feature.SPRIND.89.257(typescript@5.6.3) - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 + '@sphereon/jarm': 0.16.1-next.339(typescript@5.6.3) + '@sphereon/oid4vc-common': 0.16.1-next.339 '@sphereon/pex': 5.0.0-unstable.28 '@sphereon/pex-models': 2.3.2 '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 4.0.0(encoding@0.1.13) + dcql: 0.2.19(typescript@5.6.3) debug: 4.3.7 events: 3.3.0 jwt-decode: 4.0.0 @@ -17068,9 +17080,9 @@ snapshots: react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1) uint8arrays: 3.1.1 - '@sphereon/jarm@0.16.1-feature.SPRIND.89.257(typescript@5.6.3)': + '@sphereon/jarm@0.16.1-next.339(typescript@5.6.3)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 + '@sphereon/oid4vc-common': 0.16.1-next.339 valibot: 0.42.1(typescript@5.6.3) transitivePeerDependencies: - typescript @@ -17094,7 +17106,7 @@ snapshots: - encoding - typescript - '@sphereon/oid4vc-common@0.16.1-feature.SPRIND.89.257': + '@sphereon/oid4vc-common@0.16.1-next.339': dependencies: '@sphereon/ssi-types': link:packages/ssi-types jwt-decode: 4.0.0 @@ -17102,10 +17114,10 @@ snapshots: uint8arrays: 3.1.1 uuid: 9.0.1 - '@sphereon/oid4vci-client@0.16.1-feature.SPRIND.89.257(encoding@0.1.13)': + '@sphereon/oid4vci-client@0.16.1-next.339(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-next.339 + '@sphereon/oid4vci-common': 0.16.1-next.339(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17113,9 +17125,9 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-common@0.16.1-feature.SPRIND.89.257(encoding@0.1.13)': + '@sphereon/oid4vci-common@0.16.1-next.339(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 + '@sphereon/oid4vc-common': 0.16.1-next.339 '@sphereon/ssi-types': link:packages/ssi-types cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 @@ -17126,11 +17138,11 @@ snapshots: - encoding - supports-color - '@sphereon/oid4vci-issuer-server@0.16.1-feature.SPRIND.89.257(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': + '@sphereon/oid4vci-issuer-server@0.16.1-next.339(@noble/hashes@1.6.1)(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) - '@sphereon/oid4vci-issuer': 0.16.1-feature.SPRIND.89.257(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-next.339 + '@sphereon/oid4vci-common': 0.16.1-next.339(encoding@0.1.13) + '@sphereon/oid4vci-issuer': 0.16.1-next.339(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13) '@sphereon/ssi-express-support': 0.30.2-feature.mdoc.funke2.367(@noble/hashes@1.6.1)(passport-azure-ad@4.3.5)(passport-http-bearer@1.0.1) '@sphereon/ssi-types': link:packages/ssi-types body-parser: 1.20.3 @@ -17149,10 +17161,10 @@ snapshots: - passport-http-bearer - supports-color - '@sphereon/oid4vci-issuer@0.16.1-feature.SPRIND.89.257(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': + '@sphereon/oid4vci-issuer@0.16.1-next.339(awesome-qr@2.1.5-rc.0(encoding@0.1.13))(encoding@0.1.13)': dependencies: - '@sphereon/oid4vc-common': 0.16.1-feature.SPRIND.89.257 - '@sphereon/oid4vci-common': 0.16.1-feature.SPRIND.89.257(encoding@0.1.13) + '@sphereon/oid4vc-common': 0.16.1-next.339 + '@sphereon/oid4vci-common': 0.16.1-next.339(encoding@0.1.13) '@sphereon/ssi-types': link:packages/ssi-types uuid: 9.0.1 optionalDependencies: @@ -20729,6 +20741,12 @@ snapshots: dayjs@1.11.13: {} + dcql@0.2.19(typescript@5.6.3): + dependencies: + valibot: 1.0.0-beta.8(typescript@5.6.3) + transitivePeerDependencies: + - typescript + debug@4.3.7: dependencies: ms: 2.1.3 @@ -27165,6 +27183,10 @@ snapshots: optionalDependencies: typescript: 5.6.3 + valibot@1.0.0-beta.8(typescript@5.6.3): + optionalDependencies: + typescript: 5.6.3 + valid-url@1.0.9: {} validate-npm-package-license@3.0.4: