@sphereon/ssi-sdk.oid4vci-holder 0.34.1-feature.SSISDK.47.42 → 0.34.1-feature.SSISDK.50.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +407 -397
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -6
- package/dist/index.d.ts +9 -6
- package/dist/index.js +516 -506
- package/dist/index.js.map +1 -1
- package/package.json +25 -24
- package/src/agent/OID4VCIHolder.ts +24 -23
- package/src/services/OID4VCIHolderService.ts +38 -21
- package/src/types/FirstPartyMachine.ts +3 -2
- package/src/types/IOID4VCIHolder.ts +3 -1
package/dist/index.cjs
CHANGED
|
@@ -100,6 +100,7 @@ __export(index_exports, {
|
|
|
100
100
|
RequestType: () => RequestType,
|
|
101
101
|
SupportedLanguage: () => SupportedLanguage,
|
|
102
102
|
createConfig: () => createConfig,
|
|
103
|
+
extractCredentialFromResponse: () => extractCredentialFromResponse,
|
|
103
104
|
getBasicIssuerLocaleBranding: () => getBasicIssuerLocaleBranding,
|
|
104
105
|
getCredentialBranding: () => getCredentialBranding,
|
|
105
106
|
getCredentialConfigsBasedOnFormatPref: () => getCredentialConfigsBasedOnFormatPref,
|
|
@@ -139,7 +140,8 @@ var import_oid4vci_common4 = require("@sphereon/oid4vci-common");
|
|
|
139
140
|
var import_ssi_sdk_ext5 = require("@sphereon/ssi-sdk-ext.did-utils");
|
|
140
141
|
var import_ssi_sdk_ext6 = require("@sphereon/ssi-sdk-ext.identifier-resolution");
|
|
141
142
|
var import_ssi_sdk_ext7 = require("@sphereon/ssi-sdk-ext.key-utils");
|
|
142
|
-
var import_ssi_sdk2 = require("@sphereon/ssi-sdk.
|
|
143
|
+
var import_ssi_sdk2 = require("@sphereon/ssi-sdk.core");
|
|
144
|
+
var import_ssi_sdk3 = require("@sphereon/ssi-sdk.data-store");
|
|
143
145
|
var import_ssi_types2 = require("@sphereon/ssi-types");
|
|
144
146
|
var import_utils2 = require("@veramo/utils");
|
|
145
147
|
var import_did_jwt = require("did-jwt");
|
|
@@ -154,18 +156,18 @@ var import_i18n_js = __toESM(require("i18n-js"), 1);
|
|
|
154
156
|
var import_lodash = __toESM(require("lodash.memoize"), 1);
|
|
155
157
|
|
|
156
158
|
// src/types/IOID4VCIHolder.ts
|
|
157
|
-
var OID4VCIHolderEvent = /* @__PURE__ */
|
|
159
|
+
var OID4VCIHolderEvent = /* @__PURE__ */ function(OID4VCIHolderEvent2) {
|
|
158
160
|
OID4VCIHolderEvent2["CONTACT_IDENTITY_CREATED"] = "contact_identity_created";
|
|
159
161
|
OID4VCIHolderEvent2["CREDENTIAL_STORED"] = "credential_stored";
|
|
160
162
|
OID4VCIHolderEvent2["IDENTIFIER_CREATED"] = "identifier_created";
|
|
161
163
|
return OID4VCIHolderEvent2;
|
|
162
|
-
}
|
|
163
|
-
var SupportedLanguage = /* @__PURE__ */
|
|
164
|
+
}({});
|
|
165
|
+
var SupportedLanguage = /* @__PURE__ */ function(SupportedLanguage2) {
|
|
164
166
|
SupportedLanguage2["ENGLISH"] = "en";
|
|
165
167
|
SupportedLanguage2["DUTCH"] = "nl";
|
|
166
168
|
return SupportedLanguage2;
|
|
167
|
-
}
|
|
168
|
-
var OID4VCIMachineStates = /* @__PURE__ */
|
|
169
|
+
}({});
|
|
170
|
+
var OID4VCIMachineStates = /* @__PURE__ */ function(OID4VCIMachineStates2) {
|
|
169
171
|
OID4VCIMachineStates2["start"] = "start";
|
|
170
172
|
OID4VCIMachineStates2["createCredentialsToSelectFrom"] = "createCredentialsToSelectFrom";
|
|
171
173
|
OID4VCIMachineStates2["getContact"] = "getContact";
|
|
@@ -196,18 +198,18 @@ var OID4VCIMachineStates = /* @__PURE__ */ (function(OID4VCIMachineStates2) {
|
|
|
196
198
|
OID4VCIMachineStates2["error"] = "error";
|
|
197
199
|
OID4VCIMachineStates2["done"] = "done";
|
|
198
200
|
return OID4VCIMachineStates2;
|
|
199
|
-
}
|
|
200
|
-
var OID4VCIMachineAddContactStates = /* @__PURE__ */
|
|
201
|
+
}({});
|
|
202
|
+
var OID4VCIMachineAddContactStates = /* @__PURE__ */ function(OID4VCIMachineAddContactStates2) {
|
|
201
203
|
OID4VCIMachineAddContactStates2["idle"] = "idle";
|
|
202
204
|
OID4VCIMachineAddContactStates2["next"] = "next";
|
|
203
205
|
return OID4VCIMachineAddContactStates2;
|
|
204
|
-
}
|
|
205
|
-
var OID4VCIMachineVerifyPinStates = /* @__PURE__ */
|
|
206
|
+
}({});
|
|
207
|
+
var OID4VCIMachineVerifyPinStates = /* @__PURE__ */ function(OID4VCIMachineVerifyPinStates2) {
|
|
206
208
|
OID4VCIMachineVerifyPinStates2["idle"] = "idle";
|
|
207
209
|
OID4VCIMachineVerifyPinStates2["next"] = "next";
|
|
208
210
|
return OID4VCIMachineVerifyPinStates2;
|
|
209
|
-
}
|
|
210
|
-
var OID4VCIMachineEvents = /* @__PURE__ */
|
|
211
|
+
}({});
|
|
212
|
+
var OID4VCIMachineEvents = /* @__PURE__ */ function(OID4VCIMachineEvents2) {
|
|
211
213
|
OID4VCIMachineEvents2["NEXT"] = "NEXT";
|
|
212
214
|
OID4VCIMachineEvents2["PREVIOUS"] = "PREVIOUS";
|
|
213
215
|
OID4VCIMachineEvents2["DECLINE"] = "DECLINE";
|
|
@@ -220,14 +222,15 @@ var OID4VCIMachineEvents = /* @__PURE__ */ (function(OID4VCIMachineEvents2) {
|
|
|
220
222
|
OID4VCIMachineEvents2["INVOKED_AUTHORIZATION_CODE_REQUEST"] = "INVOKED_AUTHORIZATION_CODE_REQUEST";
|
|
221
223
|
OID4VCIMachineEvents2["PROVIDE_AUTHORIZATION_CODE_RESPONSE"] = "PROVIDE_AUTHORIZATION_CODE_RESPONSE";
|
|
222
224
|
return OID4VCIMachineEvents2;
|
|
223
|
-
}
|
|
224
|
-
var OID4VCIMachineGuards = /* @__PURE__ */
|
|
225
|
+
}({});
|
|
226
|
+
var OID4VCIMachineGuards = /* @__PURE__ */ function(OID4VCIMachineGuards2) {
|
|
225
227
|
OID4VCIMachineGuards2["hasContactGuard"] = "oid4vciHasContactGuard";
|
|
226
228
|
OID4VCIMachineGuards2["hasNoContactGuard"] = "oid4vciHasNoContactGuard";
|
|
227
229
|
OID4VCIMachineGuards2["credentialsToSelectRequiredGuard"] = "oid4vciCredentialsToSelectRequiredGuard";
|
|
228
230
|
OID4VCIMachineGuards2["requirePinGuard"] = "oid4vciRequirePinGuard";
|
|
229
231
|
OID4VCIMachineGuards2["requireAuthorizationGuard"] = "oid4vciRequireAuthorizationGuard";
|
|
230
232
|
OID4VCIMachineGuards2["noAuthorizationGuard"] = "oid4vciNoAuthorizationGuard";
|
|
233
|
+
OID4VCIMachineGuards2["hasNonceEndpointGuard"] = "oid4vciHasNonceEndpointGuard ";
|
|
231
234
|
OID4VCIMachineGuards2["hasAuthorizationResponse"] = "oid4vciHasAuthorizationResponse";
|
|
232
235
|
OID4VCIMachineGuards2["hasNoContactIdentityGuard"] = "oid4vciHasNoContactIdentityGuard";
|
|
233
236
|
OID4VCIMachineGuards2["verificationCodeGuard"] = "oid4vciVerificationCodeGuard";
|
|
@@ -237,8 +240,8 @@ var OID4VCIMachineGuards = /* @__PURE__ */ (function(OID4VCIMachineGuards2) {
|
|
|
237
240
|
OID4VCIMachineGuards2["contactHasLowTrustGuard"] = "oid4vciContactHasLowTrustGuard";
|
|
238
241
|
OID4VCIMachineGuards2["isFirstPartyApplication"] = "oid4vciIsFirstPartyApplication";
|
|
239
242
|
return OID4VCIMachineGuards2;
|
|
240
|
-
}
|
|
241
|
-
var OID4VCIMachineServices = /* @__PURE__ */
|
|
243
|
+
}({});
|
|
244
|
+
var OID4VCIMachineServices = /* @__PURE__ */ function(OID4VCIMachineServices2) {
|
|
242
245
|
OID4VCIMachineServices2["start"] = "start";
|
|
243
246
|
OID4VCIMachineServices2["getContact"] = "getContact";
|
|
244
247
|
OID4VCIMachineServices2["getFederationTrust"] = "getFederationTrust";
|
|
@@ -253,17 +256,17 @@ var OID4VCIMachineServices = /* @__PURE__ */ (function(OID4VCIMachineServices2)
|
|
|
253
256
|
OID4VCIMachineServices2["storeCredentials"] = "storeCredentials";
|
|
254
257
|
OID4VCIMachineServices2["startFirstPartApplicationFlow"] = "startFirstPartApplicationFlow";
|
|
255
258
|
return OID4VCIMachineServices2;
|
|
256
|
-
}
|
|
257
|
-
var RequestType = /* @__PURE__ */
|
|
259
|
+
}({});
|
|
260
|
+
var RequestType = /* @__PURE__ */ function(RequestType2) {
|
|
258
261
|
RequestType2["OPENID_INITIATE_ISSUANCE"] = "openid-initiate-issuance";
|
|
259
262
|
RequestType2["OPENID_CREDENTIAL_OFFER"] = "openid-credential-offer";
|
|
260
263
|
RequestType2["URL"] = "URL";
|
|
261
264
|
return RequestType2;
|
|
262
|
-
}
|
|
263
|
-
var IdentifierAliasEnum = /* @__PURE__ */
|
|
265
|
+
}({});
|
|
266
|
+
var IdentifierAliasEnum = /* @__PURE__ */ function(IdentifierAliasEnum2) {
|
|
264
267
|
IdentifierAliasEnum2["PRIMARY"] = "primary";
|
|
265
268
|
return IdentifierAliasEnum2;
|
|
266
|
-
}
|
|
269
|
+
}({});
|
|
267
270
|
|
|
268
271
|
// src/localization/Localization.ts
|
|
269
272
|
var Localization = class Localization2 {
|
|
@@ -305,7 +308,7 @@ var Localization = class Localization2 {
|
|
|
305
308
|
var translate = Localization.translate;
|
|
306
309
|
|
|
307
310
|
// src/types/FirstPartyMachine.ts
|
|
308
|
-
var FirstPartyMachineStateTypes = /* @__PURE__ */
|
|
311
|
+
var FirstPartyMachineStateTypes = /* @__PURE__ */ function(FirstPartyMachineStateTypes2) {
|
|
309
312
|
FirstPartyMachineStateTypes2["sendAuthorizationChallengeRequest"] = "sendAuthorizationChallengeRequest";
|
|
310
313
|
FirstPartyMachineStateTypes2["sendAuthorizationResponse"] = "sendAuthorizationResponse";
|
|
311
314
|
FirstPartyMachineStateTypes2["selectCredentials"] = "selectCredentials";
|
|
@@ -316,21 +319,21 @@ var FirstPartyMachineStateTypes = /* @__PURE__ */ (function(FirstPartyMachineSta
|
|
|
316
319
|
FirstPartyMachineStateTypes2["aborted"] = "aborted";
|
|
317
320
|
FirstPartyMachineStateTypes2["declined"] = "declined";
|
|
318
321
|
return FirstPartyMachineStateTypes2;
|
|
319
|
-
}
|
|
320
|
-
var FirstPartyMachineServices = /* @__PURE__ */
|
|
322
|
+
}({});
|
|
323
|
+
var FirstPartyMachineServices = /* @__PURE__ */ function(FirstPartyMachineServices2) {
|
|
321
324
|
FirstPartyMachineServices2["sendAuthorizationChallengeRequest"] = "sendAuthorizationChallengeRequest";
|
|
322
325
|
FirstPartyMachineServices2["sendAuthorizationResponse"] = "sendAuthorizationResponse";
|
|
323
326
|
FirstPartyMachineServices2["createConfig"] = "createConfig";
|
|
324
327
|
FirstPartyMachineServices2["getSiopRequest"] = "getSiopRequest";
|
|
325
328
|
return FirstPartyMachineServices2;
|
|
326
|
-
}
|
|
327
|
-
var FirstPartyMachineEvents = /* @__PURE__ */
|
|
329
|
+
}({});
|
|
330
|
+
var FirstPartyMachineEvents = /* @__PURE__ */ function(FirstPartyMachineEvents2) {
|
|
328
331
|
FirstPartyMachineEvents2["NEXT"] = "NEXT";
|
|
329
332
|
FirstPartyMachineEvents2["PREVIOUS"] = "PREVIOUS";
|
|
330
333
|
FirstPartyMachineEvents2["DECLINE"] = "DECLINE";
|
|
331
334
|
FirstPartyMachineEvents2["SET_SELECTED_CREDENTIALS"] = "SET_SELECTED_CREDENTIALS";
|
|
332
335
|
return FirstPartyMachineEvents2;
|
|
333
|
-
}
|
|
336
|
+
}({});
|
|
334
337
|
|
|
335
338
|
// src/machines/oid4vciMachine.ts
|
|
336
339
|
var oid4vciHasNoContactGuard = /* @__PURE__ */ __name((_ctx, _event) => {
|
|
@@ -1060,271 +1063,10 @@ var import_ssi_sdk_ext = require("@sphereon/ssi-sdk-ext.did-resolver-jwk");
|
|
|
1060
1063
|
var import_ssi_sdk_ext2 = require("@sphereon/ssi-sdk-ext.did-utils");
|
|
1061
1064
|
var import_ssi_sdk_ext3 = require("@sphereon/ssi-sdk-ext.identifier-resolution");
|
|
1062
1065
|
var import_ssi_sdk_ext4 = require("@sphereon/ssi-sdk-ext.key-utils");
|
|
1066
|
+
var import_ssi_sdk = require("@sphereon/ssi-sdk.core");
|
|
1063
1067
|
var import_ssi_types = require("@sphereon/ssi-types");
|
|
1064
1068
|
var import_utils = require("@veramo/utils");
|
|
1065
1069
|
|
|
1066
|
-
// src/mappers/OIDC4VCIBrandingMapper.ts
|
|
1067
|
-
var oid4vciGetCredentialBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1068
|
-
const { credentialDisplay, issuerCredentialSubject } = args;
|
|
1069
|
-
return oid4vciCombineDisplayLocalesFrom({
|
|
1070
|
-
...issuerCredentialSubject && {
|
|
1071
|
-
issuerCredentialSubjectLocales: await oid4vciIssuerCredentialSubjectLocalesFrom({
|
|
1072
|
-
issuerCredentialSubject
|
|
1073
|
-
})
|
|
1074
|
-
},
|
|
1075
|
-
...credentialDisplay && {
|
|
1076
|
-
credentialDisplayLocales: await oid4vciCredentialDisplayLocalesFrom({
|
|
1077
|
-
credentialDisplay
|
|
1078
|
-
})
|
|
1079
|
-
}
|
|
1080
|
-
});
|
|
1081
|
-
}, "oid4vciGetCredentialBrandingFrom");
|
|
1082
|
-
var oid4vciCredentialDisplayLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1083
|
-
const { credentialDisplay } = args;
|
|
1084
|
-
return credentialDisplay.reduce((localeDisplays, display) => {
|
|
1085
|
-
const localeKey = display.locale || "";
|
|
1086
|
-
localeDisplays.set(localeKey, display);
|
|
1087
|
-
return localeDisplays;
|
|
1088
|
-
}, /* @__PURE__ */ new Map());
|
|
1089
|
-
}, "oid4vciCredentialDisplayLocalesFrom");
|
|
1090
|
-
var oid4vciIssuerCredentialSubjectLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1091
|
-
const { issuerCredentialSubject } = args;
|
|
1092
|
-
const localeClaims = /* @__PURE__ */ new Map();
|
|
1093
|
-
const processClaimObject = /* @__PURE__ */ __name((claim, parentKey = "") => {
|
|
1094
|
-
Object.entries(claim).forEach(([key, value]) => {
|
|
1095
|
-
if (key === "mandatory" || key === "value_type") {
|
|
1096
|
-
return;
|
|
1097
|
-
}
|
|
1098
|
-
if (key === "display" && Array.isArray(value)) {
|
|
1099
|
-
value.forEach(({ name, locale = "" }) => {
|
|
1100
|
-
if (!name) {
|
|
1101
|
-
return;
|
|
1102
|
-
}
|
|
1103
|
-
if (!localeClaims.has(locale)) {
|
|
1104
|
-
localeClaims.set(locale, []);
|
|
1105
|
-
}
|
|
1106
|
-
localeClaims.get(locale).push({
|
|
1107
|
-
key: parentKey,
|
|
1108
|
-
name
|
|
1109
|
-
});
|
|
1110
|
-
});
|
|
1111
|
-
} else if (typeof value === "object" && value !== null) {
|
|
1112
|
-
processClaimObject(value, parentKey ? `${parentKey}.${key}` : key);
|
|
1113
|
-
}
|
|
1114
|
-
});
|
|
1115
|
-
}, "processClaimObject");
|
|
1116
|
-
processClaimObject(issuerCredentialSubject);
|
|
1117
|
-
return localeClaims;
|
|
1118
|
-
}, "oid4vciIssuerCredentialSubjectLocalesFrom");
|
|
1119
|
-
var oid4vciCredentialLocaleBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1120
|
-
const { credentialDisplay } = args;
|
|
1121
|
-
return {
|
|
1122
|
-
...credentialDisplay.name && {
|
|
1123
|
-
alias: credentialDisplay.name
|
|
1124
|
-
},
|
|
1125
|
-
...credentialDisplay.locale && {
|
|
1126
|
-
locale: credentialDisplay.locale
|
|
1127
|
-
},
|
|
1128
|
-
...credentialDisplay.logo && {
|
|
1129
|
-
logo: {
|
|
1130
|
-
...(credentialDisplay.logo.url || credentialDisplay.logo.uri) && {
|
|
1131
|
-
uri: credentialDisplay.logo?.url ?? credentialDisplay.logo.uri
|
|
1132
|
-
},
|
|
1133
|
-
...credentialDisplay.logo.alt_text && {
|
|
1134
|
-
alt: credentialDisplay.logo?.alt_text
|
|
1135
|
-
}
|
|
1136
|
-
}
|
|
1137
|
-
},
|
|
1138
|
-
...credentialDisplay.description && {
|
|
1139
|
-
description: credentialDisplay.description
|
|
1140
|
-
},
|
|
1141
|
-
...credentialDisplay.text_color && {
|
|
1142
|
-
text: {
|
|
1143
|
-
color: credentialDisplay.text_color
|
|
1144
|
-
}
|
|
1145
|
-
},
|
|
1146
|
-
...(credentialDisplay.background_image || credentialDisplay.background_color) && {
|
|
1147
|
-
background: {
|
|
1148
|
-
...credentialDisplay.background_image && {
|
|
1149
|
-
image: {
|
|
1150
|
-
...(credentialDisplay.background_image.url || credentialDisplay.background_image.uri) && {
|
|
1151
|
-
uri: credentialDisplay.background_image?.url ?? credentialDisplay.background_image.uri
|
|
1152
|
-
},
|
|
1153
|
-
...credentialDisplay.background_image.alt_text && {
|
|
1154
|
-
alt: credentialDisplay.background_image?.alt_text
|
|
1155
|
-
}
|
|
1156
|
-
}
|
|
1157
|
-
},
|
|
1158
|
-
...credentialDisplay.background_color && {
|
|
1159
|
-
color: credentialDisplay.background_color
|
|
1160
|
-
}
|
|
1161
|
-
}
|
|
1162
|
-
}
|
|
1163
|
-
};
|
|
1164
|
-
}, "oid4vciCredentialLocaleBrandingFrom");
|
|
1165
|
-
var oid4vciCombineDisplayLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1166
|
-
const { credentialDisplayLocales = /* @__PURE__ */ new Map(), issuerCredentialSubjectLocales = /* @__PURE__ */ new Map() } = args;
|
|
1167
|
-
const locales = Array.from(/* @__PURE__ */ new Set([
|
|
1168
|
-
...issuerCredentialSubjectLocales.keys(),
|
|
1169
|
-
...credentialDisplayLocales.keys()
|
|
1170
|
-
]));
|
|
1171
|
-
return Promise.all(locales.map(async (locale) => {
|
|
1172
|
-
const display = credentialDisplayLocales.get(locale);
|
|
1173
|
-
const claims = issuerCredentialSubjectLocales.get(locale);
|
|
1174
|
-
return {
|
|
1175
|
-
...display && await oid4vciCredentialLocaleBrandingFrom({
|
|
1176
|
-
credentialDisplay: display
|
|
1177
|
-
}),
|
|
1178
|
-
...locale.length > 0 && {
|
|
1179
|
-
locale
|
|
1180
|
-
},
|
|
1181
|
-
claims
|
|
1182
|
-
};
|
|
1183
|
-
}));
|
|
1184
|
-
}, "oid4vciCombineDisplayLocalesFrom");
|
|
1185
|
-
var sdJwtGetCredentialBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1186
|
-
const { credentialDisplay, claimsMetadata } = args;
|
|
1187
|
-
return sdJwtCombineDisplayLocalesFrom({
|
|
1188
|
-
...claimsMetadata && {
|
|
1189
|
-
claimsMetadata: await sdJwtCredentialClaimLocalesFrom({
|
|
1190
|
-
claimsMetadata
|
|
1191
|
-
})
|
|
1192
|
-
},
|
|
1193
|
-
...credentialDisplay && {
|
|
1194
|
-
credentialDisplayLocales: await sdJwtCredentialDisplayLocalesFrom({
|
|
1195
|
-
credentialDisplay
|
|
1196
|
-
})
|
|
1197
|
-
}
|
|
1198
|
-
});
|
|
1199
|
-
}, "sdJwtGetCredentialBrandingFrom");
|
|
1200
|
-
var sdJwtCredentialDisplayLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1201
|
-
const { credentialDisplay } = args;
|
|
1202
|
-
return credentialDisplay.reduce((localeDisplays, display) => {
|
|
1203
|
-
const localeKey = display.lang || "";
|
|
1204
|
-
localeDisplays.set(localeKey, display);
|
|
1205
|
-
return localeDisplays;
|
|
1206
|
-
}, /* @__PURE__ */ new Map());
|
|
1207
|
-
}, "sdJwtCredentialDisplayLocalesFrom");
|
|
1208
|
-
var sdJwtCredentialClaimLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1209
|
-
const { claimsMetadata } = args;
|
|
1210
|
-
const localeClaims = /* @__PURE__ */ new Map();
|
|
1211
|
-
claimsMetadata.forEach((claim) => {
|
|
1212
|
-
claim.display?.forEach((display) => {
|
|
1213
|
-
const { lang = "", label } = display;
|
|
1214
|
-
const key = claim.path.map((value) => String(value)).join(".");
|
|
1215
|
-
if (!localeClaims.has(lang)) {
|
|
1216
|
-
localeClaims.set(lang, []);
|
|
1217
|
-
}
|
|
1218
|
-
localeClaims.get(lang).push({
|
|
1219
|
-
key,
|
|
1220
|
-
name: label
|
|
1221
|
-
});
|
|
1222
|
-
});
|
|
1223
|
-
});
|
|
1224
|
-
return localeClaims;
|
|
1225
|
-
}, "sdJwtCredentialClaimLocalesFrom");
|
|
1226
|
-
var sdJwtCredentialLocaleBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1227
|
-
const { credentialDisplay } = args;
|
|
1228
|
-
return {
|
|
1229
|
-
...credentialDisplay.name && {
|
|
1230
|
-
alias: credentialDisplay.name
|
|
1231
|
-
},
|
|
1232
|
-
...credentialDisplay.lang && {
|
|
1233
|
-
locale: credentialDisplay.lang
|
|
1234
|
-
},
|
|
1235
|
-
...credentialDisplay.rendering?.simple?.logo && {
|
|
1236
|
-
logo: {
|
|
1237
|
-
...credentialDisplay.rendering.simple.logo.uri && {
|
|
1238
|
-
uri: credentialDisplay.rendering.simple.logo.uri
|
|
1239
|
-
},
|
|
1240
|
-
...credentialDisplay.rendering.simple.logo.alt_text && {
|
|
1241
|
-
alt: credentialDisplay.rendering.simple.logo.alt_text
|
|
1242
|
-
}
|
|
1243
|
-
}
|
|
1244
|
-
},
|
|
1245
|
-
...credentialDisplay.description && {
|
|
1246
|
-
description: credentialDisplay.description
|
|
1247
|
-
},
|
|
1248
|
-
...credentialDisplay.rendering?.simple?.text_color && {
|
|
1249
|
-
text: {
|
|
1250
|
-
color: credentialDisplay.rendering.simple.text_color
|
|
1251
|
-
}
|
|
1252
|
-
},
|
|
1253
|
-
...credentialDisplay.rendering?.simple?.background_color && {
|
|
1254
|
-
background: {
|
|
1255
|
-
color: credentialDisplay.rendering.simple.background_color
|
|
1256
|
-
}
|
|
1257
|
-
}
|
|
1258
|
-
};
|
|
1259
|
-
}, "sdJwtCredentialLocaleBrandingFrom");
|
|
1260
|
-
var sdJwtCombineDisplayLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1261
|
-
const { credentialDisplayLocales = /* @__PURE__ */ new Map(), claimsMetadata = /* @__PURE__ */ new Map() } = args;
|
|
1262
|
-
const locales = Array.from(/* @__PURE__ */ new Set([
|
|
1263
|
-
...claimsMetadata.keys(),
|
|
1264
|
-
...credentialDisplayLocales.keys()
|
|
1265
|
-
]));
|
|
1266
|
-
return Promise.all(locales.map(async (locale) => {
|
|
1267
|
-
const display = credentialDisplayLocales.get(locale);
|
|
1268
|
-
const claims = claimsMetadata.get(locale);
|
|
1269
|
-
return {
|
|
1270
|
-
...display && await sdJwtCredentialLocaleBrandingFrom({
|
|
1271
|
-
credentialDisplay: display
|
|
1272
|
-
}),
|
|
1273
|
-
...locale.length > 0 && {
|
|
1274
|
-
locale
|
|
1275
|
-
},
|
|
1276
|
-
claims
|
|
1277
|
-
};
|
|
1278
|
-
}));
|
|
1279
|
-
}, "sdJwtCombineDisplayLocalesFrom");
|
|
1280
|
-
var issuerLocaleBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1281
|
-
const { issuerDisplay, dynamicRegistrationClientMetadata } = args;
|
|
1282
|
-
return {
|
|
1283
|
-
...dynamicRegistrationClientMetadata?.client_name && {
|
|
1284
|
-
alias: dynamicRegistrationClientMetadata.client_name
|
|
1285
|
-
},
|
|
1286
|
-
...issuerDisplay.name && {
|
|
1287
|
-
alias: issuerDisplay.name
|
|
1288
|
-
},
|
|
1289
|
-
...issuerDisplay.locale && {
|
|
1290
|
-
locale: issuerDisplay.locale
|
|
1291
|
-
},
|
|
1292
|
-
...(issuerDisplay.logo || dynamicRegistrationClientMetadata?.logo_uri) && {
|
|
1293
|
-
logo: {
|
|
1294
|
-
...dynamicRegistrationClientMetadata?.logo_uri && {
|
|
1295
|
-
uri: dynamicRegistrationClientMetadata?.logo_uri
|
|
1296
|
-
},
|
|
1297
|
-
...(issuerDisplay.logo?.url || issuerDisplay.logo?.uri) && {
|
|
1298
|
-
uri: issuerDisplay.logo?.url ?? issuerDisplay.logo?.uri
|
|
1299
|
-
},
|
|
1300
|
-
...issuerDisplay.logo?.alt_text && {
|
|
1301
|
-
alt: issuerDisplay.logo?.alt_text
|
|
1302
|
-
}
|
|
1303
|
-
}
|
|
1304
|
-
},
|
|
1305
|
-
...issuerDisplay.description && {
|
|
1306
|
-
description: issuerDisplay.description
|
|
1307
|
-
},
|
|
1308
|
-
...issuerDisplay.text_color && {
|
|
1309
|
-
text: {
|
|
1310
|
-
color: issuerDisplay.text_color
|
|
1311
|
-
}
|
|
1312
|
-
},
|
|
1313
|
-
...dynamicRegistrationClientMetadata?.client_uri && {
|
|
1314
|
-
clientUri: dynamicRegistrationClientMetadata.client_uri
|
|
1315
|
-
},
|
|
1316
|
-
...dynamicRegistrationClientMetadata?.tos_uri && {
|
|
1317
|
-
tosUri: dynamicRegistrationClientMetadata.tos_uri
|
|
1318
|
-
},
|
|
1319
|
-
...dynamicRegistrationClientMetadata?.policy_uri && {
|
|
1320
|
-
policyUri: dynamicRegistrationClientMetadata.policy_uri
|
|
1321
|
-
},
|
|
1322
|
-
...dynamicRegistrationClientMetadata?.contacts && {
|
|
1323
|
-
contacts: dynamicRegistrationClientMetadata.contacts
|
|
1324
|
-
}
|
|
1325
|
-
};
|
|
1326
|
-
}, "issuerLocaleBrandingFrom");
|
|
1327
|
-
|
|
1328
1070
|
// src/machines/firstPartyMachine.ts
|
|
1329
1071
|
var import_xstate2 = require("xstate");
|
|
1330
1072
|
var import_oid4vci_common2 = require("@sphereon/oid4vci-common");
|
|
@@ -1528,96 +1270,357 @@ var createFirstPartyActivationMachine = /* @__PURE__ */ __name((opts) => {
|
|
|
1528
1270
|
contact: opts.contact,
|
|
1529
1271
|
selectedCredentials: []
|
|
1530
1272
|
};
|
|
1531
|
-
return (0, import_xstate2.createMachine)({
|
|
1532
|
-
id: opts?.machineId ?? "FirstParty",
|
|
1533
|
-
predictableActionArguments: true,
|
|
1534
|
-
initial: FirstPartyMachineStateTypes.sendAuthorizationChallengeRequest,
|
|
1535
|
-
context: initialContext,
|
|
1536
|
-
states: firstPartyMachineStates,
|
|
1537
|
-
schema: {
|
|
1538
|
-
events: {},
|
|
1539
|
-
services: {}
|
|
1273
|
+
return (0, import_xstate2.createMachine)({
|
|
1274
|
+
id: opts?.machineId ?? "FirstParty",
|
|
1275
|
+
predictableActionArguments: true,
|
|
1276
|
+
initial: FirstPartyMachineStateTypes.sendAuthorizationChallengeRequest,
|
|
1277
|
+
context: initialContext,
|
|
1278
|
+
states: firstPartyMachineStates,
|
|
1279
|
+
schema: {
|
|
1280
|
+
events: {},
|
|
1281
|
+
services: {}
|
|
1282
|
+
}
|
|
1283
|
+
});
|
|
1284
|
+
}, "createFirstPartyActivationMachine");
|
|
1285
|
+
var FirstPartyMachine = class _FirstPartyMachine {
|
|
1286
|
+
static {
|
|
1287
|
+
__name(this, "FirstPartyMachine");
|
|
1288
|
+
}
|
|
1289
|
+
static _instance;
|
|
1290
|
+
static hasInstance() {
|
|
1291
|
+
return _FirstPartyMachine._instance !== void 0;
|
|
1292
|
+
}
|
|
1293
|
+
static get instance() {
|
|
1294
|
+
if (!_FirstPartyMachine._instance) {
|
|
1295
|
+
throw Error("Please initialize ESIMActivation machine first");
|
|
1296
|
+
}
|
|
1297
|
+
return _FirstPartyMachine._instance;
|
|
1298
|
+
}
|
|
1299
|
+
static clearInstance(opts) {
|
|
1300
|
+
const { stop } = opts;
|
|
1301
|
+
if (_FirstPartyMachine.hasInstance()) {
|
|
1302
|
+
if (stop) {
|
|
1303
|
+
_FirstPartyMachine.stopInstance();
|
|
1304
|
+
}
|
|
1305
|
+
}
|
|
1306
|
+
_FirstPartyMachine._instance = void 0;
|
|
1307
|
+
}
|
|
1308
|
+
static stopInstance() {
|
|
1309
|
+
if (!_FirstPartyMachine.hasInstance()) {
|
|
1310
|
+
return;
|
|
1311
|
+
}
|
|
1312
|
+
_FirstPartyMachine.instance.stop();
|
|
1313
|
+
_FirstPartyMachine._instance = void 0;
|
|
1314
|
+
}
|
|
1315
|
+
static newInstance(opts) {
|
|
1316
|
+
const { agentContext } = opts;
|
|
1317
|
+
const services = {
|
|
1318
|
+
[FirstPartyMachineServices.sendAuthorizationChallengeRequest]: sendAuthorizationChallengeRequest,
|
|
1319
|
+
[FirstPartyMachineServices.createConfig]: (args) => createConfig(args, agentContext),
|
|
1320
|
+
[FirstPartyMachineServices.getSiopRequest]: (args) => getSiopRequest(args, agentContext),
|
|
1321
|
+
[FirstPartyMachineServices.sendAuthorizationResponse]: (args) => sendAuthorizationResponse(args, agentContext)
|
|
1322
|
+
};
|
|
1323
|
+
const newInst = (0, import_xstate2.interpret)(createFirstPartyActivationMachine(opts).withConfig({
|
|
1324
|
+
services: {
|
|
1325
|
+
...services,
|
|
1326
|
+
...opts?.services
|
|
1327
|
+
},
|
|
1328
|
+
guards: {
|
|
1329
|
+
...opts?.guards
|
|
1330
|
+
}
|
|
1331
|
+
}));
|
|
1332
|
+
if (typeof opts?.subscription === "function") {
|
|
1333
|
+
newInst.onTransition(opts.subscription);
|
|
1334
|
+
}
|
|
1335
|
+
if (opts?.requireCustomNavigationHook !== true) {
|
|
1336
|
+
newInst.onTransition((snapshot) => {
|
|
1337
|
+
if (opts?.stateNavigationListener) {
|
|
1338
|
+
void opts.stateNavigationListener(newInst, snapshot);
|
|
1339
|
+
}
|
|
1340
|
+
});
|
|
1341
|
+
}
|
|
1342
|
+
return newInst;
|
|
1343
|
+
}
|
|
1344
|
+
static getInstance(opts) {
|
|
1345
|
+
if (!_FirstPartyMachine._instance) {
|
|
1346
|
+
if (opts?.requireExisting === true) {
|
|
1347
|
+
throw Error(`Existing FirstPartyMachine instance requested, but none was created at this point!`);
|
|
1348
|
+
}
|
|
1349
|
+
_FirstPartyMachine._instance = _FirstPartyMachine.newInstance(opts);
|
|
1350
|
+
}
|
|
1351
|
+
return _FirstPartyMachine._instance;
|
|
1352
|
+
}
|
|
1353
|
+
};
|
|
1354
|
+
|
|
1355
|
+
// src/mappers/OIDC4VCIBrandingMapper.ts
|
|
1356
|
+
var oid4vciGetCredentialBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1357
|
+
const { credentialDisplay, issuerCredentialSubject } = args;
|
|
1358
|
+
return oid4vciCombineDisplayLocalesFrom({
|
|
1359
|
+
...issuerCredentialSubject && {
|
|
1360
|
+
issuerCredentialSubjectLocales: await oid4vciIssuerCredentialSubjectLocalesFrom({
|
|
1361
|
+
issuerCredentialSubject
|
|
1362
|
+
})
|
|
1363
|
+
},
|
|
1364
|
+
...credentialDisplay && {
|
|
1365
|
+
credentialDisplayLocales: await oid4vciCredentialDisplayLocalesFrom({
|
|
1366
|
+
credentialDisplay
|
|
1367
|
+
})
|
|
1368
|
+
}
|
|
1369
|
+
});
|
|
1370
|
+
}, "oid4vciGetCredentialBrandingFrom");
|
|
1371
|
+
var oid4vciCredentialDisplayLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1372
|
+
const { credentialDisplay } = args;
|
|
1373
|
+
return credentialDisplay.reduce((localeDisplays, display) => {
|
|
1374
|
+
const localeKey = display.locale || "";
|
|
1375
|
+
localeDisplays.set(localeKey, display);
|
|
1376
|
+
return localeDisplays;
|
|
1377
|
+
}, /* @__PURE__ */ new Map());
|
|
1378
|
+
}, "oid4vciCredentialDisplayLocalesFrom");
|
|
1379
|
+
var oid4vciIssuerCredentialSubjectLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1380
|
+
const { issuerCredentialSubject } = args;
|
|
1381
|
+
const localeClaims = /* @__PURE__ */ new Map();
|
|
1382
|
+
const processClaimObject = /* @__PURE__ */ __name((claim, parentKey = "") => {
|
|
1383
|
+
Object.entries(claim).forEach(([key, value]) => {
|
|
1384
|
+
if (key === "mandatory" || key === "value_type") {
|
|
1385
|
+
return;
|
|
1386
|
+
}
|
|
1387
|
+
if (key === "display" && Array.isArray(value)) {
|
|
1388
|
+
value.forEach(({ name, locale = "" }) => {
|
|
1389
|
+
if (!name) {
|
|
1390
|
+
return;
|
|
1391
|
+
}
|
|
1392
|
+
if (!localeClaims.has(locale)) {
|
|
1393
|
+
localeClaims.set(locale, []);
|
|
1394
|
+
}
|
|
1395
|
+
localeClaims.get(locale).push({
|
|
1396
|
+
key: parentKey,
|
|
1397
|
+
name
|
|
1398
|
+
});
|
|
1399
|
+
});
|
|
1400
|
+
} else if (typeof value === "object" && value !== null) {
|
|
1401
|
+
processClaimObject(value, parentKey ? `${parentKey}.${key}` : key);
|
|
1402
|
+
}
|
|
1403
|
+
});
|
|
1404
|
+
}, "processClaimObject");
|
|
1405
|
+
processClaimObject(issuerCredentialSubject);
|
|
1406
|
+
return localeClaims;
|
|
1407
|
+
}, "oid4vciIssuerCredentialSubjectLocalesFrom");
|
|
1408
|
+
var oid4vciCredentialLocaleBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1409
|
+
const { credentialDisplay } = args;
|
|
1410
|
+
return {
|
|
1411
|
+
...credentialDisplay.name && {
|
|
1412
|
+
alias: credentialDisplay.name
|
|
1413
|
+
},
|
|
1414
|
+
...credentialDisplay.locale && {
|
|
1415
|
+
locale: credentialDisplay.locale
|
|
1416
|
+
},
|
|
1417
|
+
...credentialDisplay.logo && {
|
|
1418
|
+
logo: {
|
|
1419
|
+
...(credentialDisplay.logo.url || credentialDisplay.logo.uri) && {
|
|
1420
|
+
uri: credentialDisplay.logo?.url ?? credentialDisplay.logo.uri
|
|
1421
|
+
},
|
|
1422
|
+
...credentialDisplay.logo.alt_text && {
|
|
1423
|
+
alt: credentialDisplay.logo?.alt_text
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1426
|
+
},
|
|
1427
|
+
...credentialDisplay.description && {
|
|
1428
|
+
description: credentialDisplay.description
|
|
1429
|
+
},
|
|
1430
|
+
...credentialDisplay.text_color && {
|
|
1431
|
+
text: {
|
|
1432
|
+
color: credentialDisplay.text_color
|
|
1433
|
+
}
|
|
1434
|
+
},
|
|
1435
|
+
...(credentialDisplay.background_image || credentialDisplay.background_color) && {
|
|
1436
|
+
background: {
|
|
1437
|
+
...credentialDisplay.background_image && {
|
|
1438
|
+
image: {
|
|
1439
|
+
...(credentialDisplay.background_image.url || credentialDisplay.background_image.uri) && {
|
|
1440
|
+
uri: credentialDisplay.background_image?.url ?? credentialDisplay.background_image.uri
|
|
1441
|
+
},
|
|
1442
|
+
...credentialDisplay.background_image.alt_text && {
|
|
1443
|
+
alt: credentialDisplay.background_image?.alt_text
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
},
|
|
1447
|
+
...credentialDisplay.background_color && {
|
|
1448
|
+
color: credentialDisplay.background_color
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
};
|
|
1453
|
+
}, "oid4vciCredentialLocaleBrandingFrom");
|
|
1454
|
+
var oid4vciCombineDisplayLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1455
|
+
const { credentialDisplayLocales = /* @__PURE__ */ new Map(), issuerCredentialSubjectLocales = /* @__PURE__ */ new Map() } = args;
|
|
1456
|
+
const locales = Array.from(/* @__PURE__ */ new Set([
|
|
1457
|
+
...issuerCredentialSubjectLocales.keys(),
|
|
1458
|
+
...credentialDisplayLocales.keys()
|
|
1459
|
+
]));
|
|
1460
|
+
return Promise.all(locales.map(async (locale) => {
|
|
1461
|
+
const display = credentialDisplayLocales.get(locale);
|
|
1462
|
+
const claims = issuerCredentialSubjectLocales.get(locale);
|
|
1463
|
+
return {
|
|
1464
|
+
...display && await oid4vciCredentialLocaleBrandingFrom({
|
|
1465
|
+
credentialDisplay: display
|
|
1466
|
+
}),
|
|
1467
|
+
...locale.length > 0 && {
|
|
1468
|
+
locale
|
|
1469
|
+
},
|
|
1470
|
+
claims
|
|
1471
|
+
};
|
|
1472
|
+
}));
|
|
1473
|
+
}, "oid4vciCombineDisplayLocalesFrom");
|
|
1474
|
+
var sdJwtGetCredentialBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1475
|
+
const { credentialDisplay, claimsMetadata } = args;
|
|
1476
|
+
return sdJwtCombineDisplayLocalesFrom({
|
|
1477
|
+
...claimsMetadata && {
|
|
1478
|
+
claimsMetadata: await sdJwtCredentialClaimLocalesFrom({
|
|
1479
|
+
claimsMetadata
|
|
1480
|
+
})
|
|
1481
|
+
},
|
|
1482
|
+
...credentialDisplay && {
|
|
1483
|
+
credentialDisplayLocales: await sdJwtCredentialDisplayLocalesFrom({
|
|
1484
|
+
credentialDisplay
|
|
1485
|
+
})
|
|
1540
1486
|
}
|
|
1541
1487
|
});
|
|
1542
|
-
}, "
|
|
1543
|
-
var
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
if (stop) {
|
|
1561
|
-
_FirstPartyMachine.stopInstance();
|
|
1488
|
+
}, "sdJwtGetCredentialBrandingFrom");
|
|
1489
|
+
var sdJwtCredentialDisplayLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1490
|
+
const { credentialDisplay } = args;
|
|
1491
|
+
return credentialDisplay.reduce((localeDisplays, display) => {
|
|
1492
|
+
const localeKey = display.lang || "";
|
|
1493
|
+
localeDisplays.set(localeKey, display);
|
|
1494
|
+
return localeDisplays;
|
|
1495
|
+
}, /* @__PURE__ */ new Map());
|
|
1496
|
+
}, "sdJwtCredentialDisplayLocalesFrom");
|
|
1497
|
+
var sdJwtCredentialClaimLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1498
|
+
const { claimsMetadata } = args;
|
|
1499
|
+
const localeClaims = /* @__PURE__ */ new Map();
|
|
1500
|
+
claimsMetadata.forEach((claim) => {
|
|
1501
|
+
claim.display?.forEach((display) => {
|
|
1502
|
+
const { lang = "", label } = display;
|
|
1503
|
+
const key = claim.path.map((value) => String(value)).join(".");
|
|
1504
|
+
if (!localeClaims.has(lang)) {
|
|
1505
|
+
localeClaims.set(lang, []);
|
|
1562
1506
|
}
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1507
|
+
localeClaims.get(lang).push({
|
|
1508
|
+
key,
|
|
1509
|
+
name: label
|
|
1510
|
+
});
|
|
1511
|
+
});
|
|
1512
|
+
});
|
|
1513
|
+
return localeClaims;
|
|
1514
|
+
}, "sdJwtCredentialClaimLocalesFrom");
|
|
1515
|
+
var sdJwtCredentialLocaleBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1516
|
+
const { credentialDisplay } = args;
|
|
1517
|
+
return {
|
|
1518
|
+
...credentialDisplay.name && {
|
|
1519
|
+
alias: credentialDisplay.name
|
|
1520
|
+
},
|
|
1521
|
+
...credentialDisplay.lang && {
|
|
1522
|
+
locale: credentialDisplay.lang
|
|
1523
|
+
},
|
|
1524
|
+
...credentialDisplay.rendering?.simple?.logo && {
|
|
1525
|
+
logo: {
|
|
1526
|
+
...credentialDisplay.rendering.simple.logo.uri && {
|
|
1527
|
+
uri: credentialDisplay.rendering.simple.logo.uri
|
|
1528
|
+
},
|
|
1529
|
+
...credentialDisplay.rendering.simple.logo.alt_text && {
|
|
1530
|
+
alt: credentialDisplay.rendering.simple.logo.alt_text
|
|
1531
|
+
}
|
|
1532
|
+
}
|
|
1533
|
+
},
|
|
1534
|
+
...credentialDisplay.description && {
|
|
1535
|
+
description: credentialDisplay.description
|
|
1536
|
+
},
|
|
1537
|
+
...credentialDisplay.rendering?.simple?.text_color && {
|
|
1538
|
+
text: {
|
|
1539
|
+
color: credentialDisplay.rendering.simple.text_color
|
|
1540
|
+
}
|
|
1541
|
+
},
|
|
1542
|
+
...credentialDisplay.rendering?.simple?.background_color && {
|
|
1543
|
+
background: {
|
|
1544
|
+
color: credentialDisplay.rendering.simple.background_color
|
|
1588
1545
|
}
|
|
1589
|
-
}));
|
|
1590
|
-
if (typeof opts?.subscription === "function") {
|
|
1591
|
-
newInst.onTransition(opts.subscription);
|
|
1592
1546
|
}
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1547
|
+
};
|
|
1548
|
+
}, "sdJwtCredentialLocaleBrandingFrom");
|
|
1549
|
+
var sdJwtCombineDisplayLocalesFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1550
|
+
const { credentialDisplayLocales = /* @__PURE__ */ new Map(), claimsMetadata = /* @__PURE__ */ new Map() } = args;
|
|
1551
|
+
const locales = Array.from(/* @__PURE__ */ new Set([
|
|
1552
|
+
...claimsMetadata.keys(),
|
|
1553
|
+
...credentialDisplayLocales.keys()
|
|
1554
|
+
]));
|
|
1555
|
+
return Promise.all(locales.map(async (locale) => {
|
|
1556
|
+
const display = credentialDisplayLocales.get(locale);
|
|
1557
|
+
const claims = claimsMetadata.get(locale);
|
|
1558
|
+
return {
|
|
1559
|
+
...display && await sdJwtCredentialLocaleBrandingFrom({
|
|
1560
|
+
credentialDisplay: display
|
|
1561
|
+
}),
|
|
1562
|
+
...locale.length > 0 && {
|
|
1563
|
+
locale
|
|
1564
|
+
},
|
|
1565
|
+
claims
|
|
1566
|
+
};
|
|
1567
|
+
}));
|
|
1568
|
+
}, "sdJwtCombineDisplayLocalesFrom");
|
|
1569
|
+
var issuerLocaleBrandingFrom = /* @__PURE__ */ __name(async (args) => {
|
|
1570
|
+
const { issuerDisplay, dynamicRegistrationClientMetadata } = args;
|
|
1571
|
+
return {
|
|
1572
|
+
...dynamicRegistrationClientMetadata?.client_name && {
|
|
1573
|
+
alias: dynamicRegistrationClientMetadata.client_name
|
|
1574
|
+
},
|
|
1575
|
+
...issuerDisplay.name && {
|
|
1576
|
+
alias: issuerDisplay.name
|
|
1577
|
+
},
|
|
1578
|
+
...issuerDisplay.locale && {
|
|
1579
|
+
locale: issuerDisplay.locale
|
|
1580
|
+
},
|
|
1581
|
+
...(issuerDisplay.logo || dynamicRegistrationClientMetadata?.logo_uri) && {
|
|
1582
|
+
logo: {
|
|
1583
|
+
...dynamicRegistrationClientMetadata?.logo_uri && {
|
|
1584
|
+
uri: dynamicRegistrationClientMetadata?.logo_uri
|
|
1585
|
+
},
|
|
1586
|
+
...(issuerDisplay.logo?.url || issuerDisplay.logo?.uri) && {
|
|
1587
|
+
uri: issuerDisplay.logo?.url ?? issuerDisplay.logo?.uri
|
|
1588
|
+
},
|
|
1589
|
+
...issuerDisplay.logo?.alt_text && {
|
|
1590
|
+
alt: issuerDisplay.logo?.alt_text
|
|
1597
1591
|
}
|
|
1598
|
-
});
|
|
1599
|
-
}
|
|
1600
|
-
return newInst;
|
|
1601
|
-
}
|
|
1602
|
-
static getInstance(opts) {
|
|
1603
|
-
if (!_FirstPartyMachine._instance) {
|
|
1604
|
-
if (opts?.requireExisting === true) {
|
|
1605
|
-
throw Error(`Existing FirstPartyMachine instance requested, but none was created at this point!`);
|
|
1606
1592
|
}
|
|
1607
|
-
|
|
1593
|
+
},
|
|
1594
|
+
...issuerDisplay.description && {
|
|
1595
|
+
description: issuerDisplay.description
|
|
1596
|
+
},
|
|
1597
|
+
...issuerDisplay.text_color && {
|
|
1598
|
+
text: {
|
|
1599
|
+
color: issuerDisplay.text_color
|
|
1600
|
+
}
|
|
1601
|
+
},
|
|
1602
|
+
...dynamicRegistrationClientMetadata?.client_uri && {
|
|
1603
|
+
clientUri: dynamicRegistrationClientMetadata.client_uri
|
|
1604
|
+
},
|
|
1605
|
+
...dynamicRegistrationClientMetadata?.tos_uri && {
|
|
1606
|
+
tosUri: dynamicRegistrationClientMetadata.tos_uri
|
|
1607
|
+
},
|
|
1608
|
+
...dynamicRegistrationClientMetadata?.policy_uri && {
|
|
1609
|
+
policyUri: dynamicRegistrationClientMetadata.policy_uri
|
|
1610
|
+
},
|
|
1611
|
+
...dynamicRegistrationClientMetadata?.contacts && {
|
|
1612
|
+
contacts: dynamicRegistrationClientMetadata.contacts
|
|
1608
1613
|
}
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
};
|
|
1614
|
+
};
|
|
1615
|
+
}, "issuerLocaleBrandingFrom");
|
|
1612
1616
|
|
|
1613
1617
|
// src/services/OID4VCIHolderService.ts
|
|
1614
|
-
var import_ssi_sdk = require("@sphereon/ssi-sdk.core");
|
|
1615
1618
|
var getCredentialBranding = /* @__PURE__ */ __name(async (args) => {
|
|
1616
1619
|
const { credentialsSupported, context } = args;
|
|
1617
1620
|
const credentialBranding = {};
|
|
1618
1621
|
await Promise.all(Object.entries(credentialsSupported).map(async ([configId, credentialsConfigSupported]) => {
|
|
1619
1622
|
let sdJwtTypeMetadata;
|
|
1620
|
-
if (credentialsConfigSupported.format === "
|
|
1623
|
+
if (credentialsConfigSupported.format === "dc+sd-jwt") {
|
|
1621
1624
|
const vct = credentialsConfigSupported.vct;
|
|
1622
1625
|
if (vct.startsWith("http")) {
|
|
1623
1626
|
try {
|
|
@@ -1683,10 +1686,7 @@ var selectCredentialLocaleBranding = /* @__PURE__ */ __name(async (args) => {
|
|
|
1683
1686
|
}, "selectCredentialLocaleBranding");
|
|
1684
1687
|
var verifyCredentialToAccept = /* @__PURE__ */ __name(async (args) => {
|
|
1685
1688
|
const { mappedCredential, hasher, onVerifyEBSICredentialIssuer, schemaValidation, context } = args;
|
|
1686
|
-
const credential = mappedCredential.credentialToAccept.credentialResponse
|
|
1687
|
-
if (!credential) {
|
|
1688
|
-
return Promise.reject(Error("No credential found in credential response"));
|
|
1689
|
-
}
|
|
1689
|
+
const credential = extractCredentialFromResponse(mappedCredential.credentialToAccept.credentialResponse);
|
|
1690
1690
|
const wrappedVC = import_ssi_types.CredentialMapper.toWrappedVerifiableCredential(credential, {
|
|
1691
1691
|
hasher: hasher ?? import_ssi_sdk.defaultHasher
|
|
1692
1692
|
});
|
|
@@ -1738,11 +1738,7 @@ var verifyCredentialToAccept = /* @__PURE__ */ __name(async (args) => {
|
|
|
1738
1738
|
}, "verifyCredentialToAccept");
|
|
1739
1739
|
var mapCredentialToAccept = /* @__PURE__ */ __name(async (args) => {
|
|
1740
1740
|
const { credentialToAccept, hasher } = args;
|
|
1741
|
-
const
|
|
1742
|
-
const verifiableCredential = credentialResponse.credential;
|
|
1743
|
-
if (!verifiableCredential) {
|
|
1744
|
-
return Promise.reject(Error("No credential found in credential response"));
|
|
1745
|
-
}
|
|
1741
|
+
const verifiableCredential = extractCredentialFromResponse(credentialToAccept.credentialResponse);
|
|
1746
1742
|
const wrappedVerifiableCredential = import_ssi_types.CredentialMapper.toWrappedVerifiableCredential(verifiableCredential, {
|
|
1747
1743
|
hasher
|
|
1748
1744
|
});
|
|
@@ -1762,6 +1758,7 @@ var mapCredentialToAccept = /* @__PURE__ */ __name(async (args) => {
|
|
|
1762
1758
|
uniformVerifiableCredential = wrappedVerifiableCredential.credential;
|
|
1763
1759
|
}
|
|
1764
1760
|
const correlationId = typeof uniformVerifiableCredential.issuer === "string" ? uniformVerifiableCredential.issuer : import_ssi_types.CredentialMapper.isSdJwtDecodedCredential(uniformVerifiableCredential) ? uniformVerifiableCredential.decodedPayload.iss : uniformVerifiableCredential.issuer.id;
|
|
1761
|
+
const credentialResponse = credentialToAccept.credentialResponse;
|
|
1765
1762
|
return {
|
|
1766
1763
|
correlationId,
|
|
1767
1764
|
credentialToAccept,
|
|
@@ -1773,6 +1770,18 @@ var mapCredentialToAccept = /* @__PURE__ */ __name(async (args) => {
|
|
|
1773
1770
|
}
|
|
1774
1771
|
};
|
|
1775
1772
|
}, "mapCredentialToAccept");
|
|
1773
|
+
var extractCredentialFromResponse = /* @__PURE__ */ __name((credentialResponse) => {
|
|
1774
|
+
let credential;
|
|
1775
|
+
if ("credential" in credentialResponse) {
|
|
1776
|
+
credential = credentialResponse.credential;
|
|
1777
|
+
} else if ("credentials" in credentialResponse && credentialResponse.credentials && Array.isArray(credentialResponse.credentials) && credentialResponse.credentials.length > 0) {
|
|
1778
|
+
credential = credentialResponse.credentials[0].credential;
|
|
1779
|
+
}
|
|
1780
|
+
if (!credential) {
|
|
1781
|
+
throw new Error("No credential found in credential response");
|
|
1782
|
+
}
|
|
1783
|
+
return credential;
|
|
1784
|
+
}, "extractCredentialFromResponse");
|
|
1776
1785
|
var getIdentifierOpts = /* @__PURE__ */ __name(async (args) => {
|
|
1777
1786
|
const { issuanceOpt, context } = args;
|
|
1778
1787
|
const { identifier: identifierArg } = issuanceOpt;
|
|
@@ -2074,6 +2083,7 @@ var getIssuanceCryptoSuite = /* @__PURE__ */ __name(async (opts) => {
|
|
|
2074
2083
|
case "jwt_vc_json":
|
|
2075
2084
|
case "jwt_vc":
|
|
2076
2085
|
case "vc+sd-jwt":
|
|
2086
|
+
case "dc+sd-jwt":
|
|
2077
2087
|
case "mso_mdoc": {
|
|
2078
2088
|
const supportedPreferences = jwtCryptographicSuitePreferences.filter((suite) => signing_algs_supported.includes(suite));
|
|
2079
2089
|
if (supportedPreferences.length > 0) {
|
|
@@ -2142,7 +2152,6 @@ var startFirstPartApplicationMachine = /* @__PURE__ */ __name(async (args, conte
|
|
|
2142
2152
|
|
|
2143
2153
|
// src/agent/OID4VCIHolder.ts
|
|
2144
2154
|
var import_polyfill = require("cross-fetch/polyfill");
|
|
2145
|
-
var import_ssi_sdk3 = require("@sphereon/ssi-sdk.core");
|
|
2146
2155
|
var oid4vciHolderContextMethods = [
|
|
2147
2156
|
"cmGetContacts",
|
|
2148
2157
|
"cmGetContact",
|
|
@@ -2158,7 +2167,7 @@ var oid4vciHolderContextMethods = [
|
|
|
2158
2167
|
];
|
|
2159
2168
|
var logger = import_ssi_types2.Loggers.DEFAULT.get("sphereon:oid4vci:holder");
|
|
2160
2169
|
function signCallback(identifier, context, nonce) {
|
|
2161
|
-
return async (jwt, kid) => {
|
|
2170
|
+
return async (jwt, kid, noIssPayloadUpdate) => {
|
|
2162
2171
|
let resolution = await context.agent.identifierManagedGet(identifier);
|
|
2163
2172
|
const jwk = jwt.header.jwk ?? (resolution.method === "jwk" ? resolution.jwk : void 0);
|
|
2164
2173
|
if (!resolution.issuer && !jwt.payload.iss) {
|
|
@@ -2176,7 +2185,7 @@ function signCallback(identifier, context, nonce) {
|
|
|
2176
2185
|
return (await context.agent.jwtCreateJwsCompactSignature({
|
|
2177
2186
|
issuer: {
|
|
2178
2187
|
...resolution,
|
|
2179
|
-
noIssPayloadUpdate: false
|
|
2188
|
+
noIssPayloadUpdate: noIssPayloadUpdate ?? false
|
|
2180
2189
|
},
|
|
2181
2190
|
protectedHeader: header,
|
|
2182
2191
|
payload
|
|
@@ -2211,6 +2220,7 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2211
2220
|
oid4vciHolderStoreIssuerBranding: this.oid4vciHolderStoreIssuerBranding.bind(this)
|
|
2212
2221
|
};
|
|
2213
2222
|
vcFormatPreferences = [
|
|
2223
|
+
"dc+sd-jwt",
|
|
2214
2224
|
"vc+sd-jwt",
|
|
2215
2225
|
"mso_mdoc",
|
|
2216
2226
|
"jwt_vc_json",
|
|
@@ -2244,7 +2254,7 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2244
2254
|
onIdentifierCreated;
|
|
2245
2255
|
onVerifyEBSICredentialIssuer;
|
|
2246
2256
|
constructor(options) {
|
|
2247
|
-
const { onContactIdentityCreated, onCredentialStored, onIdentifierCreated, onVerifyEBSICredentialIssuer, vcFormatPreferences, jsonldCryptographicSuitePreferences, didMethodPreferences, jwtCryptographicSuitePreferences, defaultAuthorizationRequestOptions, hasher =
|
|
2257
|
+
const { onContactIdentityCreated, onCredentialStored, onIdentifierCreated, onVerifyEBSICredentialIssuer, vcFormatPreferences, jsonldCryptographicSuitePreferences, didMethodPreferences, jwtCryptographicSuitePreferences, defaultAuthorizationRequestOptions, hasher = import_ssi_sdk2.defaultHasher } = {
|
|
2248
2258
|
...options
|
|
2249
2259
|
};
|
|
2250
2260
|
this.hasher = hasher;
|
|
@@ -2625,26 +2635,26 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2625
2635
|
return Promise.reject(Error("Missing credential offers in context"));
|
|
2626
2636
|
}
|
|
2627
2637
|
let correlationId = credentialsToAccept[0].correlationId;
|
|
2628
|
-
let identifierType =
|
|
2638
|
+
let identifierType = import_ssi_sdk3.CorrelationIdentifierType.DID;
|
|
2629
2639
|
if (!correlationId.toLowerCase().startsWith("did:")) {
|
|
2630
|
-
identifierType =
|
|
2640
|
+
identifierType = import_ssi_sdk3.CorrelationIdentifierType.URL;
|
|
2631
2641
|
if (correlationId.startsWith("http")) {
|
|
2632
2642
|
correlationId = new URL(correlationId).hostname;
|
|
2633
2643
|
}
|
|
2634
2644
|
}
|
|
2635
2645
|
const identity = {
|
|
2636
2646
|
alias: credentialsToAccept[0].correlationId,
|
|
2637
|
-
origin:
|
|
2647
|
+
origin: import_ssi_sdk3.IdentityOrigin.EXTERNAL,
|
|
2638
2648
|
roles: [
|
|
2639
|
-
|
|
2649
|
+
import_ssi_types2.CredentialRole.ISSUER
|
|
2640
2650
|
],
|
|
2641
2651
|
identifier: {
|
|
2642
2652
|
type: identifierType,
|
|
2643
2653
|
correlationId
|
|
2644
2654
|
},
|
|
2645
|
-
...identifierType ===
|
|
2655
|
+
...identifierType === import_ssi_sdk3.CorrelationIdentifierType.URL && {
|
|
2646
2656
|
connection: {
|
|
2647
|
-
type:
|
|
2657
|
+
type: import_ssi_sdk3.ConnectionType.OPENID_CONNECT,
|
|
2648
2658
|
config: {
|
|
2649
2659
|
clientId: "138d7bf8-c930-4c6e-b928-97d3a4928b01",
|
|
2650
2660
|
clientSecret: "03b3955f-d020-4f2a-8a27-4e452d4e27a0",
|
|
@@ -2671,7 +2681,7 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2671
2681
|
}
|
|
2672
2682
|
async oid4vciHolderGetIssuerBranding(args, context) {
|
|
2673
2683
|
const { serverMetadata, contact } = args;
|
|
2674
|
-
const issuerCorrelationId = contact?.identities.filter((identity) => identity.roles.includes(
|
|
2684
|
+
const issuerCorrelationId = contact?.identities.filter((identity) => identity.roles.includes(import_ssi_types2.CredentialRole.ISSUER)).map((identity) => identity.identifier.correlationId)[0];
|
|
2675
2685
|
if (issuerCorrelationId) {
|
|
2676
2686
|
const branding = await context.agent.ibGetIssuerBranding({
|
|
2677
2687
|
filter: [
|
|
@@ -2701,7 +2711,7 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2701
2711
|
if (!contact) {
|
|
2702
2712
|
return Promise.reject(Error("Missing contact in context"));
|
|
2703
2713
|
}
|
|
2704
|
-
const issuerCorrelationId = contact?.identities.filter((identity) => identity.roles.includes(
|
|
2714
|
+
const issuerCorrelationId = contact?.identities.filter((identity) => identity.roles.includes(import_ssi_types2.CredentialRole.ISSUER)).map((identity) => identity.identifier.correlationId)[0];
|
|
2705
2715
|
const branding = await context.agent.ibGetIssuerBranding({
|
|
2706
2716
|
filter: [
|
|
2707
2717
|
{
|
|
@@ -2797,9 +2807,9 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2797
2807
|
if (Array.isArray(subjectIssuance?.notification_events_supported)) {
|
|
2798
2808
|
event = subjectIssuance.notification_events_supported.includes("credential_accepted_holder_signed") ? "credential_accepted_holder_signed" : "credential_deleted_holder_signed";
|
|
2799
2809
|
logger.log(`Subject issuance/signing will be used, with event`, event);
|
|
2800
|
-
const issuerVC = mappedCredentialToAccept.credentialToAccept.credentialResponse
|
|
2810
|
+
const issuerVC = extractCredentialFromResponse(mappedCredentialToAccept.credentialToAccept.credentialResponse);
|
|
2801
2811
|
const wrappedIssuerVC = import_ssi_types2.CredentialMapper.toWrappedVerifiableCredential(issuerVC, {
|
|
2802
|
-
hasher: this.hasher ??
|
|
2812
|
+
hasher: this.hasher ?? import_ssi_sdk2.defaultHasher
|
|
2803
2813
|
});
|
|
2804
2814
|
console.log(`Wrapped VC: ${wrappedIssuerVC.type}, ${wrappedIssuerVC.format}`);
|
|
2805
2815
|
let issuer;
|
|
@@ -2900,11 +2910,11 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2900
2910
|
const [subjectCorrelationType, subjectCorrelationId] = this.determineSubjectCorrelation(issuanceOpt.identifier, issuer);
|
|
2901
2911
|
const persistedCredential = await context.agent.crsAddCredential({
|
|
2902
2912
|
credential: {
|
|
2903
|
-
rawDocument: (0,
|
|
2913
|
+
rawDocument: (0, import_ssi_sdk3.ensureRawDocument)(persistCredential),
|
|
2904
2914
|
kmsKeyRef,
|
|
2905
2915
|
identifierMethod: method,
|
|
2906
|
-
credentialRole:
|
|
2907
|
-
issuerCorrelationType: issuer?.startsWith("did:") ?
|
|
2916
|
+
credentialRole: import_ssi_types2.CredentialRole.HOLDER,
|
|
2917
|
+
issuerCorrelationType: issuer?.startsWith("did:") ? import_ssi_sdk3.CredentialCorrelationType.DID : import_ssi_sdk3.CredentialCorrelationType.URL,
|
|
2908
2918
|
issuerCorrelationId: issuer,
|
|
2909
2919
|
subjectCorrelationType,
|
|
2910
2920
|
subjectCorrelationId
|
|
@@ -2972,12 +2982,12 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2972
2982
|
case "did":
|
|
2973
2983
|
if ((0, import_ssi_sdk_ext6.isManagedIdentifierResult)(identifier) && (0, import_ssi_sdk_ext6.isManagedIdentifierDidResult)(identifier)) {
|
|
2974
2984
|
return [
|
|
2975
|
-
|
|
2985
|
+
import_ssi_sdk3.CredentialCorrelationType.DID,
|
|
2976
2986
|
identifier.did
|
|
2977
2987
|
];
|
|
2978
2988
|
} else if ((0, import_ssi_sdk_ext6.isManagedIdentifierDidOpts)(identifier)) {
|
|
2979
2989
|
return [
|
|
2980
|
-
|
|
2990
|
+
import_ssi_sdk3.CredentialCorrelationType.DID,
|
|
2981
2991
|
typeof identifier.identifier === "string" ? identifier.identifier : identifier.identifier.did
|
|
2982
2992
|
];
|
|
2983
2993
|
}
|
|
@@ -2985,12 +2995,12 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2985
2995
|
case "kid":
|
|
2986
2996
|
if ((0, import_ssi_sdk_ext6.isManagedIdentifierResult)(identifier) && (0, import_ssi_sdk_ext6.isManagedIdentifierKidResult)(identifier)) {
|
|
2987
2997
|
return [
|
|
2988
|
-
|
|
2998
|
+
import_ssi_sdk3.CredentialCorrelationType.KID,
|
|
2989
2999
|
identifier.kid
|
|
2990
3000
|
];
|
|
2991
3001
|
} else if ((0, import_ssi_sdk_ext6.isManagedIdentifierDidOpts)(identifier)) {
|
|
2992
3002
|
return [
|
|
2993
|
-
|
|
3003
|
+
import_ssi_sdk3.CredentialCorrelationType.KID,
|
|
2994
3004
|
identifier.identifier
|
|
2995
3005
|
];
|
|
2996
3006
|
}
|
|
@@ -2998,19 +3008,19 @@ var OID4VCIHolder = class _OID4VCIHolder {
|
|
|
2998
3008
|
case "x5c":
|
|
2999
3009
|
if ((0, import_ssi_sdk_ext6.isManagedIdentifierResult)(identifier) && (0, import_ssi_sdk_ext6.isManagedIdentifierX5cResult)(identifier)) {
|
|
3000
3010
|
return [
|
|
3001
|
-
|
|
3011
|
+
import_ssi_sdk3.CredentialCorrelationType.X509_SAN,
|
|
3002
3012
|
identifier.x5c.join("\r\n")
|
|
3003
3013
|
];
|
|
3004
3014
|
} else if ((0, import_ssi_sdk_ext6.isManagedIdentifierX5cOpts)(identifier)) {
|
|
3005
3015
|
return [
|
|
3006
|
-
|
|
3016
|
+
import_ssi_sdk3.CredentialCorrelationType.X509_SAN,
|
|
3007
3017
|
identifier.identifier.join("\r\n")
|
|
3008
3018
|
];
|
|
3009
3019
|
}
|
|
3010
3020
|
break;
|
|
3011
3021
|
}
|
|
3012
3022
|
return [
|
|
3013
|
-
|
|
3023
|
+
import_ssi_sdk3.CredentialCorrelationType.URL,
|
|
3014
3024
|
issuer
|
|
3015
3025
|
];
|
|
3016
3026
|
}
|