@sphereon/ssi-sdk-ext.key-manager 0.19.0 → 0.19.1-next.48
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/agent/SphereonKeyManager.d.ts +5 -2
- package/dist/agent/SphereonKeyManager.d.ts.map +1 -1
- package/dist/agent/SphereonKeyManager.js +13 -6
- package/dist/agent/SphereonKeyManager.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ssi-sdk-ext.key-manager.d.ts +6 -2
- package/dist/types/ISphereonKeyManager.d.ts +1 -0
- package/dist/types/ISphereonKeyManager.d.ts.map +1 -1
- package/package.json +4 -4
- package/plugin.schema.json +51 -0
- package/src/__tests__/sphereon-key-manager.test.ts +20 -1
- package/src/agent/SphereonKeyManager.ts +19 -8
- package/src/index.ts +1 -1
- package/src/types/ISphereonKeyManager.ts +2 -0
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { KeyManager as VeramoKeyManager, AbstractKeyManagementSystem, AbstractKeyStore } from '@veramo/key-manager';
|
|
2
|
+
import { ManagedKeyInfo } from '@veramo/core';
|
|
2
3
|
import { ISphereonKeyManager, ISphereonKeyManagerSignArgs, ISphereonKeyManagerVerifyArgs } from '../types/ISphereonKeyManager';
|
|
4
|
+
export declare const sphereonKeyManagerMethods: Array<string>;
|
|
3
5
|
export declare class SphereonKeyManager extends VeramoKeyManager {
|
|
4
6
|
private localStore;
|
|
5
|
-
private readonly
|
|
7
|
+
private readonly availableKMSes;
|
|
6
8
|
readonly localMethods: ISphereonKeyManager;
|
|
7
9
|
constructor(options: {
|
|
8
10
|
store: AbstractKeyStore;
|
|
9
11
|
kms: Record<string, AbstractKeyManagementSystem>;
|
|
10
12
|
});
|
|
11
|
-
private
|
|
13
|
+
private getAvailableKms;
|
|
12
14
|
keyManagerSign(args: ISphereonKeyManagerSignArgs): Promise<string>;
|
|
13
15
|
keyManagerVerify(args: ISphereonKeyManagerVerifyArgs): Promise<boolean>;
|
|
16
|
+
keyManagerListKeys(): Promise<ManagedKeyInfo[]>;
|
|
14
17
|
}
|
|
15
18
|
//# sourceMappingURL=SphereonKeyManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SphereonKeyManager.d.ts","sourceRoot":"","sources":["../../src/agent/SphereonKeyManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"SphereonKeyManager.d.ts","sourceRoot":"","sources":["../../src/agent/SphereonKeyManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEnH,OAAO,EAAO,cAAc,EAAW,MAAM,cAAc,CAAA;AAE3D,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,8BAA8B,CAAA;AAErC,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,MAAM,CAAoG,CAAA;AAExJ,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAA;gBAE9B,OAAO,EAAE;QAAE,KAAK,EAAE,gBAAgB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;KAAE;IAUlG,OAAO,CAAC,eAAe;IASjB,cAAc,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAUlE,gBAAgB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IASvE,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;CAGtD"}
|
|
@@ -9,20 +9,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.SphereonKeyManager = void 0;
|
|
12
|
+
exports.SphereonKeyManager = exports.sphereonKeyManagerMethods = void 0;
|
|
13
13
|
const key_manager_1 = require("@veramo/key-manager");
|
|
14
14
|
const ssi_sdk_ext_kms_local_1 = require("@sphereon/ssi-sdk-ext.kms-local");
|
|
15
|
+
exports.sphereonKeyManagerMethods = ['keyManagerCreate', 'keyManagerImport', 'keyManagerSign', 'keyManagerVerify', 'keyManagerListKeys'];
|
|
15
16
|
class SphereonKeyManager extends key_manager_1.KeyManager {
|
|
16
17
|
constructor(options) {
|
|
17
18
|
super({ store: options.store, kms: options.kms });
|
|
18
19
|
this.localStore = options.store;
|
|
19
|
-
this.
|
|
20
|
+
this.availableKMSes = options.kms;
|
|
20
21
|
const methods = this.methods;
|
|
21
22
|
methods.keyManagerVerify = this.keyManagerVerify.bind(this);
|
|
23
|
+
methods.keyManagerListKeys = this.keyManagerListKeys.bind(this);
|
|
22
24
|
this.localMethods = methods;
|
|
23
25
|
}
|
|
24
|
-
|
|
25
|
-
const kms = this.
|
|
26
|
+
getAvailableKms(name) {
|
|
27
|
+
const kms = this.availableKMSes[name];
|
|
26
28
|
if (!kms) {
|
|
27
29
|
throw Error(`invalid_argument: This agent has no registered KeyManagementSystem with name='${name}'`);
|
|
28
30
|
}
|
|
@@ -35,7 +37,7 @@ class SphereonKeyManager extends key_manager_1.KeyManager {
|
|
|
35
37
|
});
|
|
36
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37
39
|
const keyInfo = (yield this.localStore.get({ kid: args.keyRef }));
|
|
38
|
-
const kms = this.
|
|
40
|
+
const kms = this.getAvailableKms(keyInfo.kms);
|
|
39
41
|
if (keyInfo.type === ssi_sdk_ext_kms_local_1.KeyType.Bls12381G2) {
|
|
40
42
|
return yield kms.sign({ keyRef: keyInfo, data: Uint8Array.from(Buffer.from(args.data)) });
|
|
41
43
|
}
|
|
@@ -45,7 +47,7 @@ class SphereonKeyManager extends key_manager_1.KeyManager {
|
|
|
45
47
|
}
|
|
46
48
|
keyManagerVerify(args) {
|
|
47
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
const kms = this.
|
|
50
|
+
const kms = this.getAvailableKms(args.kms);
|
|
49
51
|
if (('verify' in kms && typeof kms.verify === 'function') || kms instanceof ssi_sdk_ext_kms_local_1.SphereonKeyManagementSystem) {
|
|
50
52
|
// @ts-ignore
|
|
51
53
|
return yield kms.verify(args);
|
|
@@ -53,6 +55,11 @@ class SphereonKeyManager extends key_manager_1.KeyManager {
|
|
|
53
55
|
throw Error(`KMS ${kms} does not support verification`);
|
|
54
56
|
});
|
|
55
57
|
}
|
|
58
|
+
keyManagerListKeys() {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
return this.localStore.list({}); // FIXME there are no args it seems
|
|
61
|
+
});
|
|
62
|
+
}
|
|
56
63
|
}
|
|
57
64
|
exports.SphereonKeyManager = SphereonKeyManager;
|
|
58
65
|
//# sourceMappingURL=SphereonKeyManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SphereonKeyManager.js","sourceRoot":"","sources":["../../src/agent/SphereonKeyManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmH;AAGnH,2EAAsF;
|
|
1
|
+
{"version":3,"file":"SphereonKeyManager.js","sourceRoot":"","sources":["../../src/agent/SphereonKeyManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmH;AAGnH,2EAAsF;AAOzE,QAAA,yBAAyB,GAAkB,CAAC,kBAAkB,EAAC,kBAAkB,EAAC,gBAAgB,EAAC,kBAAkB,EAAC,oBAAoB,CAAC,CAAA;AAExJ,MAAa,kBAAmB,SAAQ,wBAAgB;IAKtD,YAAY,OAAsF;QAChG,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAA;QAC/B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,IAAI,CAAC,YAAY,GAAkC,OAAQ,CAAA;IAC7D,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,KAAK,CAAC,iFAAiF,IAAI,GAAG,CAAC,CAAA;QACvG,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,8EAA8E;IACxE,cAAc,CAAC,IAAiC;;;;;YACpD,MAAM,OAAO,GAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAS,CAAA;YAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC7C,IAAI,OAAO,CAAC,IAAI,KAAe,+BAAO,CAAC,UAAU,EAAE,CAAC;gBAClD,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;YAC3F,CAAC;YACD,aAAa;YACb,OAAO,MAAM,OAAM,cAAc,YAAC,IAAI,CAAC,CAAA;QACzC,CAAC;KAAA;IAEK,gBAAgB,CAAC,IAAmC;;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC1C,IAAI,CAAC,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,GAAG,YAAY,mDAA2B,EAAE,CAAC;gBACxG,aAAa;gBACb,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC/B,CAAC;YACD,MAAM,KAAK,CAAC,OAAO,GAAG,gCAAgC,CAAC,CAAA;QACzD,CAAC;KAAA;IAEK,kBAAkB;;YACtB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,mCAAmC;QACrE,CAAC;KAAA;CACF;AA9CD,gDA8CC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const schema: any;
|
|
2
2
|
export { schema };
|
|
3
|
-
export { SphereonKeyManager } from './agent/SphereonKeyManager';
|
|
3
|
+
export { SphereonKeyManager, sphereonKeyManagerMethods } from './agent/SphereonKeyManager';
|
|
4
4
|
export * from './types/ISphereonKeyManager';
|
|
5
5
|
export * from '@veramo/key-manager';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM,KAAmC,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM,KAAmC,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC1F,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -14,11 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.SphereonKeyManager = exports.schema = void 0;
|
|
17
|
+
exports.sphereonKeyManagerMethods = exports.SphereonKeyManager = exports.schema = void 0;
|
|
18
18
|
const schema = require('../plugin.schema.json');
|
|
19
19
|
exports.schema = schema;
|
|
20
20
|
var SphereonKeyManager_1 = require("./agent/SphereonKeyManager");
|
|
21
21
|
Object.defineProperty(exports, "SphereonKeyManager", { enumerable: true, get: function () { return SphereonKeyManager_1.SphereonKeyManager; } });
|
|
22
|
+
Object.defineProperty(exports, "sphereonKeyManagerMethods", { enumerable: true, get: function () { return SphereonKeyManager_1.sphereonKeyManagerMethods; } });
|
|
22
23
|
__exportStar(require("./types/ISphereonKeyManager"), exports);
|
|
23
24
|
__exportStar(require("@veramo/key-manager"), exports);
|
|
24
25
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;AACtC,wBAAM;AACf,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;AACtC,wBAAM;AACf,iEAA0F;AAAjF,wHAAA,kBAAkB,OAAA;AAAE,+HAAA,yBAAyB,OAAA;AACtD,8DAA2C;AAC3C,sDAAmC"}
|
|
@@ -61,6 +61,7 @@ export declare interface ISphereonKeyManager extends IKeyManager, IPluginMethodM
|
|
|
61
61
|
* @param args
|
|
62
62
|
*/
|
|
63
63
|
keyManagerVerify(args: ISphereonKeyManagerVerifyArgs): Promise<boolean>;
|
|
64
|
+
keyManagerListKeys(): Promise<Array<ManagedKeyInfo>>;
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
/**
|
|
@@ -91,17 +92,20 @@ export declare const schema: any;
|
|
|
91
92
|
|
|
92
93
|
export declare class SphereonKeyManager extends KeyManager {
|
|
93
94
|
private localStore;
|
|
94
|
-
private readonly
|
|
95
|
+
private readonly availableKMSes;
|
|
95
96
|
readonly localMethods: ISphereonKeyManager;
|
|
96
97
|
constructor(options: {
|
|
97
98
|
store: AbstractKeyStore;
|
|
98
99
|
kms: Record<string, AbstractKeyManagementSystem>;
|
|
99
100
|
});
|
|
100
|
-
private
|
|
101
|
+
private getAvailableKms;
|
|
101
102
|
keyManagerSign(args: ISphereonKeyManagerSignArgs): Promise<string>;
|
|
102
103
|
keyManagerVerify(args: ISphereonKeyManagerVerifyArgs): Promise<boolean>;
|
|
104
|
+
keyManagerListKeys(): Promise<ManagedKeyInfo[]>;
|
|
103
105
|
}
|
|
104
106
|
|
|
107
|
+
export declare const sphereonKeyManagerMethods: Array<string>;
|
|
108
|
+
|
|
105
109
|
|
|
106
110
|
export * from "@veramo/key-manager";
|
|
107
111
|
|
|
@@ -14,6 +14,7 @@ export interface ISphereonKeyManager extends IKeyManager, IPluginMethodMap {
|
|
|
14
14
|
* @param args
|
|
15
15
|
*/
|
|
16
16
|
keyManagerVerify(args: ISphereonKeyManagerVerifyArgs): Promise<boolean>;
|
|
17
|
+
keyManagerListKeys(): Promise<Array<ManagedKeyInfo>>;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
20
|
* Input arguments for {@link ISphereonKeyManager.keyManagerCreate | keyManagerCreate}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ISphereonKeyManager.d.ts","sourceRoot":"","sources":["../../src/types/ISphereonKeyManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9H,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnE,MAAM,WAAW,mBAAoB,SAAQ,WAAW,EAAE,gBAAgB;IACxE,gBAAgB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAElE,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAEhE,cAAc,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAElE;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"ISphereonKeyManager.d.ts","sourceRoot":"","sources":["../../src/types/ISphereonKeyManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9H,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnE,MAAM,WAAW,mBAAoB,SAAQ,WAAW,EAAE,gBAAgB;IACxE,gBAAgB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAElE,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAEhE,cAAc,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAElE;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEvE,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;CACrD;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAA;IAEd;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;GAGG;AAEH,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk-ext.key-manager",
|
|
3
3
|
"description": "Sphereon Key Manager plugin with BLS support",
|
|
4
|
-
"version": "0.19.
|
|
4
|
+
"version": "0.19.1-next.48+0cb2a95",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
"generate-plugin-schema": "sphereon dev generate-plugin-schema"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@sphereon/ssi-sdk-ext.kms-local": "0.19.
|
|
18
|
+
"@sphereon/ssi-sdk-ext.kms-local": "0.19.1-next.48+0cb2a95",
|
|
19
19
|
"@veramo/core": "4.2.0",
|
|
20
20
|
"@veramo/key-manager": "4.2.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@mattrglobal/bbs-signatures": "^1.3.1",
|
|
24
|
-
"@sphereon/ssi-sdk-ext.key-utils": "0.19.
|
|
24
|
+
"@sphereon/ssi-sdk-ext.key-utils": "0.19.1-next.48+0cb2a95",
|
|
25
25
|
"@sphereon/ssi-sdk.dev": "^0.23.0"
|
|
26
26
|
},
|
|
27
27
|
"resolutions": {
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"kms",
|
|
47
47
|
"Veramo"
|
|
48
48
|
],
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "0cb2a95114ee6a68d5ce042ec4a031214c9386b7"
|
|
50
50
|
}
|
package/plugin.schema.json
CHANGED
|
@@ -132,6 +132,45 @@
|
|
|
132
132
|
},
|
|
133
133
|
"description": "Represents an object type where a subset of keys are required and everything else is optional."
|
|
134
134
|
},
|
|
135
|
+
"ManagedKeyInfo": {
|
|
136
|
+
"type": "object",
|
|
137
|
+
"properties": {
|
|
138
|
+
"kid": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"description": "Key ID"
|
|
141
|
+
},
|
|
142
|
+
"kms": {
|
|
143
|
+
"type": "string",
|
|
144
|
+
"description": "Key Management System"
|
|
145
|
+
},
|
|
146
|
+
"type": {
|
|
147
|
+
"$ref": "#/components/schemas/TKeyType",
|
|
148
|
+
"description": "Key type"
|
|
149
|
+
},
|
|
150
|
+
"publicKeyHex": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"description": "Public key"
|
|
153
|
+
},
|
|
154
|
+
"meta": {
|
|
155
|
+
"anyOf": [
|
|
156
|
+
{
|
|
157
|
+
"$ref": "#/components/schemas/KeyMetadata"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"type": "null"
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"description": "Optional. Key metadata. This should be used to determine which algorithms are supported."
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"required": [
|
|
167
|
+
"kid",
|
|
168
|
+
"kms",
|
|
169
|
+
"type",
|
|
170
|
+
"publicKeyHex"
|
|
171
|
+
],
|
|
172
|
+
"description": "Represents information about a managed key. Private or secret key material is NOT present."
|
|
173
|
+
},
|
|
135
174
|
"ISphereonKeyManagerSignArgs": {
|
|
136
175
|
"type": "object",
|
|
137
176
|
"properties": {
|
|
@@ -301,6 +340,18 @@
|
|
|
301
340
|
"$ref": "#/components/schemas/PartialKey"
|
|
302
341
|
}
|
|
303
342
|
},
|
|
343
|
+
"keyManagerListKeys": {
|
|
344
|
+
"description": "",
|
|
345
|
+
"arguments": {
|
|
346
|
+
"type": "object"
|
|
347
|
+
},
|
|
348
|
+
"returnType": {
|
|
349
|
+
"type": "array",
|
|
350
|
+
"items": {
|
|
351
|
+
"$ref": "#/components/schemas/ManagedKeyInfo"
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
},
|
|
304
355
|
"keyManagerSign": {
|
|
305
356
|
"description": "",
|
|
306
357
|
"arguments": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SphereonKeyManager } from '../agent/SphereonKeyManager'
|
|
2
2
|
import { MemoryKeyStore, MemoryPrivateKeyStore } from '@veramo/key-manager'
|
|
3
|
-
import { IKey } from '@veramo/core'
|
|
3
|
+
import { IKey, ManagedKeyInfo } from '@veramo/core'
|
|
4
4
|
import { generateBls12381G2KeyPair } from '@mattrglobal/bbs-signatures'
|
|
5
5
|
import { SphereonKeyManagementSystem } from '@sphereon/ssi-sdk-ext.kms-local'
|
|
6
6
|
|
|
@@ -82,6 +82,25 @@ describe('@sphereon/ssi-sdk-ext.kms-local', () => {
|
|
|
82
82
|
await expect(kms.keyManagerDelete({ kid: Buffer.from(bls.publicKey).toString('hex') })).resolves.toBeTruthy()
|
|
83
83
|
})
|
|
84
84
|
|
|
85
|
+
it('should get all the keys in the sphereon key manager', async () => {
|
|
86
|
+
const myKey = {
|
|
87
|
+
type: 'Bls12381G2',
|
|
88
|
+
privateKeyHex: Buffer.from(bls.secretKey).toString('hex'),
|
|
89
|
+
publicKeyHex: Buffer.from(bls.publicKey).toString('hex'),
|
|
90
|
+
}
|
|
91
|
+
await kms.keyManagerImport({
|
|
92
|
+
kid: myKey.publicKeyHex,
|
|
93
|
+
privateKeyHex: myKey.privateKeyHex,
|
|
94
|
+
publicKeyHex: myKey.publicKeyHex,
|
|
95
|
+
kms: 'local',
|
|
96
|
+
type: 'Bls12381G2',
|
|
97
|
+
})
|
|
98
|
+
const keys: ManagedKeyInfo[] = await kms.keyManagerListKeys()
|
|
99
|
+
keys.forEach((key) => {
|
|
100
|
+
expect(key['privateKeyHex' as keyof ManagedKeyInfo]).toBeUndefined()
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
|
|
85
104
|
afterAll(async () => {
|
|
86
105
|
await new Promise((resolve) => setTimeout((v: void) => resolve(v), 500))
|
|
87
106
|
})
|
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import { KeyManager as VeramoKeyManager, AbstractKeyManagementSystem, AbstractKeyStore } from '@veramo/key-manager'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {IKey, ManagedKeyInfo, TKeyType} from '@veramo/core'
|
|
4
4
|
import { KeyType, SphereonKeyManagementSystem } from '@sphereon/ssi-sdk-ext.kms-local'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
ISphereonKeyManager,
|
|
7
|
+
ISphereonKeyManagerSignArgs,
|
|
8
|
+
ISphereonKeyManagerVerifyArgs,
|
|
9
|
+
} from '../types/ISphereonKeyManager'
|
|
10
|
+
|
|
11
|
+
export const sphereonKeyManagerMethods: Array<string> = ['keyManagerCreate','keyManagerImport','keyManagerSign','keyManagerVerify','keyManagerListKeys']
|
|
6
12
|
|
|
7
13
|
export class SphereonKeyManager extends VeramoKeyManager {
|
|
8
14
|
private localStore: AbstractKeyStore
|
|
9
|
-
private readonly
|
|
15
|
+
private readonly availableKMSes: Record<string, AbstractKeyManagementSystem>
|
|
10
16
|
readonly localMethods: ISphereonKeyManager
|
|
11
17
|
|
|
12
18
|
constructor(options: { store: AbstractKeyStore; kms: Record<string, AbstractKeyManagementSystem> }) {
|
|
13
19
|
super({ store: options.store, kms: options.kms })
|
|
14
20
|
this.localStore = options.store
|
|
15
|
-
this.
|
|
21
|
+
this.availableKMSes = options.kms
|
|
16
22
|
const methods = this.methods
|
|
17
23
|
methods.keyManagerVerify = this.keyManagerVerify.bind(this)
|
|
24
|
+
methods.keyManagerListKeys = this.keyManagerListKeys.bind(this)
|
|
18
25
|
this.localMethods = <ISphereonKeyManager>(<unknown>methods)
|
|
19
26
|
}
|
|
20
27
|
|
|
21
|
-
private
|
|
22
|
-
const kms = this.
|
|
28
|
+
private getAvailableKms(name: string): AbstractKeyManagementSystem {
|
|
29
|
+
const kms = this.availableKMSes[name]
|
|
23
30
|
if (!kms) {
|
|
24
31
|
throw Error(`invalid_argument: This agent has no registered KeyManagementSystem with name='${name}'`)
|
|
25
32
|
}
|
|
@@ -29,7 +36,7 @@ export class SphereonKeyManager extends VeramoKeyManager {
|
|
|
29
36
|
//FIXME extend the IKeyManagerSignArgs.data to be a string or array of strings
|
|
30
37
|
async keyManagerSign(args: ISphereonKeyManagerSignArgs): Promise<string> {
|
|
31
38
|
const keyInfo: IKey = (await this.localStore.get({ kid: args.keyRef })) as IKey
|
|
32
|
-
const kms = this.
|
|
39
|
+
const kms = this.getAvailableKms(keyInfo.kms)
|
|
33
40
|
if (keyInfo.type === <TKeyType>KeyType.Bls12381G2) {
|
|
34
41
|
return await kms.sign({ keyRef: keyInfo, data: Uint8Array.from(Buffer.from(args.data)) })
|
|
35
42
|
}
|
|
@@ -38,11 +45,15 @@ export class SphereonKeyManager extends VeramoKeyManager {
|
|
|
38
45
|
}
|
|
39
46
|
|
|
40
47
|
async keyManagerVerify(args: ISphereonKeyManagerVerifyArgs): Promise<boolean> {
|
|
41
|
-
const kms = this.
|
|
48
|
+
const kms = this.getAvailableKms(args.kms)
|
|
42
49
|
if (('verify' in kms && typeof kms.verify === 'function') || kms instanceof SphereonKeyManagementSystem) {
|
|
43
50
|
// @ts-ignore
|
|
44
51
|
return await kms.verify(args)
|
|
45
52
|
}
|
|
46
53
|
throw Error(`KMS ${kms} does not support verification`)
|
|
47
54
|
}
|
|
55
|
+
|
|
56
|
+
async keyManagerListKeys(): Promise<ManagedKeyInfo[]> {
|
|
57
|
+
return this.localStore.list({}) // FIXME there are no args it seems
|
|
58
|
+
}
|
|
48
59
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const schema = require('../plugin.schema.json')
|
|
2
2
|
export { schema }
|
|
3
|
-
export { SphereonKeyManager } from './agent/SphereonKeyManager'
|
|
3
|
+
export { SphereonKeyManager, sphereonKeyManagerMethods } from './agent/SphereonKeyManager'
|
|
4
4
|
export * from './types/ISphereonKeyManager'
|
|
5
5
|
export * from '@veramo/key-manager'
|