From 9d92a3e06bd7f7fb94e2b80bf3927e0ddbe3da26 Mon Sep 17 00:00:00 2001 From: AsamK Date: Sun, 15 Dec 2024 21:13:59 +0100 Subject: [PATCH] Update libsignal-service --- gradle/libs.versions.toml | 2 +- .../org/asamk/signal/manager/helper/GroupV2Helper.java | 9 ++++++--- .../syncStorage/DefaultStorageRecordProcessor.java | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 483ea244..84f2d8fc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,7 +10,7 @@ slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } slf4j-jul = { module = "org.slf4j:jul-to-slf4j", version.ref = "slf4j" } logback = "ch.qos.logback:logback-classic:1.5.12" -signalservice = "com.github.turasa:signal-service-java:2.15.3_unofficial_112" +signalservice = "com.github.turasa:signal-service-java:2.15.3_unofficial_113" sqlite = "org.xerial:sqlite-jdbc:3.47.0.0" hikari = "com.zaxxer:HikariCP:6.2.1" junit-jupiter = "org.junit.jupiter:junit-jupiter:5.11.3" diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java b/lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java index a3330d5c..900d7ea9 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java @@ -28,6 +28,7 @@ import org.signal.storageservice.protos.groups.local.DecryptedMember; import org.signal.storageservice.protos.groups.local.DecryptedPendingMember; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.whispersystems.signalservice.api.groupsv2.DecryptChangeVerificationMode; import org.whispersystems.signalservice.api.groupsv2.DecryptedGroupResponse; import org.whispersystems.signalservice.api.groupsv2.DecryptedGroupUtil; import org.whispersystems.signalservice.api.groupsv2.GroupCandidate; @@ -652,11 +653,13 @@ class GroupV2Helper { DecryptedGroupChange getDecryptedGroupChange(byte[] signedGroupChange, GroupMasterKey groupMasterKey) { if (signedGroupChange != null) { - var groupOperations = dependencies.getGroupsV2Operations() - .forGroup(GroupSecretParams.deriveFromMasterKey(groupMasterKey)); + final var groupSecretParams = GroupSecretParams.deriveFromMasterKey(groupMasterKey); + final var groupOperations = dependencies.getGroupsV2Operations().forGroup(groupSecretParams); + final var groupId = groupSecretParams.getPublicParams().getGroupIdentifier(); try { - return groupOperations.decryptChange(GroupChange.ADAPTER.decode(signedGroupChange), true).orElse(null); + return groupOperations.decryptChange(GroupChange.ADAPTER.decode(signedGroupChange), + DecryptChangeVerificationMode.verify(groupId)).orElse(null); } catch (VerificationFailedException | InvalidGroupStateException | IOException e) { return null; } diff --git a/lib/src/main/java/org/asamk/signal/manager/syncStorage/DefaultStorageRecordProcessor.java b/lib/src/main/java/org/asamk/signal/manager/syncStorage/DefaultStorageRecordProcessor.java index e9e4ef7f..87acb991 100644 --- a/lib/src/main/java/org/asamk/signal/manager/syncStorage/DefaultStorageRecordProcessor.java +++ b/lib/src/main/java/org/asamk/signal/manager/syncStorage/DefaultStorageRecordProcessor.java @@ -49,7 +49,7 @@ abstract class DefaultStorageRecordProcessor> implemen final var local = getMatching(remote); if (local.isEmpty()) { - debug(remote.getId(), remote, "No matching local record. Inserting."); + debug(remote.getId(), remote, "[Local Insert] No matching local record. Inserting."); insertLocal(remote); return; } @@ -70,7 +70,7 @@ abstract class DefaultStorageRecordProcessor> implemen if (!merged.equals(local.get())) { final var update = new StorageRecordUpdate<>(local.get(), merged); - debug(remote.getId(), remote, "[Local Update] " + update); + debug(remote.getId(), remote, "[Local Update] " + local.get().describeDiff(merged)); updateLocal(update); } } -- 2.50.1