1 package org
.asamk
.signal
.manager
.config
;
3 import org
.asamk
.signal
.manager
.api
.ServiceEnvironment
;
4 import org
.signal
.libsignal
.protocol
.util
.Medium
;
5 import org
.whispersystems
.signalservice
.api
.account
.AccountAttributes
;
6 import org
.whispersystems
.signalservice
.api
.push
.TrustStore
;
8 import java
.io
.IOException
;
9 import java
.security
.KeyStore
;
10 import java
.security
.KeyStoreException
;
11 import java
.security
.NoSuchAlgorithmException
;
12 import java
.security
.cert
.CertificateException
;
13 import java
.util
.List
;
14 import java
.util
.concurrent
.TimeUnit
;
16 import okhttp3
.Interceptor
;
18 public class ServiceConfig
{
20 public final static int PREKEY_MINIMUM_COUNT
= 10;
21 public final static int PREKEY_BATCH_SIZE
= 100;
22 public final static int PREKEY_MAXIMUM_ID
= Medium
.MAX_VALUE
;
23 public static final long PREKEY_ARCHIVE_AGE
= TimeUnit
.DAYS
.toMillis(30);
24 public static final long PREKEY_STALE_AGE
= TimeUnit
.DAYS
.toMillis(90);
25 public static final long SIGNED_PREKEY_ROTATE_AGE
= TimeUnit
.DAYS
.toMillis(2);
27 public final static int MAX_ATTACHMENT_SIZE
= 150 * 1024 * 1024;
28 public final static long MAX_ENVELOPE_SIZE
= 0;
29 public final static long AVATAR_DOWNLOAD_FAILSAFE_MAX_SIZE
= 10 * 1024 * 1024;
30 public final static boolean AUTOMATIC_NETWORK_RETRY
= true;
31 public final static int GROUP_MAX_SIZE
= 1001;
32 public final static int MAXIMUM_ONE_OFF_REQUEST_SIZE
= 3;
34 private final static KeyStore iasKeyStore
;
38 TrustStore contactTrustStore
= new IasTrustStore();
40 var keyStore
= KeyStore
.getInstance("BKS");
41 keyStore
.load(contactTrustStore
.getKeyStoreInputStream(),
42 contactTrustStore
.getKeyStorePassword().toCharArray());
44 iasKeyStore
= keyStore
;
45 } catch (KeyStoreException
| CertificateException
| IOException
| NoSuchAlgorithmException e
) {
46 throw new AssertionError(e
);
50 public static AccountAttributes
.Capabilities
getCapabilities(boolean isPrimaryDevice
) {
51 final var giftBadges
= !isPrimaryDevice
;
52 return new AccountAttributes
.Capabilities(false, true, true, true, true, giftBadges
, false, false);
55 public static KeyStore
getIasKeyStore() {
59 public static ServiceEnvironmentConfig
getServiceEnvironmentConfig(
60 ServiceEnvironment serviceEnvironment
, String userAgent
62 final Interceptor userAgentInterceptor
= chain
-> chain
.proceed(chain
.request()
64 .header("User-Agent", userAgent
)
67 final var interceptors
= List
.of(userAgentInterceptor
);
69 return switch (serviceEnvironment
) {
70 case LIVE
-> new ServiceEnvironmentConfig(serviceEnvironment
,
71 LiveConfig
.createDefaultServiceConfiguration(interceptors
),
72 LiveConfig
.getUnidentifiedSenderTrustRoot(),
73 LiveConfig
.createKeyBackupConfig(),
74 LiveConfig
.createFallbackKeyBackupConfigs(),
75 LiveConfig
.getCdsiMrenclave(),
76 LiveConfig
.getSvr2Mrenclave());
77 case STAGING
-> new ServiceEnvironmentConfig(serviceEnvironment
,
78 StagingConfig
.createDefaultServiceConfiguration(interceptors
),
79 StagingConfig
.getUnidentifiedSenderTrustRoot(),
80 StagingConfig
.createKeyBackupConfig(),
81 StagingConfig
.createFallbackKeyBackupConfigs(),
82 StagingConfig
.getCdsiMrenclave(),
83 StagingConfig
.getSvr2Mrenclave());