@sphereon/oid4vci-client 0.2.0 → 0.4.1-unstable.247
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/LICENSE +201 -201
- package/README.md +494 -371
- package/dist/AccessTokenClient.d.ts +30 -0
- package/dist/AccessTokenClient.d.ts.map +1 -0
- package/dist/AccessTokenClient.js +226 -0
- package/dist/AccessTokenClient.js.map +1 -0
- package/dist/AuthorizationDetailsBuilder.d.ts +11 -0
- package/dist/AuthorizationDetailsBuilder.d.ts.map +1 -0
- package/dist/AuthorizationDetailsBuilder.js +44 -0
- package/dist/AuthorizationDetailsBuilder.js.map +1 -0
- package/dist/CredentialOffer.d.ts +6 -0
- package/dist/CredentialOffer.d.ts.map +1 -0
- package/dist/CredentialOffer.js +49 -0
- package/dist/CredentialOffer.js.map +1 -0
- package/dist/CredentialRequestClient.d.ts +29 -0
- package/dist/CredentialRequestClient.d.ts.map +1 -0
- package/dist/CredentialRequestClient.js +63 -0
- package/dist/CredentialRequestClient.js.map +1 -0
- package/dist/CredentialRequestClientBuilderV1_0_09.d.ts +29 -0
- package/dist/CredentialRequestClientBuilderV1_0_09.d.ts.map +1 -0
- package/dist/CredentialRequestClientBuilderV1_0_09.js +63 -0
- package/dist/CredentialRequestClientBuilderV1_0_09.js.map +1 -0
- package/dist/{main/lib/MetadataClient.d.ts → MetadataClient.d.ts} +39 -38
- package/dist/MetadataClient.d.ts.map +1 -0
- package/dist/MetadataClient.js +148 -0
- package/dist/MetadataClient.js.map +1 -0
- package/dist/OpenID4VCIClient.d.ts +72 -0
- package/dist/OpenID4VCIClient.d.ts.map +1 -0
- package/dist/OpenID4VCIClient.js +361 -0
- package/dist/OpenID4VCIClient.js.map +1 -0
- package/dist/ProofOfPossessionBuilder.d.ts +35 -0
- package/dist/ProofOfPossessionBuilder.d.ts.map +1 -0
- package/dist/ProofOfPossessionBuilder.js +120 -0
- package/dist/ProofOfPossessionBuilder.js.map +1 -0
- package/dist/{main/lib/functions → functions}/Encoding.d.ts +20 -17
- package/dist/functions/Encoding.d.ts.map +1 -0
- package/dist/functions/Encoding.js +144 -0
- package/dist/functions/Encoding.js.map +1 -0
- package/dist/functions/HttpUtils.d.ts +24 -0
- package/dist/functions/HttpUtils.d.ts.map +1 -0
- package/dist/functions/HttpUtils.js +93 -0
- package/dist/functions/HttpUtils.js.map +1 -0
- package/dist/functions/ProofUtil.d.ts +29 -0
- package/dist/functions/ProofUtil.d.ts.map +1 -0
- package/dist/functions/ProofUtil.js +103 -0
- package/dist/functions/ProofUtil.js.map +1 -0
- package/dist/functions/index.d.ts +4 -0
- package/dist/functions/index.d.ts.map +1 -0
- package/dist/{main/lib/functions → functions}/index.js +20 -20
- package/dist/functions/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{main/lib/index.js → index.js} +25 -24
- package/dist/index.js.map +1 -0
- package/lib/AccessTokenClient.ts +270 -0
- package/lib/AuthorizationDetailsBuilder.ts +46 -0
- package/lib/CredentialOffer.ts +55 -0
- package/lib/CredentialRequestClient.ts +77 -0
- package/lib/CredentialRequestClientBuilderV1_0_09.ts +99 -0
- package/lib/MetadataClient.ts +147 -0
- package/lib/OpenID4VCIClient.ts +477 -0
- package/lib/ProofOfPossessionBuilder.ts +156 -0
- package/lib/__tests__/AccessTokenClient.spec.ts +221 -0
- package/lib/__tests__/AuthorizationDetailsBuilder.spec.ts +65 -0
- package/lib/__tests__/AuthzFlowType.spec.ts +39 -0
- package/lib/__tests__/CredentialRequestClient.spec.ts +261 -0
- package/lib/__tests__/CredentialRequestClientBuilder.spec.ts +103 -0
- package/lib/__tests__/HttpUtils.spec.ts +37 -0
- package/lib/__tests__/IT.spec.ts +155 -0
- package/lib/__tests__/IssuanceInitiation.spec.ts +37 -0
- package/lib/__tests__/JsonURIConversions.spec.ts +86 -0
- package/lib/__tests__/MetadataClient.spec.ts +198 -0
- package/lib/__tests__/MetadataMocks.ts +428 -0
- package/lib/__tests__/OpenID4VCIClient.spec.ts +166 -0
- package/lib/__tests__/OpenID4VCIClientPAR.spec.ts +112 -0
- package/lib/__tests__/ProofOfPossessionBuilder.spec.ts +109 -0
- package/lib/__tests__/data/VciDataFixtures.ts +744 -0
- package/lib/functions/Encoding.ts +138 -0
- package/lib/functions/HttpUtils.ts +106 -0
- package/lib/functions/ProofUtil.ts +128 -0
- package/{dist/main/lib/functions/index.d.ts → lib/functions/index.ts} +3 -3
- package/lib/index.ts +8 -0
- package/package.json +68 -71
- package/CHANGELOG.md +0 -21
- package/dist/main/index.d.ts +0 -1
- package/dist/main/index.js +0 -18
- package/dist/main/lib/AccessTokenClient.d.ts +0 -20
- package/dist/main/lib/AccessTokenClient.js +0 -141
- package/dist/main/lib/CredentialRequestClient.d.ts +0 -31
- package/dist/main/lib/CredentialRequestClient.js +0 -66
- package/dist/main/lib/CredentialRequestClientBuilder.d.ts +0 -21
- package/dist/main/lib/CredentialRequestClientBuilder.js +0 -56
- package/dist/main/lib/IssuanceInitiation.d.ts +0 -5
- package/dist/main/lib/IssuanceInitiation.js +0 -29
- package/dist/main/lib/MetadataClient.js +0 -127
- package/dist/main/lib/functions/Encoding.js +0 -138
- package/dist/main/lib/functions/HttpUtils.d.ts +0 -17
- package/dist/main/lib/functions/HttpUtils.js +0 -133
- package/dist/main/lib/functions/ProofUtil.d.ts +0 -9
- package/dist/main/lib/functions/ProofUtil.js +0 -76
- package/dist/main/lib/index.d.ts +0 -7
- package/dist/main/lib/types/Authorization.types.d.ts +0 -66
- package/dist/main/lib/types/Authorization.types.js +0 -35
- package/dist/main/lib/types/CredentialIssuance.types.d.ts +0 -88
- package/dist/main/lib/types/CredentialIssuance.types.js +0 -8
- package/dist/main/lib/types/Generic.types.d.ts +0 -19
- package/dist/main/lib/types/Generic.types.js +0 -11
- package/dist/main/lib/types/OAuth2ASMetadata.d.ts +0 -37
- package/dist/main/lib/types/OAuth2ASMetadata.js +0 -3
- package/dist/main/lib/types/OID4VCIServerMetadata.d.ts +0 -65
- package/dist/main/lib/types/OID4VCIServerMetadata.js +0 -3
- package/dist/main/lib/types/Oidc4vciErrors.d.ts +0 -3
- package/dist/main/lib/types/Oidc4vciErrors.js +0 -7
- package/dist/main/lib/types/index.d.ts +0 -6
- package/dist/main/lib/types/index.js +0 -23
- package/dist/main/tsconfig.build.tsbuildinfo +0 -1
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OpenID4VCIClient = void 0;
|
|
16
|
+
const oid4vci_common_1 = require("@sphereon/oid4vci-common");
|
|
17
|
+
const debug_1 = __importDefault(require("debug"));
|
|
18
|
+
const AccessTokenClient_1 = require("./AccessTokenClient");
|
|
19
|
+
const CredentialOffer_1 = require("./CredentialOffer");
|
|
20
|
+
const CredentialRequestClientBuilderV1_0_09_1 = require("./CredentialRequestClientBuilderV1_0_09");
|
|
21
|
+
const MetadataClient_1 = require("./MetadataClient");
|
|
22
|
+
const ProofOfPossessionBuilder_1 = require("./ProofOfPossessionBuilder");
|
|
23
|
+
const functions_1 = require("./functions");
|
|
24
|
+
const debug = (0, debug_1.default)('sphereon:openid4vci:flow');
|
|
25
|
+
class OpenID4VCIClient {
|
|
26
|
+
constructor(credentialOffer, flowType, kid, alg, clientId) {
|
|
27
|
+
this._flowType = flowType;
|
|
28
|
+
this._credentialOffer = credentialOffer;
|
|
29
|
+
this._kid = kid;
|
|
30
|
+
this._alg = alg;
|
|
31
|
+
this._clientId = clientId;
|
|
32
|
+
}
|
|
33
|
+
static fromURI({ uri, flowType, kid, alg, retrieveServerMetadata, clientId, }) {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const client = new OpenID4VCIClient(CredentialOffer_1.CredentialOffer.fromURI(uri), flowType, kid, alg, clientId);
|
|
36
|
+
// noinspection PointlessBooleanExpressionJS
|
|
37
|
+
if (retrieveServerMetadata !== false) {
|
|
38
|
+
yield client.retrieveServerMetadata();
|
|
39
|
+
}
|
|
40
|
+
return client;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
retrieveServerMetadata() {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
this.assertIssuerData();
|
|
46
|
+
if (!this._endpointMetadata) {
|
|
47
|
+
this._endpointMetadata = yield MetadataClient_1.MetadataClient.retrieveAllMetadataFromCredentialOffer(this._credentialOffer);
|
|
48
|
+
}
|
|
49
|
+
return this._endpointMetadata;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
createAuthorizationRequestUrl({ clientId, codeChallengeMethod, codeChallenge, authorizationDetails, redirectUri, scope, }) {
|
|
53
|
+
var _a;
|
|
54
|
+
// Scope and authorization_details can be used in the same authorization request
|
|
55
|
+
// https://datatracker.ietf.org/doc/html/draft-ietf-oauth-rar-23#name-relationship-to-scope-param
|
|
56
|
+
if (!scope && !authorizationDetails) {
|
|
57
|
+
throw Error('Please provide a scope or authorization_details');
|
|
58
|
+
}
|
|
59
|
+
// todo: handling this because of the support for v1_0-08
|
|
60
|
+
if (this._endpointMetadata && this._endpointMetadata.issuerMetadata && 'authorization_endpoint' in this._endpointMetadata.issuerMetadata) {
|
|
61
|
+
this._endpointMetadata.authorization_endpoint = this._endpointMetadata.issuerMetadata.authorization_endpoint;
|
|
62
|
+
}
|
|
63
|
+
if (!((_a = this._endpointMetadata) === null || _a === void 0 ? void 0 : _a.authorization_endpoint)) {
|
|
64
|
+
throw Error('Server metadata does not contain authorization endpoint');
|
|
65
|
+
}
|
|
66
|
+
// add 'openid' scope if not present
|
|
67
|
+
if (scope && !scope.includes('openid')) {
|
|
68
|
+
scope = `openid ${scope}`;
|
|
69
|
+
}
|
|
70
|
+
//fixme: handle this for v11
|
|
71
|
+
const queryObj = {
|
|
72
|
+
response_type: oid4vci_common_1.ResponseType.AUTH_CODE,
|
|
73
|
+
client_id: clientId,
|
|
74
|
+
code_challenge_method: codeChallengeMethod,
|
|
75
|
+
code_challenge: codeChallenge,
|
|
76
|
+
authorization_details: JSON.stringify(this.handleAuthorizationDetails(authorizationDetails)),
|
|
77
|
+
redirect_uri: redirectUri,
|
|
78
|
+
scope: scope,
|
|
79
|
+
};
|
|
80
|
+
return (0, functions_1.convertJsonToURI)(queryObj, {
|
|
81
|
+
baseUrl: this._endpointMetadata.authorization_endpoint,
|
|
82
|
+
uriTypeProperties: ['redirect_uri', 'scope', 'authorization_details'],
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
acquirePushedAuthorizationRequestURI({ clientId, codeChallengeMethod, codeChallenge, authorizationDetails, redirectUri, scope, }) {
|
|
86
|
+
var _a;
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
// Scope and authorization_details can be used in the same authorization request
|
|
89
|
+
// https://datatracker.ietf.org/doc/html/draft-ietf-oauth-rar-23#name-relationship-to-scope-param
|
|
90
|
+
if (!scope && !authorizationDetails) {
|
|
91
|
+
throw Error('Please provide a scope or authorization_details');
|
|
92
|
+
}
|
|
93
|
+
// Authorization servers supporting PAR SHOULD include the URL of their pushed authorization request endpoint in their authorization server metadata document
|
|
94
|
+
// Note that the presence of pushed_authorization_request_endpoint is sufficient for a client to determine that it may use the PAR flow.
|
|
95
|
+
// What happens if it doesn't ???
|
|
96
|
+
if (!((_a = this._endpointMetadata) === null || _a === void 0 ? void 0 : _a.issuerMetadata) || !('pushed_authorization_request_endpoint' in this._endpointMetadata.issuerMetadata)) {
|
|
97
|
+
throw Error('Server metadata does not contain pushed authorization request endpoint');
|
|
98
|
+
}
|
|
99
|
+
// add 'openid' scope if not present
|
|
100
|
+
if (scope && !scope.includes('openid')) {
|
|
101
|
+
scope = `openid ${scope}`;
|
|
102
|
+
}
|
|
103
|
+
//fixme: handle this for v11
|
|
104
|
+
const queryObj = {
|
|
105
|
+
response_type: oid4vci_common_1.ResponseType.AUTH_CODE,
|
|
106
|
+
client_id: clientId,
|
|
107
|
+
code_challenge_method: codeChallengeMethod,
|
|
108
|
+
code_challenge: codeChallenge,
|
|
109
|
+
authorization_details: JSON.stringify(this.handleAuthorizationDetails(authorizationDetails)),
|
|
110
|
+
redirect_uri: redirectUri,
|
|
111
|
+
scope: scope,
|
|
112
|
+
};
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
114
|
+
return yield (0, functions_1.formPost)(this._endpointMetadata.issuerMetadata.pushed_authorization_request_endpoint, JSON.stringify(queryObj));
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
handleAuthorizationDetails(authorizationDetails) {
|
|
118
|
+
if (authorizationDetails) {
|
|
119
|
+
if (Array.isArray(authorizationDetails)) {
|
|
120
|
+
return authorizationDetails.map((value) => this.handleLocations(Object.assign({}, value)));
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
return this.handleLocations(Object.assign({}, authorizationDetails));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return authorizationDetails;
|
|
127
|
+
}
|
|
128
|
+
handleLocations(authorizationDetails) {
|
|
129
|
+
var _a;
|
|
130
|
+
if (authorizationDetails && (((_a = this.endpointMetadata.issuerMetadata) === null || _a === void 0 ? void 0 : _a.authorization_server) || this.endpointMetadata.authorization_endpoint)) {
|
|
131
|
+
if (authorizationDetails.locations) {
|
|
132
|
+
if (Array.isArray(authorizationDetails.locations)) {
|
|
133
|
+
authorizationDetails.locations.push(this.endpointMetadata.issuer);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
authorizationDetails.locations = [authorizationDetails.locations, this.endpointMetadata.issuer];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
authorizationDetails.locations = this.endpointMetadata.issuer;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return authorizationDetails;
|
|
144
|
+
}
|
|
145
|
+
acquireAccessToken({ pin, clientId, codeVerifier, code, redirectUri, }) {
|
|
146
|
+
var _a, _b;
|
|
147
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
+
this.assertIssuerData();
|
|
149
|
+
if (clientId) {
|
|
150
|
+
this._clientId = clientId;
|
|
151
|
+
}
|
|
152
|
+
if (!this._accessTokenResponse) {
|
|
153
|
+
const accessTokenClient = new AccessTokenClient_1.AccessTokenClient();
|
|
154
|
+
const response = yield accessTokenClient.acquireAccessToken({
|
|
155
|
+
credentialOffer: this.credentialOffer,
|
|
156
|
+
metadata: this._endpointMetadata,
|
|
157
|
+
pin,
|
|
158
|
+
codeVerifier,
|
|
159
|
+
code,
|
|
160
|
+
redirectUri,
|
|
161
|
+
asOpts: { clientId: this.clientId },
|
|
162
|
+
});
|
|
163
|
+
if (response.errorBody) {
|
|
164
|
+
debug(`Access token error:\r\n${response.errorBody}`);
|
|
165
|
+
throw Error(`Retrieving an access token from ${(_a = this._endpointMetadata) === null || _a === void 0 ? void 0 : _a.token_endpoint} for issuer ${this.getIssuer()} failed with status: ${response.origResponse.status}`);
|
|
166
|
+
}
|
|
167
|
+
else if (!response.successBody) {
|
|
168
|
+
debug(`Access token error. No succes body`);
|
|
169
|
+
throw Error(`Retrieving an access token from ${(_b = this._endpointMetadata) === null || _b === void 0 ? void 0 : _b.token_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`);
|
|
170
|
+
}
|
|
171
|
+
this._accessTokenResponse = response.successBody;
|
|
172
|
+
}
|
|
173
|
+
return this._accessTokenResponse;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
acquireCredentials({ credentialType, proofCallbacks, format, kid, alg, jti, }) {
|
|
177
|
+
var _a, _b, _c;
|
|
178
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
179
|
+
if (alg) {
|
|
180
|
+
this._alg = alg;
|
|
181
|
+
}
|
|
182
|
+
if (kid) {
|
|
183
|
+
this._kid = kid;
|
|
184
|
+
}
|
|
185
|
+
const requestBuilder = CredentialRequestClientBuilderV1_0_09_1.CredentialRequestClientBuilderV1_0_09.fromCredentialOffer({
|
|
186
|
+
credentialOffer: this.credentialOffer,
|
|
187
|
+
metadata: this.endpointMetadata,
|
|
188
|
+
});
|
|
189
|
+
requestBuilder.withToken(this.accessTokenResponse.access_token);
|
|
190
|
+
if ((_a = this.endpointMetadata) === null || _a === void 0 ? void 0 : _a.issuerMetadata) {
|
|
191
|
+
const metadata = this.endpointMetadata.issuerMetadata;
|
|
192
|
+
const types = Array.isArray(credentialType) ? credentialType : [credentialType];
|
|
193
|
+
if (metadata.credentials_supported && Array.isArray(metadata.credentials_supported)) {
|
|
194
|
+
for (const type of types) {
|
|
195
|
+
let typeSupported = false;
|
|
196
|
+
for (const credentialSupported of metadata.credentials_supported) {
|
|
197
|
+
if (credentialSupported.types.indexOf(type) != -1) {
|
|
198
|
+
typeSupported = true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (!typeSupported) {
|
|
202
|
+
throw Error(`Not all credential types ${JSON.stringify(credentialType)} are supported by issuer ${this.getIssuer()}`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else if (metadata.credentials_supported && !Array.isArray(metadata.credentials_supported)) {
|
|
207
|
+
const credentialsSupported = metadata.credentials_supported;
|
|
208
|
+
if (types.some((type) => !metadata.credentials_supported || !credentialsSupported[type])) {
|
|
209
|
+
throw Error(`Not all credential types ${JSON.stringify(credentialType)} are supported by issuer ${this.getIssuer()}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// todo: Format check? We might end up with some disjoint type / format combinations supported by the server
|
|
213
|
+
}
|
|
214
|
+
const credentialRequestClient = requestBuilder.build();
|
|
215
|
+
const proofBuilder = ProofOfPossessionBuilder_1.ProofOfPossessionBuilder.fromAccessTokenResponse({
|
|
216
|
+
accessTokenResponse: this.accessTokenResponse,
|
|
217
|
+
callbacks: proofCallbacks,
|
|
218
|
+
})
|
|
219
|
+
.withIssuer(this.getIssuer())
|
|
220
|
+
.withAlg(this.alg)
|
|
221
|
+
.withClientId(this.clientId)
|
|
222
|
+
.withKid(this.kid);
|
|
223
|
+
if (jti) {
|
|
224
|
+
proofBuilder.withJti(jti);
|
|
225
|
+
}
|
|
226
|
+
const response = yield credentialRequestClient.acquireCredentialsUsingProof({
|
|
227
|
+
proofInput: proofBuilder,
|
|
228
|
+
credentialType,
|
|
229
|
+
format,
|
|
230
|
+
});
|
|
231
|
+
if (response.errorBody) {
|
|
232
|
+
debug(`Credential request error:\r\n${response.errorBody}`);
|
|
233
|
+
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}`);
|
|
234
|
+
}
|
|
235
|
+
else if (!response.successBody) {
|
|
236
|
+
debug(`Credential request error. No success body`);
|
|
237
|
+
throw Error(`Retrieving a credential from ${(_c = this._endpointMetadata) === null || _c === void 0 ? void 0 : _c.credential_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`);
|
|
238
|
+
}
|
|
239
|
+
return response.successBody;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
getCredentialsSupported(restrictToInitiationTypes, supportedType) {
|
|
243
|
+
var _a, _b;
|
|
244
|
+
const credentialsSupported = (_b = (_a = this.endpointMetadata) === null || _a === void 0 ? void 0 : _a.issuerMetadata) === null || _b === void 0 ? void 0 : _b.credentials_supported;
|
|
245
|
+
if (!credentialsSupported) {
|
|
246
|
+
return [];
|
|
247
|
+
}
|
|
248
|
+
else if (!restrictToInitiationTypes) {
|
|
249
|
+
return credentialsSupported;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* the following (not array part is a legacy code from version 1_0-08 which jff implementors used)
|
|
253
|
+
*/
|
|
254
|
+
if (!Array.isArray(credentialsSupported)) {
|
|
255
|
+
const credentialsSupportedV8 = credentialsSupported;
|
|
256
|
+
const initiationTypes = supportedType ? [supportedType] : this.getCredentialTypes();
|
|
257
|
+
const supported = {};
|
|
258
|
+
for (const [key, value] of Object.entries(credentialsSupportedV8)) {
|
|
259
|
+
if (initiationTypes.includes(key)) {
|
|
260
|
+
supported[key] = value;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// todo: fix this later. we're returning CredentialSupportedV1_0_08 as a list of CredentialSupported (for v09 onward)
|
|
264
|
+
return supported;
|
|
265
|
+
}
|
|
266
|
+
const initiationTypes = supportedType ? [supportedType] : this.getCredentialTypes();
|
|
267
|
+
const credentialSupportedOverlap = [];
|
|
268
|
+
for (const supported of credentialsSupported) {
|
|
269
|
+
const supportedTypeOverlap = [];
|
|
270
|
+
for (const type of supported.types) {
|
|
271
|
+
initiationTypes.includes(type);
|
|
272
|
+
supportedTypeOverlap.push(type);
|
|
273
|
+
}
|
|
274
|
+
if (supportedTypeOverlap.length > 0) {
|
|
275
|
+
credentialSupportedOverlap.push({
|
|
276
|
+
types: supportedTypeOverlap,
|
|
277
|
+
format: supported.format,
|
|
278
|
+
cryptographic_suites_supported: supported.cryptographic_suites_supported,
|
|
279
|
+
cryptographic_binding_methods_supported: supported.cryptographic_binding_methods_supported,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return credentialSupportedOverlap;
|
|
284
|
+
}
|
|
285
|
+
getCredentialMetadata(type) {
|
|
286
|
+
return this.getCredentialsSupported(false, type);
|
|
287
|
+
}
|
|
288
|
+
// todo https://sphereon.atlassian.net/browse/VDX-184
|
|
289
|
+
getCredentialTypes() {
|
|
290
|
+
return typeof this.credentialOffer.request.credential_type === 'string'
|
|
291
|
+
? [this.credentialOffer.request.credential_type]
|
|
292
|
+
: this.credentialOffer.request.credential_type;
|
|
293
|
+
}
|
|
294
|
+
get flowType() {
|
|
295
|
+
return this._flowType;
|
|
296
|
+
}
|
|
297
|
+
get credentialOffer() {
|
|
298
|
+
return this._credentialOffer;
|
|
299
|
+
}
|
|
300
|
+
get endpointMetadata() {
|
|
301
|
+
this.assertServerMetadata();
|
|
302
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
303
|
+
return this._endpointMetadata;
|
|
304
|
+
}
|
|
305
|
+
get kid() {
|
|
306
|
+
this.assertIssuerData();
|
|
307
|
+
if (!this._kid) {
|
|
308
|
+
throw new Error('No value for kid is supplied');
|
|
309
|
+
}
|
|
310
|
+
return this._kid;
|
|
311
|
+
}
|
|
312
|
+
get alg() {
|
|
313
|
+
this.assertIssuerData();
|
|
314
|
+
if (!this._alg) {
|
|
315
|
+
throw new Error('No value for alg is supplied');
|
|
316
|
+
}
|
|
317
|
+
return this._alg;
|
|
318
|
+
}
|
|
319
|
+
get clientId() {
|
|
320
|
+
if (!this._clientId) {
|
|
321
|
+
throw Error('No client id present');
|
|
322
|
+
}
|
|
323
|
+
return this._clientId;
|
|
324
|
+
}
|
|
325
|
+
get accessTokenResponse() {
|
|
326
|
+
this.assertAccessToken();
|
|
327
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
328
|
+
return this._accessTokenResponse;
|
|
329
|
+
}
|
|
330
|
+
getIssuer() {
|
|
331
|
+
this.assertIssuerData();
|
|
332
|
+
return this._endpointMetadata ? this.endpointMetadata.issuer : this.getIssuer();
|
|
333
|
+
}
|
|
334
|
+
getAccessTokenEndpoint() {
|
|
335
|
+
this.assertIssuerData();
|
|
336
|
+
return this.endpointMetadata
|
|
337
|
+
? this.endpointMetadata.token_endpoint
|
|
338
|
+
: AccessTokenClient_1.AccessTokenClient.determineTokenURL({ issuerOpts: { issuer: this.getIssuer() } });
|
|
339
|
+
}
|
|
340
|
+
getCredentialEndpoint() {
|
|
341
|
+
this.assertIssuerData();
|
|
342
|
+
return this.endpointMetadata ? this.endpointMetadata.credential_endpoint : `${this.getIssuer()}/credential`;
|
|
343
|
+
}
|
|
344
|
+
assertIssuerData() {
|
|
345
|
+
if (!this._credentialOffer) {
|
|
346
|
+
throw Error(`No issuance initiation or credential offer present`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
assertServerMetadata() {
|
|
350
|
+
if (!this._endpointMetadata) {
|
|
351
|
+
throw Error('No server metadata');
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
assertAccessToken() {
|
|
355
|
+
if (!this._accessTokenResponse) {
|
|
356
|
+
throw Error(`No access token present`);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
exports.OpenID4VCIClient = OpenID4VCIClient;
|
|
361
|
+
//# sourceMappingURL=OpenID4VCIClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenID4VCIClient.js","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AccessTokenResponse, Alg, EndpointMetadata, Jwt, ProofOfPossession, ProofOfPossessionCallbacks } from '@sphereon/oid4vci-common';
|
|
2
|
+
export declare class ProofOfPossessionBuilder {
|
|
3
|
+
private readonly proof?;
|
|
4
|
+
private readonly callbacks?;
|
|
5
|
+
private kid?;
|
|
6
|
+
private clientId?;
|
|
7
|
+
private issuer?;
|
|
8
|
+
private jwt?;
|
|
9
|
+
private alg?;
|
|
10
|
+
private jti?;
|
|
11
|
+
private cNonce?;
|
|
12
|
+
private typ?;
|
|
13
|
+
private constructor();
|
|
14
|
+
static fromJwt({ jwt, callbacks }: {
|
|
15
|
+
jwt: Jwt;
|
|
16
|
+
callbacks: ProofOfPossessionCallbacks;
|
|
17
|
+
}): ProofOfPossessionBuilder;
|
|
18
|
+
static fromAccessTokenResponse({ accessTokenResponse, callbacks, }: {
|
|
19
|
+
accessTokenResponse: AccessTokenResponse;
|
|
20
|
+
callbacks: ProofOfPossessionCallbacks;
|
|
21
|
+
}): ProofOfPossessionBuilder;
|
|
22
|
+
static fromProof(proof: ProofOfPossession): ProofOfPossessionBuilder;
|
|
23
|
+
withClientId(clientId: string): ProofOfPossessionBuilder;
|
|
24
|
+
withKid(kid: string): ProofOfPossessionBuilder;
|
|
25
|
+
withIssuer(issuer: string): ProofOfPossessionBuilder;
|
|
26
|
+
withAlg(alg: Alg | string): ProofOfPossessionBuilder;
|
|
27
|
+
withJti(jti: string): ProofOfPossessionBuilder;
|
|
28
|
+
withTyp(typ: string): ProofOfPossessionBuilder;
|
|
29
|
+
withAccessTokenNonce(cNonce: string): ProofOfPossessionBuilder;
|
|
30
|
+
withAccessTokenResponse(accessToken: AccessTokenResponse): ProofOfPossessionBuilder;
|
|
31
|
+
withEndpointMetadata(endpointMetadata: EndpointMetadata): ProofOfPossessionBuilder;
|
|
32
|
+
withJwt(jwt: Jwt): ProofOfPossessionBuilder;
|
|
33
|
+
build(): Promise<ProofOfPossession>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=ProofOfPossessionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProofOfPossessionBuilder.d.ts","sourceRoot":"","sources":["../lib/ProofOfPossessionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,GAAG,EACH,gBAAgB,EAChB,GAAG,EAGH,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAIlC,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA6B;IAExD,OAAO,CAAC,GAAG,CAAC,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,GAAG,CAAC,CAAM;IAClB,OAAO,CAAC,GAAG,CAAC,CAAS;IACrB,OAAO,CAAC,GAAG,CAAC,CAAS;IACrB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,GAAG,CAAC,CAAS;IAErB,OAAO;IAqBP,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,0BAA0B,CAAA;KAAE,GAAG,wBAAwB;IAIjH,MAAM,CAAC,uBAAuB,CAAC,EAC7B,mBAAmB,EACnB,SAAS,GACV,EAAE;QACD,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,0BAA0B,CAAC;KACvC,GAAG,wBAAwB;IAI5B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,wBAAwB;IAIpE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,wBAAwB;IAKxD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB;IAK9C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB;IAKpD,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,wBAAwB;IAKpD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB;IAK9C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB;IAK9C,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB;IAK9D,uBAAuB,CAAC,WAAW,EAAE,mBAAmB,GAAG,wBAAwB;IAOnF,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,wBAAwB;IAKlF,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,wBAAwB;IAuB9B,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAoBjD"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProofOfPossessionBuilder = void 0;
|
|
13
|
+
const oid4vci_common_1 = require("@sphereon/oid4vci-common");
|
|
14
|
+
const functions_1 = require("./functions");
|
|
15
|
+
class ProofOfPossessionBuilder {
|
|
16
|
+
constructor({ proof, callbacks, jwt, accessTokenResponse, }) {
|
|
17
|
+
this.proof = proof;
|
|
18
|
+
this.callbacks = callbacks;
|
|
19
|
+
if (jwt) {
|
|
20
|
+
this.withJwt(jwt);
|
|
21
|
+
}
|
|
22
|
+
if (accessTokenResponse) {
|
|
23
|
+
this.withAccessTokenResponse(accessTokenResponse);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
static fromJwt({ jwt, callbacks }) {
|
|
27
|
+
return new ProofOfPossessionBuilder({ callbacks, jwt });
|
|
28
|
+
}
|
|
29
|
+
static fromAccessTokenResponse({ accessTokenResponse, callbacks, }) {
|
|
30
|
+
return new ProofOfPossessionBuilder({ callbacks, accessTokenResponse });
|
|
31
|
+
}
|
|
32
|
+
static fromProof(proof) {
|
|
33
|
+
return new ProofOfPossessionBuilder({ proof });
|
|
34
|
+
}
|
|
35
|
+
withClientId(clientId) {
|
|
36
|
+
this.clientId = clientId;
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
withKid(kid) {
|
|
40
|
+
this.kid = kid;
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
withIssuer(issuer) {
|
|
44
|
+
this.issuer = issuer;
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
withAlg(alg) {
|
|
48
|
+
this.alg = alg;
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
withJti(jti) {
|
|
52
|
+
this.jti = jti;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
withTyp(typ) {
|
|
56
|
+
this.typ = typ;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
withAccessTokenNonce(cNonce) {
|
|
60
|
+
this.cNonce = cNonce;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
withAccessTokenResponse(accessToken) {
|
|
64
|
+
if (accessToken.c_nonce) {
|
|
65
|
+
this.withAccessTokenNonce(accessToken.c_nonce);
|
|
66
|
+
}
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
withEndpointMetadata(endpointMetadata) {
|
|
70
|
+
this.withIssuer(endpointMetadata.issuer);
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
withJwt(jwt) {
|
|
74
|
+
if (!jwt) {
|
|
75
|
+
throw new Error(oid4vci_common_1.NO_JWT_PROVIDED);
|
|
76
|
+
}
|
|
77
|
+
this.jwt = jwt;
|
|
78
|
+
if (jwt.header) {
|
|
79
|
+
if (jwt.header.kid) {
|
|
80
|
+
this.withKid(jwt.header.kid);
|
|
81
|
+
}
|
|
82
|
+
if (jwt.header.typ) {
|
|
83
|
+
this.withTyp(jwt.header.typ);
|
|
84
|
+
}
|
|
85
|
+
this.withAlg(jwt.header.alg);
|
|
86
|
+
}
|
|
87
|
+
if (jwt.payload) {
|
|
88
|
+
if (jwt.payload.iss)
|
|
89
|
+
this.withClientId(jwt.payload.iss);
|
|
90
|
+
if (jwt.payload.aud)
|
|
91
|
+
this.withIssuer(jwt.payload.aud);
|
|
92
|
+
if (jwt.payload.jti)
|
|
93
|
+
this.withJti(jwt.payload.jti);
|
|
94
|
+
if (jwt.payload.nonce)
|
|
95
|
+
this.withAccessTokenNonce(jwt.payload.nonce);
|
|
96
|
+
}
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
build() {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
if (this.proof) {
|
|
102
|
+
return Promise.resolve(this.proof);
|
|
103
|
+
}
|
|
104
|
+
else if (this.callbacks) {
|
|
105
|
+
return yield (0, functions_1.createProofOfPossession)(this.callbacks, {
|
|
106
|
+
typ: this.typ,
|
|
107
|
+
kid: this.kid,
|
|
108
|
+
jti: this.jti,
|
|
109
|
+
alg: this.alg,
|
|
110
|
+
issuer: this.issuer,
|
|
111
|
+
clientId: this.clientId,
|
|
112
|
+
nonce: this.cNonce,
|
|
113
|
+
}, this.jwt);
|
|
114
|
+
}
|
|
115
|
+
throw new Error(oid4vci_common_1.PROOF_CANT_BE_CONSTRUCTED);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.ProofOfPossessionBuilder = ProofOfPossessionBuilder;
|
|
120
|
+
//# sourceMappingURL=ProofOfPossessionBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProofOfPossessionBuilder.js","sourceRoot":"","sources":["../lib/ProofOfPossessionBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { DecodeURIAsJsonOpts, EncodeJsonAsURIOpts } from '
|
|
2
|
-
/**
|
|
3
|
-
* @function encodeJsonAsURI encodes a Json object into a URI
|
|
4
|
-
* @param json object
|
|
5
|
-
* @param opts:
|
|
6
|
-
* - urlTypeProperties: a list of properties of which the value is a URL
|
|
7
|
-
* - arrayTypeProperties: a list of properties which are an array
|
|
8
|
-
*/
|
|
9
|
-
export declare function convertJsonToURI(json:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* @
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { DecodeURIAsJsonOpts, EncodeJsonAsURIOpts } from '@sphereon/oid4vci-common';
|
|
2
|
+
/**
|
|
3
|
+
* @function encodeJsonAsURI encodes a Json object into a URI
|
|
4
|
+
* @param json object
|
|
5
|
+
* @param opts:
|
|
6
|
+
* - urlTypeProperties: a list of properties of which the value is a URL
|
|
7
|
+
* - arrayTypeProperties: a list of properties which are an array
|
|
8
|
+
*/
|
|
9
|
+
export declare function convertJsonToURI(json: {
|
|
10
|
+
[s: string]: any;
|
|
11
|
+
} | ArrayLike<any> | string, opts?: EncodeJsonAsURIOpts): string;
|
|
12
|
+
/**
|
|
13
|
+
* @function decodeUriAsJson decodes a URI into a Json object
|
|
14
|
+
* @param uri string
|
|
15
|
+
* @param opts:
|
|
16
|
+
* - requiredProperties: the required properties
|
|
17
|
+
* - arrayTypeProperties: properties that can show up more that once
|
|
18
|
+
*/
|
|
19
|
+
export declare function convertURIToJsonObject(uri: string, opts?: DecodeURIAsJsonOpts): unknown;
|
|
20
|
+
//# sourceMappingURL=Encoding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Encoding.d.ts","sourceRoot":"","sources":["../../lib/functions/Encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,mBAAmB,EAAE,mBAAmB,EAAe,MAAM,0BAA0B,CAAC;AAE7G;;;;;;GAMG;AAEH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAyCzH;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAMvF"}
|