@sphereon/oid4vci-client 0.8.2-unstable.58 → 0.8.2-unstable.61
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/AuthorizationCodeClient.d.ts.map +1 -1
- package/dist/AuthorizationCodeClient.js +2 -1
- package/dist/AuthorizationCodeClient.js.map +1 -1
- package/dist/OpenID4VCIClient.d.ts +12 -4
- package/dist/OpenID4VCIClient.d.ts.map +1 -1
- package/dist/OpenID4VCIClient.js +26 -16
- package/dist/OpenID4VCIClient.js.map +1 -1
- package/lib/AuthorizationCodeClient.ts +3 -2
- package/lib/OpenID4VCIClient.ts +217 -203
- package/lib/__tests__/EBSIE2E.spec.test.ts +2 -2
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../lib/AuthorizationCodeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAGxB,iCAAiC,EACjC,mBAAmB,EACnB,sBAAsB,EAGtB,QAAQ,EAGT,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,6BAA6B;UAOlC,QAAQ;sBACI,sBAAsB;0BAClB,wBAAwB;;;MAG5C,QAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"AuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../lib/AuthorizationCodeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAGxB,iCAAiC,EACjC,mBAAmB,EACnB,sBAAsB,EAGtB,QAAQ,EAGT,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,6BAA6B;UAOlC,QAAQ;sBACI,sBAAsB;0BAClB,wBAAwB;;;MAG5C,QAAQ,MAAM,CAqFjB,CAAC"}
|
|
@@ -75,7 +75,8 @@ const createAuthorizationRequestUrl = ({ pkce, endpointMetadata, authorizationRe
|
|
|
75
75
|
console.log(`QUERY obj: ` + JSON.stringify(queryObj, null, 2));
|
|
76
76
|
const url = (0, oid4vci_common_1.convertJsonToURI)(queryObj, {
|
|
77
77
|
baseUrl: endpointMetadata.authorization_endpoint,
|
|
78
|
-
uriTypeProperties: ['request_uri', 'redirect_uri', 'scope', 'authorization_details', 'issuer_state'],
|
|
78
|
+
uriTypeProperties: ['client_id', 'request_uri', 'redirect_uri', 'scope', 'authorization_details', 'issuer_state'],
|
|
79
|
+
// arrayTypeProperties: ['authorization_details'],
|
|
79
80
|
mode: oid4vci_common_1.JsonURIMode.X_FORM_WWW_URLENCODED,
|
|
80
81
|
// We do not add the version here, as this always needs to be form encoded
|
|
81
82
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorizationCodeClient.js","sourceRoot":"","sources":["../lib/AuthorizationCodeClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AuthorizationCodeClient.js","sourceRoot":"","sources":["../lib/AuthorizationCodeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccessTokenResponse, Alg, AuthorizationRequestOpts, AuthzFlowType, CredentialOfferRequestWithBaseUrl, CredentialResponse, CredentialSupported, EndpointMetadataResult, JWK, OID4VCICredentialFormat, OpenId4VCIVersion, PKCEOpts, ProofOfPossessionCallbacks } from '@sphereon/oid4vci-common';
|
|
1
|
+
import { AccessTokenResponse, Alg, AuthorizationRequestOpts, AuthorizationResponse, AuthzFlowType, CredentialOfferRequestWithBaseUrl, CredentialResponse, CredentialSupported, EndpointMetadataResult, JWK, OID4VCICredentialFormat, OpenId4VCIVersion, PKCEOpts, ProofOfPossessionCallbacks } from '@sphereon/oid4vci-common';
|
|
2
2
|
import { CredentialFormat } from '@sphereon/ssi-types';
|
|
3
3
|
export declare class OpenID4VCIClient {
|
|
4
4
|
private readonly _credentialOffer?;
|
|
@@ -13,7 +13,7 @@ export declare class OpenID4VCIClient {
|
|
|
13
13
|
private _authorizationRequestOpts?;
|
|
14
14
|
private _authorizationURL?;
|
|
15
15
|
private constructor();
|
|
16
|
-
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, pkce, authorizationRequest, createAuthorizationRequestURL
|
|
16
|
+
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, pkce, authorizationRequest, createAuthorizationRequestURL }: {
|
|
17
17
|
credentialIssuer: string;
|
|
18
18
|
kid?: string;
|
|
19
19
|
alg?: Alg | string;
|
|
@@ -23,7 +23,7 @@ export declare class OpenID4VCIClient {
|
|
|
23
23
|
authorizationRequest?: AuthorizationRequestOpts;
|
|
24
24
|
pkce?: PKCEOpts;
|
|
25
25
|
}): Promise<OpenID4VCIClient>;
|
|
26
|
-
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, pkce, createAuthorizationRequestURL, authorizationRequest, resolveOfferUri
|
|
26
|
+
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, pkce, createAuthorizationRequestURL, authorizationRequest, resolveOfferUri }: {
|
|
27
27
|
uri: string;
|
|
28
28
|
kid?: string;
|
|
29
29
|
alg?: Alg | string;
|
|
@@ -34,6 +34,12 @@ export declare class OpenID4VCIClient {
|
|
|
34
34
|
clientId?: string;
|
|
35
35
|
authorizationRequest?: AuthorizationRequestOpts;
|
|
36
36
|
}): Promise<OpenID4VCIClient>;
|
|
37
|
+
/**
|
|
38
|
+
* Allows you to create an Authorization Request URL when using an Authorization Code flow. This URL needs to be accessed using the front channel (browser)
|
|
39
|
+
*
|
|
40
|
+
* The Identity provider would present a login screen typically; after you authenticated, it would redirect to the provided redirectUri; which can be same device or cross-device
|
|
41
|
+
* @param opts
|
|
42
|
+
*/
|
|
37
43
|
createAuthorizationRequestUrl(opts?: {
|
|
38
44
|
authorizationRequest?: AuthorizationRequestOpts;
|
|
39
45
|
pkce?: PKCEOpts;
|
|
@@ -44,10 +50,11 @@ export declare class OpenID4VCIClient {
|
|
|
44
50
|
pin?: string;
|
|
45
51
|
clientId?: string;
|
|
46
52
|
codeVerifier?: string;
|
|
53
|
+
authorizationResponse?: string | AuthorizationResponse;
|
|
47
54
|
code?: string;
|
|
48
55
|
redirectUri?: string;
|
|
49
56
|
}): Promise<AccessTokenResponse>;
|
|
50
|
-
acquireCredentials({ credentialTypes, proofCallbacks, format, kid, jwk, alg, jti, deferredCredentialAwait, deferredCredentialIntervalInMS
|
|
57
|
+
acquireCredentials({ credentialTypes, proofCallbacks, format, kid, jwk, alg, jti, deferredCredentialAwait, deferredCredentialIntervalInMS }: {
|
|
51
58
|
credentialTypes: string | string[];
|
|
52
59
|
proofCallbacks: ProofOfPossessionCallbacks<any>;
|
|
53
60
|
format?: CredentialFormat | OID4VCICredentialFormat;
|
|
@@ -70,6 +77,7 @@ export declare class OpenID4VCIClient {
|
|
|
70
77
|
get kid(): string;
|
|
71
78
|
get alg(): string;
|
|
72
79
|
get clientId(): string | undefined;
|
|
80
|
+
hasAccessTokenResponse(): boolean;
|
|
73
81
|
get accessTokenResponse(): AccessTokenResponse;
|
|
74
82
|
getIssuer(): string;
|
|
75
83
|
getAccessTokenEndpoint(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenID4VCIClient.d.ts","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,GAAG,EACH,wBAAwB,EACxB,aAAa,EAGb,iCAAiC,EACjC,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EAKtB,GAAG,EAEH,uBAAuB,EACvB,iBAAiB,EACjB,QAAQ,EACR,0BAA0B,
|
|
1
|
+
{"version":3,"file":"OpenID4VCIClient.d.ts","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
package/dist/OpenID4VCIClient.js
CHANGED
|
@@ -24,7 +24,7 @@ const ProofOfPossessionBuilder_1 = require("./ProofOfPossessionBuilder");
|
|
|
24
24
|
const AuthorizationUtil_1 = require("./functions/AuthorizationUtil");
|
|
25
25
|
const debug = (0, debug_1.default)('sphereon:oid4vci');
|
|
26
26
|
class OpenID4VCIClient {
|
|
27
|
-
constructor({ credentialOffer, clientId, kid, alg, credentialIssuer, pkce, authorizationRequest
|
|
27
|
+
constructor({ credentialOffer, clientId, kid, alg, credentialIssuer, pkce, authorizationRequest }) {
|
|
28
28
|
this._pkce = { disabled: false, codeChallengeMethod: oid4vci_common_1.CodeChallengeMethod.S256 };
|
|
29
29
|
this._credentialOffer = credentialOffer;
|
|
30
30
|
const issuer = credentialIssuer !== null && credentialIssuer !== void 0 ? credentialIssuer : (credentialOffer ? (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(credentialOffer.credential_offer) : undefined);
|
|
@@ -39,7 +39,7 @@ class OpenID4VCIClient {
|
|
|
39
39
|
this._authorizationRequestOpts = this.syncAuthorizationRequestOpts(authorizationRequest);
|
|
40
40
|
console.log(`Authorization req options: ${JSON.stringify(this._authorizationRequestOpts, null, 2)}`);
|
|
41
41
|
}
|
|
42
|
-
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, pkce, authorizationRequest, createAuthorizationRequestURL
|
|
42
|
+
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, pkce, authorizationRequest, createAuthorizationRequestURL }) {
|
|
43
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
44
|
const client = new OpenID4VCIClient({
|
|
45
45
|
kid,
|
|
@@ -47,7 +47,7 @@ class OpenID4VCIClient {
|
|
|
47
47
|
clientId: clientId !== null && clientId !== void 0 ? clientId : authorizationRequest === null || authorizationRequest === void 0 ? void 0 : authorizationRequest.clientId,
|
|
48
48
|
credentialIssuer,
|
|
49
49
|
pkce,
|
|
50
|
-
authorizationRequest
|
|
50
|
+
authorizationRequest
|
|
51
51
|
});
|
|
52
52
|
if (retrieveServerMetadata === undefined || retrieveServerMetadata) {
|
|
53
53
|
yield client.retrieveServerMetadata();
|
|
@@ -58,7 +58,7 @@ class OpenID4VCIClient {
|
|
|
58
58
|
return client;
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
-
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, pkce, createAuthorizationRequestURL, authorizationRequest, resolveOfferUri
|
|
61
|
+
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, pkce, createAuthorizationRequestURL, authorizationRequest, resolveOfferUri }) {
|
|
62
62
|
var _a;
|
|
63
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
64
|
const credentialOfferClient = yield CredentialOfferClient_1.CredentialOfferClient.fromURI(uri, { resolve: resolveOfferUri });
|
|
@@ -68,7 +68,7 @@ class OpenID4VCIClient {
|
|
|
68
68
|
alg,
|
|
69
69
|
clientId: (_a = clientId !== null && clientId !== void 0 ? clientId : authorizationRequest === null || authorizationRequest === void 0 ? void 0 : authorizationRequest.clientId) !== null && _a !== void 0 ? _a : credentialOfferClient.clientId,
|
|
70
70
|
pkce,
|
|
71
|
-
authorizationRequest
|
|
71
|
+
authorizationRequest
|
|
72
72
|
});
|
|
73
73
|
if (retrieveServerMetadata === undefined || retrieveServerMetadata) {
|
|
74
74
|
yield client.retrieveServerMetadata();
|
|
@@ -82,6 +82,12 @@ class OpenID4VCIClient {
|
|
|
82
82
|
return client;
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Allows you to create an Authorization Request URL when using an Authorization Code flow. This URL needs to be accessed using the front channel (browser)
|
|
87
|
+
*
|
|
88
|
+
* The Identity provider would present a login screen typically; after you authenticated, it would redirect to the provided redirectUri; which can be same device or cross-device
|
|
89
|
+
* @param opts
|
|
90
|
+
*/
|
|
85
91
|
createAuthorizationRequestUrl(opts) {
|
|
86
92
|
var _a;
|
|
87
93
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -101,7 +107,7 @@ class OpenID4VCIClient {
|
|
|
101
107
|
endpointMetadata: this.endpointMetadata,
|
|
102
108
|
authorizationRequest: this._authorizationRequestOpts,
|
|
103
109
|
credentialOffer: this.credentialOffer,
|
|
104
|
-
credentialsSupported: this.getCredentialsSupported(true)
|
|
110
|
+
credentialsSupported: this.getCredentialsSupported(true)
|
|
105
111
|
});
|
|
106
112
|
}
|
|
107
113
|
return this._authorizationURL;
|
|
@@ -128,9 +134,10 @@ class OpenID4VCIClient {
|
|
|
128
134
|
this._pkce = (0, AuthorizationUtil_1.generateMissingPKCEOpts)(Object.assign(Object.assign({}, this._pkce), pkce));
|
|
129
135
|
}
|
|
130
136
|
acquireAccessToken(opts) {
|
|
131
|
-
var _a, _b;
|
|
137
|
+
var _a, _b, _c;
|
|
132
138
|
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
-
const { pin, clientId,
|
|
139
|
+
const { pin, clientId, redirectUri } = opts !== null && opts !== void 0 ? opts : {};
|
|
140
|
+
const code = (_a = opts === null || opts === void 0 ? void 0 : opts.code) !== null && _a !== void 0 ? _a : ((opts === null || opts === void 0 ? void 0 : opts.authorizationResponse) ? (0, oid4vci_common_1.toAuthorizationResponsePayload)(opts.authorizationResponse).code : undefined);
|
|
134
141
|
if (opts === null || opts === void 0 ? void 0 : opts.codeVerifier) {
|
|
135
142
|
this._pkce.codeVerifier = opts.codeVerifier;
|
|
136
143
|
}
|
|
@@ -144,18 +151,18 @@ class OpenID4VCIClient {
|
|
|
144
151
|
redirectUri, asOpts: { clientId } }));
|
|
145
152
|
if (response.errorBody) {
|
|
146
153
|
debug(`Access token error:\r\n${response.errorBody}`);
|
|
147
|
-
throw Error(`Retrieving an access token from ${(
|
|
154
|
+
throw Error(`Retrieving an access token from ${(_b = this._endpointMetadata) === null || _b === void 0 ? void 0 : _b.token_endpoint} for issuer ${this.getIssuer()} failed with status: ${response.origResponse.status}`);
|
|
148
155
|
}
|
|
149
156
|
else if (!response.successBody) {
|
|
150
157
|
debug(`Access token error. No success body`);
|
|
151
|
-
throw Error(`Retrieving an access token from ${(
|
|
158
|
+
throw Error(`Retrieving an access token from ${(_c = this._endpointMetadata) === null || _c === void 0 ? void 0 : _c.token_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`);
|
|
152
159
|
}
|
|
153
160
|
this._accessTokenResponse = response.successBody;
|
|
154
161
|
}
|
|
155
162
|
return this.accessTokenResponse;
|
|
156
163
|
});
|
|
157
164
|
}
|
|
158
|
-
acquireCredentials({ credentialTypes, proofCallbacks, format, kid, jwk, alg, jti, deferredCredentialAwait, deferredCredentialIntervalInMS
|
|
165
|
+
acquireCredentials({ credentialTypes, proofCallbacks, format, kid, jwk, alg, jti, deferredCredentialAwait, deferredCredentialIntervalInMS }) {
|
|
159
166
|
var _a, _b, _c;
|
|
160
167
|
return __awaiter(this, void 0, void 0, function* () {
|
|
161
168
|
if ([jwk, kid].filter((v) => v !== undefined).length > 1) {
|
|
@@ -170,13 +177,13 @@ class OpenID4VCIClient {
|
|
|
170
177
|
const requestBuilder = this.credentialOffer
|
|
171
178
|
? CredentialRequestClientBuilder_1.CredentialRequestClientBuilder.fromCredentialOffer({
|
|
172
179
|
credentialOffer: this.credentialOffer,
|
|
173
|
-
metadata: this.endpointMetadata
|
|
180
|
+
metadata: this.endpointMetadata
|
|
174
181
|
})
|
|
175
182
|
: CredentialRequestClientBuilder_1.CredentialRequestClientBuilder.fromCredentialIssuer({
|
|
176
183
|
credentialIssuer: this.getIssuer(),
|
|
177
184
|
credentialTypes,
|
|
178
185
|
metadata: this.endpointMetadata,
|
|
179
|
-
version: this.version()
|
|
186
|
+
version: this.version()
|
|
180
187
|
});
|
|
181
188
|
requestBuilder.withTokenFromResponse(this.accessTokenResponse);
|
|
182
189
|
requestBuilder.withDeferredCredentialAwait(deferredCredentialAwait !== null && deferredCredentialAwait !== void 0 ? deferredCredentialAwait : false, deferredCredentialIntervalInMS);
|
|
@@ -209,7 +216,7 @@ class OpenID4VCIClient {
|
|
|
209
216
|
const proofBuilder = ProofOfPossessionBuilder_1.ProofOfPossessionBuilder.fromAccessTokenResponse({
|
|
210
217
|
accessTokenResponse: this.accessTokenResponse,
|
|
211
218
|
callbacks: proofCallbacks,
|
|
212
|
-
version: this.version()
|
|
219
|
+
version: this.version()
|
|
213
220
|
})
|
|
214
221
|
.withIssuer(this.getIssuer())
|
|
215
222
|
.withAlg(this.alg);
|
|
@@ -228,7 +235,7 @@ class OpenID4VCIClient {
|
|
|
228
235
|
const response = yield credentialRequestClient.acquireCredentialsUsingProof({
|
|
229
236
|
proofInput: proofBuilder,
|
|
230
237
|
credentialTypes: credentialTypes,
|
|
231
|
-
format
|
|
238
|
+
format
|
|
232
239
|
});
|
|
233
240
|
if (response.errorBody) {
|
|
234
241
|
debug(`Credential request error:\r\n${JSON.stringify(response.errorBody)}`);
|
|
@@ -250,7 +257,7 @@ class OpenID4VCIClient {
|
|
|
250
257
|
issuerMetadata: this.endpointMetadata.credentialIssuerMetadata,
|
|
251
258
|
version: this.version(),
|
|
252
259
|
format: format,
|
|
253
|
-
types: restrictToInitiationTypes ? this.getCredentialOfferTypes() : undefined
|
|
260
|
+
types: restrictToInitiationTypes ? this.getCredentialOfferTypes() : undefined
|
|
254
261
|
});
|
|
255
262
|
}
|
|
256
263
|
getCredentialOfferTypes() {
|
|
@@ -323,6 +330,9 @@ class OpenID4VCIClient {
|
|
|
323
330
|
get clientId() {
|
|
324
331
|
return this._clientId;
|
|
325
332
|
}
|
|
333
|
+
hasAccessTokenResponse() {
|
|
334
|
+
return !!this._accessTokenResponse;
|
|
335
|
+
}
|
|
326
336
|
get accessTokenResponse() {
|
|
327
337
|
this.assertAccessToken();
|
|
328
338
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenID4VCIClient.js","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAqBkC;AAElC,kDAA0B;AAE1B,2DAAwD;AACxD,uEAA0E;AAC1E,mEAAgE;AAChE,qFAAkF;AAClF,qDAAkD;AAClD,yEAAsE;AACtE,qEAAwE;AAExE,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,kBAAkB,CAAC,CAAC;AAExC,MAAa,gBAAgB;IAc3B,YAAoB,EAClB,eAAe,EACf,QAAQ,EACR,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,IAAI,EACJ,oBAAoB,GASrB;QArBO,UAAK,GAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,oCAAmB,CAAC,IAAI,EAAE,CAAC;QAsB3F,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,MAAM,MAAM,GAAG,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAA,oDAAmC,EAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzI,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAA,sDAAqC,EAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrI,IAAI,CAAC,KAAK,mCAAQ,IAAI,CAAC,KAAK,GAAK,IAAI,CAAE,CAAC;QACxC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IAEM,MAAM,CAAO,oBAAoB,CAAC,EACvC,GAAG,EACH,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,IAAI,EACJ,oBAAoB,EACpB,6BAA6B,GAU9B;;YACC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;gBAClC,GAAG;gBACH,GAAG;gBACH,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,QAAQ;gBACpD,gBAAgB;gBAChB,IAAI;gBACJ,oBAAoB;aACrB,CAAC,CAAC;YACH,IAAI,sBAAsB,KAAK,SAAS,IAAI,sBAAsB,EAAE,CAAC;gBACnE,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACxC,CAAC;YACD,IAAI,6BAA6B,KAAK,SAAS,IAAI,6BAA6B,EAAE,CAAC;gBACjF,MAAM,MAAM,CAAC,6BAA6B,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAEM,MAAM,CAAO,OAAO,CAAC,EAC1B,GAAG,EACH,GAAG,EACH,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,IAAI,EACJ,6BAA6B,EAC7B,oBAAoB,EACpB,eAAe,GAWhB;;;YACC,MAAM,qBAAqB,GAAG,MAAM,6CAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;YACrG,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;gBAClC,eAAe,EAAE,qBAAqB;gBACtC,GAAG;gBACH,GAAG;gBACH,QAAQ,EAAE,MAAA,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,QAAQ,mCAAI,qBAAqB,CAAC,QAAQ;gBACtF,IAAI;gBACJ,oBAAoB;aACrB,CAAC,CAAC;YAEH,IAAI,sBAAsB,KAAK,SAAS,IAAI,sBAAsB,EAAE,CAAC;gBACnE,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACxC,CAAC;YACD,IACE,qBAAqB,CAAC,cAAc,CAAC,QAAQ,CAAC,8BAAa,CAAC,uBAAuB,CAAC;gBACpF,CAAC,6BAA6B,KAAK,SAAS,IAAI,6BAA6B,CAAC,EAC9E,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACxB,MAAM,MAAM,CAAC,6BAA6B,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,MAAM,CAAC;;KACf;IAEY,6BAA6B,CAAC,IAA2E;;;YACpH,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,oBAAoB,CAAC,CAAC;gBAC/F,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBACpC,MAAM,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACnF,CAAC;gBAED,uHAAuH;gBACvH,oDAAoD;gBACpD,IAAI,CAAA,MAAA,IAAI,CAAC,iBAAiB,0CAAE,wBAAwB,KAAI,wBAAwB,IAAI,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,CAAC;oBACpI,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,sBAAgC,CAAC;gBACnI,CAAC;gBACD,IAAI,CAAC,iBAAiB,GAAG,MAAM,IAAA,uDAA6B,EAAC;oBAC3D,IAAI,EAAE,IAAI,CAAC,KAAK;oBAChB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;oBACvC,oBAAoB,EAAE,IAAI,CAAC,yBAAyB;oBACpD,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;iBACzD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;;KAC/B;IAEY,sBAAsB;;YACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,IAAI,CAAC,iBAAiB,GAAG,MAAM,+BAAc,CAAC,sCAAsC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC7G,CAAC;qBAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAClC,IAAI,CAAC,iBAAiB,GAAG,MAAM,+BAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC5F,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC,oFAAoF,CAAC,CAAC;gBACpG,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;KAAA;IAEO,iBAAiB,CAAC,IAAe;QACvC,IAAI,CAAC,KAAK,GAAG,IAAA,2CAAuB,kCAAM,IAAI,CAAC,KAAK,GAAK,IAAI,EAAG,CAAC;IACnE,CAAC;IAEY,kBAAkB,CAAC,IAM/B;;;YACC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC;YAExD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAC;gBAElD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,kBAAkB,+BACzD,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAC/B,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,EAClC,GAAG,IACA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,KACtE,IAAI;oBACJ,WAAW,EACX,MAAM,EAAE,EAAE,QAAQ,EAAE,IACpB,CAAC;gBAEH,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACvB,KAAK,CAAC,0BAA0B,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;oBACtD,MAAM,KAAK,CACT,mCAAmC,MAAA,IAAI,CAAC,iBAAiB,0CAAE,cAAc,eAAe,IAAI,CAAC,SAAS,EAAE,wBACtG,QAAQ,CAAC,YAAY,CAAC,MACxB,EAAE,CACH,CAAC;gBACJ,CAAC;qBAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACjC,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBAC7C,MAAM,KAAK,CACT,mCAAmC,MAAA,IAAI,CAAC,iBAAiB,0CACrD,cAAc,eAAe,IAAI,CAAC,SAAS,EAAE,+CAA+C,CACjG,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,WAAW,CAAC;YACnD,CAAC;YAED,OAAO,IAAI,CAAC,mBAAmB,CAAC;;KACjC;IAEY,kBAAkB,CAAC,EAC9B,eAAe,EACf,cAAc,EACd,MAAM,EACN,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,uBAAuB,EACvB,8BAA8B,GAW/B;;;YACC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CAAC,kCAAiB,GAAG,UAAU,GAAG,KAAK,SAAS,UAAU,GAAG,KAAK,SAAS,EAAE,CAAC,CAAC;YAChG,CAAC;YAED,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YACzB,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YACzB,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAEzB,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe;gBACzC,CAAC,CAAC,+DAA8B,CAAC,mBAAmB,CAAC;oBACjD,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,QAAQ,EAAE,IAAI,CAAC,gBAAgB;iBAChC,CAAC;gBACJ,CAAC,CAAC,+DAA8B,CAAC,oBAAoB,CAAC;oBAClD,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE;oBAClC,eAAe;oBACf,QAAQ,EAAE,IAAI,CAAC,gBAAgB;oBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;iBACxB,CAAC,CAAC;YAEP,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC/D,cAAc,CAAC,2BAA2B,CAAC,uBAAuB,aAAvB,uBAAuB,cAAvB,uBAAuB,GAAI,KAAK,EAAE,8BAA8B,CAAC,CAAC;YAC7G,IAAI,MAAA,IAAI,CAAC,gBAAgB,0CAAE,wBAAwB,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC;gBAChE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBAE/F,IAAI,QAAQ,CAAC,qBAAqB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBACpF,IAAI,aAAa,GAAG,KAAK,CAAC;oBAE1B,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,mBAAmB,EAAE,EAAE;wBAC7D,MAAM,QAAQ,GAAG,IAAA,gDAA+B,EAAC,mBAAmB,CAAC,CAAC;wBACtE,IACE,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;4BAC/C,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5F,CAAC;4BACD,aAAa,GAAG,IAAI,CAAC;wBACvB,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,gCAAgC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;wBAC3H,0HAA0H;oBAC5H,CAAC;gBACH,CAAC;qBAAM,IAAI,QAAQ,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAC5F,MAAM,oBAAoB,GAAG,QAAQ,CAAC,qBAAqB,CAAC;oBAC5D,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;wBACzF,MAAM,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,4BAA4B,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACzH,CAAC;gBACH,CAAC;gBACD,4GAA4G;YAC9G,CAAC;YACD,MAAM,uBAAuB,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;YACvD,MAAM,YAAY,GAAG,mDAAwB,CAAC,uBAAuB,CAAC;gBACpE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;gBAC7C,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;aACxB,CAAC;iBACC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;iBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAErB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,GAAG,EAAE,CAAC;gBACR,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,4BAA4B,CAAC;gBAC1E,UAAU,EAAE,YAAY;gBACxB,eAAe,EAAE,eAAe;gBAChC,MAAM;aACP,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvB,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC5E,MAAM,KAAK,CACT,gCAAgC,MAAA,IAAI,CAAC,iBAAiB,0CAAE,mBAAmB,eAAe,IAAI,CAAC,SAAS,EAAE,wBACxG,QAAQ,CAAC,YAAY,CAAC,MACxB,EAAE,CACH,CAAC;YACJ,CAAC;iBAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBACnD,MAAM,KAAK,CACT,gCAAgC,MAAA,IAAI,CAAC,iBAAiB,0CAClD,mBAAmB,eAAe,IAAI,CAAC,SAAS,EAAE,+CAA+C,CACtG,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC,WAAW,CAAC;;KAC7B;IAED,oHAAoH;IACpH,6DAA6D;IAC7D,mEAAmE;IACnE,iDAAiD;IACjD,uBAAuB,CACrB,yBAAkC,EAClC,MAAkF;QAElF,OAAO,IAAA,wCAAuB,EAAC;YAC7B,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,wBAAwB;YAC9D,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;YACvB,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,kCAAiB,CAAC,UAAU,EAAE,CAAC;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,yBAA0D,CAAC;YAC7F,MAAM,KAAK,GAAa,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACjH,MAAM,MAAM,GAAe,EAAE,CAAC;YAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC1B,OAAO,CAAC,CAAC,CAAC,CAAC;gBACb,CAAC;qBAAM,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,CAAC,KAAK,CAAC;gBACjB,CAAC;qBAAM,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,wBAAwB;;QACtB,OAAO,CACL,MAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,cAAc,mCACpC,CAAC,CAAA,MAAA,MAAA,IAAI,CAAC,iBAAiB,0CAAE,wBAAwB,0CAAE,sBAAsB,EAAC,CAAC,CAAC,CAAC,8BAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC1H,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,QAAuB;QACzC,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAEM,mBAAmB;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAEM,OAAO;;QACZ,OAAO,MAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,OAAO,mCAAI,kCAAiB,CAAC,UAAU,CAAC;IACvE,CAAC;IAED,IAAW,gBAAgB;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,oEAAoE;QACpE,OAAO,IAAI,CAAC,iBAAkB,CAAC;IACjC,CAAC;IAED,IAAI,GAAG;QACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG;QACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,mBAAmB;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,oEAAoE;QACpE,OAAO,IAAI,CAAC,oBAAqB,CAAC;IACpC,CAAC;IAEM,SAAS;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,iBAAkB,CAAC;IACjC,CAAC;IAEM,sBAAsB;QAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,gBAAgB;YAC1B,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc;YACtC,CAAC,CAAC,qCAAiB,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;IAEM,qBAAqB;QAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;IAC9G,CAAC;IAEM,6BAA6B;QAClC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACzC,CAAC;IAEM,6BAA6B;QAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;IAC9G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5G,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,4BAA4B,CAAC,IAA+B;;QAClE,IAAI,wBAAwB,GAAG,gCAAK,IAAI,CAAC,yBAAyB,GAAK,IAAI,CAA8B,CAAC;QAC1G,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,wBAAwB,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;QAC7D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAA,wBAAwB,CAAC,QAAQ,mCAAI,IAAI,CAAC,SAAS,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,wBAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE7C,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;YAC1C,wBAAwB,CAAC,WAAW,GAAG,cAAc,CAAC;QACxD,CAAC;QACD,OAAO,wBAAwB,CAAC;IAClC,CAAC;CACF;AA/eD,4CA+eC"}
|
|
1
|
+
{"version":3,"file":"OpenID4VCIClient.js","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,7 +104,8 @@ export const createAuthorizationRequestUrl = async ({
|
|
|
104
104
|
console.log(`QUERY obj: ` + JSON.stringify(queryObj, null, 2));
|
|
105
105
|
const url = convertJsonToURI(queryObj, {
|
|
106
106
|
baseUrl: endpointMetadata.authorization_endpoint,
|
|
107
|
-
uriTypeProperties: ['request_uri', 'redirect_uri', 'scope', 'authorization_details',
|
|
107
|
+
uriTypeProperties: ['client_id', 'request_uri', 'redirect_uri', 'scope', 'authorization_details', 'issuer_state'],
|
|
108
|
+
// arrayTypeProperties: ['authorization_details'],
|
|
108
109
|
mode: JsonURIMode.X_FORM_WWW_URLENCODED,
|
|
109
110
|
// We do not add the version here, as this always needs to be form encoded
|
|
110
111
|
});
|
|
@@ -140,7 +141,7 @@ const handleLocations = (endpointMetadata: EndpointMetadataResult, authorization
|
|
|
140
141
|
if (authorizationDetails && (endpointMetadata.credentialIssuerMetadata?.authorization_server || endpointMetadata.authorization_endpoint)) {
|
|
141
142
|
if (authorizationDetails.locations) {
|
|
142
143
|
if (Array.isArray(authorizationDetails.locations)) {
|
|
143
|
-
|
|
144
|
+
authorizationDetails.locations.push(endpointMetadata.issuer);
|
|
144
145
|
} else {
|
|
145
146
|
authorizationDetails.locations = [authorizationDetails.locations as string, endpointMetadata.issuer];
|
|
146
147
|
}
|
package/lib/OpenID4VCIClient.ts
CHANGED
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
AccessTokenResponse,
|
|
3
3
|
Alg,
|
|
4
4
|
AuthorizationRequestOpts,
|
|
5
|
+
AuthorizationResponse,
|
|
5
6
|
AuthzFlowType,
|
|
6
7
|
CodeChallengeMethod,
|
|
7
8
|
CredentialOfferPayloadV1_0_08,
|
|
@@ -19,43 +20,44 @@ import {
|
|
|
19
20
|
OpenId4VCIVersion,
|
|
20
21
|
PKCEOpts,
|
|
21
22
|
ProofOfPossessionCallbacks,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
import
|
|
23
|
+
toAuthorizationResponsePayload
|
|
24
|
+
} from '@sphereon/oid4vci-common'
|
|
25
|
+
import { CredentialFormat } from '@sphereon/ssi-types'
|
|
26
|
+
import Debug from 'debug'
|
|
25
27
|
|
|
26
|
-
import { AccessTokenClient } from './AccessTokenClient'
|
|
27
|
-
import { createAuthorizationRequestUrl } from './AuthorizationCodeClient'
|
|
28
|
-
import { CredentialOfferClient } from './CredentialOfferClient'
|
|
29
|
-
import { CredentialRequestClientBuilder } from './CredentialRequestClientBuilder'
|
|
30
|
-
import { MetadataClient } from './MetadataClient'
|
|
31
|
-
import { ProofOfPossessionBuilder } from './ProofOfPossessionBuilder'
|
|
32
|
-
import { generateMissingPKCEOpts } from './functions/AuthorizationUtil'
|
|
28
|
+
import { AccessTokenClient } from './AccessTokenClient'
|
|
29
|
+
import { createAuthorizationRequestUrl } from './AuthorizationCodeClient'
|
|
30
|
+
import { CredentialOfferClient } from './CredentialOfferClient'
|
|
31
|
+
import { CredentialRequestClientBuilder } from './CredentialRequestClientBuilder'
|
|
32
|
+
import { MetadataClient } from './MetadataClient'
|
|
33
|
+
import { ProofOfPossessionBuilder } from './ProofOfPossessionBuilder'
|
|
34
|
+
import { generateMissingPKCEOpts } from './functions/AuthorizationUtil'
|
|
33
35
|
|
|
34
|
-
const debug = Debug('sphereon:oid4vci')
|
|
36
|
+
const debug = Debug('sphereon:oid4vci')
|
|
35
37
|
|
|
36
38
|
export class OpenID4VCIClient {
|
|
37
|
-
private readonly _credentialOffer?: CredentialOfferRequestWithBaseUrl
|
|
38
|
-
private readonly _credentialIssuer: string
|
|
39
|
-
private _clientId?: string
|
|
40
|
-
private _kid: string | undefined
|
|
41
|
-
private _jwk: JWK | undefined
|
|
42
|
-
private _alg: Alg | string | undefined
|
|
43
|
-
private _endpointMetadata: EndpointMetadataResult | undefined
|
|
44
|
-
private _accessTokenResponse: AccessTokenResponse | undefined
|
|
45
|
-
private _pkce: PKCEOpts = { disabled: false, codeChallengeMethod: CodeChallengeMethod.S256 }
|
|
46
|
-
private _authorizationRequestOpts?: AuthorizationRequestOpts
|
|
47
|
-
|
|
48
|
-
private _authorizationURL?: string
|
|
39
|
+
private readonly _credentialOffer?: CredentialOfferRequestWithBaseUrl
|
|
40
|
+
private readonly _credentialIssuer: string
|
|
41
|
+
private _clientId?: string
|
|
42
|
+
private _kid: string | undefined
|
|
43
|
+
private _jwk: JWK | undefined
|
|
44
|
+
private _alg: Alg | string | undefined
|
|
45
|
+
private _endpointMetadata: EndpointMetadataResult | undefined
|
|
46
|
+
private _accessTokenResponse: AccessTokenResponse | undefined
|
|
47
|
+
private _pkce: PKCEOpts = { disabled: false, codeChallengeMethod: CodeChallengeMethod.S256 }
|
|
48
|
+
private _authorizationRequestOpts?: AuthorizationRequestOpts
|
|
49
|
+
|
|
50
|
+
private _authorizationURL?: string
|
|
49
51
|
|
|
50
52
|
private constructor({
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
credentialOffer,
|
|
54
|
+
clientId,
|
|
55
|
+
kid,
|
|
56
|
+
alg,
|
|
57
|
+
credentialIssuer,
|
|
58
|
+
pkce,
|
|
59
|
+
authorizationRequest
|
|
60
|
+
}: {
|
|
59
61
|
credentialOffer?: CredentialOfferRequestWithBaseUrl;
|
|
60
62
|
kid?: string;
|
|
61
63
|
alg?: Alg | string;
|
|
@@ -64,30 +66,30 @@ export class OpenID4VCIClient {
|
|
|
64
66
|
pkce?: PKCEOpts;
|
|
65
67
|
authorizationRequest?: AuthorizationRequestOpts; // Can be provided here, or when manually calling createAuthorizationUrl
|
|
66
68
|
}) {
|
|
67
|
-
this._credentialOffer = credentialOffer
|
|
68
|
-
const issuer = credentialIssuer ?? (credentialOffer ? getIssuerFromCredentialOfferPayload(credentialOffer.credential_offer) : undefined)
|
|
69
|
+
this._credentialOffer = credentialOffer
|
|
70
|
+
const issuer = credentialIssuer ?? (credentialOffer ? getIssuerFromCredentialOfferPayload(credentialOffer.credential_offer) : undefined)
|
|
69
71
|
if (!issuer) {
|
|
70
|
-
throw Error('No credential issuer supplied or deduced from offer')
|
|
72
|
+
throw Error('No credential issuer supplied or deduced from offer')
|
|
71
73
|
}
|
|
72
|
-
this._credentialIssuer = issuer
|
|
73
|
-
this._kid = kid
|
|
74
|
-
this._alg = alg
|
|
75
|
-
this._clientId = clientId ?? (credentialOffer ? getClientIdFromCredentialOfferPayload(credentialOffer.credential_offer) : undefined)
|
|
76
|
-
this._pkce = { ...this._pkce, ...pkce }
|
|
77
|
-
this._authorizationRequestOpts = this.syncAuthorizationRequestOpts(authorizationRequest)
|
|
78
|
-
console.log(`Authorization req options: ${JSON.stringify(this._authorizationRequestOpts, null, 2)}`)
|
|
74
|
+
this._credentialIssuer = issuer
|
|
75
|
+
this._kid = kid
|
|
76
|
+
this._alg = alg
|
|
77
|
+
this._clientId = clientId ?? (credentialOffer ? getClientIdFromCredentialOfferPayload(credentialOffer.credential_offer) : undefined)
|
|
78
|
+
this._pkce = { ...this._pkce, ...pkce }
|
|
79
|
+
this._authorizationRequestOpts = this.syncAuthorizationRequestOpts(authorizationRequest)
|
|
80
|
+
console.log(`Authorization req options: ${JSON.stringify(this._authorizationRequestOpts, null, 2)}`)
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
public static async fromCredentialIssuer({
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
kid,
|
|
85
|
+
alg,
|
|
86
|
+
retrieveServerMetadata,
|
|
87
|
+
clientId,
|
|
88
|
+
credentialIssuer,
|
|
89
|
+
pkce,
|
|
90
|
+
authorizationRequest,
|
|
91
|
+
createAuthorizationRequestURL
|
|
92
|
+
}: {
|
|
91
93
|
credentialIssuer: string;
|
|
92
94
|
kid?: string;
|
|
93
95
|
alg?: Alg | string;
|
|
@@ -103,28 +105,28 @@ export class OpenID4VCIClient {
|
|
|
103
105
|
clientId: clientId ?? authorizationRequest?.clientId,
|
|
104
106
|
credentialIssuer,
|
|
105
107
|
pkce,
|
|
106
|
-
authorizationRequest
|
|
107
|
-
})
|
|
108
|
+
authorizationRequest
|
|
109
|
+
})
|
|
108
110
|
if (retrieveServerMetadata === undefined || retrieveServerMetadata) {
|
|
109
|
-
await client.retrieveServerMetadata()
|
|
111
|
+
await client.retrieveServerMetadata()
|
|
110
112
|
}
|
|
111
113
|
if (createAuthorizationRequestURL === undefined || createAuthorizationRequestURL) {
|
|
112
|
-
await client.createAuthorizationRequestUrl({ authorizationRequest, pkce })
|
|
114
|
+
await client.createAuthorizationRequestUrl({ authorizationRequest, pkce })
|
|
113
115
|
}
|
|
114
|
-
return client
|
|
116
|
+
return client
|
|
115
117
|
}
|
|
116
118
|
|
|
117
119
|
public static async fromURI({
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
120
|
+
uri,
|
|
121
|
+
kid,
|
|
122
|
+
alg,
|
|
123
|
+
retrieveServerMetadata,
|
|
124
|
+
clientId,
|
|
125
|
+
pkce,
|
|
126
|
+
createAuthorizationRequestURL,
|
|
127
|
+
authorizationRequest,
|
|
128
|
+
resolveOfferUri
|
|
129
|
+
}: {
|
|
128
130
|
uri: string;
|
|
129
131
|
kid?: string;
|
|
130
132
|
alg?: Alg | string;
|
|
@@ -135,92 +137,100 @@ export class OpenID4VCIClient {
|
|
|
135
137
|
clientId?: string;
|
|
136
138
|
authorizationRequest?: AuthorizationRequestOpts; // Can be provided here, or when manually calling createAuthorizationUrl
|
|
137
139
|
}): Promise<OpenID4VCIClient> {
|
|
138
|
-
const credentialOfferClient = await CredentialOfferClient.fromURI(uri, { resolve: resolveOfferUri })
|
|
140
|
+
const credentialOfferClient = await CredentialOfferClient.fromURI(uri, { resolve: resolveOfferUri })
|
|
139
141
|
const client = new OpenID4VCIClient({
|
|
140
142
|
credentialOffer: credentialOfferClient,
|
|
141
143
|
kid,
|
|
142
144
|
alg,
|
|
143
145
|
clientId: clientId ?? authorizationRequest?.clientId ?? credentialOfferClient.clientId,
|
|
144
146
|
pkce,
|
|
145
|
-
authorizationRequest
|
|
146
|
-
})
|
|
147
|
+
authorizationRequest
|
|
148
|
+
})
|
|
147
149
|
|
|
148
150
|
if (retrieveServerMetadata === undefined || retrieveServerMetadata) {
|
|
149
|
-
await client.retrieveServerMetadata()
|
|
151
|
+
await client.retrieveServerMetadata()
|
|
150
152
|
}
|
|
151
153
|
if (
|
|
152
154
|
credentialOfferClient.supportedFlows.includes(AuthzFlowType.AUTHORIZATION_CODE_FLOW) &&
|
|
153
155
|
(createAuthorizationRequestURL === undefined || createAuthorizationRequestURL)
|
|
154
156
|
) {
|
|
155
|
-
console.log(`AUTH REQ`)
|
|
156
|
-
await client.createAuthorizationRequestUrl({ authorizationRequest, pkce })
|
|
157
|
-
console.log(`AUTH REQ URL: ${client._authorizationURL}`)
|
|
157
|
+
console.log(`AUTH REQ`)
|
|
158
|
+
await client.createAuthorizationRequestUrl({ authorizationRequest, pkce })
|
|
159
|
+
console.log(`AUTH REQ URL: ${client._authorizationURL}`)
|
|
158
160
|
}
|
|
159
161
|
|
|
160
|
-
return client
|
|
162
|
+
return client
|
|
161
163
|
}
|
|
162
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Allows you to create an Authorization Request URL when using an Authorization Code flow. This URL needs to be accessed using the front channel (browser)
|
|
167
|
+
*
|
|
168
|
+
* The Identity provider would present a login screen typically; after you authenticated, it would redirect to the provided redirectUri; which can be same device or cross-device
|
|
169
|
+
* @param opts
|
|
170
|
+
*/
|
|
163
171
|
public async createAuthorizationRequestUrl(opts?: { authorizationRequest?: AuthorizationRequestOpts; pkce?: PKCEOpts }): Promise<string> {
|
|
164
172
|
if (!this._authorizationURL) {
|
|
165
|
-
this.calculatePKCEOpts(opts?.pkce)
|
|
166
|
-
this._authorizationRequestOpts = this.syncAuthorizationRequestOpts(opts?.authorizationRequest)
|
|
173
|
+
this.calculatePKCEOpts(opts?.pkce)
|
|
174
|
+
this._authorizationRequestOpts = this.syncAuthorizationRequestOpts(opts?.authorizationRequest)
|
|
167
175
|
if (!this._authorizationRequestOpts) {
|
|
168
|
-
throw Error(`No Authorization Request options present or provided in this call`)
|
|
176
|
+
throw Error(`No Authorization Request options present or provided in this call`)
|
|
169
177
|
}
|
|
170
178
|
|
|
171
179
|
// todo: Probably can go with current logic in MetadataClient who will always set the authorization_endpoint when found
|
|
172
180
|
// handling this because of the support for v1_0-08
|
|
173
181
|
if (this._endpointMetadata?.credentialIssuerMetadata && 'authorization_endpoint' in this._endpointMetadata.credentialIssuerMetadata) {
|
|
174
|
-
this._endpointMetadata.authorization_endpoint = this._endpointMetadata.credentialIssuerMetadata.authorization_endpoint as string
|
|
182
|
+
this._endpointMetadata.authorization_endpoint = this._endpointMetadata.credentialIssuerMetadata.authorization_endpoint as string
|
|
175
183
|
}
|
|
176
184
|
this._authorizationURL = await createAuthorizationRequestUrl({
|
|
177
185
|
pkce: this._pkce,
|
|
178
186
|
endpointMetadata: this.endpointMetadata,
|
|
179
187
|
authorizationRequest: this._authorizationRequestOpts,
|
|
180
188
|
credentialOffer: this.credentialOffer,
|
|
181
|
-
credentialsSupported: this.getCredentialsSupported(true)
|
|
182
|
-
})
|
|
189
|
+
credentialsSupported: this.getCredentialsSupported(true)
|
|
190
|
+
})
|
|
183
191
|
}
|
|
184
|
-
return this._authorizationURL
|
|
192
|
+
return this._authorizationURL
|
|
185
193
|
}
|
|
186
194
|
|
|
187
195
|
public async retrieveServerMetadata(): Promise<EndpointMetadataResult> {
|
|
188
|
-
this.assertIssuerData()
|
|
196
|
+
this.assertIssuerData()
|
|
189
197
|
if (!this._endpointMetadata) {
|
|
190
198
|
if (this.credentialOffer) {
|
|
191
|
-
this._endpointMetadata = await MetadataClient.retrieveAllMetadataFromCredentialOffer(this.credentialOffer)
|
|
199
|
+
this._endpointMetadata = await MetadataClient.retrieveAllMetadataFromCredentialOffer(this.credentialOffer)
|
|
192
200
|
} else if (this._credentialIssuer) {
|
|
193
|
-
this._endpointMetadata = await MetadataClient.retrieveAllMetadata(this._credentialIssuer)
|
|
201
|
+
this._endpointMetadata = await MetadataClient.retrieveAllMetadata(this._credentialIssuer)
|
|
194
202
|
} else {
|
|
195
|
-
throw Error(`Cannot retrieve issuer metadata without either a credential offer, or issuer value`)
|
|
203
|
+
throw Error(`Cannot retrieve issuer metadata without either a credential offer, or issuer value`)
|
|
196
204
|
}
|
|
197
205
|
}
|
|
198
|
-
return this.endpointMetadata
|
|
206
|
+
return this.endpointMetadata
|
|
199
207
|
}
|
|
200
208
|
|
|
201
209
|
private calculatePKCEOpts(pkce?: PKCEOpts) {
|
|
202
|
-
this._pkce = generateMissingPKCEOpts({ ...this._pkce, ...pkce })
|
|
210
|
+
this._pkce = generateMissingPKCEOpts({ ...this._pkce, ...pkce })
|
|
203
211
|
}
|
|
204
212
|
|
|
205
213
|
public async acquireAccessToken(opts?: {
|
|
206
214
|
pin?: string;
|
|
207
215
|
clientId?: string;
|
|
208
216
|
codeVerifier?: string;
|
|
209
|
-
|
|
217
|
+
authorizationResponse?: string | AuthorizationResponse; // Pass in an auth response, either as URI/redirect, or object
|
|
218
|
+
code?: string; // Directly pass in a code from an auth response
|
|
210
219
|
redirectUri?: string;
|
|
211
220
|
}): Promise<AccessTokenResponse> {
|
|
212
|
-
const { pin, clientId,
|
|
221
|
+
const { pin, clientId, redirectUri } = opts ?? {}
|
|
222
|
+
const code = opts?.code ?? (opts?.authorizationResponse ? toAuthorizationResponsePayload(opts.authorizationResponse).code : undefined)
|
|
213
223
|
|
|
214
224
|
if (opts?.codeVerifier) {
|
|
215
|
-
this._pkce.codeVerifier = opts.codeVerifier
|
|
225
|
+
this._pkce.codeVerifier = opts.codeVerifier
|
|
216
226
|
}
|
|
217
|
-
this.assertIssuerData()
|
|
227
|
+
this.assertIssuerData()
|
|
218
228
|
|
|
219
229
|
if (clientId) {
|
|
220
|
-
this._clientId = clientId
|
|
230
|
+
this._clientId = clientId
|
|
221
231
|
}
|
|
222
232
|
if (!this._accessTokenResponse) {
|
|
223
|
-
const accessTokenClient = new AccessTokenClient()
|
|
233
|
+
const accessTokenClient = new AccessTokenClient()
|
|
224
234
|
|
|
225
235
|
const response = await accessTokenClient.acquireAccessToken({
|
|
226
236
|
credentialOffer: this.credentialOffer,
|
|
@@ -230,40 +240,40 @@ export class OpenID4VCIClient {
|
|
|
230
240
|
...(!this._pkce.disabled && { codeVerifier: this._pkce.codeVerifier }),
|
|
231
241
|
code,
|
|
232
242
|
redirectUri,
|
|
233
|
-
asOpts: { clientId }
|
|
234
|
-
})
|
|
243
|
+
asOpts: { clientId }
|
|
244
|
+
})
|
|
235
245
|
|
|
236
246
|
if (response.errorBody) {
|
|
237
|
-
debug(`Access token error:\r\n${response.errorBody}`)
|
|
247
|
+
debug(`Access token error:\r\n${response.errorBody}`)
|
|
238
248
|
throw Error(
|
|
239
249
|
`Retrieving an access token from ${this._endpointMetadata?.token_endpoint} for issuer ${this.getIssuer()} failed with status: ${
|
|
240
250
|
response.origResponse.status
|
|
241
|
-
}
|
|
242
|
-
)
|
|
251
|
+
}`
|
|
252
|
+
)
|
|
243
253
|
} else if (!response.successBody) {
|
|
244
|
-
debug(`Access token error. No success body`)
|
|
254
|
+
debug(`Access token error. No success body`)
|
|
245
255
|
throw Error(
|
|
246
256
|
`Retrieving an access token from ${this._endpointMetadata
|
|
247
|
-
?.token_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body
|
|
248
|
-
)
|
|
257
|
+
?.token_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`
|
|
258
|
+
)
|
|
249
259
|
}
|
|
250
|
-
this._accessTokenResponse = response.successBody
|
|
260
|
+
this._accessTokenResponse = response.successBody
|
|
251
261
|
}
|
|
252
262
|
|
|
253
|
-
return this.accessTokenResponse
|
|
263
|
+
return this.accessTokenResponse
|
|
254
264
|
}
|
|
255
265
|
|
|
256
266
|
public async acquireCredentials({
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
+
credentialTypes,
|
|
268
|
+
proofCallbacks,
|
|
269
|
+
format,
|
|
270
|
+
kid,
|
|
271
|
+
jwk,
|
|
272
|
+
alg,
|
|
273
|
+
jti,
|
|
274
|
+
deferredCredentialAwait,
|
|
275
|
+
deferredCredentialIntervalInMS
|
|
276
|
+
}: {
|
|
267
277
|
credentialTypes: string | string[];
|
|
268
278
|
proofCallbacks: ProofOfPossessionCallbacks<any>;
|
|
269
279
|
format?: CredentialFormat | OID4VCICredentialFormat;
|
|
@@ -275,98 +285,98 @@ export class OpenID4VCIClient {
|
|
|
275
285
|
deferredCredentialIntervalInMS?: number;
|
|
276
286
|
}): Promise<CredentialResponse> {
|
|
277
287
|
if ([jwk, kid].filter((v) => v !== undefined).length > 1) {
|
|
278
|
-
throw new Error(KID_JWK_X5C_ERROR + `. jwk: ${jwk !== undefined}, kid: ${kid !== undefined}`)
|
|
288
|
+
throw new Error(KID_JWK_X5C_ERROR + `. jwk: ${jwk !== undefined}, kid: ${kid !== undefined}`)
|
|
279
289
|
}
|
|
280
290
|
|
|
281
|
-
if (alg) this._alg = alg
|
|
282
|
-
if (jwk) this._jwk = jwk
|
|
283
|
-
if (kid) this._kid = kid
|
|
291
|
+
if (alg) this._alg = alg
|
|
292
|
+
if (jwk) this._jwk = jwk
|
|
293
|
+
if (kid) this._kid = kid
|
|
284
294
|
|
|
285
295
|
const requestBuilder = this.credentialOffer
|
|
286
296
|
? CredentialRequestClientBuilder.fromCredentialOffer({
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
297
|
+
credentialOffer: this.credentialOffer,
|
|
298
|
+
metadata: this.endpointMetadata
|
|
299
|
+
})
|
|
290
300
|
: CredentialRequestClientBuilder.fromCredentialIssuer({
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
requestBuilder.withTokenFromResponse(this.accessTokenResponse)
|
|
298
|
-
requestBuilder.withDeferredCredentialAwait(deferredCredentialAwait ?? false, deferredCredentialIntervalInMS)
|
|
301
|
+
credentialIssuer: this.getIssuer(),
|
|
302
|
+
credentialTypes,
|
|
303
|
+
metadata: this.endpointMetadata,
|
|
304
|
+
version: this.version()
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
requestBuilder.withTokenFromResponse(this.accessTokenResponse)
|
|
308
|
+
requestBuilder.withDeferredCredentialAwait(deferredCredentialAwait ?? false, deferredCredentialIntervalInMS)
|
|
299
309
|
if (this.endpointMetadata?.credentialIssuerMetadata) {
|
|
300
|
-
const metadata = this.endpointMetadata.credentialIssuerMetadata
|
|
301
|
-
const types = Array.isArray(credentialTypes) ? [...credentialTypes].sort() : [credentialTypes]
|
|
310
|
+
const metadata = this.endpointMetadata.credentialIssuerMetadata
|
|
311
|
+
const types = Array.isArray(credentialTypes) ? [...credentialTypes].sort() : [credentialTypes]
|
|
302
312
|
|
|
303
313
|
if (metadata.credentials_supported && Array.isArray(metadata.credentials_supported)) {
|
|
304
|
-
let typeSupported = false
|
|
314
|
+
let typeSupported = false
|
|
305
315
|
|
|
306
316
|
metadata.credentials_supported.forEach((supportedCredential) => {
|
|
307
|
-
const subTypes = getTypesFromCredentialSupported(supportedCredential)
|
|
317
|
+
const subTypes = getTypesFromCredentialSupported(supportedCredential)
|
|
308
318
|
if (
|
|
309
319
|
subTypes.sort().every((t, i) => types[i] === t) ||
|
|
310
320
|
(types.length === 1 && (types[0] === supportedCredential.id || subTypes.includes(types[0])))
|
|
311
321
|
) {
|
|
312
|
-
typeSupported = true
|
|
322
|
+
typeSupported = true
|
|
313
323
|
}
|
|
314
|
-
})
|
|
324
|
+
})
|
|
315
325
|
|
|
316
326
|
if (!typeSupported) {
|
|
317
|
-
console.log(`Not all credential types ${JSON.stringify(credentialTypes)} are present in metadata for ${this.getIssuer()}`)
|
|
327
|
+
console.log(`Not all credential types ${JSON.stringify(credentialTypes)} are present in metadata for ${this.getIssuer()}`)
|
|
318
328
|
// throw Error(`Not all credential types ${JSON.stringify(credentialTypes)} are supported by issuer ${this.getIssuer()}`);
|
|
319
329
|
}
|
|
320
330
|
} else if (metadata.credentials_supported && !Array.isArray(metadata.credentials_supported)) {
|
|
321
|
-
const credentialsSupported = metadata.credentials_supported
|
|
331
|
+
const credentialsSupported = metadata.credentials_supported
|
|
322
332
|
if (types.some((type) => !metadata.credentials_supported || !credentialsSupported[type])) {
|
|
323
|
-
throw Error(`Not all credential types ${JSON.stringify(credentialTypes)} are supported by issuer ${this.getIssuer()}`)
|
|
333
|
+
throw Error(`Not all credential types ${JSON.stringify(credentialTypes)} are supported by issuer ${this.getIssuer()}`)
|
|
324
334
|
}
|
|
325
335
|
}
|
|
326
336
|
// todo: Format check? We might end up with some disjoint type / format combinations supported by the server
|
|
327
337
|
}
|
|
328
|
-
const credentialRequestClient = requestBuilder.build()
|
|
338
|
+
const credentialRequestClient = requestBuilder.build()
|
|
329
339
|
const proofBuilder = ProofOfPossessionBuilder.fromAccessTokenResponse({
|
|
330
340
|
accessTokenResponse: this.accessTokenResponse,
|
|
331
341
|
callbacks: proofCallbacks,
|
|
332
|
-
version: this.version()
|
|
342
|
+
version: this.version()
|
|
333
343
|
})
|
|
334
344
|
.withIssuer(this.getIssuer())
|
|
335
|
-
.withAlg(this.alg)
|
|
345
|
+
.withAlg(this.alg)
|
|
336
346
|
|
|
337
347
|
if (this._jwk) {
|
|
338
|
-
proofBuilder.withJWK(this._jwk)
|
|
348
|
+
proofBuilder.withJWK(this._jwk)
|
|
339
349
|
}
|
|
340
350
|
if (this._kid) {
|
|
341
|
-
proofBuilder.withKid(this._kid)
|
|
351
|
+
proofBuilder.withKid(this._kid)
|
|
342
352
|
}
|
|
343
353
|
|
|
344
354
|
if (this.clientId) {
|
|
345
|
-
proofBuilder.withClientId(this.clientId)
|
|
355
|
+
proofBuilder.withClientId(this.clientId)
|
|
346
356
|
}
|
|
347
357
|
if (jti) {
|
|
348
|
-
proofBuilder.withJti(jti)
|
|
358
|
+
proofBuilder.withJti(jti)
|
|
349
359
|
}
|
|
350
360
|
const response = await credentialRequestClient.acquireCredentialsUsingProof({
|
|
351
361
|
proofInput: proofBuilder,
|
|
352
362
|
credentialTypes: credentialTypes,
|
|
353
|
-
format
|
|
354
|
-
})
|
|
363
|
+
format
|
|
364
|
+
})
|
|
355
365
|
if (response.errorBody) {
|
|
356
|
-
debug(`Credential request error:\r\n${JSON.stringify(response.errorBody)}`)
|
|
366
|
+
debug(`Credential request error:\r\n${JSON.stringify(response.errorBody)}`)
|
|
357
367
|
throw Error(
|
|
358
368
|
`Retrieving a credential from ${this._endpointMetadata?.credential_endpoint} for issuer ${this.getIssuer()} failed with status: ${
|
|
359
369
|
response.origResponse.status
|
|
360
|
-
}
|
|
361
|
-
)
|
|
370
|
+
}`
|
|
371
|
+
)
|
|
362
372
|
} else if (!response.successBody) {
|
|
363
|
-
debug(`Credential request error. No success body`)
|
|
373
|
+
debug(`Credential request error. No success body`)
|
|
364
374
|
throw Error(
|
|
365
375
|
`Retrieving a credential from ${this._endpointMetadata
|
|
366
|
-
?.credential_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body
|
|
367
|
-
)
|
|
376
|
+
?.credential_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`
|
|
377
|
+
)
|
|
368
378
|
}
|
|
369
|
-
return response.successBody
|
|
379
|
+
return response.successBody
|
|
370
380
|
}
|
|
371
381
|
|
|
372
382
|
// FIXME: We really should convert <v11 to v12 objects first. Right now the logic doesn't map nicely and is brittle.
|
|
@@ -375,37 +385,37 @@ export class OpenID4VCIClient {
|
|
|
375
385
|
// Then match the object array on server metadata
|
|
376
386
|
getCredentialsSupported(
|
|
377
387
|
restrictToInitiationTypes: boolean,
|
|
378
|
-
format?: (OID4VCICredentialFormat | string) | (OID4VCICredentialFormat | string)[]
|
|
388
|
+
format?: (OID4VCICredentialFormat | string) | (OID4VCICredentialFormat | string)[]
|
|
379
389
|
): CredentialSupported[] {
|
|
380
390
|
return getSupportedCredentials({
|
|
381
391
|
issuerMetadata: this.endpointMetadata.credentialIssuerMetadata,
|
|
382
392
|
version: this.version(),
|
|
383
393
|
format: format,
|
|
384
|
-
types: restrictToInitiationTypes ? this.getCredentialOfferTypes() : undefined
|
|
385
|
-
})
|
|
394
|
+
types: restrictToInitiationTypes ? this.getCredentialOfferTypes() : undefined
|
|
395
|
+
})
|
|
386
396
|
}
|
|
387
397
|
|
|
388
398
|
getCredentialOfferTypes(): string[][] {
|
|
389
399
|
if (!this.credentialOffer) {
|
|
390
|
-
return []
|
|
400
|
+
return []
|
|
391
401
|
} else if (this.credentialOffer.version < OpenId4VCIVersion.VER_1_0_11) {
|
|
392
|
-
const orig = this.credentialOffer.original_credential_offer as CredentialOfferPayloadV1_0_08
|
|
393
|
-
const types: string[] = typeof orig.credential_type === 'string' ? [orig.credential_type] : orig.credential_type
|
|
394
|
-
const result: string[][] = []
|
|
395
|
-
result[0] = types
|
|
396
|
-
return result
|
|
402
|
+
const orig = this.credentialOffer.original_credential_offer as CredentialOfferPayloadV1_0_08
|
|
403
|
+
const types: string[] = typeof orig.credential_type === 'string' ? [orig.credential_type] : orig.credential_type
|
|
404
|
+
const result: string[][] = []
|
|
405
|
+
result[0] = types
|
|
406
|
+
return result
|
|
397
407
|
} else {
|
|
398
408
|
return this.credentialOffer.credential_offer.credentials.map((c) => {
|
|
399
409
|
if (typeof c === 'string') {
|
|
400
|
-
return [c]
|
|
410
|
+
return [c]
|
|
401
411
|
} else if ('types' in c) {
|
|
402
|
-
return c.types
|
|
412
|
+
return c.types
|
|
403
413
|
} else if ('vct' in c) {
|
|
404
|
-
return [c.vct]
|
|
414
|
+
return [c.vct]
|
|
405
415
|
} else {
|
|
406
|
-
return c.credential_definition.types
|
|
416
|
+
return c.credential_definition.types
|
|
407
417
|
}
|
|
408
|
-
})
|
|
418
|
+
})
|
|
409
419
|
}
|
|
410
420
|
}
|
|
411
421
|
|
|
@@ -413,119 +423,123 @@ export class OpenID4VCIClient {
|
|
|
413
423
|
return (
|
|
414
424
|
this.credentialOffer?.supportedFlows ??
|
|
415
425
|
(this._endpointMetadata?.credentialIssuerMetadata?.authorization_endpoint ? [AuthzFlowType.AUTHORIZATION_CODE_FLOW] : [])
|
|
416
|
-
)
|
|
426
|
+
)
|
|
417
427
|
}
|
|
418
428
|
|
|
419
429
|
isFlowTypeSupported(flowType: AuthzFlowType): boolean {
|
|
420
|
-
return this.issuerSupportedFlowTypes().includes(flowType)
|
|
430
|
+
return this.issuerSupportedFlowTypes().includes(flowType)
|
|
421
431
|
}
|
|
422
432
|
|
|
423
433
|
get authorizationURL(): string | undefined {
|
|
424
|
-
return this._authorizationURL
|
|
434
|
+
return this._authorizationURL
|
|
425
435
|
}
|
|
426
436
|
|
|
427
437
|
public hasAuthorizationURL(): boolean {
|
|
428
|
-
return !!this.authorizationURL
|
|
438
|
+
return !!this.authorizationURL
|
|
429
439
|
}
|
|
430
440
|
|
|
431
441
|
get credentialOffer(): CredentialOfferRequestWithBaseUrl | undefined {
|
|
432
|
-
return this._credentialOffer
|
|
442
|
+
return this._credentialOffer
|
|
433
443
|
}
|
|
434
444
|
|
|
435
445
|
public version(): OpenId4VCIVersion {
|
|
436
|
-
return this.credentialOffer?.version ?? OpenId4VCIVersion.VER_1_0_11
|
|
446
|
+
return this.credentialOffer?.version ?? OpenId4VCIVersion.VER_1_0_11
|
|
437
447
|
}
|
|
438
448
|
|
|
439
449
|
public get endpointMetadata(): EndpointMetadataResult {
|
|
440
|
-
this.assertServerMetadata()
|
|
450
|
+
this.assertServerMetadata()
|
|
441
451
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
442
|
-
return this._endpointMetadata
|
|
452
|
+
return this._endpointMetadata!
|
|
443
453
|
}
|
|
444
454
|
|
|
445
455
|
get kid(): string {
|
|
446
|
-
this.assertIssuerData()
|
|
456
|
+
this.assertIssuerData()
|
|
447
457
|
if (!this._kid) {
|
|
448
|
-
throw new Error('No value for kid is supplied')
|
|
458
|
+
throw new Error('No value for kid is supplied')
|
|
449
459
|
}
|
|
450
|
-
return this._kid
|
|
460
|
+
return this._kid
|
|
451
461
|
}
|
|
452
462
|
|
|
453
463
|
get alg(): string {
|
|
454
|
-
this.assertIssuerData()
|
|
464
|
+
this.assertIssuerData()
|
|
455
465
|
if (!this._alg) {
|
|
456
|
-
throw new Error('No value for alg is supplied')
|
|
466
|
+
throw new Error('No value for alg is supplied')
|
|
457
467
|
}
|
|
458
|
-
return this._alg
|
|
468
|
+
return this._alg
|
|
459
469
|
}
|
|
460
470
|
|
|
461
471
|
get clientId(): string | undefined {
|
|
462
|
-
return this._clientId
|
|
472
|
+
return this._clientId
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
public hasAccessTokenResponse(): boolean {
|
|
476
|
+
return !!this._accessTokenResponse
|
|
463
477
|
}
|
|
464
478
|
|
|
465
479
|
get accessTokenResponse(): AccessTokenResponse {
|
|
466
|
-
this.assertAccessToken()
|
|
480
|
+
this.assertAccessToken()
|
|
467
481
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
468
|
-
return this._accessTokenResponse
|
|
482
|
+
return this._accessTokenResponse!
|
|
469
483
|
}
|
|
470
484
|
|
|
471
485
|
public getIssuer(): string {
|
|
472
|
-
this.assertIssuerData()
|
|
473
|
-
return this._credentialIssuer
|
|
486
|
+
this.assertIssuerData()
|
|
487
|
+
return this._credentialIssuer
|
|
474
488
|
}
|
|
475
489
|
|
|
476
490
|
public getAccessTokenEndpoint(): string {
|
|
477
|
-
this.assertIssuerData()
|
|
491
|
+
this.assertIssuerData()
|
|
478
492
|
return this.endpointMetadata
|
|
479
493
|
? this.endpointMetadata.token_endpoint
|
|
480
|
-
: AccessTokenClient.determineTokenURL({ issuerOpts: { issuer: this.getIssuer() } })
|
|
494
|
+
: AccessTokenClient.determineTokenURL({ issuerOpts: { issuer: this.getIssuer() } })
|
|
481
495
|
}
|
|
482
496
|
|
|
483
497
|
public getCredentialEndpoint(): string {
|
|
484
|
-
this.assertIssuerData()
|
|
485
|
-
return this.endpointMetadata ? this.endpointMetadata.credential_endpoint : `${this.getIssuer()}/credential
|
|
498
|
+
this.assertIssuerData()
|
|
499
|
+
return this.endpointMetadata ? this.endpointMetadata.credential_endpoint : `${this.getIssuer()}/credential`
|
|
486
500
|
}
|
|
487
501
|
|
|
488
502
|
public hasDeferredCredentialEndpoint(): boolean {
|
|
489
|
-
return !!this.getAccessTokenEndpoint()
|
|
503
|
+
return !!this.getAccessTokenEndpoint()
|
|
490
504
|
}
|
|
491
505
|
|
|
492
506
|
public getDeferredCredentialEndpoint(): string {
|
|
493
|
-
this.assertIssuerData()
|
|
494
|
-
return this.endpointMetadata ? this.endpointMetadata.credential_endpoint : `${this.getIssuer()}/credential
|
|
507
|
+
this.assertIssuerData()
|
|
508
|
+
return this.endpointMetadata ? this.endpointMetadata.credential_endpoint : `${this.getIssuer()}/credential`
|
|
495
509
|
}
|
|
496
510
|
|
|
497
511
|
private assertIssuerData(): void {
|
|
498
512
|
if (!this._credentialIssuer) {
|
|
499
|
-
throw Error(`No credential issuer value present`)
|
|
513
|
+
throw Error(`No credential issuer value present`)
|
|
500
514
|
} else if (!this._credentialOffer && this._endpointMetadata && this.issuerSupportedFlowTypes().length === 0) {
|
|
501
|
-
throw Error(`No issuance initiation or credential offer present`)
|
|
515
|
+
throw Error(`No issuance initiation or credential offer present`)
|
|
502
516
|
}
|
|
503
517
|
}
|
|
504
518
|
|
|
505
519
|
private assertServerMetadata(): void {
|
|
506
520
|
if (!this._endpointMetadata) {
|
|
507
|
-
throw Error('No server metadata')
|
|
521
|
+
throw Error('No server metadata')
|
|
508
522
|
}
|
|
509
523
|
}
|
|
510
524
|
|
|
511
525
|
private assertAccessToken(): void {
|
|
512
526
|
if (!this._accessTokenResponse) {
|
|
513
|
-
throw Error(`No access token present`)
|
|
527
|
+
throw Error(`No access token present`)
|
|
514
528
|
}
|
|
515
529
|
}
|
|
516
530
|
|
|
517
531
|
private syncAuthorizationRequestOpts(opts?: AuthorizationRequestOpts): AuthorizationRequestOpts {
|
|
518
|
-
let authorizationRequestOpts = { ...this._authorizationRequestOpts, ...opts } as AuthorizationRequestOpts
|
|
532
|
+
let authorizationRequestOpts = { ...this._authorizationRequestOpts, ...opts } as AuthorizationRequestOpts
|
|
519
533
|
if (!authorizationRequestOpts) {
|
|
520
|
-
authorizationRequestOpts = { redirectUri: 'openid4vc%3A' }
|
|
534
|
+
authorizationRequestOpts = { redirectUri: 'openid4vc%3A' }
|
|
521
535
|
}
|
|
522
|
-
const clientId = authorizationRequestOpts.clientId ?? this._clientId
|
|
523
|
-
this._clientId = clientId
|
|
524
|
-
authorizationRequestOpts.clientId = clientId
|
|
536
|
+
const clientId = authorizationRequestOpts.clientId ?? this._clientId
|
|
537
|
+
this._clientId = clientId
|
|
538
|
+
authorizationRequestOpts.clientId = clientId
|
|
525
539
|
|
|
526
540
|
if (!authorizationRequestOpts.redirectUri) {
|
|
527
|
-
authorizationRequestOpts.redirectUri = 'openid4vc%3A'
|
|
541
|
+
authorizationRequestOpts.redirectUri = 'openid4vc%3A'
|
|
528
542
|
}
|
|
529
|
-
return authorizationRequestOpts
|
|
543
|
+
return authorizationRequestOpts
|
|
530
544
|
}
|
|
531
545
|
}
|
|
@@ -52,8 +52,8 @@ const DID_URL_ENCODED =
|
|
|
52
52
|
const kid = `${DID}#z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9Kbrm54tL4pRrDDhR1QJ5RHPMXUq5MzYpZL2k35vya5eMiNxschNy9AJ74CC3MmcYiZJGZfyhWQ6qDgTVcDSHdquwPYvLDut383JbrgYdZYYSC2merTMgmQtUi3huYhaky1qE`;
|
|
53
53
|
|
|
54
54
|
// const jw = jose.importKey()
|
|
55
|
-
|
|
56
|
-
describe
|
|
55
|
+
|
|
56
|
+
describe('OID4VCI-Client using Sphereon issuer should', () => {
|
|
57
57
|
async function test(credentialType: 'CTWalletCrossPreAuthorisedInTime' | 'CTWalletCrossPreAuthorisedDeferred' | 'CTWalletCrossAuthorisedInTime') {
|
|
58
58
|
debug.enable('*');
|
|
59
59
|
const offer = await getCredentialOffer(credentialType);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/oid4vci-client",
|
|
3
|
-
"version": "0.8.2-unstable.
|
|
3
|
+
"version": "0.8.2-unstable.61+4ae9a7d",
|
|
4
4
|
"description": "OpenID for Verifiable Credential Issuance (OpenID4VCI) client",
|
|
5
5
|
"source": "lib/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"build": "tsc"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@sphereon/oid4vci-common": "0.8.2-unstable.
|
|
18
|
+
"@sphereon/oid4vci-common": "0.8.2-unstable.61+4ae9a7d",
|
|
19
19
|
"@sphereon/ssi-types": "^0.18.1",
|
|
20
20
|
"cross-fetch": "^3.1.8",
|
|
21
21
|
"debug": "^4.3.4"
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"OIDC4VCI",
|
|
70
70
|
"OID4VCI"
|
|
71
71
|
],
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "4ae9a7df19cf147a86bc17a16d5a1dffe18d82bf"
|
|
73
73
|
}
|