@sphereon/ssi-sdk.oid4vci-holder 0.34.1-feature.merge.crypto.extensions.modules.39 → 0.34.1-fix.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk.oid4vci-holder",
3
- "version": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
3
+ "version": "0.34.1-fix.79+d10eff80",
4
4
  "source": "src/index.ts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -26,40 +26,41 @@
26
26
  "build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json"
27
27
  },
28
28
  "dependencies": {
29
- "@sphereon/did-auth-siop": "0.19.1-next.2",
29
+ "@sphereon/did-auth-siop": "0.19.1-feature.DIIPv4.86",
30
30
  "@sphereon/kmp-mdoc-core": "0.2.0-SNAPSHOT.26",
31
- "@sphereon/oid4vci-client": "0.19.1-next.2",
32
- "@sphereon/oid4vci-common": "0.19.1-next.2",
33
- "@sphereon/ssi-sdk-ext.did-utils": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
34
- "@sphereon/ssi-sdk-ext.identifier-resolution": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
35
- "@sphereon/ssi-sdk-ext.jwt-service": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
36
- "@sphereon/ssi-sdk-ext.key-utils": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
37
- "@sphereon/ssi-sdk.contact-manager": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
38
- "@sphereon/ssi-sdk.core": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
39
- "@sphereon/ssi-sdk.credential-store": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
40
- "@sphereon/ssi-sdk.credential-validation": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
41
- "@sphereon/ssi-sdk.data-store": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
42
- "@sphereon/ssi-sdk.issuance-branding": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
43
- "@sphereon/ssi-sdk.mdl-mdoc": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
44
- "@sphereon/ssi-sdk.oidf-client": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
45
- "@sphereon/ssi-sdk.sd-jwt": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
46
- "@sphereon/ssi-sdk.siopv2-oid4vp-common": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
47
- "@sphereon/ssi-sdk.siopv2-oid4vp-op-auth": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
48
- "@sphereon/ssi-sdk.xstate-machine-persistence": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
49
- "@sphereon/ssi-types": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
31
+ "@sphereon/oid4vci-client": "0.19.1-feature.DIIPv4.86",
32
+ "@sphereon/oid4vci-common": "0.19.1-feature.DIIPv4.86",
33
+ "@sphereon/ssi-sdk-ext.did-utils": "0.34.1-fix.79+d10eff80",
34
+ "@sphereon/ssi-sdk-ext.identifier-resolution": "0.34.1-fix.79+d10eff80",
35
+ "@sphereon/ssi-sdk-ext.jwt-service": "0.34.1-fix.79+d10eff80",
36
+ "@sphereon/ssi-sdk-ext.key-utils": "0.34.1-fix.79+d10eff80",
37
+ "@sphereon/ssi-sdk.contact-manager": "0.34.1-fix.79+d10eff80",
38
+ "@sphereon/ssi-sdk.core": "0.34.1-fix.79+d10eff80",
39
+ "@sphereon/ssi-sdk.credential-store": "0.34.1-fix.79+d10eff80",
40
+ "@sphereon/ssi-sdk.credential-validation": "0.34.1-fix.79+d10eff80",
41
+ "@sphereon/ssi-sdk.data-store": "0.34.1-fix.79+d10eff80",
42
+ "@sphereon/ssi-sdk.issuance-branding": "0.34.1-fix.79+d10eff80",
43
+ "@sphereon/ssi-sdk.mdl-mdoc": "0.34.1-fix.79+d10eff80",
44
+ "@sphereon/ssi-sdk.oidf-client": "0.34.1-fix.79+d10eff80",
45
+ "@sphereon/ssi-sdk.sd-jwt": "0.34.1-fix.79+d10eff80",
46
+ "@sphereon/ssi-sdk.siopv2-oid4vp-common": "0.34.1-fix.79+d10eff80",
47
+ "@sphereon/ssi-sdk.siopv2-oid4vp-op-auth": "0.34.1-fix.79+d10eff80",
48
+ "@sphereon/ssi-sdk.xstate-machine-persistence": "0.34.1-fix.79+d10eff80",
49
+ "@sphereon/ssi-types": "0.34.1-fix.79+d10eff80",
50
50
  "@veramo/core": "4.2.0",
51
51
  "@veramo/data-store": "4.2.0",
52
52
  "@veramo/utils": "4.2.0",
53
53
  "ajv": "^8.17.1",
54
54
  "ajv-formats": "^3.0.1",
55
+ "dcql": "1.0.1",
55
56
  "i18n-js": "^3.9.2",
56
57
  "lodash.memoize": "^4.1.2",
57
58
  "uuid": "^9.0.1",
58
59
  "xstate": "^4.38.3"
59
60
  },
