diff --git a/docs/api/daf-core.ikeymanager.keymanagergetkeymanagementsystems.md b/docs/api/daf-core.ikeymanager.keymanagergetkeymanagementsystems.md
new file mode 100644
index 000000000..1a072e026
--- /dev/null
+++ b/docs/api/daf-core.ikeymanager.keymanagergetkeymanagementsystems.md
@@ -0,0 +1,17 @@
+
+
+[Home](./index.md) > [daf-core](./daf-core.md) > [IKeyManager](./daf-core.ikeymanager.md) > [keyManagerGetKeyManagementSystems](./daf-core.ikeymanager.keymanagergetkeymanagementsystems.md)
+
+## IKeyManager.keyManagerGetKeyManagementSystems() method
+
+Lists available key management systems
+
+Signature:
+
+```typescript
+keyManagerGetKeyManagementSystems(): Promise>;
+```
+Returns:
+
+Promise<Array<string>>
+
diff --git a/docs/api/daf-core.ikeymanager.md b/docs/api/daf-core.ikeymanager.md
index 0068970b2..397cdd28e 100644
--- a/docs/api/daf-core.ikeymanager.md
+++ b/docs/api/daf-core.ikeymanager.md
@@ -22,6 +22,7 @@ export interface IKeyManager extends IPluginMethodMap
| [keyManagerDeleteKey(args)](./daf-core.ikeymanager.keymanagerdeletekey.md) | Deletes a key |
| [keyManagerEncryptJWE(args)](./daf-core.ikeymanager.keymanagerencryptjwe.md) | (BETA) Encrypts data |
| [keyManagerGetKey(args)](./daf-core.ikeymanager.keymanagergetkey.md) | Returns an existing key |
+| [keyManagerGetKeyManagementSystems()](./daf-core.ikeymanager.keymanagergetkeymanagementsystems.md) | Lists available key management systems |
| [keyManagerImportKey(args)](./daf-core.ikeymanager.keymanagerimportkey.md) | Imports a created key |
| [keyManagerSignEthTX(args)](./daf-core.ikeymanager.keymanagersignethtx.md) | Signs Ethereum transaction |
| [keyManagerSignJWT(args)](./daf-core.ikeymanager.keymanagersignjwt.md) | Signs JWT |
diff --git a/docs/api/daf-key-manager.keymanager.keymanagergetkeymanagementsystems.md b/docs/api/daf-key-manager.keymanager.keymanagergetkeymanagementsystems.md
new file mode 100644
index 000000000..b22dd7b7f
--- /dev/null
+++ b/docs/api/daf-key-manager.keymanager.keymanagergetkeymanagementsystems.md
@@ -0,0 +1,17 @@
+
+
+[Home](./index.md) > [daf-key-manager](./daf-key-manager.md) > [KeyManager](./daf-key-manager.keymanager.md) > [keyManagerGetKeyManagementSystems](./daf-key-manager.keymanager.keymanagergetkeymanagementsystems.md)
+
+## KeyManager.keyManagerGetKeyManagementSystems() method
+
+Lists available key management systems
+
+Signature:
+
+```typescript
+keyManagerGetKeyManagementSystems(): Promise>;
+```
+Returns:
+
+Promise<Array<string>>
+
diff --git a/docs/api/daf-key-manager.keymanager.md b/docs/api/daf-key-manager.keymanager.md
index d04a4b7d5..ec1b1ce48 100644
--- a/docs/api/daf-key-manager.keymanager.md
+++ b/docs/api/daf-key-manager.keymanager.md
@@ -34,6 +34,7 @@ export declare class KeyManager implements IAgentPlugin
| [keyManagerDeleteKey({ kid })](./daf-key-manager.keymanager.keymanagerdeletekey.md) | | Deletes a key |
| [keyManagerEncryptJWE({ kid, to, data })](./daf-key-manager.keymanager.keymanagerencryptjwe.md) | | Encrypts data |
| [keyManagerGetKey({ kid })](./daf-key-manager.keymanager.keymanagergetkey.md) | | Returns an existing key |
+| [keyManagerGetKeyManagementSystems()](./daf-key-manager.keymanager.keymanagergetkeymanagementsystems.md) | | Lists available key management systems |
| [keyManagerImportKey(key)](./daf-key-manager.keymanager.keymanagerimportkey.md) | | Imports a created key |
| [keyManagerSignEthTX({ kid, transaction })](./daf-key-manager.keymanager.keymanagersignethtx.md) | | Signs Ethereum transaction |
| [keyManagerSignJWT({ kid, data })](./daf-key-manager.keymanager.keymanagersignjwt.md) | | Signs JWT |
diff --git a/docs/methods.md b/docs/methods.md
index 552d5c20e..4ddda5b31 100644
--- a/docs/methods.md
+++ b/docs/methods.md
@@ -145,6 +145,11 @@ Encrypts data
Returns an existing key
+### [keyManagerGetKeyManagementSystems](./api/daf-core.ikeymanager.keymanagergetkeymanagementsystems.md)
+
+Lists available key management systems
+
+
### [keyManagerImportKey](./api/daf-core.ikeymanager.keymanagerimportkey.md)
Imports a created key
diff --git a/packages/daf-core/src/types.ts b/packages/daf-core/src/types.ts
index 64f7435d6..6e6d5b85a 100644
--- a/packages/daf-core/src/types.ts
+++ b/packages/daf-core/src/types.ts
@@ -737,6 +737,11 @@ export interface IKeyManagerSignEthTXArgs {
* @public
*/
export interface IKeyManager extends IPluginMethodMap {
+ /**
+ * Lists available key management systems
+ */
+ keyManagerGetKeyManagementSystems(): Promise>
+
/**
* Creates and returns a new key
*/
diff --git a/packages/daf-key-manager/src/key-manager.ts b/packages/daf-key-manager/src/key-manager.ts
index 74d90257b..b0cf2798d 100644
--- a/packages/daf-key-manager/src/key-manager.ts
+++ b/packages/daf-key-manager/src/key-manager.ts
@@ -31,6 +31,7 @@ export class KeyManager implements IAgentPlugin {
this.store = options.store
this.kms = options.kms
this.methods = {
+ keyManagerGetKeyManagementSystems: this.keyManagerGetKeyManagementSystems.bind(this),
keyManagerCreateKey: this.keyManagerCreateKey.bind(this),
keyManagerGetKey: this.keyManagerGetKey.bind(this),
keyManagerDeleteKey: this.keyManagerDeleteKey.bind(this),
@@ -48,6 +49,11 @@ export class KeyManager implements IAgentPlugin {
return kms
}
+ /** {@inheritDoc daf-core#IKeyManager.keyManagerGetKeyManagementSystems} */
+ async keyManagerGetKeyManagementSystems(): Promise> {
+ return Object.keys(this.kms)
+ }
+
/** {@inheritDoc daf-core#IKeyManager.keyManagerCreateKey} */
async keyManagerCreateKey(args: IKeyManagerCreateKeyArgs): Promise {
const kms = this.getKms(args.kms)
diff --git a/packages/daf-rest/src/openApiSchema.ts b/packages/daf-rest/src/openApiSchema.ts
index 65f4d0e18..8f0e9dd2b 100644
--- a/packages/daf-rest/src/openApiSchema.ts
+++ b/packages/daf-rest/src/openApiSchema.ts
@@ -2335,6 +2335,34 @@ export const openApiSchema: OpenAPIV3.Document = {
}
}
},
+ "/keyManagerGetKeyManagementSystems": {
+ "post": {
+ "description": "Lists available key management systems",
+ "operationId": "keyManagerGetKeyManagementSystems",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {}
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Lists available key management systems",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"/keyManagerImportKey": {
"post": {
"description": "Imports a created key",
diff --git a/report/daf-core.api.md b/report/daf-core.api.md
index e38da0b96..829304ddb 100644
--- a/report/daf-core.api.md
+++ b/report/daf-core.api.md
@@ -165,6 +165,7 @@ export interface IKeyManager extends IPluginMethodMap {
// @beta
keyManagerEncryptJWE(args: IKeyManagerEncryptJWEArgs): Promise;
keyManagerGetKey(args: IKeyManagerGetKeyArgs): Promise;
+ keyManagerGetKeyManagementSystems(): Promise>;
keyManagerImportKey(args: IKey): Promise;
keyManagerSignEthTX(args: IKeyManagerSignEthTXArgs): Promise;
keyManagerSignJWT(args: IKeyManagerSignJWTArgs): Promise;
diff --git a/report/daf-key-manager.api.md b/report/daf-key-manager.api.md
index 2f55e5fb3..8453f7b21 100644
--- a/report/daf-key-manager.api.md
+++ b/report/daf-key-manager.api.md
@@ -89,6 +89,8 @@ export class KeyManager implements IAgentPlugin {
// (undocumented)
keyManagerGetKey({ kid }: IKeyManagerGetKeyArgs): Promise;
// (undocumented)
+ keyManagerGetKeyManagementSystems(): Promise>;
+ // (undocumented)
keyManagerImportKey(key: IKey): Promise;
// (undocumented)
keyManagerSignEthTX({ kid, transaction }: IKeyManagerSignEthTXArgs): Promise;