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;