60
61
  "devDependencies": {
61
- "@sphereon/oid4vc-common": "0.19.1-next.2",
62
- "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.34.1-feature.merge.crypto.extensions.modules.39+dea3b6de",
62
+ "@sphereon/oid4vc-common": "0.19.1-feature.DIIPv4.86",
63
+ "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.34.1-fix.79+d10eff80",
63
64
  "@sphereon/ssi-sdk.siopv2-oid4vp-common": "workspace:*",
64
65
  "@types/i18n-js": "^3.8.9",
65
66
  "@types/lodash.memoize": "^4.1.9",
@@ -89,5 +90,5 @@
89
90
  "OID4VCI",
90
91
  "State Machine"
91
92
  ],
92
- "gitHead": "dea3b6de7ecd726e67ce100337fba2ea968500af"
93
+ "gitHead": "d10eff8075537d257b9ec2188eed2c60315a5ce7"
93
94
  }
@@ -4,8 +4,8 @@ import {
4
4
  AuthorizationRequestOpts,
5
5
  AuthorizationServerClientOpts,
6
6
  AuthorizationServerOpts,
7
- CredentialConfigurationSupportedJwtVcJsonLdAndLdpVcV1_0_13,
8
- CredentialDefinitionJwtVcJsonLdAndLdpVcV1_0_13,
7
+ CredentialConfigurationSupportedJwtVcJsonLdAndLdpVcV1_0_15,
8
+ CredentialDefinitionJwtVcJsonLdAndLdpVcV1_0_15,
9
9
  CredentialOfferRequestWithBaseUrl,
10
10
  DefaultURISchemes,
11
11
  EndpointMetadataResult,
@@ -30,6 +30,7 @@ import {
30
30
  } from '@sphereon/ssi-sdk-ext.identifier-resolution'
31
31
  import { IJwtService, JwsHeader } from '@sphereon/ssi-sdk-ext.jwt-service'
32
32
  import { signatureAlgorithmFromKey } from '@sphereon/ssi-sdk-ext.key-utils'
33
+ import { defaultHasher } from '@sphereon/ssi-sdk.core'
33
34
  import {
34
35
  ConnectionType,
35
36
  CorrelationIdentifierType,
@@ -54,7 +55,6 @@ import {
54
55
  JoseSignatureAlgorithmString,
55
56
  JwtDecodedVerifiableCredential,
56
57
  Loggers,
57
- OriginalVerifiableCredential,
58
58
  parseDid,
59
59
  SdJwtDecodedVerifiableCredentialPayload,
60
60
  WrappedW3CVerifiableCredential,
@@ -73,6 +73,19 @@ import { asArray, computeEntryHash } from '@veramo/utils'
73
73
  import { decodeJWT } from 'did-jwt'
74
74
  import { v4 as uuidv4 } from 'uuid'
75
75
  import { OID4VCIMachine } from '../machines/oid4vciMachine'
76
+ import {
77
+ extractCredentialFromResponse,
78
+ getBasicIssuerLocaleBranding,
79
+ getCredentialBranding,
80
+ getCredentialConfigsSupportedMerged,
81
+ getIdentifierOpts,
82
+ getIssuanceOpts,
83
+ mapCredentialToAccept,
84
+ selectCredentialLocaleBranding,
85
+ startFirstPartApplicationMachine,
86
+ verifyCredentialToAccept,
87
+ } from '../services/OID4VCIHolderService'
88
+ import 'cross-fetch/polyfill'
76
89
  import {
77
90
  AddContactIdentityArgs,
78
91
  AssertValidCredentialsArgs,
@@ -111,19 +124,6 @@ import {
111
124
  VerifyEBSICredentialIssuerArgs,
112
125
  VerifyEBSICredentialIssuerResult,
113
126
  } from '../types/IOID4VCIHolder'
114
- import {
115
- getBasicIssuerLocaleBranding,
116
- getCredentialBranding,
117
- getCredentialConfigsSupportedMerged,
118
- getIdentifierOpts,
119
- getIssuanceOpts,
120
- mapCredentialToAccept,
121
- selectCredentialLocaleBranding,
122
- startFirstPartApplicationMachine,
123
- verifyCredentialToAccept,
124
- } from '../services/OID4VCIHolderService'
125
- import 'cross-fetch/polyfill'
126
- import { defaultHasher } from '@sphereon/ssi-sdk.core'
127
127
 
128
128
  /**
129
129
  * {@inheritDoc IOID4VCIHolder}
@@ -151,7 +151,7 @@ export function signCallback(
151
151
  context: IAgentContext<IKeyManager & IDIDManager & IResolver & IIdentifierResolution & IJwtService>,
152
152
  nonce?: string,
153
153
  ) {
154
- return async (jwt: Jwt, kid?: string) => {
154
+ return async (jwt: Jwt, kid?: string, noIssPayloadUpdate?: boolean) => {
155
155
  let resolution = await context.agent.identifierManagedGet(identifier)
156
156
  const jwk = jwt.header.jwk ?? (resolution.method === 'jwk' ? resolution.jwk : undefined)
157
157
  if (!resolution.issuer && !jwt.payload.iss) {
@@ -170,7 +170,7 @@ export function signCallback(
170
170
  }
171
171
  return (
172
172
  await context.agent.jwtCreateJwsCompactSignature({
173
- issuer: { ...resolution, noIssPayloadUpdate: false },
173
+ issuer: { ...resolution, noIssPayloadUpdate: noIssPayloadUpdate ?? false },
174
174
  protectedHeader: header,
175
175
  payload,
176
176
  })
@@ -229,7 +229,7 @@ export class OID4VCIHolder implements IAgentPlugin {
229
229
  oid4vciHolderStoreIssuerBranding: this.oid4vciHolderStoreIssuerBranding.bind(this),
230
230
  }
231
231
 
232
- private readonly vcFormatPreferences: Array<string> = ['vc+sd-jwt', 'mso_mdoc', 'jwt_vc_json', 'jwt_vc', 'ldp_vc']
232
+ private readonly vcFormatPreferences: Array<string> = ['dc+sd-jwt', 'vc+sd-jwt', 'mso_mdoc', 'jwt_vc_json', 'jwt_vc', 'ldp_vc']
233
233
  private readonly jsonldCryptographicSuitePreferences: Array<string> = [
234
234
  'Ed25519Signature2018',
235
235
  'EcdsaSecp256k1Signature2019',
@@ -939,7 +939,8 @@ export class OID4VCIHolder implements IAgentPlugin {
939
939
  ? 'credential_accepted_holder_signed'
940
940
  : 'credential_deleted_holder_signed'
941
941
  logger.log(`Subject issuance/signing will be used, with event`, event)
942
- const issuerVC = mappedCredentialToAccept.credentialToAccept.credentialResponse.credential as OriginalVerifiableCredential
942
+
943
+ const issuerVC = extractCredentialFromResponse(mappedCredentialToAccept.credentialToAccept.credentialResponse)
943
944
  const wrappedIssuerVC = CredentialMapper.toWrappedVerifiableCredential(issuerVC, { hasher: this.hasher ?? defaultHasher })
944
945
  console.log(`Wrapped VC: ${wrappedIssuerVC.type}, ${wrappedIssuerVC.format}`)
945
946
  // We will use the subject of the VCI Issuer (the holder, as the issuer of the new credential, so the below is not a mistake!)
@@ -1169,9 +1170,9 @@ export class OID4VCIHolder implements IAgentPlugin {
1169
1170
  return undefined
1170
1171
  }
1171
1172
 
1172
- private getCredentialDefinition(issuanceOpt: IssuanceOpts): CredentialDefinitionJwtVcJsonLdAndLdpVcV1_0_13 | undefined {
1173
+ private getCredentialDefinition(issuanceOpt: IssuanceOpts): CredentialDefinitionJwtVcJsonLdAndLdpVcV1_0_15 | undefined {
1173
1174
  if (issuanceOpt.format == 'ldp_vc' || issuanceOpt.format == 'jwt_vc_json-ld') {
1174
- return (issuanceOpt as CredentialConfigurationSupportedJwtVcJsonLdAndLdpVcV1_0_13).credential_definition
1175
+ return (issuanceOpt as CredentialConfigurationSupportedJwtVcJsonLdAndLdpVcV1_0_15).credential_definition
1175
1176
  }
1176
1177
  return undefined
1177
1178
  }
@@ -1,16 +1,15 @@
1
1
  import { LOG } from '@sphereon/oid4vci-client'
2
2
  import {
3
+ AuthorizationChallengeCodeResponse,
3
4
  CredentialConfigurationSupported,
4
- CredentialSupportedSdJwtVc,
5
- CredentialConfigurationSupportedSdJwtVcV1_0_13,
6
- CredentialOfferFormatV1_0_11,
5
+ CredentialConfigurationSupportedSdJwtVcV1_0_15,
7
6
  CredentialResponse,
7
+ CredentialResponseV1_0_15,
8
+ CredentialSupportedSdJwtVc,
8
9
  getSupportedCredentials,
9
10
  getTypesFromCredentialSupported,
10
11
  getTypesFromObject,
11
12
  MetadataDisplay,
12
- OpenId4VCIVersion,
13
- AuthorizationChallengeCodeResponse,
14
13
  } from '@sphereon/oid4vci-common'
15
14
  import { KeyUse } from '@sphereon/ssi-sdk-ext.did-resolver-jwk'
16
15
  import { getOrCreatePrimaryIdentifier, SupportedDidMethodEnum } from '@sphereon/ssi-sdk-ext.did-utils'
@@ -23,6 +22,7 @@ import {
23
22
  managedIdentifierToJwk,
24
23
  } from '@sphereon/ssi-sdk-ext.identifier-resolution'
25
24
  import { keyTypeFromCryptographicSuite } from '@sphereon/ssi-sdk-ext.key-utils'
25
+ import { defaultHasher } from '@sphereon/ssi-sdk.core'
26
26
  import { IBasicCredentialLocaleBranding, IBasicIssuerLocaleBranding } from '@sphereon/ssi-sdk.data-store'
27
27
  import {
28
28
  CredentialMapper,
@@ -40,8 +40,12 @@ import {
40
40
  } from '@sphereon/ssi-types'
41
41
  import { asArray } from '@veramo/utils'
42
42
  import { translate } from '../localization/Localization'
43
+ import { FirstPartyMachine } from '../machines/firstPartyMachine'
44
+ import { issuerLocaleBrandingFrom, oid4vciGetCredentialBrandingFrom, sdJwtGetCredentialBrandingFrom } from '../mappers/OIDC4VCIBrandingMapper'
45
+ import { FirstPartyMachineState, FirstPartyMachineStateTypes } from '../types/FirstPartyMachine'
43
46
  import {
44
47
  DidAgents,
48
+ GetBasicIssuerLocaleBrandingArgs,
45
49
  GetCredentialBrandingArgs,
46
50
  GetCredentialConfigsSupportedArgs,
47
51
  GetCredentialConfigsSupportedBySingleTypeOrIdArgs,
@@ -49,22 +53,17 @@ import {
49
53
  GetIssuanceCryptoSuiteArgs,
50
54
  GetIssuanceDidMethodArgs,
51
55
  GetIssuanceOptsArgs,
52
- GetBasicIssuerLocaleBrandingArgs,
53
56
  GetPreferredCredentialFormatsArgs,
54
57
  IssuanceOpts,
55
58
  MapCredentialToAcceptArgs,
56
59
  MappedCredentialToAccept,
57
60
  OID4VCIHolderEvent,
61
+ RequiredContext,
58
62
  SelectAppLocaleBrandingArgs,
63
+ StartFirstPartApplicationMachine,
59
64
  VerificationResult,
60
65
  VerifyCredentialToAcceptArgs,
61
- StartFirstPartApplicationMachine,
62
- RequiredContext,
63
66
  } from '../types/IOID4VCIHolder'
64
- import { oid4vciGetCredentialBrandingFrom, sdJwtGetCredentialBrandingFrom, issuerLocaleBrandingFrom } from '../mappers/OIDC4VCIBrandingMapper'
65
- import { FirstPartyMachine } from '../machines/firstPartyMachine'
66
- import { FirstPartyMachineState, FirstPartyMachineStateTypes } from '../types/FirstPartyMachine'
67
- import { defaultHasher } from '@sphereon/ssi-sdk.core'
68
67
 
69
68
  export const getCredentialBranding = async (args: GetCredentialBrandingArgs): Promise<Record<string, Array<IBasicCredentialLocaleBranding>>> => {
70
69
  const { credentialsSupported, context } = args
@@ -72,8 +71,8 @@ export const getCredentialBranding = async (args: GetCredentialBrandingArgs): Pr
72
71
  await Promise.all(
73
72
  Object.entries(credentialsSupported).map(async ([configId, credentialsConfigSupported]): Promise<void> => {
74
73
  let sdJwtTypeMetadata: SdJwtTypeMetadata | undefined
75
- if (credentialsConfigSupported.format === 'vc+sd-jwt') {
76
- const vct = (<CredentialSupportedSdJwtVc | CredentialConfigurationSupportedSdJwtVcV1_0_13>credentialsConfigSupported).vct
74
+ if (credentialsConfigSupported.format === 'dc+sd-jwt') {
75
+ const vct = (<CredentialSupportedSdJwtVc | CredentialConfigurationSupportedSdJwtVcV1_0_15>credentialsConfigSupported).vct
77
76
  if (vct.startsWith('http')) {
78
77
  try {
79
78
  sdJwtTypeMetadata = await context.agent.fetchSdJwtTypeMetadataFromVctUrl({ vct })
@@ -153,10 +152,7 @@ export const selectCredentialLocaleBranding = async (
153
152
  export const verifyCredentialToAccept = async (args: VerifyCredentialToAcceptArgs): Promise<VerificationResult> => {
154
153
  const { mappedCredential, hasher, onVerifyEBSICredentialIssuer, schemaValidation, context } = args
155
154
 
156
- const credential = mappedCredential.credentialToAccept.credentialResponse.credential as OriginalVerifiableCredential
157
- if (!credential) {
158
- return Promise.reject(Error('No credential found in credential response'))
159
- }
155
+ const credential = extractCredentialFromResponse(mappedCredential.credentialToAccept.credentialResponse)
160
156
 
161
157
  const wrappedVC = CredentialMapper.toWrappedVerifiableCredential(credential, { hasher: hasher ?? defaultHasher })
162
158
  if (
@@ -205,11 +201,7 @@ export const verifyCredentialToAccept = async (args: VerifyCredentialToAcceptArg
205
201
  export const mapCredentialToAccept = async (args: MapCredentialToAcceptArgs): Promise<MappedCredentialToAccept> => {
206
202
  const { credentialToAccept, hasher } = args
207
203
 
208
- const credentialResponse: CredentialResponse = credentialToAccept.credentialResponse
209
- const verifiableCredential: W3CVerifiableCredential | undefined = credentialResponse.credential
210
- if (!verifiableCredential) {
211
- return Promise.reject(Error('No credential found in credential response'))
212
- }
204
+ const verifiableCredential = extractCredentialFromResponse(credentialToAccept.credentialResponse) as W3CVerifiableCredential
213
205
 
214
206
  const wrappedVerifiableCredential: WrappedVerifiableCredential = CredentialMapper.toWrappedVerifiableCredential(
215
207
  verifiableCredential as OriginalVerifiableCredential,
@@ -240,6 +232,7 @@ export const mapCredentialToAccept = async (args: MapCredentialToAcceptArgs): Pr
240
232
  ? uniformVerifiableCredential.decodedPayload.iss
241
233
  : uniformVerifiableCredential.issuer.id
242
234
 
235
+ const credentialResponse = credentialToAccept.credentialResponse as CredentialResponseV1_0_15
243
236
  return {
244
237
  correlationId,
245
238
  credentialToAccept,
@@ -250,6 +243,27 @@ export const mapCredentialToAccept = async (args: MapCredentialToAcceptArgs): Pr
250
243
  }
251
244
  }
252
245
 
246
+ export const extractCredentialFromResponse = (credentialResponse: CredentialResponse): OriginalVerifiableCredential => {
247
+ let credential: OriginalVerifiableCredential | undefined
248
+
249
+ if ('credential' in credentialResponse) {
250
+ credential = credentialResponse.credential as OriginalVerifiableCredential
251
+ } else if (
252
+ 'credentials' in credentialResponse &&
253
+ credentialResponse.credentials &&
254
+ Array.isArray(credentialResponse.credentials) &&
255
+ credentialResponse.credentials.length > 0
256
+ ) {
257
+ credential = credentialResponse.credentials[0].credential as OriginalVerifiableCredential // FIXME SSISDK-13 (no multi-credential support yet)
258
+ }
259
+
260
+ if (!credential) {
261
+ throw new Error('No credential found in credential response')
262
+ }
263
+
264
+ return credential
265
+ }
266
+
253
267
  export const getIdentifierOpts = async (args: GetIdentifierArgs): Promise<ManagedIdentifierResult> => {
254
268
  const { issuanceOpt, context } = args
255
269
  const { identifier: identifierArg } = issuanceOpt
@@ -370,7 +384,7 @@ export const getCredentialConfigsSupportedBySingleTypeOrId = async (
370
384
  }
371
385
 
372
386
  if (configurationId) {
373
- const allSupported = client.getCredentialsSupported(false)
387
+ const allSupported = client.getCredentialsSupported(format)
374
388
  return Object.fromEntries(
375
389
  Object.entries(allSupported).filter(
376
390
  ([id, supported]) => id === configurationId || supported.id === configurationId || createIdFromTypes(supported) === configurationId,
@@ -378,29 +392,15 @@ export const getCredentialConfigsSupportedBySingleTypeOrId = async (
378
392
  )
379
393
  }
380
394
 
381
- if (!types && !client.credentialOffer) {
382
- return Promise.reject(Error('openID4VCIClient has no credentialOffer and no types where provided'))
383
- /*} else if (!format && !client.credentialOffer) {
384
- return Promise.reject(Error('openID4VCIClient has no credentialOffer and no formats where provided'))*/
395
+ if (!client.credentialOffer) {
396
+ return Promise.reject(Error('openID4VCIClient has no credentialOffer'))
385
397
  }
386
- // We should always have a credential offer at this point given the above
387
- if (!Array.isArray(format) && client.credentialOffer) {
388
- if (
389
- client.version() > OpenId4VCIVersion.VER_1_0_09 &&
390
- typeof client.credentialOffer.credential_offer === 'object' &&
391
- 'credentials' in client.credentialOffer.credential_offer
392
- ) {
393
- format = client.credentialOffer.credential_offer.credentials
394
- .filter((cred: CredentialOfferFormatV1_0_11 | string) => typeof cred !== 'string')
395
- .map((cred: CredentialOfferFormatV1_0_11 | string) => (cred as CredentialOfferFormatV1_0_11).format)
396
- if (format?.length === 0) {
397
- format = undefined // Otherwise we would match nothing
398
- }
399
- }
398
+ if (!types) {
399
+ return Promise.reject(Error('openID4VCIClient has no types'))
400
400
  }
401
401
 
402
402
  const offerSupported = getSupportedCredentials({
403
- types: types ? [types] : client.getCredentialOfferTypes(),
403
+ types: [types],
404
404
  format,
405
405
  version: client.version(),
406
406
  issuerMetadata: client.endpointMetadata.credentialIssuerMetadata,
@@ -580,7 +580,8 @@ export const getIssuanceCryptoSuite = async (opts: GetIssuanceCryptoSuiteArgs):
580
580
  case 'jwt':
581
581
  case 'jwt_vc_json':
582
582
  case 'jwt_vc':
583
- case 'vc+sd-jwt':
583
+ //case 'vc+sd-jwt': FIXME re-enable for vcdm2
584
+ case 'dc+sd-jwt':
584
585
  case 'mso_mdoc': {
585
586
  const supportedPreferences: Array<JoseSignatureAlgorithm | JoseSignatureAlgorithmString> = jwtCryptographicSuitePreferences.filter(
586
587
  (suite: JoseSignatureAlgorithm | JoseSignatureAlgorithmString) => signing_algs_supported.includes(suite),
@@ -1,10 +1,11 @@
1
- import { BaseActionObject, Interpreter, ResolveTypegenMeta, ServiceMap, State, StateMachine, StatesConfig, TypegenDisabled } from 'xstate'
1
+ import { RPRegistrationMetadataPayload } from '@sphereon/did-auth-siop'
2
2
  import { OpenID4VCIClientState } from '@sphereon/oid4vci-client'
3
- import { DidAuthConfig, Party } from '@sphereon/ssi-sdk.data-store'
4
- import { PresentationDefinitionWithLocation, RPRegistrationMetadataPayload } from '@sphereon/did-auth-siop'
5
- import { UniqueDigitalCredential } from '@sphereon/ssi-sdk.credential-store'
6
3
  import { AuthorizationChallengeCodeResponse } from '@sphereon/oid4vci-common'
4
+ import { UniqueDigitalCredential } from '@sphereon/ssi-sdk.credential-store'
5
+ import { DidAuthConfig, Party } from '@sphereon/ssi-sdk.data-store'
7
6
  import { IIdentifier } from '@veramo/core'
7
+ import { DcqlQuery } from 'dcql'
8
+ import { BaseActionObject, Interpreter, ResolveTypegenMeta, ServiceMap, State, StateMachine, StatesConfig, TypegenDisabled } from 'xstate'
8
9
  import { ErrorDetails, RequiredContext } from './IOID4VCIHolder'
9
10
 
10
11
  export enum FirstPartyMachineStateTypes {
@@ -149,7 +150,7 @@ export type SiopV2AuthorizationRequestData = {
149
150
  clientIdScheme?: string
150
151
  clientId?: string
151
152
  entityId?: string
152
- presentationDefinitions?: PresentationDefinitionWithLocation[]
153
+ dcqlQuery: DcqlQuery
153
154
  }
154
155
 
155
156
  export type FirstPartyMachineNavigationArgs = {
@@ -7,6 +7,7 @@ import {
7
7
  CredentialConfigurationSupported,
8
8
  CredentialOfferRequestWithBaseUrl,
9
9
  CredentialResponse,
10
+ CredentialResponseV1_0_15,
10
11
  CredentialsSupportedDisplay,
11
12
  EndpointMetadataResult,
12
13
  ExperimentalSubjectIssuance,
@@ -377,6 +378,7 @@ export enum OID4VCIMachineGuards {
377
378
  requirePinGuard = 'oid4vciRequirePinGuard',
378
379
  requireAuthorizationGuard = 'oid4vciRequireAuthorizationGuard',
379
380
  noAuthorizationGuard = 'oid4vciNoAuthorizationGuard',
381
+ hasNonceEndpointGuard = 'oid4vciHasNonceEndpointGuard ',
380
382
  hasAuthorizationResponse = 'oid4vciHasAuthorizationResponse',
381
383
  hasNoContactIdentityGuard = 'oid4vciHasNoContactIdentityGuard',
382
384
  verificationCodeGuard = 'oid4vciVerificationCodeGuard',
@@ -501,7 +503,7 @@ export type CredentialToAccept = {
501
503
  id?: string
502
504
  types: string[]
503
505
  issuanceOpt: IssuanceOpts
504
- credentialResponse: CredentialResponse
506
+ credentialResponse: CredentialResponseV1_0_15 | CredentialResponse
505
507
  }
506
508
 
507
509
  export type GetCredentialConfigsSupportedArgs = {