Compare commits

...

3 Commits

Author SHA1 Message Date
Ginger bcbaa3ec7e chore: News fragment 2026-06-29 10:09:31 -04:00
Ginger c0d0236239 feat: Mark spec version 1.17 as supported 2026-06-29 10:08:30 -04:00
Ginger e3075ed718 feat: Finish implementing MSC4190 2026-06-29 10:08:08 -04:00
4 changed files with 12 additions and 1 deletions
+1
View File
@@ -0,0 +1 @@
Appservice device management as outlined in MSC4190 (part of Matrix 1.17) is now fully supported. Contributed by @ginger.
+3 -1
View File
@@ -121,7 +121,9 @@ pub(crate) async fn delete_device_route(
let sender_user = body.identity.expect_sender_user()?;
// Appservices get to skip UIAA for this endpoint
if let Some(sender_device) = body.identity.sender_device() {
if !body.identity.is_appservice() {
let sender_device = body.identity.expect_sender_device()?;
// Prompt the user to confirm with their password using UIAA
let _ = services
.uiaa
+7
View File
@@ -197,6 +197,7 @@ pub(crate) async fn upload_signing_keys_route(
if uiaa_needed_to_upload_keys(
services,
sender_user,
body.identity.is_appservice(),
body.self_signing_key.as_ref(),
body.user_signing_key.as_ref(),
body.master_key.as_ref(),
@@ -231,10 +232,16 @@ pub(crate) async fn upload_signing_keys_route(
async fn uiaa_needed_to_upload_keys(
services: crate::State,
user_id: &UserId,
is_appservice: bool,
self_signing_key: Option<&Raw<CrossSigningKey>>,
user_signing_key: Option<&Raw<CrossSigningKey>>,
master_signing_key: Option<&Raw<CrossSigningKey>>,
) -> bool {
if is_appservice {
// Appservices can skip UIAA for this endpoint
return false;
}
let (self_signing_key, user_signing_key, master_signing_key) = (
self_signing_key.map(Raw::deserialize).flat_ok(),
user_signing_key.map(Raw::deserialize).flat_ok(),
+1
View File
@@ -23,6 +23,7 @@ pub fn versions() -> Vec<String> {
"v1.14".to_owned(),
"v1.15".to_owned(),
"v1.16".to_owned(),
"v1.17".to_owned(),
]
}