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§
Sourceasync fn fetch_active_server_key(
&mut self,
) -> Result<Ed25519KeyPair, ServerKeyError>
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
Sourceasync fn fetch_expired_verify_keys(
&mut self,
) -> Result<Vec<(OwnedServerSigningKeyId, OldVerifyKey)>, ServerKeyError>
async fn fetch_expired_verify_keys( &mut self, ) -> Result<Vec<(OwnedServerSigningKeyId, OldVerifyKey)>, ServerKeyError>
Gets all previous signing keys
Sourceasync fn fetch_foreign_server_keys(
&mut self,
server_names: &ServerName,
key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>,
) -> Result<Option<ServerKey>, DatabaseError>
async fn fetch_foreign_server_keys( &mut self, server_names: &ServerName, key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>, ) -> Result<Option<ServerKey>, DatabaseError>
Fetch foreign server keys
Sourceasync fn upsert_server_key(
&mut self,
server_name: &ServerName,
key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>,
server_key: &ServerKey,
) -> Result<(), DatabaseError>
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.
Sourceasync fn fetch_key_response(
&mut self,
server_names: &[OwnedServerName],
) -> Result<Vec<Raw<ServerSigningKeys>>, DatabaseError>
async fn fetch_key_response( &mut self, server_names: &[OwnedServerName], ) -> Result<Vec<Raw<ServerSigningKeys>>, DatabaseError>
Fetch a cached key response
Sourceasync fn import_private_key(
&mut self,
key_id: &KeyId<SigningKeyAlgorithm, ServerSigningKeyVersion>,
key_pair_der: &[u8],
verify_key: &[u8],
) -> Result<bool, DatabaseError>
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).
Sourceasync fn upsert_key_response(
&mut self,
server_name: &ServerName,
key_response: Raw<ServerSigningKeys>,
) -> Result<(), DatabaseError>
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".