]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java
Add constant for MAX_MESSAGE_BODY_SIZE
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / config / ServiceConfig.java
index 0b83f53e753edd8493153f83959983b22cb15473..52ee82e227f8f4b06e369e55e0bdc22cf6249122 100644 (file)
@@ -1,69 +1,36 @@
 package org.asamk.signal.manager.config;
 
-import org.signal.zkgroup.internal.Native;
+import org.asamk.signal.manager.api.ServiceEnvironment;
+import org.signal.libsignal.protocol.util.Medium;
 import org.whispersystems.signalservice.api.account.AccountAttributes;
-import org.whispersystems.signalservice.api.push.TrustStore;
 
-import java.io.IOException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateException;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 import okhttp3.Interceptor;
 
 public class ServiceConfig {
 
-    public final static int PREKEY_MINIMUM_COUNT = 20;
-    public final static int PREKEY_BATCH_SIZE = 100;
-    public final static int MAX_ATTACHMENT_SIZE = 150 * 1024 * 1024;
-    public final static long MAX_ENVELOPE_SIZE = 0;
-    public final static long AVATAR_DOWNLOAD_FAILSAFE_MAX_SIZE = 10 * 1024 * 1024;
-    public final static boolean AUTOMATIC_NETWORK_RETRY = true;
-
-    private final static KeyStore iasKeyStore;
-
-    public static final AccountAttributes.Capabilities capabilities;
-
-    static {
-        boolean zkGroupAvailable;
-        try {
-            Native.serverPublicParamsCheckValidContentsJNI(new byte[]{});
-            zkGroupAvailable = true;
-        } catch (Throwable ignored) {
-            zkGroupAvailable = false;
-        }
-        capabilities = new AccountAttributes.Capabilities(false, zkGroupAvailable, false, zkGroupAvailable);
-
-        try {
-            TrustStore contactTrustStore = new IasTrustStore();
-
-            KeyStore keyStore = KeyStore.getInstance("BKS");
-            keyStore.load(contactTrustStore.getKeyStoreInputStream(),
-                    contactTrustStore.getKeyStorePassword().toCharArray());
-
-            iasKeyStore = keyStore;
-        } catch (KeyStoreException | CertificateException | IOException | NoSuchAlgorithmException e) {
-            throw new AssertionError(e);
-        }
-    }
-
-    public static boolean isSignalClientAvailable() {
-        try {
-            org.signal.client.internal.Native.DisplayableFingerprint_Format(new byte[30], new byte[30]);
-            return true;
-        } catch (UnsatisfiedLinkError ignored) {
-            return false;
-        }
-    }
-
-    public static AccountAttributes.Capabilities getCapabilities() {
-        return capabilities;
-    }
-
-    public static KeyStore getIasKeyStore() {
-        return iasKeyStore;
+    public static final int PREKEY_MINIMUM_COUNT = 10;
+    public static final int PREKEY_BATCH_SIZE = 100;
+    public static final int PREKEY_MAXIMUM_ID = Medium.MAX_VALUE;
+    public static final long PREKEY_ARCHIVE_AGE = TimeUnit.DAYS.toMillis(30);
+    public static final long PREKEY_STALE_AGE = TimeUnit.DAYS.toMillis(90);
+    public static final long SIGNED_PREKEY_ROTATE_AGE = TimeUnit.DAYS.toMillis(2);
+
+    public static final int MAX_ATTACHMENT_SIZE = 150 * 1024 * 1024;
+    public static final long MAX_ENVELOPE_SIZE = 0;
+    public static final int MAX_MESSAGE_BODY_SIZE = 2000;
+    public static final long AVATAR_DOWNLOAD_FAILSAFE_MAX_SIZE = 10 * 1024 * 1024;
+    public static final boolean AUTOMATIC_NETWORK_RETRY = true;
+    public static final int GROUP_MAX_SIZE = 1001;
+    public static final int MAXIMUM_ONE_OFF_REQUEST_SIZE = 3;
+    public static final long UNREGISTERED_LIFESPAN = TimeUnit.DAYS.toMillis(30);
+
+    public static AccountAttributes.Capabilities getCapabilities(boolean isPrimaryDevice) {
+        final var deleteSync = !isPrimaryDevice;
+        final var versionedExpirationTimer = !isPrimaryDevice;
+        return new AccountAttributes.Capabilities(true, deleteSync, versionedExpirationTimer);
     }
 
     public static ServiceEnvironmentConfig getServiceEnvironmentConfig(
@@ -74,21 +41,11 @@ public class ServiceConfig {
                 .header("User-Agent", userAgent)
                 .build());
 
-        final List<Interceptor> interceptors = List.of(userAgentInterceptor);
+        final var interceptors = List.of(userAgentInterceptor);
 
-        switch (serviceEnvironment) {
-            case LIVE:
-                return new ServiceEnvironmentConfig(LiveConfig.createDefaultServiceConfiguration(interceptors),
-                        LiveConfig.getUnidentifiedSenderTrustRoot(),
-                        LiveConfig.createKeyBackupConfig(),
-                        LiveConfig.getCdsMrenclave());
-            case SANDBOX:
-                return new ServiceEnvironmentConfig(SandboxConfig.createDefaultServiceConfiguration(interceptors),
-                        SandboxConfig.getUnidentifiedSenderTrustRoot(),
-                        SandboxConfig.createKeyBackupConfig(),
-                        SandboxConfig.getCdsMrenclave());
-            default:
-                throw new IllegalArgumentException("Unsupported environment");
-        }
+        return switch (serviceEnvironment) {
+            case LIVE -> LiveConfig.getServiceEnvironmentConfig(interceptors);
+            case STAGING -> StagingConfig.getServiceEnvironmentConfig(interceptors);
+        };
     }
 }