@sphereon/ssi-sdk.siopv2-oid4vp-rp-rest-api 0.34.1-feature.SSISDK.26.RP.58 → 0.34.1-feature.SSISDK.45.135
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +198 -131
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +100 -10
- package/dist/index.d.ts +100 -10
- package/dist/index.js +196 -129
- package/dist/index.js.map +1 -1
- package/package.json +21 -18
- package/src/index.ts +1 -1
- package/src/middleware/validationMiddleware.ts +20 -0
- package/src/schemas/index.ts +41 -0
- package/src/siop-api-functions.ts +22 -26
- package/src/siopv2-rp-api-server.ts +7 -7
- package/src/types/types.ts +68 -1
- package/src/universal-oid4vp-api-functions.ts +173 -0
- package/src/webapp-api-functions.ts +0 -183
package/dist/index.cjs
CHANGED
|
@@ -32,17 +32,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
32
32
|
var index_exports = {};
|
|
33
33
|
__export(index_exports, {
|
|
34
34
|
SIOPv2RPApiServer: () => SIOPv2RPApiServer,
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
authStatusUniversalOID4VPEndpoint: () => authStatusUniversalOID4VPEndpoint,
|
|
36
|
+
createAuthRequestUniversalOID4VPEndpoint: () => createAuthRequestUniversalOID4VPEndpoint,
|
|
37
37
|
getAuthRequestSIOPv2Endpoint: () => getAuthRequestSIOPv2Endpoint,
|
|
38
38
|
getDefinitionsEndpoint: () => getDefinitionsEndpoint,
|
|
39
|
-
|
|
39
|
+
removeAuthRequestStateUniversalOID4VPEndpoint: () => removeAuthRequestStateUniversalOID4VPEndpoint,
|
|
40
40
|
verifyAuthResponseSIOPv2Endpoint: () => verifyAuthResponseSIOPv2Endpoint
|
|
41
41
|
});
|
|
42
42
|
module.exports = __toCommonJS(index_exports);
|
|
43
43
|
|
|
44
44
|
// src/siop-api-functions.ts
|
|
45
|
-
var import_did_auth_siop = require("@sphereon/did-auth-siop");
|
|
46
45
|
var import_ssi_express_support = require("@sphereon/ssi-express-support");
|
|
47
46
|
var import_ssi_types = require("@sphereon/ssi-types");
|
|
48
47
|
var parseAuthorizationResponse = /* @__PURE__ */ __name((request) => {
|
|
@@ -75,9 +74,9 @@ function verifyAuthResponseSIOPv2Endpoint(router, context, opts) {
|
|
|
75
74
|
const path = opts?.path ?? "/siop/definitions/:definitionId/auth-responses/:correlationId";
|
|
76
75
|
router.post(path, (0, import_ssi_express_support.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
77
76
|
try {
|
|
78
|
-
const { correlationId,
|
|
79
|
-
if (!correlationId || !
|
|
80
|
-
console.log(`No authorization request could be found for the given url. correlationId: ${correlationId},
|
|
77
|
+
const { correlationId, tenantId, version, credentialQueryId } = request.params;
|
|
78
|
+
if (!correlationId || !credentialQueryId) {
|
|
79
|
+
console.log(`No authorization request could be found for the given url. correlationId: ${correlationId}, credentialQueryId: ${credentialQueryId}`);
|
|
81
80
|
return (0, import_ssi_express_support.sendErrorResponse)(response, 404, "No authorization request could be found");
|
|
82
81
|
}
|
|
83
82
|
console.log("Authorization Response (siop-sessions");
|
|
@@ -85,16 +84,16 @@ function verifyAuthResponseSIOPv2Endpoint(router, context, opts) {
|
|
|
85
84
|
const definitionItems = await context.agent.pdmGetDefinitions({
|
|
86
85
|
filter: [
|
|
87
86
|
{
|
|
88
|
-
definitionId,
|
|
87
|
+
definitionId: credentialQueryId,
|
|
89
88
|
tenantId,
|
|
90
89
|
version
|
|
91
90
|
}
|
|
92
91
|
]
|
|
93
92
|
});
|
|
94
93
|
if (definitionItems.length === 0) {
|
|
95
|
-
console.log(`Could not get definition ${
|
|
94
|
+
console.log(`Could not get definition ${credentialQueryId} from agent. Will return 404`);
|
|
96
95
|
response.statusCode = 404;
|
|
97
|
-
response.statusMessage = `No definition ${
|
|
96
|
+
response.statusMessage = `No definition ${credentialQueryId}`;
|
|
98
97
|
return response.send();
|
|
99
98
|
}
|
|
100
99
|
const authorizationResponse = parseAuthorizationResponse(request);
|
|
@@ -103,16 +102,10 @@ function verifyAuthResponseSIOPv2Endpoint(router, context, opts) {
|
|
|
103
102
|
const verifiedResponse = await context.agent.siopVerifyAuthResponse({
|
|
104
103
|
authorizationResponse,
|
|
105
104
|
correlationId,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
{
|
|
109
|
-
location: opts?.presentationDefinitionLocation ?? import_did_auth_siop.PresentationDefinitionLocation.TOPLEVEL_PRESENTATION_DEF,
|
|
110
|
-
definition: definitionItem.definitionPayload
|
|
111
|
-
}
|
|
112
|
-
],
|
|
113
|
-
dcqlQuery: definitionItem.dcqlPayload
|
|
105
|
+
queryId: credentialQueryId,
|
|
106
|
+
dcqlQueryPayload: definitionItem.dcqlPayload
|
|
114
107
|
});
|
|
115
|
-
const wrappedPresentation = verifiedResponse?.oid4vpSubmission?.
|
|
108
|
+
const wrappedPresentation = verifiedResponse?.oid4vpSubmission?.presentation[credentialQueryId];
|
|
116
109
|
if (wrappedPresentation) {
|
|
117
110
|
console.log("PRESENTATION:" + JSON.stringify(wrappedPresentation.presentation, null, 2));
|
|
118
111
|
response.statusCode = 200;
|
|
@@ -125,7 +118,7 @@ function verifyAuthResponseSIOPv2Endpoint(router, context, opts) {
|
|
|
125
118
|
}
|
|
126
119
|
const responseRedirectURI = await context.agent.siopGetRedirectURI({
|
|
127
120
|
correlationId,
|
|
128
|
-
|
|
121
|
+
queryId: credentialQueryId,
|
|
129
122
|
state: verifiedResponse.state
|
|
130
123
|
});
|
|
131
124
|
if (responseRedirectURI) {
|
|
@@ -163,7 +156,7 @@ function getAuthRequestSIOPv2Endpoint(router, context, opts) {
|
|
|
163
156
|
}
|
|
164
157
|
const requestState = await context.agent.siopGetAuthRequestState({
|
|
165
158
|
correlationId,
|
|
166
|
-
definitionId,
|
|
159
|
+
queryId: definitionId,
|
|
167
160
|
errorOnNotFound: false
|
|
168
161
|
});
|
|
169
162
|
if (!requestState) {
|
|
@@ -184,8 +177,8 @@ function getAuthRequestSIOPv2Endpoint(router, context, opts) {
|
|
|
184
177
|
} finally {
|
|
185
178
|
await context.agent.siopUpdateAuthRequestState({
|
|
186
179
|
correlationId,
|
|
187
|
-
definitionId,
|
|
188
|
-
state: "
|
|
180
|
+
queryId: definitionId,
|
|
181
|
+
state: "authorization_request_created",
|
|
189
182
|
error
|
|
190
183
|
});
|
|
191
184
|
}
|
|
@@ -196,46 +189,122 @@ function getAuthRequestSIOPv2Endpoint(router, context, opts) {
|
|
|
196
189
|
}
|
|
197
190
|
__name(getAuthRequestSIOPv2Endpoint, "getAuthRequestSIOPv2Endpoint");
|
|
198
191
|
|
|
199
|
-
// src/
|
|
192
|
+
// src/universal-oid4vp-api-functions.ts
|
|
200
193
|
var import_did_auth_siop2 = require("@sphereon/did-auth-siop");
|
|
201
194
|
var import_ssi_express_support2 = require("@sphereon/ssi-express-support");
|
|
202
195
|
var import_ssi_sdk = require("@sphereon/ssi-sdk.siopv2-oid4vp-common");
|
|
203
|
-
var import_ssi_sdk2 = require("@sphereon/ssi-sdk.siopv2-oid4vp-rp-auth");
|
|
204
196
|
var import_short_uuid = __toESM(require("short-uuid"), 1);
|
|
205
|
-
|
|
206
|
-
|
|
197
|
+
|
|
198
|
+
// src/middleware/validationMiddleware.ts
|
|
199
|
+
var import_zod = require("zod");
|
|
200
|
+
var validateData = /* @__PURE__ */ __name((schema) => {
|
|
201
|
+
return (req, res, next) => {
|
|
202
|
+
try {
|
|
203
|
+
schema.parse(req.body);
|
|
204
|
+
next();
|
|
205
|
+
} catch (error) {
|
|
206
|
+
if (error instanceof import_zod.ZodError) {
|
|
207
|
+
const errorMessages = error.issues.map((issue) => ({
|
|
208
|
+
message: `${issue.path.join(".")} is ${issue.message}`
|
|
209
|
+
}));
|
|
210
|
+
res.status(400).json({
|
|
211
|
+
status: 400,
|
|
212
|
+
message: "Invalid data",
|
|
213
|
+
error_details: errorMessages[0].message
|
|
214
|
+
});
|
|
215
|
+
} else {
|
|
216
|
+
res.status(500).json({
|
|
217
|
+
status: 500,
|
|
218
|
+
message: "Internal Server Error"
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
}, "validateData");
|
|
224
|
+
|
|
225
|
+
// src/schemas/index.ts
|
|
226
|
+
var import_zod2 = require("zod");
|
|
227
|
+
var import_did_auth_siop = require("@sphereon/did-auth-siop");
|
|
228
|
+
var ResponseTypeSchema = import_zod2.z.enum([
|
|
229
|
+
import_did_auth_siop.ResponseType.VP_TOKEN
|
|
230
|
+
]);
|
|
231
|
+
var ResponseModeSchema = import_zod2.z.enum([
|
|
232
|
+
import_did_auth_siop.ResponseMode.DIRECT_POST,
|
|
233
|
+
import_did_auth_siop.ResponseMode.DIRECT_POST_JWT
|
|
234
|
+
]);
|
|
235
|
+
var RequestUriMethodSchema = import_zod2.z.enum(Object.values(import_did_auth_siop.RequestUriMethod));
|
|
236
|
+
var QRCodeOptsSchema = import_zod2.z.object({
|
|
237
|
+
size: import_zod2.z.number().optional(),
|
|
238
|
+
color_dark: import_zod2.z.string().optional(),
|
|
239
|
+
color_light: import_zod2.z.string().optional()
|
|
240
|
+
});
|
|
241
|
+
var CreateAuthorizationRequestBodySchema = import_zod2.z.object({
|
|
242
|
+
query_id: import_zod2.z.string(),
|
|
243
|
+
client_id: import_zod2.z.string().optional(),
|
|
244
|
+
request_uri_base: import_zod2.z.string().optional(),
|
|
245
|
+
correlation_id: import_zod2.z.string().optional(),
|
|
246
|
+
request_uri_method: RequestUriMethodSchema.optional(),
|
|
247
|
+
response_type: ResponseTypeSchema.optional(),
|
|
248
|
+
response_mode: ResponseModeSchema.optional(),
|
|
249
|
+
transaction_data: import_zod2.z.array(import_zod2.z.string()).optional(),
|
|
250
|
+
qr_code: QRCodeOptsSchema.optional(),
|
|
251
|
+
direct_post_response_redirect_uri: import_zod2.z.string().optional(),
|
|
252
|
+
callback: import_did_auth_siop.CallbackOptsSchema.optional()
|
|
253
|
+
});
|
|
254
|
+
var CreateAuthorizationResponseSchema = import_zod2.z.object({
|
|
255
|
+
correlation_id: import_zod2.z.string(),
|
|
256
|
+
query_id: import_zod2.z.string(),
|
|
257
|
+
request_uri: import_zod2.z.string(),
|
|
258
|
+
status_uri: import_zod2.z.string(),
|
|
259
|
+
qr_uri: import_zod2.z.string().optional()
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
// src/universal-oid4vp-api-functions.ts
|
|
263
|
+
function createAuthRequestUniversalOID4VPEndpoint(router, context, opts) {
|
|
207
264
|
if (opts?.enabled === false) {
|
|
208
|
-
console.log(`createAuthRequest
|
|
265
|
+
console.log(`createAuthRequest universal OID4VP endpoint is disabled`);
|
|
209
266
|
return;
|
|
210
267
|
}
|
|
211
|
-
const path = opts?.path ?? "/
|
|
212
|
-
router.post(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
268
|
+
const path = opts?.path ?? "/backend/auth/requests";
|
|
269
|
+
router.post(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), validateData(CreateAuthorizationRequestBodySchema), async (request, response) => {
|
|
213
270
|
try {
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
|
|
271
|
+
const correlationId = request.body.correlation_id ?? import_short_uuid.default.uuid();
|
|
272
|
+
const qrCodeOpts = request.body.qr_code ?? opts?.qrCodeOpts;
|
|
273
|
+
const queryId = request.body.query_id;
|
|
274
|
+
const directPostResponseRedirectUri = request.body.direct_post_response_redirect_uri;
|
|
275
|
+
const requestUriBase = request.body.request_uri_base;
|
|
276
|
+
const callback = request.body.callback;
|
|
277
|
+
const definitionItems = await context.agent.pdmGetDefinitions({
|
|
278
|
+
filter: [
|
|
279
|
+
{
|
|
280
|
+
definitionId: queryId
|
|
281
|
+
}
|
|
282
|
+
]
|
|
283
|
+
});
|
|
284
|
+
if (definitionItems.length === 0) {
|
|
285
|
+
console.log(`No query could be found for the given id. Query id: ${queryId}`);
|
|
286
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 404, {
|
|
287
|
+
status: 404,
|
|
288
|
+
message: "No query could be found"
|
|
289
|
+
});
|
|
217
290
|
}
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
const qrCodeOpts = request.body.qrCodeOpts ?? opts?.qrCodeOpts;
|
|
221
|
-
const requestByReferenceURI = (0, import_ssi_sdk.uriWithBase)(`/siop/definitions/${definitionId}/auth-requests/${state}`, {
|
|
222
|
-
baseURI: opts?.siopBaseURI
|
|
291
|
+
const requestByReferenceURI = (0, import_ssi_sdk.uriWithBase)(`/siop/definitions/${queryId}/auth-requests/${correlationId}`, {
|
|
292
|
+
baseURI: requestUriBase ?? opts?.siopBaseURI
|
|
223
293
|
});
|
|
224
|
-
const responseURI = (0, import_ssi_sdk.uriWithBase)(`/siop/definitions/${
|
|
294
|
+
const responseURI = (0, import_ssi_sdk.uriWithBase)(`/siop/definitions/${queryId}/auth-responses/${correlationId}`, {
|
|
225
295
|
baseURI: opts?.siopBaseURI
|
|
226
296
|
});
|
|
227
|
-
const responseRedirectURI = ("response_redirect_uri" in request.body && request.body.response_redirect_uri) ?? ("responseRedirectURI" in request.body && request.body.responseRedirectURI);
|
|
228
297
|
const authRequestURI = await context.agent.siopCreateAuthRequestURI({
|
|
229
|
-
|
|
298
|
+
queryId,
|
|
230
299
|
correlationId,
|
|
231
|
-
state,
|
|
232
300
|
nonce: import_short_uuid.default.uuid(),
|
|
233
301
|
requestByReferenceURI,
|
|
234
302
|
responseURIType: "response_uri",
|
|
235
303
|
responseURI,
|
|
236
|
-
...
|
|
237
|
-
responseRedirectURI
|
|
238
|
-
}
|
|
304
|
+
...directPostResponseRedirectUri && {
|
|
305
|
+
responseRedirectURI: directPostResponseRedirectUri
|
|
306
|
+
},
|
|
307
|
+
callback
|
|
239
308
|
});
|
|
240
309
|
let qrCodeDataUri;
|
|
241
310
|
if (qrCodeOpts) {
|
|
@@ -247,140 +316,138 @@ function createAuthRequestWebappEndpoint(router, context, opts) {
|
|
|
247
316
|
qrCodeDataUri = `data:image/png;base64,${(await qrCode.draw()).toString("base64")}`;
|
|
248
317
|
}
|
|
249
318
|
const authRequestBody = {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
authStatusURI: `${(0, import_ssi_sdk.uriWithBase)(opts?.webappAuthStatusPath ?? "/webapp/auth-status", {
|
|
319
|
+
query_id: queryId,
|
|
320
|
+
correlation_id: correlationId,
|
|
321
|
+
request_uri: authRequestURI,
|
|
322
|
+
status_uri: `${(0, import_ssi_sdk.uriWithBase)(opts?.webappAuthStatusPath ?? `/backend/auth/status/${correlationId}`, {
|
|
255
323
|
baseURI: opts?.webappBaseURI
|
|
256
324
|
})}`,
|
|
257
325
|
...qrCodeDataUri && {
|
|
258
|
-
qrCodeDataUri
|
|
326
|
+
qr_uri: qrCodeDataUri
|
|
259
327
|
}
|
|
260
328
|
};
|
|
261
329
|
console.log(`Auth Request URI data to send back: ${JSON.stringify(authRequestBody)}`);
|
|
262
|
-
return response.json(authRequestBody);
|
|
330
|
+
return response.status(201).json(authRequestBody);
|
|
263
331
|
} catch (error) {
|
|
264
|
-
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500,
|
|
332
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, {
|
|
333
|
+
status: 500,
|
|
334
|
+
message: "Could not create an authorization request URI"
|
|
335
|
+
}, error);
|
|
265
336
|
}
|
|
266
337
|
});
|
|
267
338
|
}
|
|
268
|
-
__name(
|
|
269
|
-
function
|
|
339
|
+
__name(createAuthRequestUniversalOID4VPEndpoint, "createAuthRequestUniversalOID4VPEndpoint");
|
|
340
|
+
function removeAuthRequestStateUniversalOID4VPEndpoint(router, context, opts) {
|
|
270
341
|
if (opts?.enabled === false) {
|
|
271
|
-
console.log(`
|
|
342
|
+
console.log(`removeAuthStatus universal OID4VP endpoint is disabled`);
|
|
272
343
|
return;
|
|
273
344
|
}
|
|
274
|
-
const path = opts?.path ?? "/
|
|
275
|
-
router.
|
|
345
|
+
const path = opts?.path ?? "/backend/auth/requests/:correlationId";
|
|
346
|
+
router.delete(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
276
347
|
try {
|
|
277
|
-
|
|
278
|
-
const
|
|
279
|
-
const definitionId = request.body.definitionId;
|
|
280
|
-
const requestState = correlationId && definitionId ? await context.agent.siopGetAuthRequestState({
|
|
348
|
+
const correlationId = request.params.correlationId;
|
|
349
|
+
const authRequestState = await context.agent.siopGetAuthRequestState({
|
|
281
350
|
correlationId,
|
|
282
|
-
definitionId,
|
|
283
351
|
errorOnNotFound: false
|
|
284
|
-
})
|
|
285
|
-
if (!
|
|
286
|
-
console.log(`No
|
|
287
|
-
response
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
correlationId,
|
|
292
|
-
definitionId,
|
|
293
|
-
lastUpdated: requestState ? requestState.lastUpdated : Date.now()
|
|
294
|
-
};
|
|
295
|
-
return response.json(statusBody2);
|
|
352
|
+
});
|
|
353
|
+
if (!authRequestState) {
|
|
354
|
+
console.log(`No authorization request could be found for the given correlationId. correlationId: ${correlationId}`);
|
|
355
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 404, {
|
|
356
|
+
status: 404,
|
|
357
|
+
message: "No authorization request could be found"
|
|
358
|
+
});
|
|
296
359
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
360
|
+
await context.agent.siopDeleteAuthState({
|
|
361
|
+
correlationId
|
|
362
|
+
});
|
|
363
|
+
return response.status(204).json();
|
|
364
|
+
} catch (error) {
|
|
365
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, {
|
|
366
|
+
status: 500,
|
|
367
|
+
message: error.message
|
|
368
|
+
}, error);
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
__name(removeAuthRequestStateUniversalOID4VPEndpoint, "removeAuthRequestStateUniversalOID4VPEndpoint");
|
|
373
|
+
function authStatusUniversalOID4VPEndpoint(router, context, opts) {
|
|
374
|
+
if (opts?.enabled === false) {
|
|
375
|
+
console.log(`authStatus universal OID4VP endpoint is disabled`);
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
const path = opts?.path ?? "/backend/auth/status/:correlationId";
|
|
379
|
+
router.get(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
380
|
+
try {
|
|
381
|
+
console.log("Received auth-status request...");
|
|
382
|
+
const correlationId = request.params.correlationId;
|
|
383
|
+
const requestState = await context.agent.siopGetAuthRequestState({
|
|
384
|
+
correlationId,
|
|
385
|
+
errorOnNotFound: false
|
|
386
|
+
});
|
|
387
|
+
if (!requestState) {
|
|
388
|
+
console.log(`No authorization request could be found for the given correlationId. correlationId: ${correlationId}`);
|
|
389
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 404, {
|
|
390
|
+
status: 404,
|
|
391
|
+
message: "No authorization request could be found"
|
|
392
|
+
});
|
|
300
393
|
}
|
|
301
394
|
let responseState;
|
|
302
|
-
if (requestState.status === "
|
|
395
|
+
if (requestState.status === "authorization_request_created") {
|
|
303
396
|
responseState = await context.agent.siopGetAuthResponseState({
|
|
304
397
|
correlationId,
|
|
305
|
-
definitionId,
|
|
306
|
-
includeVerifiedData,
|
|
307
398
|
errorOnNotFound: false
|
|
308
399
|
});
|
|
309
400
|
}
|
|
310
401
|
const overallState = responseState ?? requestState;
|
|
311
402
|
const statusBody = {
|
|
312
403
|
status: overallState.status,
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
definitionId,
|
|
318
|
-
lastUpdated: overallState.lastUpdated,
|
|
319
|
-
...responseState && responseState.status === import_did_auth_siop2.AuthorizationResponseStateStatus.VERIFIED ? {
|
|
320
|
-
payload: await responseState.response.mergedPayloads({
|
|
321
|
-
hasher: import_ssi_sdk3.shaHasher
|
|
322
|
-
}),
|
|
404
|
+
correlation_id: overallState.correlationId,
|
|
405
|
+
query_id: overallState.queryId,
|
|
406
|
+
last_updated: overallState.lastUpdated,
|
|
407
|
+
...responseState?.status === import_did_auth_siop2.AuthorizationResponseStateStatus.VERIFIED && responseState.verifiedData !== void 0 && {
|
|
323
408
|
verifiedData: responseState.verifiedData
|
|
324
|
-
}
|
|
409
|
+
},
|
|
410
|
+
...overallState.error && {
|
|
411
|
+
message: overallState.error.message
|
|
412
|
+
}
|
|
325
413
|
};
|
|
326
414
|
console.debug(`Will send auth status: ${JSON.stringify(statusBody)}`);
|
|
327
415
|
if (overallState.status === "error") {
|
|
328
|
-
response.
|
|
329
|
-
return response.json(statusBody);
|
|
416
|
+
return response.status(500).json(statusBody);
|
|
330
417
|
}
|
|
331
|
-
response.
|
|
332
|
-
return response.json(statusBody);
|
|
333
|
-
} catch (error) {
|
|
334
|
-
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, error.message, error);
|
|
335
|
-
}
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
__name(authStatusWebappEndpoint, "authStatusWebappEndpoint");
|
|
339
|
-
function removeAuthRequestStateWebappEndpoint(router, context, opts) {
|
|
340
|
-
if (opts?.enabled === false) {
|
|
341
|
-
console.log(`removeAuthStatus Webapp endpoint is disabled`);
|
|
342
|
-
return;
|
|
343
|
-
}
|
|
344
|
-
const path = opts?.path ?? "/webapp/definitions/:definitionId/auth-requests/:correlationId";
|
|
345
|
-
router.delete(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
346
|
-
try {
|
|
347
|
-
const correlationId = request.params.correlationId;
|
|
348
|
-
const definitionId = request.params.definitionId;
|
|
349
|
-
if (!correlationId || !definitionId) {
|
|
350
|
-
console.log(`No authorization request could be found for the given url. correlationId: ${correlationId}, definitionId: ${definitionId}`);
|
|
351
|
-
return (0, import_ssi_express_support2.sendErrorResponse)(response, 404, "No authorization request could be found");
|
|
352
|
-
}
|
|
353
|
-
response.statusCode = 200;
|
|
354
|
-
return response.json(await context.agent.siopDeleteAuthState({
|
|
355
|
-
definitionId,
|
|
356
|
-
correlationId
|
|
357
|
-
}));
|
|
418
|
+
return response.status(200).json(statusBody);
|
|
358
419
|
} catch (error) {
|
|
359
|
-
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500,
|
|
420
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, {
|
|
421
|
+
status: 500,
|
|
422
|
+
message: error.message
|
|
423
|
+
}, error);
|
|
360
424
|
}
|
|
361
425
|
});
|
|
362
426
|
}
|
|
363
|
-
__name(
|
|
427
|
+
__name(authStatusUniversalOID4VPEndpoint, "authStatusUniversalOID4VPEndpoint");
|
|
364
428
|
function getDefinitionsEndpoint(router, context, opts) {
|
|
365
429
|
if (opts?.enabled === false) {
|
|
366
|
-
console.log(`getDefinitions
|
|
430
|
+
console.log(`getDefinitions universal OID4VP endpoint is disabled`);
|
|
367
431
|
return;
|
|
368
432
|
}
|
|
369
|
-
const path = opts?.path ?? "/
|
|
433
|
+
const path = opts?.path ?? "/backend/definitions";
|
|
370
434
|
router.get(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
371
435
|
try {
|
|
372
436
|
const definitions = await context.agent.pdmGetDefinitions();
|
|
373
437
|
response.statusCode = 200;
|
|
374
438
|
return response.json(definitions);
|
|
375
439
|
} catch (error) {
|
|
376
|
-
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500,
|
|
440
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, {
|
|
441
|
+
status: 500,
|
|
442
|
+
message: error.message
|
|
443
|
+
}, error);
|
|
377
444
|
}
|
|
378
445
|
});
|
|
379
446
|
}
|
|
380
447
|
__name(getDefinitionsEndpoint, "getDefinitionsEndpoint");
|
|
381
448
|
|
|
382
449
|
// src/siopv2-rp-api-server.ts
|
|
383
|
-
var
|
|
450
|
+
var import_ssi_sdk2 = require("@sphereon/ssi-sdk.core");
|
|
384
451
|
var import_ssi_express_support3 = require("@sphereon/ssi-express-support");
|
|
385
452
|
var import_express = __toESM(require("express"), 1);
|
|
386
453
|
var import_swagger_ui_express = __toESM(require("swagger-ui-express"), 1);
|
|
@@ -417,16 +484,16 @@ var SIOPv2RPApiServer = class {
|
|
|
417
484
|
this._opts = opts;
|
|
418
485
|
this._express = args.expressSupport.express;
|
|
419
486
|
this._router = import_express.default.Router();
|
|
420
|
-
const context = (0,
|
|
487
|
+
const context = (0, import_ssi_sdk2.agentContext)(agent);
|
|
421
488
|
const features = opts?.enableFeatures ?? [
|
|
422
489
|
"rp-status",
|
|
423
490
|
"siop"
|
|
424
491
|
];
|
|
425
492
|
console.log(`SIOPv2 API enabled, with features: ${JSON.stringify(features)}}`);
|
|
426
493
|
if (features.includes("rp-status")) {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
494
|
+
createAuthRequestUniversalOID4VPEndpoint(this._router, context, opts?.endpointOpts?.webappCreateAuthRequest);
|
|
495
|
+
authStatusUniversalOID4VPEndpoint(this._router, context, opts?.endpointOpts?.webappAuthStatus);
|
|
496
|
+
removeAuthRequestStateUniversalOID4VPEndpoint(this._router, context, opts?.endpointOpts?.webappDeleteAuthRequest);
|
|
430
497
|
getDefinitionsEndpoint(this._router, context, opts?.endpointOpts?.webappGetDefinitions);
|
|
431
498
|
}
|
|
432
499
|
if (features.includes("siop")) {
|