@sphereon/ssi-sdk.siopv2-oid4vp-rp-rest-api 0.34.1-feature.SSISDK.26.RP.58 → 0.34.1-feature.SSISDK.45.189
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 +205 -134
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +102 -13
- package/dist/index.d.ts +102 -13
- package/dist/index.js +203 -132
- package/dist/index.js.map +1 -1
- package/package.json +21 -20
- package/src/index.ts +1 -1
- package/src/middleware/validationMiddleware.ts +20 -0
- package/src/schemas/index.ts +36 -0
- package/src/siop-api-functions.ts +19 -30
- package/src/siopv2-rp-api-server.ts +9 -10
- package/src/types/types.ts +69 -3
- package/src/universal-oid4vp-api-functions.ts +179 -0
- package/src/webapp-api-functions.ts +1 -1
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, queryId, tenantId, version } = request.params;
|
|
78
|
+
if (!correlationId || !queryId) {
|
|
79
|
+
console.log(`No authorization request could be found for the given url. correlationId: ${correlationId}, queryId: ${queryId}`);
|
|
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
|
-
|
|
87
|
+
queryId,
|
|
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 ${queryId} from agent. Will return 404`);
|
|
96
95
|
response.statusCode = 404;
|
|
97
|
-
response.statusMessage = `No definition ${
|
|
96
|
+
response.statusMessage = `No definition ${queryId}`;
|
|
98
97
|
return response.send();
|
|
99
98
|
}
|
|
100
99
|
const authorizationResponse = parseAuthorizationResponse(request);
|
|
@@ -103,18 +102,12 @@ 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,
|
|
106
|
+
dcqlQuery: definitionItem.query
|
|
114
107
|
});
|
|
115
|
-
const
|
|
116
|
-
if (
|
|
117
|
-
console.log("
|
|
108
|
+
const presentation = verifiedResponse?.oid4vpSubmission?.presentation;
|
|
109
|
+
if (presentation && Object.keys(presentation).length > 0) {
|
|
110
|
+
console.log("PRESENTATIONS:" + JSON.stringify(verifiedResponse?.oid4vpSubmission?.presentation, null, 2));
|
|
118
111
|
response.statusCode = 200;
|
|
119
112
|
const authorizationChallengeValidationResponse = {
|
|
120
113
|
presentation_during_issuance_session: verifiedResponse.correlationId
|
|
@@ -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,
|
|
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,126 @@ 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_did_auth_siop = require("@sphereon/did-auth-siop");
|
|
227
|
+
var import_zod2 = require("zod");
|
|
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 requestUriMethods = [
|
|
236
|
+
"get",
|
|
237
|
+
"post"
|
|
238
|
+
];
|
|
239
|
+
var RequestUriMethodSchema = import_zod2.z.enum(requestUriMethods);
|
|
240
|
+
var QRCodeOptsSchema = import_zod2.z.object({
|
|
241
|
+
size: import_zod2.z.number().optional(),
|
|
242
|
+
color_dark: import_zod2.z.string().optional(),
|
|
243
|
+
color_light: import_zod2.z.string().optional()
|
|
244
|
+
});
|
|
245
|
+
var CreateAuthorizationRequestBodySchema = import_zod2.z.object({
|
|
246
|
+
query_id: import_zod2.z.string(),
|
|
247
|
+
client_id: import_zod2.z.string().optional(),
|
|
248
|
+
request_uri_base: import_zod2.z.string().optional(),
|
|
249
|
+
correlation_id: import_zod2.z.string().optional(),
|
|
250
|
+
request_uri_method: RequestUriMethodSchema.optional(),
|
|
251
|
+
response_type: ResponseTypeSchema.optional(),
|
|
252
|
+
response_mode: ResponseModeSchema.optional(),
|
|
253
|
+
transaction_data: import_zod2.z.array(import_zod2.z.string()).optional(),
|
|
254
|
+
qr_code: QRCodeOptsSchema.optional(),
|
|
255
|
+
direct_post_response_redirect_uri: import_zod2.z.string().optional(),
|
|
256
|
+
callback: import_did_auth_siop.CallbackOptsSchema.optional()
|
|
257
|
+
});
|
|
258
|
+
var CreateAuthorizationResponseSchema = import_zod2.z.object({
|
|
259
|
+
correlation_id: import_zod2.z.string(),
|
|
260
|
+
query_id: import_zod2.z.string(),
|
|
261
|
+
request_uri: import_zod2.z.string(),
|
|
262
|
+
status_uri: import_zod2.z.string(),
|
|
263
|
+
qr_uri: import_zod2.z.string().optional()
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
// src/universal-oid4vp-api-functions.ts
|
|
267
|
+
function createAuthRequestUniversalOID4VPEndpoint(router, context, opts) {
|
|
207
268
|
if (opts?.enabled === false) {
|
|
208
|
-
console.log(`createAuthRequest
|
|
269
|
+
console.log(`createAuthRequest universal OID4VP endpoint is disabled`);
|
|
209
270
|
return;
|
|
210
271
|
}
|
|
211
|
-
const path = opts?.path ?? "/
|
|
212
|
-
router.post(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
272
|
+
const path = opts?.path ?? "/backend/auth/requests";
|
|
273
|
+
router.post(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), validateData(CreateAuthorizationRequestBodySchema), async (request, response) => {
|
|
213
274
|
try {
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
|
|
275
|
+
const correlationId = request.body.correlation_id ?? import_short_uuid.default.uuid();
|
|
276
|
+
const qrCodeOpts = request.body.qr_code ?? opts?.qrCodeOpts;
|
|
277
|
+
const queryId = request.body.query_id;
|
|
278
|
+
const directPostResponseRedirectUri = request.body.direct_post_response_redirect_uri;
|
|
279
|
+
const requestUriBase = request.body.request_uri_base;
|
|
280
|
+
const callback = request.body.callback;
|
|
281
|
+
const definitionItems = await context.agent.pdmGetDefinitions({
|
|
282
|
+
filter: [
|
|
283
|
+
{
|
|
284
|
+
queryId
|
|
285
|
+
}
|
|
286
|
+
]
|
|
287
|
+
});
|
|
288
|
+
if (definitionItems.length === 0) {
|
|
289
|
+
console.log(`No query could be found for the given id. Query id: ${queryId}`);
|
|
290
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 404, {
|
|
291
|
+
status: 404,
|
|
292
|
+
message: "No query could be found"
|
|
293
|
+
});
|
|
217
294
|
}
|
|
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
|
|
295
|
+
const requestByReferenceURI = (0, import_ssi_sdk.uriWithBase)(`/siop/definitions/${queryId}/auth-requests/${correlationId}`, {
|
|
296
|
+
baseURI: requestUriBase ?? opts?.siopBaseURI
|
|
223
297
|
});
|
|
224
|
-
const responseURI = (0, import_ssi_sdk.uriWithBase)(`/siop/definitions/${
|
|
298
|
+
const responseURI = (0, import_ssi_sdk.uriWithBase)(`/siop/definitions/${queryId}/auth-responses/${correlationId}`, {
|
|
225
299
|
baseURI: opts?.siopBaseURI
|
|
226
300
|
});
|
|
227
|
-
const responseRedirectURI = ("response_redirect_uri" in request.body && request.body.response_redirect_uri) ?? ("responseRedirectURI" in request.body && request.body.responseRedirectURI);
|
|
228
301
|
const authRequestURI = await context.agent.siopCreateAuthRequestURI({
|
|
229
|
-
|
|
302
|
+
queryId,
|
|
230
303
|
correlationId,
|
|
231
|
-
state,
|
|
232
304
|
nonce: import_short_uuid.default.uuid(),
|
|
233
305
|
requestByReferenceURI,
|
|
234
306
|
responseURIType: "response_uri",
|
|
235
307
|
responseURI,
|
|
236
|
-
...
|
|
237
|
-
responseRedirectURI
|
|
238
|
-
}
|
|
308
|
+
...directPostResponseRedirectUri && {
|
|
309
|
+
responseRedirectURI: directPostResponseRedirectUri
|
|
310
|
+
},
|
|
311
|
+
callback
|
|
239
312
|
});
|
|
240
313
|
let qrCodeDataUri;
|
|
241
314
|
if (qrCodeOpts) {
|
|
@@ -247,140 +320,138 @@ function createAuthRequestWebappEndpoint(router, context, opts) {
|
|
|
247
320
|
qrCodeDataUri = `data:image/png;base64,${(await qrCode.draw()).toString("base64")}`;
|
|
248
321
|
}
|
|
249
322
|
const authRequestBody = {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
authStatusURI: `${(0, import_ssi_sdk.uriWithBase)(opts?.webappAuthStatusPath ?? "/webapp/auth-status", {
|
|
323
|
+
query_id: queryId,
|
|
324
|
+
correlation_id: correlationId,
|
|
325
|
+
request_uri: authRequestURI,
|
|
326
|
+
status_uri: `${(0, import_ssi_sdk.uriWithBase)(opts?.webappAuthStatusPath ?? `/backend/auth/status/${correlationId}`, {
|
|
255
327
|
baseURI: opts?.webappBaseURI
|
|
256
328
|
})}`,
|
|
257
329
|
...qrCodeDataUri && {
|
|
258
|
-
qrCodeDataUri
|
|
330
|
+
qr_uri: qrCodeDataUri
|
|
259
331
|
}
|
|
260
332
|
};
|
|
261
333
|
console.log(`Auth Request URI data to send back: ${JSON.stringify(authRequestBody)}`);
|
|
262
|
-
return response.json(authRequestBody);
|
|
334
|
+
return response.status(201).json(authRequestBody);
|
|
263
335
|
} catch (error) {
|
|
264
|
-
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500,
|
|
336
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, {
|
|
337
|
+
status: 500,
|
|
338
|
+
message: "Could not create an authorization request URI"
|
|
339
|
+
}, error);
|
|
265
340
|
}
|
|
266
341
|
});
|
|
267
342
|
}
|
|
268
|
-
__name(
|
|
269
|
-
function
|
|
343
|
+
__name(createAuthRequestUniversalOID4VPEndpoint, "createAuthRequestUniversalOID4VPEndpoint");
|
|
344
|
+
function removeAuthRequestStateUniversalOID4VPEndpoint(router, context, opts) {
|
|
270
345
|
if (opts?.enabled === false) {
|
|
271
|
-
console.log(`
|
|
346
|
+
console.log(`removeAuthStatus universal OID4VP endpoint is disabled`);
|
|
272
347
|
return;
|
|
273
348
|
}
|
|
274
|
-
const path = opts?.path ?? "/
|
|
275
|
-
router.
|
|
349
|
+
const path = opts?.path ?? "/backend/auth/requests/:correlationId";
|
|
350
|
+
router.delete(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
276
351
|
try {
|
|
277
|
-
|
|
278
|
-
const
|
|
279
|
-
const definitionId = request.body.definitionId;
|
|
280
|
-
const requestState = correlationId && definitionId ? await context.agent.siopGetAuthRequestState({
|
|
352
|
+
const correlationId = request.params.correlationId;
|
|
353
|
+
const authRequestState = await context.agent.siopGetAuthRequestState({
|
|
281
354
|
correlationId,
|
|
282
|
-
definitionId,
|
|
283
355
|
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);
|
|
356
|
+
});
|
|
357
|
+
if (!authRequestState) {
|
|
358
|
+
console.log(`No authorization request could be found for the given correlationId. correlationId: ${correlationId}`);
|
|
359
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 404, {
|
|
360
|
+
status: 404,
|
|
361
|
+
message: "No authorization request could be found"
|
|
362
|
+
});
|
|
296
363
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
364
|
+
await context.agent.siopDeleteAuthState({
|
|
365
|
+
correlationId
|
|
366
|
+
});
|
|
367
|
+
return response.status(204).json();
|
|
368
|
+
} catch (error) {
|
|
369
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, {
|
|
370
|
+
status: 500,
|
|
371
|
+
message: error.message
|
|
372
|
+
}, error);
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
__name(removeAuthRequestStateUniversalOID4VPEndpoint, "removeAuthRequestStateUniversalOID4VPEndpoint");
|
|
377
|
+
function authStatusUniversalOID4VPEndpoint(router, context, opts) {
|
|
378
|
+
if (opts?.enabled === false) {
|
|
379
|
+
console.log(`authStatus universal OID4VP endpoint is disabled`);
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
const path = opts?.path ?? "/backend/auth/status/:correlationId";
|
|
383
|
+
router.get(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
384
|
+
try {
|
|
385
|
+
console.log("Received auth-status request...");
|
|
386
|
+
const correlationId = request.params.correlationId;
|
|
387
|
+
const requestState = await context.agent.siopGetAuthRequestState({
|
|
388
|
+
correlationId,
|
|
389
|
+
errorOnNotFound: false
|
|
390
|
+
});
|
|
391
|
+
if (!requestState) {
|
|
392
|
+
console.log(`No authorization request could be found for the given correlationId. correlationId: ${correlationId}`);
|
|
393
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 404, {
|
|
394
|
+
status: 404,
|
|
395
|
+
message: "No authorization request could be found"
|
|
396
|
+
});
|
|
300
397
|
}
|
|
301
398
|
let responseState;
|
|
302
|
-
if (requestState.status === "
|
|
399
|
+
if (requestState.status === "authorization_request_created") {
|
|
303
400
|
responseState = await context.agent.siopGetAuthResponseState({
|
|
304
401
|
correlationId,
|
|
305
|
-
definitionId,
|
|
306
|
-
includeVerifiedData,
|
|
307
402
|
errorOnNotFound: false
|
|
308
403
|
});
|
|
309
404
|
}
|
|
310
405
|
const overallState = responseState ?? requestState;
|
|
311
406
|
const statusBody = {
|
|
312
407
|
status: overallState.status,
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
...
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
}),
|
|
323
|
-
verifiedData: responseState.verifiedData
|
|
324
|
-
} : {}
|
|
408
|
+
correlation_id: overallState.correlationId,
|
|
409
|
+
query_id: overallState.queryId,
|
|
410
|
+
last_updated: overallState.lastUpdated,
|
|
411
|
+
...responseState?.status === import_did_auth_siop2.AuthorizationResponseStateStatus.VERIFIED && responseState.verifiedData !== void 0 && {
|
|
412
|
+
verified_data: responseState.verifiedData
|
|
413
|
+
},
|
|
414
|
+
...overallState.error && {
|
|
415
|
+
message: overallState.error.message
|
|
416
|
+
}
|
|
325
417
|
};
|
|
326
418
|
console.debug(`Will send auth status: ${JSON.stringify(statusBody)}`);
|
|
327
419
|
if (overallState.status === "error") {
|
|
328
|
-
response.
|
|
329
|
-
return response.json(statusBody);
|
|
420
|
+
return response.status(500).json(statusBody);
|
|
330
421
|
}
|
|
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
|
-
}));
|
|
422
|
+
return response.status(200).json(statusBody);
|
|
358
423
|
} catch (error) {
|
|
359
|
-
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500,
|
|
424
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, {
|
|
425
|
+
status: 500,
|
|
426
|
+
message: error.message
|
|
427
|
+
}, error);
|
|
360
428
|
}
|
|
361
429
|
});
|
|
362
430
|
}
|
|
363
|
-
__name(
|
|
431
|
+
__name(authStatusUniversalOID4VPEndpoint, "authStatusUniversalOID4VPEndpoint");
|
|
364
432
|
function getDefinitionsEndpoint(router, context, opts) {
|
|
365
433
|
if (opts?.enabled === false) {
|
|
366
|
-
console.log(`getDefinitions
|
|
434
|
+
console.log(`getDefinitions universal OID4VP endpoint is disabled`);
|
|
367
435
|
return;
|
|
368
436
|
}
|
|
369
|
-
const path = opts?.path ?? "/
|
|
437
|
+
const path = opts?.path ?? "/backend/definitions";
|
|
370
438
|
router.get(path, (0, import_ssi_express_support2.checkAuth)(opts?.endpoint), async (request, response) => {
|
|
371
439
|
try {
|
|
372
440
|
const definitions = await context.agent.pdmGetDefinitions();
|
|
373
441
|
response.statusCode = 200;
|
|
374
442
|
return response.json(definitions);
|
|
375
443
|
} catch (error) {
|
|
376
|
-
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500,
|
|
444
|
+
return (0, import_ssi_express_support2.sendErrorResponse)(response, 500, {
|
|
445
|
+
status: 500,
|
|
446
|
+
message: error.message
|
|
447
|
+
}, error);
|
|
377
448
|
}
|
|
378
449
|
});
|
|
379
450
|
}
|
|
380
451
|
__name(getDefinitionsEndpoint, "getDefinitionsEndpoint");
|
|
381
452
|
|
|
382
453
|
// src/siopv2-rp-api-server.ts
|
|
383
|
-
var
|
|
454
|
+
var import_ssi_sdk2 = require("@sphereon/ssi-sdk.core");
|
|
384
455
|
var import_ssi_express_support3 = require("@sphereon/ssi-express-support");
|
|
385
456
|
var import_express = __toESM(require("express"), 1);
|
|
386
457
|
var import_swagger_ui_express = __toESM(require("swagger-ui-express"), 1);
|
|
@@ -417,16 +488,16 @@ var SIOPv2RPApiServer = class {
|
|
|
417
488
|
this._opts = opts;
|
|
418
489
|
this._express = args.expressSupport.express;
|
|
419
490
|
this._router = import_express.default.Router();
|
|
420
|
-
const context = (0,
|
|
491
|
+
const context = (0, import_ssi_sdk2.agentContext)(agent);
|
|
421
492
|
const features = opts?.enableFeatures ?? [
|
|
422
493
|
"rp-status",
|
|
423
494
|
"siop"
|
|
424
495
|
];
|
|
425
496
|
console.log(`SIOPv2 API enabled, with features: ${JSON.stringify(features)}}`);
|
|
426
497
|
if (features.includes("rp-status")) {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
498
|
+
createAuthRequestUniversalOID4VPEndpoint(this._router, context, opts?.endpointOpts?.webappCreateAuthRequest);
|
|
499
|
+
authStatusUniversalOID4VPEndpoint(this._router, context, opts?.endpointOpts?.webappAuthStatus);
|
|
500
|
+
removeAuthRequestStateUniversalOID4VPEndpoint(this._router, context, opts?.endpointOpts?.webappDeleteAuthRequest);
|
|
430
501
|
getDefinitionsEndpoint(this._router, context, opts?.endpointOpts?.webappGetDefinitions);
|
|
431
502
|
}
|
|
432
503
|
if (features.includes("siop")) {
|