From c64adbec0e267c8507d6f2dd3c566cdd614a99c0 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Mon, 17 Jun 2024 07:49:52 +0000 Subject: [PATCH] split signing_keys_for from verify_keys_for Signed-off-by: Jason Volk --- src/service/globals/data.rs | 13 ++++++++++--- src/service/globals/mod.rs | 9 ++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) 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 }