Skip to content

openvtc-service: add secure key storage backend #21

@stormer78

Description

@stormer78

Summary

openvtc-service currently requires DID private key material (Ed25519/X25519) to be provided as plaintext JWK secrets directly in the JSON config file (openvtc-service/conf/config.json). These secrets are loaded at startup and injected into the TDK's SecretsResolver for signing and decrypting DIDComm messages.

This is in contrast to openvtc-cli2 / openvtc-lib, which support secure key management backends:

  • BIP32 derivation from a seed stored in the OS Secure Store
  • VTA-managed keys fetched remotely from the Verifiable Trust Authority

The service has no equivalent — it relies entirely on pre-provisioned plaintext secrets in the config file.

Proposed Work

Integrate the service with a secure key storage backend (VTA, OS Secure Store, or similar) so that plaintext private key material no longer needs to be present in config files. This would align openvtc-service with the security model already established in openvtc-cli2.

Relevant Files

  • openvtc-service/src/config.rs — current Config struct with secrets: Vec<Secret>
  • openvtc-service/src/main.rs — where config.secrets is injected into the TDK
  • openvtc-lib/src/config/mod.rs — CLI2's regenerate_persona_keys() as reference for BIP32/VTA key backends

Context

Related to #18 and #19. The guard proposed in #19 to reject plaintext key material in the config would actually break the service in its current form, since the service depends on those plaintext secrets to function. This work is a prerequisite for safely enforcing that guard.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions