@sphereon/oid4vci-client 0.8.2-next.6 → 0.8.2-unstable.16
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/README.md +9 -8
- package/dist/AccessTokenClient.d.ts.map +1 -1
- package/dist/AccessTokenClient.js +8 -8
- package/dist/AccessTokenClient.js.map +1 -1
- package/dist/AuthorizationDetailsBuilder.d.ts.map +1 -1
- package/dist/CredentialRequestClient.d.ts.map +1 -1
- package/dist/CredentialRequestClient.js +38 -36
- package/dist/CredentialRequestClient.js.map +1 -1
- package/dist/CredentialRequestClientBuilder.d.ts +6 -0
- package/dist/CredentialRequestClientBuilder.d.ts.map +1 -1
- package/dist/CredentialRequestClientBuilder.js +10 -1
- package/dist/CredentialRequestClientBuilder.js.map +1 -1
- package/dist/OpenID4VCIClient.d.ts +11 -3
- package/dist/OpenID4VCIClient.d.ts.map +1 -1
- package/dist/OpenID4VCIClient.js +96 -34
- package/dist/OpenID4VCIClient.js.map +1 -1
- package/lib/AccessTokenClient.ts +10 -8
- package/lib/AuthorizationDetailsBuilder.ts +2 -2
- package/lib/CredentialRequestClient.ts +44 -38
- package/lib/CredentialRequestClientBuilder.ts +21 -1
- package/lib/OpenID4VCIClient.ts +121 -35
- package/lib/__tests__/CredentialRequestClient.spec.ts +13 -8
- package/lib/__tests__/EBSIE2E.spec.test.ts +136 -0
- package/lib/__tests__/OpenID4VCIClient.spec.ts +5 -0
- package/lib/__tests__/data/VciDataFixtures.ts +14 -13
- package/package.json +6 -4
package/dist/OpenID4VCIClient.js
CHANGED
|
@@ -14,7 +14,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.OpenID4VCIClient = void 0;
|
|
16
16
|
const oid4vci_common_1 = require("@sphereon/oid4vci-common");
|
|
17
|
-
const IssuerMetadataUtils_1 = require("@sphereon/oid4vci-common/dist/functions/IssuerMetadataUtils");
|
|
18
17
|
const debug_1 = __importDefault(require("debug"));
|
|
19
18
|
const AccessTokenClient_1 = require("./AccessTokenClient");
|
|
20
19
|
const CredentialOfferClient_1 = require("./CredentialOfferClient");
|
|
@@ -24,15 +23,34 @@ const ProofOfPossessionBuilder_1 = require("./ProofOfPossessionBuilder");
|
|
|
24
23
|
const functions_1 = require("./functions");
|
|
25
24
|
const debug = (0, debug_1.default)('sphereon:oid4vci');
|
|
26
25
|
class OpenID4VCIClient {
|
|
27
|
-
constructor(credentialOffer, kid, alg,
|
|
26
|
+
constructor({ credentialOffer, clientId, kid, alg, credentialIssuer, }) {
|
|
28
27
|
this._credentialOffer = credentialOffer;
|
|
28
|
+
const issuer = credentialIssuer !== null && credentialIssuer !== void 0 ? credentialIssuer : (credentialOffer ? (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(credentialOffer.credential_offer) : undefined);
|
|
29
|
+
if (!issuer) {
|
|
30
|
+
throw Error('No credential issuer supplied or deduced from offer');
|
|
31
|
+
}
|
|
32
|
+
this._credentialIssuer = issuer;
|
|
29
33
|
this._kid = kid;
|
|
30
34
|
this._alg = alg;
|
|
31
35
|
this._clientId = clientId;
|
|
32
36
|
}
|
|
37
|
+
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, }) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
const client = new OpenID4VCIClient({ kid, alg, clientId, credentialIssuer });
|
|
40
|
+
if (retrieveServerMetadata === undefined || retrieveServerMetadata) {
|
|
41
|
+
yield client.retrieveServerMetadata();
|
|
42
|
+
}
|
|
43
|
+
return client;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
33
46
|
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, resolveOfferUri, }) {
|
|
34
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
const client = new OpenID4VCIClient(
|
|
48
|
+
const client = new OpenID4VCIClient({
|
|
49
|
+
credentialOffer: yield CredentialOfferClient_1.CredentialOfferClient.fromURI(uri, { resolve: resolveOfferUri }),
|
|
50
|
+
kid,
|
|
51
|
+
alg,
|
|
52
|
+
clientId,
|
|
53
|
+
});
|
|
36
54
|
if (retrieveServerMetadata === undefined || retrieveServerMetadata) {
|
|
37
55
|
yield client.retrieveServerMetadata();
|
|
38
56
|
}
|
|
@@ -43,17 +61,37 @@ class OpenID4VCIClient {
|
|
|
43
61
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
62
|
this.assertIssuerData();
|
|
45
63
|
if (!this._endpointMetadata) {
|
|
46
|
-
|
|
64
|
+
if (this.credentialOffer) {
|
|
65
|
+
this._endpointMetadata = yield MetadataClient_1.MetadataClient.retrieveAllMetadataFromCredentialOffer(this.credentialOffer);
|
|
66
|
+
}
|
|
67
|
+
else if (this._credentialIssuer) {
|
|
68
|
+
this._endpointMetadata = yield MetadataClient_1.MetadataClient.retrieveAllMetadata(this._credentialIssuer);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw Error(`Cannot retrieve issuer metadata without either a credential offer, or issuer value`);
|
|
72
|
+
}
|
|
47
73
|
}
|
|
48
74
|
return this.endpointMetadata;
|
|
49
75
|
});
|
|
50
76
|
}
|
|
77
|
+
// todo: Unify this method with the par method
|
|
51
78
|
createAuthorizationRequestUrl({ codeChallengeMethod, codeChallenge, authorizationDetails, redirectUri, scope }) {
|
|
52
|
-
var _a;
|
|
79
|
+
var _a, _b;
|
|
53
80
|
// Scope and authorization_details can be used in the same authorization request
|
|
54
81
|
// https://datatracker.ietf.org/doc/html/draft-ietf-oauth-rar-23#name-relationship-to-scope-param
|
|
55
82
|
if (!scope && !authorizationDetails) {
|
|
56
|
-
|
|
83
|
+
if (!this.credentialOffer) {
|
|
84
|
+
throw Error('Please provide a scope or authorization_details');
|
|
85
|
+
}
|
|
86
|
+
const creds = this.credentialOffer.credential_offer.credentials;
|
|
87
|
+
authorizationDetails = creds
|
|
88
|
+
.flatMap((cred) => (typeof cred === 'string' ? this.getCredentialsSupported(true) : cred))
|
|
89
|
+
.map((cred) => {
|
|
90
|
+
return Object.assign(Object.assign({}, cred), { type: 'openid_credential', locations: [this._credentialIssuer], format: cred.format });
|
|
91
|
+
});
|
|
92
|
+
if (authorizationDetails.length === 0) {
|
|
93
|
+
throw Error(`Could not create authorization details from credential offer. Please pass in explicit details`);
|
|
94
|
+
}
|
|
57
95
|
}
|
|
58
96
|
// todo: Probably can go with current logic in MetadataClient who will always set the authorization_endpoint when found
|
|
59
97
|
// handling this because of the support for v1_0-08
|
|
@@ -71,7 +109,7 @@ class OpenID4VCIClient {
|
|
|
71
109
|
}
|
|
72
110
|
const queryObj = {
|
|
73
111
|
response_type: oid4vci_common_1.ResponseType.AUTH_CODE,
|
|
74
|
-
code_challenge_method: codeChallengeMethod,
|
|
112
|
+
code_challenge_method: codeChallengeMethod !== null && codeChallengeMethod !== void 0 ? codeChallengeMethod : oid4vci_common_1.CodeChallengeMethod.SHA256,
|
|
75
113
|
code_challenge: codeChallenge,
|
|
76
114
|
authorization_details: JSON.stringify(this.handleAuthorizationDetails(authorizationDetails)),
|
|
77
115
|
redirect_uri: redirectUri,
|
|
@@ -80,7 +118,7 @@ class OpenID4VCIClient {
|
|
|
80
118
|
if (this.clientId) {
|
|
81
119
|
queryObj['client_id'] = this.clientId;
|
|
82
120
|
}
|
|
83
|
-
if (this.credentialOffer.issuerState) {
|
|
121
|
+
if ((_b = this.credentialOffer) === null || _b === void 0 ? void 0 : _b.issuerState) {
|
|
84
122
|
queryObj['issuer_state'] = this.credentialOffer.issuerState;
|
|
85
123
|
}
|
|
86
124
|
return (0, functions_1.convertJsonToURI)(queryObj, {
|
|
@@ -90,8 +128,9 @@ class OpenID4VCIClient {
|
|
|
90
128
|
// We do not add the version here, as this always needs to be form encoded
|
|
91
129
|
});
|
|
92
130
|
}
|
|
131
|
+
// todo: Unify this method with the create auth request url method
|
|
93
132
|
acquirePushedAuthorizationRequestURI({ codeChallengeMethod, codeChallenge, authorizationDetails, redirectUri, scope, }) {
|
|
94
|
-
var _a, _b;
|
|
133
|
+
var _a, _b, _c;
|
|
95
134
|
return __awaiter(this, void 0, void 0, function* () {
|
|
96
135
|
// Scope and authorization_details can be used in the same authorization request
|
|
97
136
|
// https://datatracker.ietf.org/doc/html/draft-ietf-oauth-rar-23#name-relationship-to-scope-param
|
|
@@ -114,7 +153,7 @@ class OpenID4VCIClient {
|
|
|
114
153
|
}
|
|
115
154
|
const queryObj = {
|
|
116
155
|
response_type: oid4vci_common_1.ResponseType.AUTH_CODE,
|
|
117
|
-
code_challenge_method: codeChallengeMethod,
|
|
156
|
+
code_challenge_method: codeChallengeMethod !== null && codeChallengeMethod !== void 0 ? codeChallengeMethod : oid4vci_common_1.CodeChallengeMethod.SHA256,
|
|
118
157
|
code_challenge: codeChallenge,
|
|
119
158
|
authorization_details: JSON.stringify(this.handleAuthorizationDetails(authorizationDetails)),
|
|
120
159
|
redirect_uri: redirectUri,
|
|
@@ -123,11 +162,11 @@ class OpenID4VCIClient {
|
|
|
123
162
|
if (this.clientId) {
|
|
124
163
|
queryObj['client_id'] = this.clientId;
|
|
125
164
|
}
|
|
126
|
-
if (this.credentialOffer.issuerState) {
|
|
165
|
+
if ((_b = this.credentialOffer) === null || _b === void 0 ? void 0 : _b.issuerState) {
|
|
127
166
|
queryObj['issuer_state'] = this.credentialOffer.issuerState;
|
|
128
167
|
}
|
|
129
168
|
const response = yield (0, functions_1.formPost)(parEndpoint, new URLSearchParams(queryObj));
|
|
130
|
-
return (0, functions_1.convertJsonToURI)({ request_uri: (
|
|
169
|
+
return (0, functions_1.convertJsonToURI)({ request_uri: (_c = response.successBody) === null || _c === void 0 ? void 0 : _c.request_uri }, {
|
|
131
170
|
baseUrl: this._endpointMetadata.credentialIssuerMetadata.authorization_endpoint,
|
|
132
171
|
uriTypeProperties: ['request_uri'],
|
|
133
172
|
mode: oid4vci_common_1.JsonURIMode.X_FORM_WWW_URLENCODED,
|
|
@@ -176,6 +215,7 @@ class OpenID4VCIClient {
|
|
|
176
215
|
const response = yield accessTokenClient.acquireAccessToken({
|
|
177
216
|
credentialOffer: this.credentialOffer,
|
|
178
217
|
metadata: this.endpointMetadata,
|
|
218
|
+
credentialIssuer: this.getIssuer(),
|
|
179
219
|
pin,
|
|
180
220
|
codeVerifier,
|
|
181
221
|
code,
|
|
@@ -204,27 +244,33 @@ class OpenID4VCIClient {
|
|
|
204
244
|
if (kid) {
|
|
205
245
|
this._kid = kid;
|
|
206
246
|
}
|
|
207
|
-
const requestBuilder =
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
247
|
+
const requestBuilder = this.credentialOffer
|
|
248
|
+
? CredentialRequestClientBuilder_1.CredentialRequestClientBuilder.fromCredentialOffer({
|
|
249
|
+
credentialOffer: this.credentialOffer,
|
|
250
|
+
metadata: this.endpointMetadata,
|
|
251
|
+
})
|
|
252
|
+
: CredentialRequestClientBuilder_1.CredentialRequestClientBuilder.fromCredentialIssuer({
|
|
253
|
+
credentialIssuer: this.getIssuer(),
|
|
254
|
+
credentialTypes,
|
|
255
|
+
metadata: this.endpointMetadata,
|
|
256
|
+
version: this.version(),
|
|
257
|
+
});
|
|
211
258
|
requestBuilder.withTokenFromResponse(this.accessTokenResponse);
|
|
212
259
|
if ((_a = this.endpointMetadata) === null || _a === void 0 ? void 0 : _a.credentialIssuerMetadata) {
|
|
213
260
|
const metadata = this.endpointMetadata.credentialIssuerMetadata;
|
|
214
|
-
const types = Array.isArray(credentialTypes) ? credentialTypes.sort() : [credentialTypes];
|
|
261
|
+
const types = Array.isArray(credentialTypes) ? [...credentialTypes].sort() : [credentialTypes];
|
|
215
262
|
if (metadata.credentials_supported && Array.isArray(metadata.credentials_supported)) {
|
|
216
263
|
let typeSupported = false;
|
|
217
264
|
metadata.credentials_supported.forEach((supportedCredential) => {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
if (supportedCredential.types.sort().every((t, i) => types[i] === t) ||
|
|
222
|
-
(types.length === 1 && (types[0] === supportedCredential.id || supportedCredential.types.includes(types[0])))) {
|
|
265
|
+
const subTypes = (0, oid4vci_common_1.getTypesFromCredentialSupported)(supportedCredential);
|
|
266
|
+
if (subTypes.sort().every((t, i) => types[i] === t) ||
|
|
267
|
+
(types.length === 1 && (types[0] === supportedCredential.id || subTypes.includes(types[0])))) {
|
|
223
268
|
typeSupported = true;
|
|
224
269
|
}
|
|
225
270
|
});
|
|
226
271
|
if (!typeSupported) {
|
|
227
|
-
|
|
272
|
+
console.log(`Not all credential types ${JSON.stringify(credentialTypes)} are present in metadata for ${this.getIssuer()}`);
|
|
273
|
+
// throw Error(`Not all credential types ${JSON.stringify(credentialTypes)} are supported by issuer ${this.getIssuer()}`);
|
|
228
274
|
}
|
|
229
275
|
}
|
|
230
276
|
else if (metadata.credentials_supported && !Array.isArray(metadata.credentials_supported)) {
|
|
@@ -256,7 +302,7 @@ class OpenID4VCIClient {
|
|
|
256
302
|
format,
|
|
257
303
|
});
|
|
258
304
|
if (response.errorBody) {
|
|
259
|
-
debug(`Credential request error:\r\n${response.errorBody}`);
|
|
305
|
+
debug(`Credential request error:\r\n${JSON.stringify(response.errorBody)}`);
|
|
260
306
|
throw Error(`Retrieving a credential from ${(_b = this._endpointMetadata) === null || _b === void 0 ? void 0 : _b.credential_endpoint} for issuer ${this.getIssuer()} failed with status: ${response.origResponse.status}`);
|
|
261
307
|
}
|
|
262
308
|
else if (!response.successBody) {
|
|
@@ -271,7 +317,7 @@ class OpenID4VCIClient {
|
|
|
271
317
|
// When < v11 convert into a v12 object. When v12 object retain it.
|
|
272
318
|
// Then match the object array on server metadata
|
|
273
319
|
getCredentialsSupported(restrictToInitiationTypes, format) {
|
|
274
|
-
return (0,
|
|
320
|
+
return (0, oid4vci_common_1.getSupportedCredentials)({
|
|
275
321
|
issuerMetadata: this.endpointMetadata.credentialIssuerMetadata,
|
|
276
322
|
version: this.version(),
|
|
277
323
|
format: format,
|
|
@@ -279,7 +325,10 @@ class OpenID4VCIClient {
|
|
|
279
325
|
});
|
|
280
326
|
}
|
|
281
327
|
getCredentialOfferTypes() {
|
|
282
|
-
if (this.credentialOffer
|
|
328
|
+
if (!this.credentialOffer) {
|
|
329
|
+
return [];
|
|
330
|
+
}
|
|
331
|
+
else if (this.credentialOffer.version < oid4vci_common_1.OpenId4VCIVersion.VER_1_0_11) {
|
|
283
332
|
const orig = this.credentialOffer.original_credential_offer;
|
|
284
333
|
const types = typeof orig.credential_type === 'string' ? [orig.credential_type] : orig.credential_type;
|
|
285
334
|
const result = [];
|
|
@@ -288,18 +337,31 @@ class OpenID4VCIClient {
|
|
|
288
337
|
}
|
|
289
338
|
else {
|
|
290
339
|
return this.credentialOffer.credential_offer.credentials.map((c) => {
|
|
291
|
-
|
|
340
|
+
if (typeof c === 'string') {
|
|
341
|
+
return [c];
|
|
342
|
+
}
|
|
343
|
+
else if ('types' in c) {
|
|
344
|
+
return c.types;
|
|
345
|
+
}
|
|
346
|
+
else if ('vct' in c.credential_definition) {
|
|
347
|
+
return [c.credential_definition.vct];
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
return c.credential_definition.types;
|
|
351
|
+
}
|
|
292
352
|
});
|
|
293
353
|
}
|
|
294
354
|
}
|
|
295
355
|
issuerSupportedFlowTypes() {
|
|
296
|
-
|
|
356
|
+
var _a, _b;
|
|
357
|
+
return (_b = (_a = this.credentialOffer) === null || _a === void 0 ? void 0 : _a.supportedFlows) !== null && _b !== void 0 ? _b : [oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW];
|
|
297
358
|
}
|
|
298
359
|
get credentialOffer() {
|
|
299
360
|
return this._credentialOffer;
|
|
300
361
|
}
|
|
301
362
|
version() {
|
|
302
|
-
|
|
363
|
+
var _a, _b;
|
|
364
|
+
return (_b = (_a = this.credentialOffer) === null || _a === void 0 ? void 0 : _a.version) !== null && _b !== void 0 ? _b : oid4vci_common_1.OpenId4VCIVersion.VER_1_0_11;
|
|
303
365
|
}
|
|
304
366
|
get endpointMetadata() {
|
|
305
367
|
this.assertServerMetadata();
|
|
@@ -321,9 +383,6 @@ class OpenID4VCIClient {
|
|
|
321
383
|
return this._alg;
|
|
322
384
|
}
|
|
323
385
|
get clientId() {
|
|
324
|
-
/*if (!this._clientId) {
|
|
325
|
-
throw Error('No client id present');
|
|
326
|
-
}*/
|
|
327
386
|
return this._clientId;
|
|
328
387
|
}
|
|
329
388
|
get accessTokenResponse() {
|
|
@@ -333,7 +392,7 @@ class OpenID4VCIClient {
|
|
|
333
392
|
}
|
|
334
393
|
getIssuer() {
|
|
335
394
|
this.assertIssuerData();
|
|
336
|
-
return this.
|
|
395
|
+
return this._credentialIssuer;
|
|
337
396
|
}
|
|
338
397
|
getAccessTokenEndpoint() {
|
|
339
398
|
this.assertIssuerData();
|
|
@@ -346,9 +405,12 @@ class OpenID4VCIClient {
|
|
|
346
405
|
return this.endpointMetadata ? this.endpointMetadata.credential_endpoint : `${this.getIssuer()}/credential`;
|
|
347
406
|
}
|
|
348
407
|
assertIssuerData() {
|
|
349
|
-
if (!this._credentialOffer) {
|
|
408
|
+
if (!this._credentialOffer && this.issuerSupportedFlowTypes().includes(oid4vci_common_1.AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
|
|
350
409
|
throw Error(`No issuance initiation or credential offer present`);
|
|
351
410
|
}
|
|
411
|
+
else if (!this._credentialIssuer) {
|
|
412
|
+
throw Error(`No credential issuer value present`);
|
|
413
|
+
}
|
|
352
414
|
}
|
|
353
415
|
assertServerMetadata() {
|
|
354
416
|
if (!this._endpointMetadata) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenID4VCIClient.js","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenID4VCIClient.js","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
package/lib/AccessTokenClient.ts
CHANGED
|
@@ -27,9 +27,11 @@ export class AccessTokenClient {
|
|
|
27
27
|
public async acquireAccessToken(opts: AccessTokenRequestOpts): Promise<OpenIDResponse<AccessTokenResponse>> {
|
|
28
28
|
const { asOpts, pin, codeVerifier, code, redirectUri, metadata } = opts;
|
|
29
29
|
|
|
30
|
-
const credentialOffer = await assertedUniformCredentialOffer(opts.credentialOffer);
|
|
31
|
-
const isPinRequired = this.isPinRequiredValue(credentialOffer.credential_offer);
|
|
32
|
-
const issuer =
|
|
30
|
+
const credentialOffer = opts.credentialOffer ? await assertedUniformCredentialOffer(opts.credentialOffer) : undefined;
|
|
31
|
+
const isPinRequired = credentialOffer && this.isPinRequiredValue(credentialOffer.credential_offer);
|
|
32
|
+
const issuer =
|
|
33
|
+
opts.credentialIssuer ??
|
|
34
|
+
(credentialOffer ? getIssuerFromCredentialOfferPayload(credentialOffer.credential_offer) : (metadata?.issuer as string));
|
|
33
35
|
if (!issuer) {
|
|
34
36
|
throw Error('Issuer required at this point');
|
|
35
37
|
}
|
|
@@ -83,14 +85,14 @@ export class AccessTokenClient {
|
|
|
83
85
|
|
|
84
86
|
public async createAccessTokenRequest(opts: AccessTokenRequestOpts): Promise<AccessTokenRequest> {
|
|
85
87
|
const { asOpts, pin, codeVerifier, code, redirectUri } = opts;
|
|
86
|
-
const credentialOfferRequest = await toUniformCredentialOfferRequest(opts.credentialOffer);
|
|
88
|
+
const credentialOfferRequest = opts.credentialOffer ? await toUniformCredentialOfferRequest(opts.credentialOffer) : undefined;
|
|
87
89
|
const request: Partial<AccessTokenRequest> = {};
|
|
88
90
|
|
|
89
91
|
if (asOpts?.clientId) {
|
|
90
92
|
request.client_id = asOpts.clientId;
|
|
91
93
|
}
|
|
92
94
|
|
|
93
|
-
if (credentialOfferRequest
|
|
95
|
+
if (credentialOfferRequest?.supportedFlows.includes(AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
|
|
94
96
|
this.assertNumericPin(this.isPinRequiredValue(credentialOfferRequest.credential_offer), pin);
|
|
95
97
|
request.user_pin = pin;
|
|
96
98
|
|
|
@@ -102,7 +104,7 @@ export class AccessTokenClient {
|
|
|
102
104
|
return request as AccessTokenRequest;
|
|
103
105
|
}
|
|
104
106
|
|
|
105
|
-
if (credentialOfferRequest.supportedFlows.includes(AuthzFlowType.AUTHORIZATION_CODE_FLOW)) {
|
|
107
|
+
if (!credentialOfferRequest || credentialOfferRequest.supportedFlows.includes(AuthzFlowType.AUTHORIZATION_CODE_FLOW)) {
|
|
106
108
|
request.grant_type = GrantTypes.AUTHORIZATION_CODE;
|
|
107
109
|
request.code = code;
|
|
108
110
|
request.redirect_uri = redirectUri;
|
|
@@ -243,7 +245,7 @@ export class AccessTokenClient {
|
|
|
243
245
|
}
|
|
244
246
|
|
|
245
247
|
private throwNotSupportedFlow(): void {
|
|
246
|
-
debug(`Only pre-authorized
|
|
247
|
-
throw new Error('Only pre-authorized-code
|
|
248
|
+
debug(`Only pre-authorized or authorization code flows supported.`);
|
|
249
|
+
throw new Error('Only pre-authorized-code or authorization code flows are supported');
|
|
248
250
|
}
|
|
249
251
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AuthorizationDetailsJwtVcJson, OID4VCICredentialFormat } from '@sphereon/oid4vci-common';
|
|
1
|
+
import { AuthorizationDetails, AuthorizationDetailsJwtVcJson, OID4VCICredentialFormat } from '@sphereon/oid4vci-common';
|
|
2
2
|
|
|
3
3
|
//todo: refactor this builder to be able to create ldp details as well
|
|
4
4
|
export class AuthorizationDetailsBuilder {
|
|
5
|
-
private readonly authorizationDetails: Partial<
|
|
5
|
+
private readonly authorizationDetails: Partial<Exclude<AuthorizationDetails, string>>;
|
|
6
6
|
|
|
7
7
|
constructor() {
|
|
8
8
|
this.authorizationDetails = {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
CredentialRequestV1_0_08,
|
|
3
2
|
CredentialResponse,
|
|
3
|
+
getCredentialRequestForVersion,
|
|
4
|
+
getUniformFormat,
|
|
4
5
|
OID4VCICredentialFormat,
|
|
5
6
|
OpenId4VCIVersion,
|
|
6
7
|
OpenIDResponse,
|
|
@@ -53,33 +54,17 @@ export class CredentialRequestClient {
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
public async acquireCredentialsUsingRequest(uniformRequest: UniformCredentialRequest): Promise<OpenIDResponse<CredentialResponse>> {
|
|
56
|
-
|
|
57
|
-
if (!this.isV11OrHigher()) {
|
|
58
|
-
let format: string = uniformRequest.format;
|
|
59
|
-
if (format === 'jwt_vc_json') {
|
|
60
|
-
format = 'jwt_vc';
|
|
61
|
-
} else if (format === 'jwt_vc_json-ld') {
|
|
62
|
-
format = 'ldp_vc';
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
request = {
|
|
66
|
-
format,
|
|
67
|
-
proof: uniformRequest.proof,
|
|
68
|
-
type:
|
|
69
|
-
'types' in uniformRequest
|
|
70
|
-
? uniformRequest.types.filter((t) => t !== 'VerifiableCredential')[0]
|
|
71
|
-
: uniformRequest.credential_definition.types[0],
|
|
72
|
-
} as CredentialRequestV1_0_08;
|
|
73
|
-
}
|
|
57
|
+
const request = getCredentialRequestForVersion(uniformRequest, this.version());
|
|
74
58
|
const credentialEndpoint: string = this.credentialRequestOpts.credentialEndpoint;
|
|
75
59
|
if (!isValidURL(credentialEndpoint)) {
|
|
76
60
|
debug(`Invalid credential endpoint: ${credentialEndpoint}`);
|
|
77
61
|
throw new Error(URL_NOT_VALID);
|
|
78
62
|
}
|
|
79
63
|
debug(`Acquiring credential(s) from: ${credentialEndpoint}`);
|
|
64
|
+
debug(`request\n: ${JSON.stringify(request, null, 2)}`);
|
|
80
65
|
const requestToken: string = this.credentialRequestOpts.token;
|
|
81
66
|
const response: OpenIDResponse<CredentialResponse> = await post(credentialEndpoint, JSON.stringify(request), { bearerToken: requestToken });
|
|
82
|
-
debug(`Credential endpoint ${credentialEndpoint} response:\r\n${response}`);
|
|
67
|
+
debug(`Credential endpoint ${credentialEndpoint} response:\r\n${JSON.stringify(response, null, 2)}`);
|
|
83
68
|
return response;
|
|
84
69
|
}
|
|
85
70
|
|
|
@@ -92,20 +77,10 @@ export class CredentialRequestClient {
|
|
|
92
77
|
const { proofInput } = opts;
|
|
93
78
|
const formatSelection = opts.format ?? this.credentialRequestOpts.format;
|
|
94
79
|
|
|
95
|
-
|
|
96
|
-
if (opts.version < OpenId4VCIVersion.VER_1_0_11) {
|
|
97
|
-
if (formatSelection === 'jwt_vc' || formatSelection === 'jwt') {
|
|
98
|
-
format = 'jwt_vc_json';
|
|
99
|
-
} else if (formatSelection === 'ldp_vc' || formatSelection === 'ldp') {
|
|
100
|
-
format = 'jwt_vc_json-ld';
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (!format) {
|
|
80
|
+
if (!formatSelection) {
|
|
105
81
|
throw Error(`Format of credential to be issued is missing`);
|
|
106
|
-
} else if (format !== 'jwt_vc_json-ld' && format !== 'jwt_vc_json' && format !== 'ldp_vc') {
|
|
107
|
-
throw Error(`Invalid format of credential to be issued: ${format}`);
|
|
108
82
|
}
|
|
83
|
+
const format = getUniformFormat(formatSelection);
|
|
109
84
|
const typesSelection =
|
|
110
85
|
opts?.credentialTypes && (typeof opts.credentialTypes === 'string' || opts.credentialTypes.length > 0)
|
|
111
86
|
? opts.credentialTypes
|
|
@@ -113,7 +88,9 @@ export class CredentialRequestClient {
|
|
|
113
88
|
const types = Array.isArray(typesSelection) ? typesSelection : [typesSelection];
|
|
114
89
|
if (types.length === 0) {
|
|
115
90
|
throw Error(`Credential type(s) need to be provided`);
|
|
116
|
-
}
|
|
91
|
+
}
|
|
92
|
+
// FIXME: this is mixing up the type (as id) from v8/v9 and the types (from the vc.type) from v11
|
|
93
|
+
else if (!this.isV11OrHigher() && types.length !== 1) {
|
|
117
94
|
throw Error('Only a single credential type is supported for V8/V9');
|
|
118
95
|
}
|
|
119
96
|
|
|
@@ -121,16 +98,45 @@ export class CredentialRequestClient {
|
|
|
121
98
|
'proof_type' in proofInput
|
|
122
99
|
? await ProofOfPossessionBuilder.fromProof(proofInput as ProofOfPossession, opts.version).build()
|
|
123
100
|
: await proofInput.build();
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
101
|
+
|
|
102
|
+
// TODO: we should move format specific logic
|
|
103
|
+
if (format === 'jwt_vc_json' || format === 'jwt_vc') {
|
|
104
|
+
return {
|
|
105
|
+
types,
|
|
106
|
+
format,
|
|
107
|
+
proof,
|
|
108
|
+
};
|
|
109
|
+
} else if (format === 'jwt_vc_json-ld' || format === 'ldp_vc') {
|
|
110
|
+
return {
|
|
111
|
+
format,
|
|
112
|
+
proof,
|
|
113
|
+
credential_definition: {
|
|
114
|
+
types,
|
|
115
|
+
// FIXME: this was not included in the original code, but it is required
|
|
116
|
+
'@context': [],
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
} else if (format === 'vc+sd-jwt') {
|
|
120
|
+
if (types.length > 1) {
|
|
121
|
+
throw Error(`Only a single credential type is supported for ${format}`);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return {
|
|
125
|
+
format,
|
|
126
|
+
proof,
|
|
127
|
+
credential_definition: {
|
|
128
|
+
vct: types[0],
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
throw new Error(`Unsupported format: ${format}`);
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
private version(): OpenId4VCIVersion {
|
|
132
137
|
return this.credentialRequestOpts?.version ?? OpenId4VCIVersion.VER_1_0_11;
|
|
133
138
|
}
|
|
139
|
+
|
|
134
140
|
private isV11OrHigher(): boolean {
|
|
135
141
|
return this.version() >= OpenId4VCIVersion.VER_1_0_11;
|
|
136
142
|
}
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
determineSpecVersionFromOffer,
|
|
7
7
|
EndpointMetadata,
|
|
8
8
|
getIssuerFromCredentialOfferPayload,
|
|
9
|
+
getTypesFromOffer,
|
|
9
10
|
OID4VCICredentialFormat,
|
|
10
11
|
OpenId4VCIVersion,
|
|
11
12
|
UniformCredentialOfferRequest,
|
|
@@ -22,6 +23,25 @@ export class CredentialRequestClientBuilder {
|
|
|
22
23
|
token?: string;
|
|
23
24
|
version?: OpenId4VCIVersion;
|
|
24
25
|
|
|
26
|
+
public static fromCredentialIssuer({
|
|
27
|
+
credentialIssuer,
|
|
28
|
+
metadata,
|
|
29
|
+
version,
|
|
30
|
+
credentialTypes,
|
|
31
|
+
}: {
|
|
32
|
+
credentialIssuer: string;
|
|
33
|
+
metadata?: EndpointMetadata;
|
|
34
|
+
version?: OpenId4VCIVersion;
|
|
35
|
+
credentialTypes: string | string[];
|
|
36
|
+
}): CredentialRequestClientBuilder {
|
|
37
|
+
const issuer = credentialIssuer;
|
|
38
|
+
const builder = new CredentialRequestClientBuilder();
|
|
39
|
+
builder.withVersion(version ?? OpenId4VCIVersion.VER_1_0_11);
|
|
40
|
+
builder.withCredentialEndpoint(metadata?.credential_endpoint ?? (issuer.endsWith('/') ? `${issuer}credential` : `${issuer}/credential`));
|
|
41
|
+
builder.withCredentialType(credentialTypes);
|
|
42
|
+
return builder;
|
|
43
|
+
}
|
|
44
|
+
|
|
25
45
|
public static async fromURI({ uri, metadata }: { uri: string; metadata?: EndpointMetadata }): Promise<CredentialRequestClientBuilder> {
|
|
26
46
|
const offer = await CredentialOfferClient.fromURI(uri);
|
|
27
47
|
return CredentialRequestClientBuilder.fromCredentialOfferRequest({ request: offer, ...offer, metadata, version: offer.version });
|
|
@@ -46,7 +66,7 @@ export class CredentialRequestClientBuilder {
|
|
|
46
66
|
builder.withCredentialType((request.original_credential_offer as CredentialOfferPayloadV1_0_08).credential_type);
|
|
47
67
|
} else {
|
|
48
68
|
// todo: look whether this is correct
|
|
49
|
-
builder.withCredentialType(request.credential_offer
|
|
69
|
+
builder.withCredentialType(getTypesFromOffer(request.credential_offer));
|
|
50
70
|
}
|
|
51
71
|
|
|
52
72
|
return builder;
|