]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java
Add -c for --config (#816)
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / config / ServiceConfig.java
1 package org.asamk.signal.manager.config;
2
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5 import org.whispersystems.signalservice.api.account.AccountAttributes;
6 import org.whispersystems.signalservice.api.push.TrustStore;
7
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
15 import okhttp3.Interceptor;
16
17 public class ServiceConfig {
18
19 private final static Logger logger = LoggerFactory.getLogger(ServiceConfig.class);
20
21 public final static int PREKEY_MINIMUM_COUNT = 20;
22 public final static int PREKEY_BATCH_SIZE = 100;
23 public final static int MAX_ATTACHMENT_SIZE = 150 * 1024 * 1024;
24 public final static long MAX_ENVELOPE_SIZE = 0;
25 public final static long AVATAR_DOWNLOAD_FAILSAFE_MAX_SIZE = 10 * 1024 * 1024;
26 public final static boolean AUTOMATIC_NETWORK_RETRY = true;
27
28 private final static KeyStore iasKeyStore;
29
30 public static final AccountAttributes.Capabilities capabilities;
31
32 static {
33 capabilities = new AccountAttributes.Capabilities(false, true, false, true, true, true, false);
34
35 try {
36 TrustStore contactTrustStore = new IasTrustStore();
37
38 var keyStore = KeyStore.getInstance("BKS");
39 keyStore.load(contactTrustStore.getKeyStoreInputStream(),
40 contactTrustStore.getKeyStorePassword().toCharArray());
41
42 iasKeyStore = keyStore;
43 } catch (KeyStoreException | CertificateException | IOException | NoSuchAlgorithmException e) {
44 throw new AssertionError(e);
45 }
46 }
47
48 public static boolean isSignalClientAvailable() {
49 try {
50 org.signal.client.internal.Native.DeviceTransfer_GeneratePrivateKey();
51 return true;
52 } catch (UnsatisfiedLinkError e) {
53 logger.warn("Failed to call libsignal-client: {}", e.getMessage());
54 return false;
55 }
56 }
57
58 public static AccountAttributes.Capabilities getCapabilities() {
59 return capabilities;
60 }
61
62 public static KeyStore getIasKeyStore() {
63 return iasKeyStore;
64 }
65
66 public static ServiceEnvironmentConfig getServiceEnvironmentConfig(
67 ServiceEnvironment serviceEnvironment, String userAgent
68 ) {
69 final Interceptor userAgentInterceptor = chain -> chain.proceed(chain.request()
70 .newBuilder()
71 .header("User-Agent", userAgent)
72 .build());
73
74 final var interceptors = List.of(userAgentInterceptor);
75
76 return switch (serviceEnvironment) {
77 case LIVE -> new ServiceEnvironmentConfig(LiveConfig.createDefaultServiceConfiguration(interceptors),
78 LiveConfig.getUnidentifiedSenderTrustRoot(),
79 LiveConfig.createKeyBackupConfig(),
80 LiveConfig.getCdsMrenclave());
81 case SANDBOX -> new ServiceEnvironmentConfig(SandboxConfig.createDefaultServiceConfiguration(interceptors),
82 SandboxConfig.getUnidentifiedSenderTrustRoot(),
83 SandboxConfig.createKeyBackupConfig(),
84 SandboxConfig.getCdsMrenclave());
85 };
86 }
87 }