Group operations no longer work due to outdated libsignal
libsignal removed support for v1 group presentations, which signald still uses: https://github.com/signalapp/libsignal/commit/26e7fa555954e205a8a0f5c44da055312a7c9a97.
As we can see from an update to the unit tests, v1 presentations are now rejected starting from libsignal v0.21.0: https://github.com/signalapp/libsignal/blob/26e7fa555954e205a8a0f5c44da055312a7c9a97/java/client/src/test/java/org/signal/libsignal/zkgroup/integrationtests/ZkGroupTest.java#L744-L754. The server has recently updated to libsignal v0.21.1 (https://github.com/signalapp/Signal-Server/commit/70a6c3e8e5699ff69fc949be893eb83e675dca42, https://github.com/signalapp/storage-service/commit/49de7cee9fb536cc66f867594c3c42bc3915a19d)
As a result, every group operation now results in the server giving a 401 error, e.g.
org.whispersystems.signalservice.api.push.exceptions.AuthorizationFailedException: [401] Authorization failed!
at org.whispersystems.signalservice.internal.push.PushServiceSocket.makeStorageRequestResponse(PushServiceSocket.java:2023) ~[signal-service-java-x86_64-unknown-linux-gnu-2.15.3_unofficial_46.jar:?]
at org.whispersystems.signalservice.internal.push.PushServiceSocket.makeStorageRequest(PushServiceSocket.java:1966) ~[signal-service-java-x86_64-unknown-linux-gnu-2.15.3_unofficial_46.jar:?]
at org.whispersystems.signalservice.internal.push.PushServiceSocket.getGroupsV2Group(PushServiceSocket.java:2407) ~[signal-service-java-x86_64-unknown-linux-gnu-2.15.3_unofficial_46.jar:?]
at org.whispersystems.signalservice.api.groupsv2.GroupsV2Api.getGroup(GroupsV2Api.java:100) ~[signal-service-java-x86_64-unknown-linux-gnu-2.15.3_unofficial_46.jar:?]
at io.finn.signald.Groups.getGroup(Groups.java:125) ~[signald.jar:?]
at io.finn.signald.Groups.getGroup(Groups.java:100) ~[signald.jar:?]
at io.finn.signald.Manager.handleSignalServiceDataMessage(Manager.java:781) ~[signald.jar:?]
at io.finn.signald.Manager.handleMessage(Manager.java:1118) ~[signald.jar:?]
at io.finn.signald.Manager.receiveMessages(Manager.java:1058) ~[signald.jar:?]
at io.finn.signald.MessageReceiver.run(MessageReceiver.java:173) [signald.jar:?]
at java.lang.Thread.run(Thread.java:829) [?:?
libsignal introduced expiring profile key credentials (i.e. v2 group presentations) in libsignal v1.18.0 (https://github.com/signalapp/libsignal/commit/395e36e9f201b83832397998bc45a84523dac69e). However, signald still uses org.signald:signal-service-java
with version 2.15.3_unofficial_50_signald_1
. This version has no support for v2 group presentations, as this version of libsignal-service-java uses libsignal v1.17.0 (https://github.com/Turasa/libsignal-service-java/blob/v2.15.3_unofficial_50/dependencies.gradle#L4).
Note that as part of the migration to v2 profile key credentials, Signal-Android deletes all v1 profile key credentials (https://github.com/signalapp/Signal-Android/blob/main/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt#L2666)