]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java
Refactor manager lib package structure
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / config / ServiceConfig.java
1 package org.asamk.signal.manager.config;
2
3 import org.asamk.signal.manager.api.ServiceEnvironment;
4 import org.whispersystems.signalservice.api.account.AccountAttributes;
5 import org.whispersystems.signalservice.api.push.TrustStore;
6
7 import java.io.IOException;
8 import java.security.KeyStore;
9 import java.security.KeyStoreException;
10 import java.security.NoSuchAlgorithmException;
11 import java.security.cert.CertificateException;
12 import java.util.List;
13
14 import okhttp3.Interceptor;
15
16 public class ServiceConfig {
17
18 public final static int PREKEY_MINIMUM_COUNT = 20;
19 public final static int PREKEY_BATCH_SIZE = 100;
20 public final static int MAX_ATTACHMENT_SIZE = 150 * 1024 * 1024;
21 public final static long MAX_ENVELOPE_SIZE = 0;
22 public final static long AVATAR_DOWNLOAD_FAILSAFE_MAX_SIZE = 10 * 1024 * 1024;
23 public final static boolean AUTOMATIC_NETWORK_RETRY = true;
24 public final static int GROUP_MAX_SIZE = 1001;
25
26 private final static KeyStore iasKeyStore;
27
28 static {
29 try {
30 TrustStore contactTrustStore = new IasTrustStore();
31
32 var keyStore = KeyStore.getInstance("BKS");
33 keyStore.load(contactTrustStore.getKeyStoreInputStream(),
34 contactTrustStore.getKeyStorePassword().toCharArray());
35
36 iasKeyStore = keyStore;
37 } catch (KeyStoreException | CertificateException | IOException | NoSuchAlgorithmException e) {
38 throw new AssertionError(e);
39 }
40 }
41
42 public static AccountAttributes.Capabilities getCapabilities(boolean isPrimaryDevice) {
43 final var giftBadges = !isPrimaryDevice;
44 return new AccountAttributes.Capabilities(false, true, true, true, true, giftBadges, false, false);
45 }
46
47 public static KeyStore getIasKeyStore() {
48 return iasKeyStore;
49 }
50
51 public static ServiceEnvironmentConfig getServiceEnvironmentConfig(
52 ServiceEnvironment serviceEnvironment, String userAgent
53 ) {
54 final Interceptor userAgentInterceptor = chain -> chain.proceed(chain.request()
55 .newBuilder()
56 .header("User-Agent", userAgent)
57 .build());
58
59 final var interceptors = List.of(userAgentInterceptor);
60
61 return switch (serviceEnvironment) {
62 case LIVE -> new ServiceEnvironmentConfig(serviceEnvironment,
63 LiveConfig.createDefaultServiceConfiguration(interceptors),
64 LiveConfig.getUnidentifiedSenderTrustRoot(),
65 LiveConfig.createKeyBackupConfig(),
66 LiveConfig.createFallbackKeyBackupConfigs(),
67 LiveConfig.getCdsiMrenclave());
68 case STAGING -> new ServiceEnvironmentConfig(serviceEnvironment,
69 StagingConfig.createDefaultServiceConfiguration(interceptors),
70 StagingConfig.getUnidentifiedSenderTrustRoot(),
71 StagingConfig.createKeyBackupConfig(),
72 StagingConfig.createFallbackKeyBackupConfigs(),
73 StagingConfig.getCdsiMrenclave());
74 };
75 }
76 }