@sphereon/ssi-sdk.vc-status-list-issuer-drivers 0.32.1-next.20 → 0.32.1-next.287
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/drivers.d.ts +12 -8
- package/dist/drivers.d.ts.map +1 -1
- package/dist/drivers.js +49 -25
- package/dist/drivers.js.map +1 -1
- package/dist/status-list-adapters.d.ts +4 -0
- package/dist/status-list-adapters.d.ts.map +1 -0
- package/dist/status-list-adapters.js +32 -0
- package/dist/status-list-adapters.js.map +1 -0
- package/dist/types.d.ts +9 -8
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/drivers.ts +69 -33
- package/src/status-list-adapters.ts +38 -0
- package/src/types.ts +13 -6
package/dist/drivers.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DataSources } from '@sphereon/ssi-sdk.agent-config';
|
|
2
2
|
import { IAddStatusListEntryArgs, IGetStatusListEntryByCredentialIdArgs, IGetStatusListEntryByIndexArgs, IStatusListEntryEntity, StatusListStore } from '@sphereon/ssi-sdk.data-store';
|
|
3
|
-
import { StatusList2021EntryCredentialStatus,
|
|
4
|
-
import {
|
|
3
|
+
import { StatusList2021EntryCredentialStatus, StatusListOAuthEntryCredentialStatus, StatusListResult } from '@sphereon/ssi-sdk.vc-status-list';
|
|
4
|
+
import { StatusListCredentialIdMode, StatusListDriverType, StatusListType, StatusListCredential } from '@sphereon/ssi-types';
|
|
5
5
|
import { DataSource } from 'typeorm';
|
|
6
6
|
import { IStatusListDriver } from './types';
|
|
7
7
|
export interface StatusListManagementOptions {
|
|
@@ -44,17 +44,20 @@ export declare class AgentDataSourceStatusListDriver implements IStatusListDrive
|
|
|
44
44
|
getOptions(): DriverOptions;
|
|
45
45
|
getType(): StatusListDriverType;
|
|
46
46
|
createStatusList(args: {
|
|
47
|
-
statusListCredential:
|
|
47
|
+
statusListCredential: StatusListCredential;
|
|
48
48
|
correlationId?: string;
|
|
49
49
|
credentialIdMode?: StatusListCredentialIdMode;
|
|
50
|
-
}): Promise<
|
|
50
|
+
}): Promise<StatusListResult>;
|
|
51
51
|
updateStatusList(args: {
|
|
52
|
-
statusListCredential:
|
|
52
|
+
statusListCredential: StatusListCredential;
|
|
53
53
|
correlationId: string;
|
|
54
|
-
|
|
54
|
+
type: StatusListType;
|
|
55
|
+
}): Promise<StatusListResult>;
|
|
55
56
|
deleteStatusList(): Promise<boolean>;
|
|
57
|
+
private isStatusList2021Entity;
|
|
58
|
+
private isOAuthStatusListEntity;
|
|
56
59
|
updateStatusListEntry(args: IAddStatusListEntryArgs): Promise<{
|
|
57
|
-
credentialStatus: StatusList2021EntryCredentialStatus;
|
|
60
|
+
credentialStatus: StatusList2021EntryCredentialStatus | StatusListOAuthEntryCredentialStatus;
|
|
58
61
|
statusListEntry: IStatusListEntryEntity;
|
|
59
62
|
}>;
|
|
60
63
|
getStatusListEntryByCredentialId(args: IGetStatusListEntryByCredentialIdArgs): Promise<IStatusListEntryEntity | undefined>;
|
|
@@ -68,7 +71,8 @@ export declare class AgentDataSourceStatusListDriver implements IStatusListDrive
|
|
|
68
71
|
}): Promise<number>;
|
|
69
72
|
getStatusList(args?: {
|
|
70
73
|
correlationId?: string;
|
|
71
|
-
}): Promise<
|
|
74
|
+
}): Promise<StatusListResult>;
|
|
75
|
+
getStatusLists(): Promise<Array<StatusListResult>>;
|
|
72
76
|
isStatusListIndexInUse(): Promise<boolean>;
|
|
73
77
|
}
|
|
74
78
|
//# sourceMappingURL=drivers.d.ts.map
|
package/dist/drivers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../src/drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EACL,uBAAuB,EACvB,qCAAqC,EACrC,8BAA8B,EAE9B,sBAAsB,
|
|
1
|
+
{"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../src/drivers.ts"],"names":[],"mappings":"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"}
|
package/dist/drivers.js
CHANGED
|
@@ -16,6 +16,8 @@ const ssi_sdk_agent_config_1 = require("@sphereon/ssi-sdk.agent-config");
|
|
|
16
16
|
const ssi_sdk_data_store_1 = require("@sphereon/ssi-sdk.data-store");
|
|
17
17
|
const ssi_sdk_vc_status_list_1 = require("@sphereon/ssi-sdk.vc-status-list");
|
|
18
18
|
const ssi_types_1 = require("@sphereon/ssi-types");
|
|
19
|
+
const status_list_adapters_1 = require("./status-list-adapters");
|
|
20
|
+
const StatusListEntities_1 = require("@sphereon/ssi-sdk.data-store/dist/entities/statusList/StatusListEntities");
|
|
19
21
|
function getOptions(args) {
|
|
20
22
|
return {
|
|
21
23
|
id: args.id,
|
|
@@ -98,22 +100,10 @@ class AgentDataSourceStatusListDriver {
|
|
|
98
100
|
}
|
|
99
101
|
const credentialIdMode = (_b = args.credentialIdMode) !== null && _b !== void 0 ? _b : ssi_types_1.StatusListCredentialIdMode.ISSUANCE;
|
|
100
102
|
const details = yield (0, ssi_sdk_vc_status_list_1.statusListCredentialToDetails)(Object.assign(Object.assign({}, args), { correlationId, driverType: this.getType() }));
|
|
101
|
-
|
|
102
|
-
where: [
|
|
103
|
-
{
|
|
104
|
-
id: details.id,
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
correlationId,
|
|
108
|
-
},
|
|
109
|
-
],
|
|
110
|
-
});
|
|
111
|
-
if (entity) {
|
|
112
|
-
throw Error(`Status list ${details.id}, correlationId ${args.correlationId} already exists`);
|
|
113
|
-
}
|
|
114
|
-
this._statusListLength = details.length;
|
|
103
|
+
// (StatusListStore does the duplicate entity check)
|
|
115
104
|
yield this.statusListStore.addStatusList(Object.assign(Object.assign({}, details), { credentialIdMode,
|
|
116
105
|
correlationId, driverType: this.getType() }));
|
|
106
|
+
this._statusListLength = details.length;
|
|
117
107
|
return details;
|
|
118
108
|
});
|
|
119
109
|
}
|
|
@@ -122,7 +112,7 @@ class AgentDataSourceStatusListDriver {
|
|
|
122
112
|
var _a;
|
|
123
113
|
const correlationId = (_a = args.correlationId) !== null && _a !== void 0 ? _a : this.options.correlationId;
|
|
124
114
|
const details = yield (0, ssi_sdk_vc_status_list_1.statusListCredentialToDetails)(Object.assign(Object.assign({}, args), { correlationId, driverType: this.getType() }));
|
|
125
|
-
const entity = yield (yield this.statusListStore.getStatusListRepo()).findOne({
|
|
115
|
+
const entity = yield (yield this.statusListStore.getStatusListRepo(args.type)).findOne({
|
|
126
116
|
where: [
|
|
127
117
|
{
|
|
128
118
|
id: details.id,
|
|
@@ -146,19 +136,43 @@ class AgentDataSourceStatusListDriver {
|
|
|
146
136
|
return Promise.resolve(true);
|
|
147
137
|
});
|
|
148
138
|
}
|
|
139
|
+
isStatusList2021Entity(statusList) {
|
|
140
|
+
return statusList instanceof StatusListEntities_1.StatusList2021Entity;
|
|
141
|
+
}
|
|
142
|
+
isOAuthStatusListEntity(statusList) {
|
|
143
|
+
return statusList instanceof StatusListEntities_1.OAuthStatusListEntity;
|
|
144
|
+
}
|
|
149
145
|
updateStatusListEntry(args) {
|
|
150
146
|
return __awaiter(this, void 0, void 0, function* () {
|
|
151
147
|
var _a;
|
|
152
|
-
const statusList =
|
|
153
|
-
const statusListEntry = yield this.statusListStore.updateStatusListEntry(Object.assign(Object.assign({}, args), {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
148
|
+
const statusList = args.statusList ? args.statusList : (0, status_list_adapters_1.statusListResultToEntity)(yield this.getStatusList());
|
|
149
|
+
const statusListEntry = yield this.statusListStore.updateStatusListEntry(Object.assign(Object.assign({}, args), { statusListId: statusList.id }));
|
|
150
|
+
if (this.isStatusList2021Entity(statusList)) {
|
|
151
|
+
return {
|
|
152
|
+
credentialStatus: {
|
|
153
|
+
id: `${statusList.id}#${statusListEntry.statusListIndex}`,
|
|
154
|
+
type: 'StatusList2021Entry',
|
|
155
|
+
statusPurpose: (_a = statusList.statusPurpose) !== null && _a !== void 0 ? _a : 'revocation',
|
|
156
|
+
statusListIndex: '' + statusListEntry.statusListIndex,
|
|
157
|
+
statusListCredential: statusList.id,
|
|
158
|
+
},
|
|
159
|
+
statusListEntry,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
else if (this.isOAuthStatusListEntity(statusList)) {
|
|
163
|
+
return {
|
|
164
|
+
credentialStatus: {
|
|
165
|
+
id: `${statusList.id}#${statusListEntry.statusListIndex}`,
|
|
166
|
+
type: 'OAuthStatusListEntry',
|
|
167
|
+
bitsPerStatus: statusList.bitsPerStatus,
|
|
168
|
+
statusListIndex: '' + statusListEntry.statusListIndex,
|
|
169
|
+
statusListCredential: statusList.id,
|
|
170
|
+
expiresAt: statusList.expiresAt,
|
|
171
|
+
},
|
|
172
|
+
statusListEntry,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
throw new Error(`Unsupported status list type: ${typeof statusList}`);
|
|
162
176
|
});
|
|
163
177
|
}
|
|
164
178
|
getStatusListEntryByCredentialId(args) {
|
|
@@ -218,6 +232,16 @@ class AgentDataSourceStatusListDriver {
|
|
|
218
232
|
.then((statusListEntity) => (0, ssi_sdk_vc_status_list_1.statusListCredentialToDetails)({ statusListCredential: statusListEntity.statusListCredential }));
|
|
219
233
|
});
|
|
220
234
|
}
|
|
235
|
+
getStatusLists() {
|
|
236
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
237
|
+
const statusLists = yield this.statusListStore.getStatusLists({});
|
|
238
|
+
return Promise.all(statusLists.map((statusListEntity) => __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
return (0, ssi_sdk_vc_status_list_1.statusListCredentialToDetails)({
|
|
240
|
+
statusListCredential: statusListEntity.statusListCredential,
|
|
241
|
+
});
|
|
242
|
+
})));
|
|
243
|
+
});
|
|
244
|
+
}
|
|
221
245
|
isStatusListIndexInUse() {
|
|
222
246
|
return Promise.resolve(false);
|
|
223
247
|
}
|
package/dist/drivers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drivers.js","sourceRoot":"","sources":["../src/drivers.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"drivers.js","sourceRoot":"","sources":["../src/drivers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { OAuthStatusListEntity, StatusList2021Entity } from '@sphereon/ssi-sdk.data-store/dist/entities/statusList/StatusListEntities';
|
|
2
|
+
import { StatusListResult } from '@sphereon/ssi-sdk.vc-status-list';
|
|
3
|
+
export declare function statusListResultToEntity(result: StatusListResult): StatusList2021Entity | OAuthStatusListEntity;
|
|
4
|
+
//# sourceMappingURL=status-list-adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-list-adapters.d.ts","sourceRoot":"","sources":["../src/status-list-adapters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,0EAA0E,CAAA;AACtI,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,qBAAqB,CAiC/G"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.statusListResultToEntity = statusListResultToEntity;
|
|
4
|
+
const ssi_types_1 = require("@sphereon/ssi-types");
|
|
5
|
+
const StatusListEntities_1 = require("@sphereon/ssi-sdk.data-store/dist/entities/statusList/StatusListEntities");
|
|
6
|
+
function statusListResultToEntity(result) {
|
|
7
|
+
const baseFields = {
|
|
8
|
+
id: result.id,
|
|
9
|
+
correlationId: result.correlationId,
|
|
10
|
+
driverType: result.driverType,
|
|
11
|
+
credentialIdMode: result.credentialIdMode,
|
|
12
|
+
length: result.length,
|
|
13
|
+
issuer: result.issuer,
|
|
14
|
+
type: result.type,
|
|
15
|
+
proofFormat: result.proofFormat,
|
|
16
|
+
statusListCredential: result.statusListCredential,
|
|
17
|
+
};
|
|
18
|
+
if (result.type === ssi_types_1.StatusListType.StatusList2021) {
|
|
19
|
+
if (!result.statusList2021) {
|
|
20
|
+
throw new Error('Missing statusList2021 details');
|
|
21
|
+
}
|
|
22
|
+
return Object.assign(new StatusListEntities_1.StatusList2021Entity(), Object.assign(Object.assign({}, baseFields), { indexingDirection: result.statusList2021.indexingDirection, statusPurpose: result.statusList2021.statusPurpose }));
|
|
23
|
+
}
|
|
24
|
+
else if (result.type === ssi_types_1.StatusListType.OAuthStatusList) {
|
|
25
|
+
if (!result.oauthStatusList) {
|
|
26
|
+
throw new Error('Missing oauthStatusList details');
|
|
27
|
+
}
|
|
28
|
+
return Object.assign(new StatusListEntities_1.OAuthStatusListEntity(), Object.assign(Object.assign({}, baseFields), { bitsPerStatus: result.oauthStatusList.bitsPerStatus, expiresAt: result.oauthStatusList.expiresAt }));
|
|
29
|
+
}
|
|
30
|
+
throw new Error(`Unsupported status list type: ${result.type}`);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=status-list-adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-list-adapters.js","sourceRoot":"","sources":["../src/status-list-adapters.ts"],"names":[],"mappings":";;AAIA,4DAiCC;AArCD,mDAAoD;AACpD,iHAAsI;AAGtI,SAAgB,wBAAwB,CAAC,MAAwB;IAC/D,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;KAClD,CAAA;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,0BAAc,CAAC,cAAc,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,yCAAoB,EAAE,kCAC1C,UAAU,KACb,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,iBAAiB,EAC1D,aAAa,EAAE,MAAM,CAAC,cAAc,CAAC,aAAa,IAClD,CAAA;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,0BAAc,CAAC,eAAe,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,0CAAqB,EAAE,kCAC3C,UAAU,KACb,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,aAAa,EACnD,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,SAAS,IAC3C,CAAA;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;AACjE,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IIdentifierResolution } from '@sphereon/ssi-sdk-ext.identifier-resolution';
|
|
2
2
|
import { IAddStatusListEntryArgs, IGetStatusListEntryByCredentialIdArgs, IGetStatusListEntryByIndexArgs, IStatusListEntryEntity, StatusListStore } from '@sphereon/ssi-sdk.data-store';
|
|
3
|
-
import { IStatusListPlugin, StatusList2021EntryCredentialStatus,
|
|
4
|
-
import {
|
|
3
|
+
import { IStatusListPlugin, StatusList2021EntryCredentialStatus, StatusListOAuthEntryCredentialStatus, StatusListResult } from '@sphereon/ssi-sdk.vc-status-list';
|
|
4
|
+
import { StatusListCredential, StatusListDriverType } from '@sphereon/ssi-types';
|
|
5
5
|
import { IAgentContext, ICredentialIssuer, ICredentialPlugin, ICredentialVerifier, IDataStoreORM, IDIDManager, IKeyManager, IResolver } from '@veramo/core';
|
|
6
6
|
import { DriverOptions } from './drivers';
|
|
7
7
|
export type IRequiredPlugins = IDataStoreORM & IDIDManager & IKeyManager & IIdentifierResolution & ICredentialIssuer & ICredentialVerifier & ICredentialPlugin & IStatusListPlugin & IResolver;
|
|
@@ -14,21 +14,22 @@ export interface IStatusListDriver {
|
|
|
14
14
|
correlationId?: string;
|
|
15
15
|
}): Promise<number>;
|
|
16
16
|
createStatusList(args: {
|
|
17
|
-
statusListCredential:
|
|
17
|
+
statusListCredential: StatusListCredential;
|
|
18
18
|
correlationId?: string;
|
|
19
|
-
}): Promise<
|
|
19
|
+
}): Promise<StatusListResult>;
|
|
20
20
|
getStatusList(args?: {
|
|
21
21
|
correlationId?: string;
|
|
22
|
-
}): Promise<
|
|
22
|
+
}): Promise<StatusListResult>;
|
|
23
|
+
getStatusLists(): Promise<Array<StatusListResult>>;
|
|
23
24
|
updateStatusListEntry(args: IAddStatusListEntryArgs): Promise<{
|
|
24
|
-
credentialStatus: StatusList2021EntryCredentialStatus;
|
|
25
|
+
credentialStatus: StatusList2021EntryCredentialStatus | StatusListOAuthEntryCredentialStatus;
|
|
25
26
|
statusListEntry: IStatusListEntryEntity;
|
|
26
27
|
}>;
|
|
27
28
|
getStatusListEntryByCredentialId(args: IGetStatusListEntryByCredentialIdArgs): Promise<IStatusListEntryEntity | undefined>;
|
|
28
29
|
getStatusListEntryByIndex(args: IGetStatusListEntryByIndexArgs): Promise<IStatusListEntryEntity | undefined>;
|
|
29
30
|
updateStatusList(args: {
|
|
30
|
-
statusListCredential:
|
|
31
|
-
}): Promise<
|
|
31
|
+
statusListCredential: StatusListCredential;
|
|
32
|
+
}): Promise<StatusListResult>;
|
|
32
33
|
deleteStatusList(): Promise<boolean>;
|
|
33
34
|
getRandomNewStatusListIndex(args?: {
|
|
34
35
|
correlationId?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EACL,uBAAuB,EACvB,qCAAqC,EACrC,8BAA8B,EAC9B,sBAAsB,EACtB,eAAe,EAChB,MAAM,8BAA8B,CAAA;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EACL,uBAAuB,EACvB,qCAAqC,EACrC,8BAA8B,EAC9B,sBAAsB,EACtB,eAAe,EAChB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,iBAAiB,EACjB,mCAAmC,EACnC,oCAAoC,EACpC,gBAAgB,EACjB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACV,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAC1C,WAAW,GACX,WAAW,GACX,qBAAqB,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,SAAS,CAAA;AACX,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAA;AAE9D,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAA;IAEhC,OAAO,IAAI,oBAAoB,CAAA;IAE/B,UAAU,IAAI,aAAa,CAAA;IAE3B,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvE,gBAAgB,CAAC,IAAI,EAAE;QAAE,oBAAoB,EAAE,oBAAoB,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAEzH,aAAa,CAAC,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE3E,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAElD,qBAAqB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC;QAC5D,gBAAgB,EAAE,mCAAmC,GAAG,oCAAoC,CAAA;QAC5F,eAAe,EAAE,sBAAsB,CAAA;KACxC,CAAC,CAAA;IAEF,gCAAgC,CAAC,IAAI,EAAE,qCAAqC,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAA;IAE1H,yBAAyB,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAA;IAE5G,gBAAgB,CAAC,IAAI,EAAE;QAAE,oBAAoB,EAAE,oBAAoB,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAEjG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAEpC,2BAA2B,CAAC,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAE/E,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAC3C"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk.vc-status-list-issuer-drivers",
|
|
3
3
|
"description": "Sphereon SSI-SDK plugin for Status List management, like StatusList2021. Issuer drivers module",
|
|
4
|
-
"version": "0.32.1-next.
|
|
4
|
+
"version": "0.32.1-next.287+5f85ee8f",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -10,18 +10,18 @@
|
|
|
10
10
|
"build:clean": "tsc --build --clean && tsc --build"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@sphereon/ssi-express-support": "0.32.1-next.
|
|
14
|
-
"@sphereon/ssi-sdk-ext.did-utils": "0.
|
|
15
|
-
"@sphereon/ssi-sdk-ext.identifier-resolution": "0.
|
|
16
|
-
"@sphereon/ssi-sdk.agent-config": "0.32.1-next.
|
|
17
|
-
"@sphereon/ssi-sdk.core": "0.32.1-next.
|
|
18
|
-
"@sphereon/ssi-sdk.data-store": "0.32.1-next.
|
|
19
|
-
"@sphereon/ssi-sdk.vc-status-list": "0.32.1-next.
|
|
20
|
-
"@sphereon/ssi-types": "0.32.1-next.
|
|
13
|
+
"@sphereon/ssi-express-support": "0.32.1-next.287+5f85ee8f",
|
|
14
|
+
"@sphereon/ssi-sdk-ext.did-utils": "0.28.0",
|
|
15
|
+
"@sphereon/ssi-sdk-ext.identifier-resolution": "0.28.0",
|
|
16
|
+
"@sphereon/ssi-sdk.agent-config": "0.32.1-next.287+5f85ee8f",
|
|
17
|
+
"@sphereon/ssi-sdk.core": "0.32.1-next.287+5f85ee8f",
|
|
18
|
+
"@sphereon/ssi-sdk.data-store": "0.32.1-next.287+5f85ee8f",
|
|
19
|
+
"@sphereon/ssi-sdk.vc-status-list": "0.32.1-next.287+5f85ee8f",
|
|
20
|
+
"@sphereon/ssi-types": "0.32.1-next.287+5f85ee8f",
|
|
21
21
|
"@sphereon/vc-status-list": "7.0.0-next.0",
|
|
22
22
|
"@veramo/core": "4.2.0",
|
|
23
23
|
"debug": "^4.3.5",
|
|
24
|
-
"typeorm": "^0.3.
|
|
24
|
+
"typeorm": "^0.3.21",
|
|
25
25
|
"uint8arrays": "^3.1.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"StatusList2021"
|
|
50
50
|
],
|
|
51
51
|
"nx": {},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "5f85ee8fef1e0fce3d20d150f187b00c7c70f093"
|
|
53
53
|
}
|
package/src/drivers.ts
CHANGED
|
@@ -5,12 +5,20 @@ import {
|
|
|
5
5
|
IGetStatusListEntryByIndexArgs,
|
|
6
6
|
IStatusListEntity,
|
|
7
7
|
IStatusListEntryEntity,
|
|
8
|
+
StatusListEntity,
|
|
8
9
|
StatusListStore,
|
|
9
10
|
} from '@sphereon/ssi-sdk.data-store'
|
|
10
|
-
import {
|
|
11
|
-
|
|
11
|
+
import {
|
|
12
|
+
StatusList2021EntryCredentialStatus,
|
|
13
|
+
statusListCredentialToDetails,
|
|
14
|
+
StatusListOAuthEntryCredentialStatus,
|
|
15
|
+
StatusListResult,
|
|
16
|
+
} from '@sphereon/ssi-sdk.vc-status-list'
|
|
17
|
+
import { StatusListCredentialIdMode, StatusListDriverType, StatusListType, StatusListCredential } from '@sphereon/ssi-types'
|
|
12
18
|
import { DataSource } from 'typeorm'
|
|
13
19
|
import { IStatusListDriver } from './types'
|
|
20
|
+
import { statusListResultToEntity } from './status-list-adapters'
|
|
21
|
+
import { OAuthStatusListEntity, StatusList2021Entity } from '@sphereon/ssi-sdk.data-store/dist/entities/statusList/StatusListEntities'
|
|
14
22
|
|
|
15
23
|
export interface StatusListManagementOptions {
|
|
16
24
|
id?: string
|
|
@@ -121,46 +129,37 @@ export class AgentDataSourceStatusListDriver implements IStatusListDriver {
|
|
|
121
129
|
}
|
|
122
130
|
|
|
123
131
|
async createStatusList(args: {
|
|
124
|
-
statusListCredential:
|
|
132
|
+
statusListCredential: StatusListCredential
|
|
125
133
|
correlationId?: string
|
|
126
134
|
credentialIdMode?: StatusListCredentialIdMode
|
|
127
|
-
}): Promise<
|
|
135
|
+
}): Promise<StatusListResult> {
|
|
128
136
|
const correlationId = args.correlationId ?? this.options.correlationId
|
|
129
137
|
if (!correlationId) {
|
|
130
138
|
throw Error('Either a correlationId needs to be set as an option, or it needs to be provided when creating a status list. None found')
|
|
131
139
|
}
|
|
132
140
|
const credentialIdMode = args.credentialIdMode ?? StatusListCredentialIdMode.ISSUANCE
|
|
133
141
|
const details = await statusListCredentialToDetails({ ...args, correlationId, driverType: this.getType() })
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
).findOne({
|
|
137
|
-
where: [
|
|
138
|
-
{
|
|
139
|
-
id: details.id,
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
correlationId,
|
|
143
|
-
},
|
|
144
|
-
],
|
|
145
|
-
})
|
|
146
|
-
if (entity) {
|
|
147
|
-
throw Error(`Status list ${details.id}, correlationId ${args.correlationId} already exists`)
|
|
148
|
-
}
|
|
149
|
-
this._statusListLength = details.length
|
|
142
|
+
|
|
143
|
+
// (StatusListStore does the duplicate entity check)
|
|
150
144
|
await this.statusListStore.addStatusList({
|
|
151
145
|
...details,
|
|
152
146
|
credentialIdMode,
|
|
153
147
|
correlationId,
|
|
154
148
|
driverType: this.getType(),
|
|
155
149
|
})
|
|
150
|
+
this._statusListLength = details.length
|
|
156
151
|
return details
|
|
157
152
|
}
|
|
158
153
|
|
|
159
|
-
async updateStatusList(args: {
|
|
154
|
+
async updateStatusList(args: {
|
|
155
|
+
statusListCredential: StatusListCredential
|
|
156
|
+
correlationId: string
|
|
157
|
+
type: StatusListType
|
|
158
|
+
}): Promise<StatusListResult> {
|
|
160
159
|
const correlationId = args.correlationId ?? this.options.correlationId
|
|
161
160
|
const details = await statusListCredentialToDetails({ ...args, correlationId, driverType: this.getType() })
|
|
162
161
|
const entity = await (
|
|
163
|
-
await this.statusListStore.getStatusListRepo()
|
|
162
|
+
await this.statusListStore.getStatusListRepo(args.type)
|
|
164
163
|
).findOne({
|
|
165
164
|
where: [
|
|
166
165
|
{
|
|
@@ -189,21 +188,47 @@ export class AgentDataSourceStatusListDriver implements IStatusListDriver {
|
|
|
189
188
|
return Promise.resolve(true)
|
|
190
189
|
}
|
|
191
190
|
|
|
191
|
+
private isStatusList2021Entity(statusList: StatusListEntity): statusList is StatusList2021Entity {
|
|
192
|
+
return statusList instanceof StatusList2021Entity
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
private isOAuthStatusListEntity(statusList: StatusListEntity): statusList is OAuthStatusListEntity {
|
|
196
|
+
return statusList instanceof OAuthStatusListEntity
|
|
197
|
+
}
|
|
198
|
+
|
|
192
199
|
async updateStatusListEntry(args: IAddStatusListEntryArgs): Promise<{
|
|
193
|
-
credentialStatus: StatusList2021EntryCredentialStatus
|
|
200
|
+
credentialStatus: StatusList2021EntryCredentialStatus | StatusListOAuthEntryCredentialStatus
|
|
194
201
|
statusListEntry: IStatusListEntryEntity
|
|
195
202
|
}> {
|
|
196
|
-
const statusList =
|
|
203
|
+
const statusList: StatusListEntity = args.statusList ? args.statusList : statusListResultToEntity(await this.getStatusList())
|
|
204
|
+
const statusListEntry = await this.statusListStore.updateStatusListEntry({ ...args, statusListId: statusList.id })
|
|
197
205
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
206
|
+
if (this.isStatusList2021Entity(statusList)) {
|
|
207
|
+
return {
|
|
208
|
+
credentialStatus: {
|
|
209
|
+
id: `${statusList.id}#${statusListEntry.statusListIndex}`,
|
|
210
|
+
type: 'StatusList2021Entry',
|
|
211
|
+
statusPurpose: statusList.statusPurpose ?? 'revocation',
|
|
212
|
+
statusListIndex: '' + statusListEntry.statusListIndex,
|
|
213
|
+
statusListCredential: statusList.id,
|
|
214
|
+
},
|
|
215
|
+
statusListEntry,
|
|
216
|
+
}
|
|
217
|
+
} else if (this.isOAuthStatusListEntity(statusList)) {
|
|
218
|
+
return {
|
|
219
|
+
credentialStatus: {
|
|
220
|
+
id: `${statusList.id}#${statusListEntry.statusListIndex}`,
|
|
221
|
+
type: 'OAuthStatusListEntry',
|
|
222
|
+
bitsPerStatus: statusList.bitsPerStatus,
|
|
223
|
+
statusListIndex: '' + statusListEntry.statusListIndex,
|
|
224
|
+
statusListCredential: statusList.id,
|
|
225
|
+
expiresAt: statusList.expiresAt,
|
|
226
|
+
},
|
|
227
|
+
statusListEntry,
|
|
228
|
+
}
|
|
205
229
|
}
|
|
206
|
-
|
|
230
|
+
|
|
231
|
+
throw new Error(`Unsupported status list type: ${typeof statusList}`)
|
|
207
232
|
}
|
|
208
233
|
|
|
209
234
|
async getStatusListEntryByCredentialId(args: IGetStatusListEntryByCredentialIdArgs): Promise<IStatusListEntryEntity | undefined> {
|
|
@@ -251,7 +276,7 @@ export class AgentDataSourceStatusListDriver implements IStatusListDriver {
|
|
|
251
276
|
return this._statusListLength!
|
|
252
277
|
}
|
|
253
278
|
|
|
254
|
-
async getStatusList(args?: { correlationId?: string }): Promise<
|
|
279
|
+
async getStatusList(args?: { correlationId?: string }): Promise<StatusListResult> {
|
|
255
280
|
const id = this.options.id
|
|
256
281
|
const correlationId = args?.correlationId ?? this.options.correlationId
|
|
257
282
|
return await this.statusListStore
|
|
@@ -259,6 +284,17 @@ export class AgentDataSourceStatusListDriver implements IStatusListDriver {
|
|
|
259
284
|
.then((statusListEntity: IStatusListEntity) => statusListCredentialToDetails({ statusListCredential: statusListEntity.statusListCredential! }))
|
|
260
285
|
}
|
|
261
286
|
|
|
287
|
+
async getStatusLists(): Promise<Array<StatusListResult>> {
|
|
288
|
+
const statusLists = await this.statusListStore.getStatusLists({})
|
|
289
|
+
return Promise.all(
|
|
290
|
+
statusLists.map(async (statusListEntity) => {
|
|
291
|
+
return statusListCredentialToDetails({
|
|
292
|
+
statusListCredential: statusListEntity.statusListCredential!,
|
|
293
|
+
})
|
|
294
|
+
}),
|
|
295
|
+
)
|
|
296
|
+
}
|
|
297
|
+
|
|
262
298
|
isStatusListIndexInUse(): Promise<boolean> {
|
|
263
299
|
return Promise.resolve(false)
|
|
264
300
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { StatusListType } from '@sphereon/ssi-types'
|
|
2
|
+
import { OAuthStatusListEntity, StatusList2021Entity } from '@sphereon/ssi-sdk.data-store/dist/entities/statusList/StatusListEntities'
|
|
3
|
+
import { StatusListResult } from '@sphereon/ssi-sdk.vc-status-list'
|
|
4
|
+
|
|
5
|
+
export function statusListResultToEntity(result: StatusListResult): StatusList2021Entity | OAuthStatusListEntity {
|
|
6
|
+
const baseFields = {
|
|
7
|
+
id: result.id,
|
|
8
|
+
correlationId: result.correlationId,
|
|
9
|
+
driverType: result.driverType,
|
|
10
|
+
credentialIdMode: result.credentialIdMode,
|
|
11
|
+
length: result.length,
|
|
12
|
+
issuer: result.issuer,
|
|
13
|
+
type: result.type,
|
|
14
|
+
proofFormat: result.proofFormat,
|
|
15
|
+
statusListCredential: result.statusListCredential,
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (result.type === StatusListType.StatusList2021) {
|
|
19
|
+
if (!result.statusList2021) {
|
|
20
|
+
throw new Error('Missing statusList2021 details')
|
|
21
|
+
}
|
|
22
|
+
return Object.assign(new StatusList2021Entity(), {
|
|
23
|
+
...baseFields,
|
|
24
|
+
indexingDirection: result.statusList2021.indexingDirection,
|
|
25
|
+
statusPurpose: result.statusList2021.statusPurpose,
|
|
26
|
+
})
|
|
27
|
+
} else if (result.type === StatusListType.OAuthStatusList) {
|
|
28
|
+
if (!result.oauthStatusList) {
|
|
29
|
+
throw new Error('Missing oauthStatusList details')
|
|
30
|
+
}
|
|
31
|
+
return Object.assign(new OAuthStatusListEntity(), {
|
|
32
|
+
...baseFields,
|
|
33
|
+
bitsPerStatus: result.oauthStatusList.bitsPerStatus,
|
|
34
|
+
expiresAt: result.oauthStatusList.expiresAt,
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
throw new Error(`Unsupported status list type: ${result.type}`)
|
|
38
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -6,8 +6,13 @@ import {
|
|
|
6
6
|
IStatusListEntryEntity,
|
|
7
7
|
StatusListStore,
|
|
8
8
|
} from '@sphereon/ssi-sdk.data-store'
|
|
9
|
-
import {
|
|
10
|
-
|
|
9
|
+
import {
|
|
10
|
+
IStatusListPlugin,
|
|
11
|
+
StatusList2021EntryCredentialStatus,
|
|
12
|
+
StatusListOAuthEntryCredentialStatus,
|
|
13
|
+
StatusListResult,
|
|
14
|
+
} from '@sphereon/ssi-sdk.vc-status-list'
|
|
15
|
+
import { StatusListCredential, StatusListDriverType } from '@sphereon/ssi-types'
|
|
11
16
|
import {
|
|
12
17
|
IAgentContext,
|
|
13
18
|
ICredentialIssuer,
|
|
@@ -40,12 +45,14 @@ export interface IStatusListDriver {
|
|
|
40
45
|
|
|
41
46
|
getStatusListLength(args?: { correlationId?: string }): Promise<number>
|
|
42
47
|
|
|
43
|
-
createStatusList(args: { statusListCredential:
|
|
48
|
+
createStatusList(args: { statusListCredential: StatusListCredential; correlationId?: string }): Promise<StatusListResult>
|
|
49
|
+
|
|
50
|
+
getStatusList(args?: { correlationId?: string }): Promise<StatusListResult>
|
|
44
51
|
|
|
45
|
-
|
|
52
|
+
getStatusLists(): Promise<Array<StatusListResult>>
|
|
46
53
|
|
|
47
54
|
updateStatusListEntry(args: IAddStatusListEntryArgs): Promise<{
|
|
48
|
-
credentialStatus: StatusList2021EntryCredentialStatus
|
|
55
|
+
credentialStatus: StatusList2021EntryCredentialStatus | StatusListOAuthEntryCredentialStatus
|
|
49
56
|
statusListEntry: IStatusListEntryEntity
|
|
50
57
|
}>
|
|
51
58
|
|
|
@@ -53,7 +60,7 @@ export interface IStatusListDriver {
|
|
|
53
60
|
|
|
54
61
|
getStatusListEntryByIndex(args: IGetStatusListEntryByIndexArgs): Promise<IStatusListEntryEntity | undefined>
|
|
55
62
|
|
|
56
|
-
updateStatusList(args: { statusListCredential:
|
|
63
|
+
updateStatusList(args: { statusListCredential: StatusListCredential }): Promise<StatusListResult>
|
|
57
64
|
|
|
58
65
|
deleteStatusList(): Promise<boolean>
|
|
59
66
|
|