diff --git a/src/service/globals/data.rs b/src/service/globals/data.rs index d73ddec6..5b5d9f09 100644 --- a/src/service/globals/data.rs +++ b/src/service/globals/data.rs @@ -291,9 +291,7 @@ impl Data { /// for the server. pub fn verify_keys_for(&self, origin: &ServerName) -> Result> { let signingkeys = self - .server_signingkeys - .get(origin.as_bytes())? - .and_then(|bytes| serde_json::from_slice(&bytes).ok()) + .signing_keys_for(origin)? .map_or_else(BTreeMap::new, |keys: ServerSigningKeys| { let mut tree = keys.verify_keys; tree.extend( @@ -307,6 +305,15 @@ impl Data { Ok(signingkeys) } + pub fn signing_keys_for(&self, origin: &ServerName) -> Result> { + let signingkeys = self + .server_signingkeys + .get(origin.as_bytes())? + .and_then(|bytes| serde_json::from_slice(&bytes).ok()); + + Ok(signingkeys) + } + pub fn database_version(&self) -> Result { self.global.get(b"version")?.map_or(Ok(0), |version| { utils::u64_from_bytes(&version).map_err(|_| Error::bad_database("Database version id is invalid.")) diff --git a/src/service/globals/mod.rs b/src/service/globals/mod.rs index d46eb79e..2c588dce 100644 --- a/src/service/globals/mod.rs +++ b/src/service/globals/mod.rs @@ -13,7 +13,10 @@ use data::Data; use ipaddress::IPAddress; use regex::RegexSet; use ruma::{ - api::{client::discovery::discover_support::ContactRole, federation::discovery::VerifyKey}, + api::{ + client::discovery::discover_support::ContactRole, + federation::discovery::{ServerSigningKeys, VerifyKey}, + }, serde::Base64, DeviceId, OwnedEventId, OwnedRoomAliasId, OwnedServerName, OwnedServerSigningKeyId, OwnedUserId, RoomAliasId, RoomVersionId, ServerName, UserId, @@ -288,6 +291,10 @@ impl Service { Ok(keys) } + pub fn signing_keys_for(&self, origin: &ServerName) -> Result> { + self.db.signing_keys_for(origin) + } + pub fn well_known_client(&self) -> &Option { &self.config.well_known.client } pub fn well_known_server(&self) -> &Option { &self.config.well_known.server }