Skip to main content

ServerKeyQueries

Trait ServerKeyQueries 

Source
pub trait ServerKeyQueries: Database {
    // Provided methods
    async fn fetch_active_server_key(
        &mut self,
    ) -> Result<Ed25519KeyPair, ServerKeyError> { ... }
    async fn fetch_expired_verify_keys(
        &mut self,
    ) -> Result<Vec<(OwnedServerSigningKeyId, OldVerifyKey)>, ServerKeyError> { ... }
    async fn fetch_foreign_server_keys(
        &mut self,
        server_names: &ServerName,
        key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>,
    ) -> Result<Option<ServerKey>, DatabaseError> { ... }
    async fn upsert_server_key(
        &mut self,
        server_name: &ServerName,
        key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>,
        server_key: &ServerKey,
    ) -> Result<(), DatabaseError> { ... }
    async fn fetch_key_response(
        &mut self,
        server_names: &[OwnedServerName],
    ) -> Result<Vec<Raw<ServerSigningKeys>>, DatabaseError> { ... }
    async fn import_private_key(
        &mut self,
        key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>,
        key_pair_der: &[u8],
        verify_key: &[u8],
    ) -> Result<bool, DatabaseError> { ... }
    async fn upsert_key_response(
        &mut self,
        server_name: &ServerName,
        key_response: Raw<ServerSigningKeys>,
    ) -> Result<(), DatabaseError> { ... }
}
Expand description

Queries for managing server signing keys

Provided Methods§

Source

async fn fetch_active_server_key( &mut self, ) -> Result<Ed25519KeyPair, ServerKeyError>

Fetches the server key from the database, or an error if it does not exist

Source

async fn fetch_expired_verify_keys( &mut self, ) -> Result<Vec<(OwnedServerSigningKeyId, OldVerifyKey)>, ServerKeyError>

Gets all previous signing keys

Source

async fn fetch_foreign_server_keys( &mut self, server_names: &ServerName, key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>, ) -> Result<Option<ServerKey>, DatabaseError>

Fetch foreign server keys

Source

async fn upsert_server_key( &mut self, server_name: &ServerName, key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>, server_key: &ServerKey, ) -> Result<(), DatabaseError>

Upsert a server key

If the key already exists, update the expires_at value If another key exists under the same HS, but with the same name, returns an error. This is a serious misconfiguration from the other HS, and not really something we can handle in a sane manner. The spec does not give any instructions for handling this either.

Source

async fn fetch_key_response( &mut self, server_names: &[OwnedServerName], ) -> Result<Vec<Raw<ServerSigningKeys>>, DatabaseError>

Fetch a cached key response

Source

async fn import_private_key( &mut self, key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>, key_pair_der: &[u8], verify_key: &[u8], ) -> Result<bool, DatabaseError>

Idempotently inserts a signing key coming from a homeserver import.

key_id is the full key id (e.g. "ed25519:1"); key_pair_der is the PKCS#8 v1 DER encoding of the key pair; verify_key is the 32-byte raw ed25519 public key.

The private_key field in the export is the unpadded standard-base64 encoding of the raw 32-byte ed25519 seed, matching Synapse’s signing-key file format. The importer decodes that seed, wraps it in a PKCS#8 v1 header to produce key_pair_der, and derives verify_key from it before calling this method.

Returns true if a new row was inserted, false if the key was already present (idempotent; re-importing the same key is a no-op).

Source

async fn upsert_key_response( &mut self, server_name: &ServerName, key_response: Raw<ServerSigningKeys>, ) -> Result<(), DatabaseError>

Upsert a server key response from another HS

Replaces any previous response from the same HS

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§