decentralized-identity / decentralized-identity/veramo
[proposal] Metadata for ManagedPrivateKey
- Dominant language
- TypeScript
- Stars
- 543
- Forks
- 137
- Avg merge
- 12m
- Merged PRs (30d)
- 2
Description
**Is your feature request related to a problem? Please describe.**
When building a multi-tenant and/or multi-user system using Veramo, it's likely you'll need to store private keys which can be accessed/used by multiple parties. For example, an organization might have a private key associated with `did:web:organization.com`. You'd want this key to be owned by the organization itself rather than a specific user, so that in the event that the underlying organization ownership is transferred the key can follow without additional changes.
There are likely other use-cases where you'd want to attach metadata to the private key outside of authz. At the moment there is no way to pass metadata to an `AbstractPrivateKeyStore`.
**Describe the solution you'd like**
We already have the `KeyMetadata` interface on `ManagedKeyInfo`. The `meta` object could also be added to the `ManagedPrivateKey` interface.
**Describe alternatives you've considered**
You can currently work around this by implementing a custom `AbstractKeyManagementSystem`, but this either requires a non-compliant `AbstractPrivateKeyStore` class (to receive the metadata), or separately associating the metadata after creating the key (which is also not ideal).
**Additional context**
It's worth considering how the existing `algorithms` property of `KeyMetadata` should be handled. Generating it dynamically (currently via `asManagedKeyInfo`) is probably preferable to storing alongside the key.
Contributor guide
Assessment
This issue has not been assessed yet.