]> nmode's Git Repositories - signal-cli/commitdiff
Update libsignal-service
authorAsamK <asamk@gmx.de>
Thu, 7 Mar 2024 16:44:19 +0000 (17:44 +0100)
committerAsamK <asamk@gmx.de>
Thu, 7 Mar 2024 16:44:19 +0000 (17:44 +0100)
12 files changed:
lib/src/main/java/org/asamk/signal/manager/api/Profile.java
lib/src/main/java/org/asamk/signal/manager/config/LiveConfig.java
lib/src/main/java/org/asamk/signal/manager/config/ServiceEnvironmentConfig.java
lib/src/main/java/org/asamk/signal/manager/config/StagingConfig.java
lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java
lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java
lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java
lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java
lib/src/main/java/org/asamk/signal/manager/storage/profiles/LegacySignalProfile.java
lib/src/main/java/org/asamk/signal/manager/util/ProfileUtils.java
settings.gradle.kts

index 3eb58a55aefc3fc3afc3ed6119451845ee0d61c0..33117188687675c4799642a36219cc4769f80779 100644 (file)
@@ -152,10 +152,7 @@ public class Profile {
     }
 
     public enum Capability {
-        storage,
-        gv1Migration,
-        senderKey,
-        announcementGroup;
+        storage;
 
         public static Capability valueOfOrNull(String value) {
             try {
index 3c477299b75df598ee1fc15fa63f1f7245ee0b94..2bbdfe19bf47a336fdbcb219f2c632a04db29895 100644 (file)
@@ -1,5 +1,6 @@
 package org.asamk.signal.manager.config;
 
+import org.signal.libsignal.net.Network.Environment;
 import org.signal.libsignal.protocol.InvalidKeyException;
 import org.signal.libsignal.protocol.ecc.Curve;
 import org.signal.libsignal.protocol.ecc.ECPublicKey;
@@ -28,7 +29,6 @@ class LiveConfig {
             .decode("BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF");
     private static final String CDSI_MRENCLAVE = "0f6fd79cdfdaa5b2e6337f534d3baf999318b0c462a7ac1f41297a3e4b424a57";
     private static final String SVR2_MRENCLAVE = "a6622ad4656e1abcd0bc0ff17c229477747d2ded0495c4ebee7ed35c1789fa97";
-    private static final String SVR2_MRENCLAVE_DEPRECATED = "6ee1042f9e20f880326686dd4ba50c25359f01e9f733eeba4382bca001d45094";
 
     private static final String URL = "https://chat.signal.org";
     private static final String CDN_URL = "https://cdn.signal.org";
@@ -49,6 +49,8 @@ class LiveConfig {
     private static final byte[] backupServerPublicParams = Base64.getDecoder()
             .decode("AJwNSU55fsFCbgaxGRD11wO1juAs8Yr5GF8FPlGzzvdJJIKH5/4CC7ZJSOe3yL2vturVaRU2Cx0n751Vt8wkj1bozK3CBV1UokxV09GWf+hdVImLGjXGYLLhnI1J2TWEe7iWHyb553EEnRb5oxr9n3lUbNAJuRmFM7hrr0Al0F0wrDD4S8lo2mGaXe0MJCOM166F8oYRQqpFeEHfiLnxA1O8ZLh7vMdv4g9jI5phpRBTsJ5IjiJrWeP0zdIGHEssUeprDZ9OUJ14m0v61eYJMKsf59Bn+mAT2a7YfB+Don9O");
 
+    private static Environment LIBSIGNAL_NET_ENV = Environment.PRODUCTION;
+
     static SignalServiceConfiguration createDefaultServiceConfiguration(
             final List<Interceptor> interceptors
     ) {
@@ -78,10 +80,11 @@ class LiveConfig {
 
     static ServiceEnvironmentConfig getServiceEnvironmentConfig(List<Interceptor> interceptors) {
         return new ServiceEnvironmentConfig(LIVE,
+                LIBSIGNAL_NET_ENV,
                 createDefaultServiceConfiguration(interceptors),
                 getUnidentifiedSenderTrustRoot(),
                 CDSI_MRENCLAVE,
-                List.of(SVR2_MRENCLAVE, SVR2_MRENCLAVE_DEPRECATED));
+                List.of(SVR2_MRENCLAVE));
     }
 
     private LiveConfig() {
index f4622064c939d850ce7274e4b8c52c1224d626cb..8f9f8ce3a110c47a22824749bca87afd8a82edfb 100644 (file)
@@ -1,6 +1,7 @@
 package org.asamk.signal.manager.config;
 
 import org.asamk.signal.manager.api.ServiceEnvironment;
+import org.signal.libsignal.net.Network;
 import org.signal.libsignal.protocol.ecc.ECPublicKey;
 import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration;
 
@@ -8,6 +9,7 @@ import java.util.List;
 
 public record ServiceEnvironmentConfig(
         ServiceEnvironment type,
+        Network.Environment netEnvironment,
         SignalServiceConfiguration signalServiceConfiguration,
         ECPublicKey unidentifiedSenderTrustRoot,
         String cdsiMrenclave,
index 83bb7be60f5d868985b546876aa49007b7cf4e85..e99b049c13c26b79caf7a40a7a3542045e967fc6 100644 (file)
@@ -1,5 +1,6 @@
 package org.asamk.signal.manager.config;
 
+import org.signal.libsignal.net.Network;
 import org.signal.libsignal.protocol.InvalidKeyException;
 import org.signal.libsignal.protocol.ecc.Curve;
 import org.signal.libsignal.protocol.ecc.ECPublicKey;
@@ -28,7 +29,6 @@ class StagingConfig {
             .decode("BbqY1DzohE4NUZoVF+L18oUPrK3kILllLEJh2UnPSsEx");
     private static final String CDSI_MRENCLAVE = "0f6fd79cdfdaa5b2e6337f534d3baf999318b0c462a7ac1f41297a3e4b424a57";
     private static final String SVR2_MRENCLAVE = "acb1973aa0bbbd14b3b4e06f145497d948fd4a98efc500fcce363b3b743ec482";
-    private static final String SVR2_MRENCLAVE_DEPRECATED = "a8a261420a6bb9b61aa25bf8a79e8bd20d7652531feb3381cbffd446d270be95";
 
     private static final String URL = "https://chat.staging.signal.org";
     private static final String CDN_URL = "https://cdn-staging.signal.org";
@@ -49,6 +49,8 @@ class StagingConfig {
     private static final byte[] backupServerPublicParams = Base64.getDecoder()
             .decode("AHYrGb9IfugAAJiPKp+mdXUx+OL9zBolPYHYQz6GI1gWjpEu5me3zVNSvmYY4zWboZHif+HG1sDHSuvwFd0QszSwuSF4X4kRP3fJREdTZ5MCR0n55zUppTwfHRW2S4sdQ0JGz7YDQIJCufYSKh0pGNEHL6hv79Agrdnr4momr3oXdnkpVBIp3HWAQ6IbXQVSG18X36GaicI1vdT0UFmTwU2KTneluC2eyL9c5ff8PcmiS+YcLzh0OKYQXB5ZfQ06d6DiINvDQLy75zcfUOniLAj0lGJiHxGczin/RXisKSR8");
 
+    private static Network.Environment LIBSIGNAL_NET_ENV = Network.Environment.STAGING;
+
     static SignalServiceConfiguration createDefaultServiceConfiguration(
             final List<Interceptor> interceptors
     ) {
@@ -78,10 +80,11 @@ class StagingConfig {
 
     static ServiceEnvironmentConfig getServiceEnvironmentConfig(List<Interceptor> interceptors) {
         return new ServiceEnvironmentConfig(STAGING,
+                LIBSIGNAL_NET_ENV,
                 createDefaultServiceConfiguration(interceptors),
                 getUnidentifiedSenderTrustRoot(),
                 CDSI_MRENCLAVE,
-                List.of(SVR2_MRENCLAVE, SVR2_MRENCLAVE_DEPRECATED));
+                List.of(SVR2_MRENCLAVE));
     }
 
     private StagingConfig() {
index f7b978ab588d4f1f8dd610b4f4bfa73d76e6b65c..fbd719b9b86c7b038096286b7a231996ccf3fd26 100644 (file)
@@ -22,7 +22,6 @@ import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.GroupNotFoundException;
 import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.Pair;
-import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.api.ReceiveConfig;
 import org.asamk.signal.manager.api.StickerPackId;
 import org.asamk.signal.manager.api.TrustLevel;
@@ -161,24 +160,11 @@ public final class IncomingMessageHandler {
                 if (context.getContactHelper().isContactBlocked(sender)) {
                     logger.debug("Received invalid message from blocked contact, ignoring.");
                 } else {
-                    final var senderProfile = context.getProfileHelper().getRecipientProfile(sender);
-                    final var selfProfile = context.getProfileHelper().getSelfProfile();
                     var serviceId = ServiceId.parseOrNull(e.getSender());
-                    if (serviceId == null) {
-                        // Workaround for libsignal-client issue #492
-                        serviceId = account.getRecipientAddressResolver()
-                                .resolveRecipientAddress(sender)
-                                .serviceId()
-                                .orElse(null);
-                    }
                     if (serviceId != null) {
                         final var isSelf = sender.equals(account.getSelfRecipientId())
                                 && e.getSenderDevice() == account.getDeviceId();
-                        final var isSenderSenderKeyCapable = senderProfile != null && senderProfile.getCapabilities()
-                                .contains(Profile.Capability.senderKey);
-                        final var isSelfSenderKeyCapable = selfProfile != null && selfProfile.getCapabilities()
-                                .contains(Profile.Capability.senderKey);
-                        if (!isSelf && isSenderSenderKeyCapable && isSelfSenderKeyCapable) {
+                        if (!isSelf) {
                             logger.debug("Received invalid message, requesting message resend.");
                             actions.add(new SendRetryMessageRequestAction(sender, serviceId, e, envelope, destination));
                         } else {
index 947c251b0ae57ce7d2a5316054ee5a304d4e3c11..905bbd5a3d67a848a1794dfd67c74c21c50848a9 100644 (file)
@@ -213,6 +213,7 @@ public class RecipientHelper {
                             token,
                             serviceEnvironmentConfig.cdsiMrenclave(),
                             null,
+                            dependencies.getServiceEnvironmentConfig().netEnvironment(),
                             newToken -> {
                                 if (isPartialRefresh) {
                                     account.getCdsiStore().updateAfterPartialCdsQuery(newNumbers);
index d3068fc442adea2867f9ab71f4d0aad291479d14..a066c85107adb76ea4672ed463ba4eeef11d1ea9 100644 (file)
@@ -523,21 +523,9 @@ public class SendHelper {
     }
 
     private Set<RecipientId> getSenderKeyCapableRecipientIds(final Set<RecipientId> recipientIds) {
-        final var selfProfile = context.getProfileHelper().getSelfProfile();
-        if (selfProfile == null || !selfProfile.getCapabilities().contains(Profile.Capability.senderKey)) {
-            logger.debug("Not all of our devices support sender key. Using legacy.");
-            return Set.of();
-        }
-
         final var senderKeyTargets = new HashSet<RecipientId>();
         final var recipientList = new ArrayList<>(recipientIds);
-        final var profiles = context.getProfileHelper().getRecipientProfiles(recipientList).iterator();
         for (final var recipientId : recipientList) {
-            final var profile = profiles.next();
-            if (profile == null || !profile.getCapabilities().contains(Profile.Capability.senderKey)) {
-                continue;
-            }
-
             final var access = context.getUnidentifiedAccessHelper().getAccessFor(recipientId);
             if (access.isEmpty() || access.get().getTargetUnidentifiedAccess().isEmpty()) {
                 continue;
index 9488c75e11a867fdd5d1f3d7284049ff7d74cd3e..561534c5c0e23c15ea9a9c6df17cc3b9d39ce7af 100644 (file)
@@ -189,7 +189,8 @@ public class SignalDependencies {
                         Optional.empty(),
                         executor,
                         ServiceConfig.MAX_ENVELOPE_SIZE,
-                        pushServiceSocket));
+                        pushServiceSocket,
+                        false));
     }
 
     public List<SecureValueRecovery> getSecureValueRecoveryV2() {
index e8f2db45247e5617fed70e739fac7eecaedc3b66..0076f31487ad7464289c56e74a855bdb31bcdbaa 100644 (file)
@@ -895,9 +895,6 @@ public class SignalAccount implements Closeable {
                 if (profile != null) {
                     final var capabilities = new HashSet<Profile.Capability>();
                     if (profile.getCapabilities() != null) {
-                        if (profile.getCapabilities().gv1Migration) {
-                            capabilities.add(Profile.Capability.gv1Migration);
-                        }
                         if (profile.getCapabilities().storage) {
                             capabilities.add(Profile.Capability.storage);
                         }
index e3e18b1e81093b56e0c4030f30f3350c5d75d170..4114df60b6e7213f06f4e5a966ec9ad88f092932 100644 (file)
@@ -94,7 +94,7 @@ public class LegacySignalProfile {
         @JsonProperty
         public boolean storage;
 
-        @JsonProperty
+        @JsonIgnore
         public boolean gv1Migration;
     }
 }
index 85c9fdd60c17a7a3612380d8c0939250fbe6a46a..82ffc8617b4139f49a6438138e406a96c4edfdb6 100644 (file)
@@ -76,18 +76,9 @@ public class ProfileUtils {
 
     public static HashSet<Profile.Capability> getCapabilities(final SignalServiceProfile encryptedProfile) {
         final var capabilities = new HashSet<Profile.Capability>();
-        if (encryptedProfile.getCapabilities().isGv1Migration()) {
-            capabilities.add(Profile.Capability.gv1Migration);
-        }
         if (encryptedProfile.getCapabilities().isStorage()) {
             capabilities.add(Profile.Capability.storage);
         }
-        if (encryptedProfile.getCapabilities().isSenderKey()) {
-            capabilities.add(Profile.Capability.senderKey);
-        }
-        if (encryptedProfile.getCapabilities().isAnnouncementGroup()) {
-            capabilities.add(Profile.Capability.announcementGroup);
-        }
 
         return capabilities;
     }
index a98ac4049df2f8f63937325a525bac9051577fc1..b219a1ea23c86acd0d0937784a283e9dc99ba3c6 100644 (file)
@@ -15,7 +15,7 @@ dependencyResolutionManagement {
             library("slf4j.jul", "org.slf4j", "jul-to-slf4j").versionRef("slf4j")
             library("logback", "ch.qos.logback", "logback-classic").version("1.5.0")
 
-            library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_97")
+            library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_98")
             library("sqlite", "org.xerial", "sqlite-jdbc").version("3.45.1.0")
             library("hikari", "com.zaxxer", "HikariCP").version("5.1.0")
             library("junit.jupiter", "org.junit.jupiter", "junit-jupiter").version("5.10.2")