Skip to main content

KeyStoreBackend

Trait KeyStoreBackend 

Source
pub trait KeyStoreBackend: Backend {
    // Required methods
    fn generate_key(
        &mut self,
        spec: KeySpec,
    ) -> Result<KeyMetadata, BackendError>;
    fn import_private_key(
        &mut self,
        spec: KeySpec,
        key_bytes: &[u8],
    ) -> Result<KeyMetadata, BackendError>;
    fn export_public_key(
        &self,
        key_id: &KeyId,
    ) -> Result<PublicKeyDer, BackendError>;
    fn list_keys(&self) -> Result<Vec<KeyMetadata>, BackendError>;
    fn delete_key(&mut self, key_id: &KeyId) -> Result<(), BackendError>;
}
Expand description

Key generation and storage operations.

Backends implementing this trait can generate, import, and manage cryptographic keys.

Required Methods§

Source

fn generate_key(&mut self, spec: KeySpec) -> Result<KeyMetadata, BackendError>

Generate a new key.

The backend owns the key and returns metadata including an opaque KeyId reference. For hardware backends, the private key never leaves the device.

Source

fn import_private_key( &mut self, spec: KeySpec, key_bytes: &[u8], ) -> Result<KeyMetadata, BackendError>

Import an existing private key.

Only supported by backends that allow key import (software, some HSMs). Hardware security modules may reject key import for security reasons.

key_bytes must be in PKCS#8 DER format.

Source

fn export_public_key( &self, key_id: &KeyId, ) -> Result<PublicKeyDer, BackendError>

Export the public key for key_id.

Source

fn list_keys(&self) -> Result<Vec<KeyMetadata>, BackendError>

List all keys managed by this backend.

Source

fn delete_key(&mut self, key_id: &KeyId) -> Result<(), BackendError>

Delete a key permanently.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§