1 package org
.asamk
.signal
.manager
.config
;
3 import org
.signal
.zkgroup
.internal
.Native
;
4 import org
.whispersystems
.signalservice
.api
.account
.AccountAttributes
;
5 import org
.whispersystems
.signalservice
.api
.push
.TrustStore
;
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
;
14 import okhttp3
.Interceptor
;
16 public class ServiceConfig
{
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;
25 private final static KeyStore iasKeyStore
;
27 public static final AccountAttributes
.Capabilities capabilities
;
30 boolean zkGroupAvailable
;
32 Native
.serverPublicParamsCheckValidContentsJNI(new byte[]{});
33 zkGroupAvailable
= true;
34 } catch (Throwable ignored
) {
35 zkGroupAvailable
= false;
37 capabilities
= new AccountAttributes
.Capabilities(false, zkGroupAvailable
, false, zkGroupAvailable
);
40 TrustStore contactTrustStore
= new IasTrustStore();
42 var keyStore
= KeyStore
.getInstance("BKS");
43 keyStore
.load(contactTrustStore
.getKeyStoreInputStream(),
44 contactTrustStore
.getKeyStorePassword().toCharArray());
46 iasKeyStore
= keyStore
;
47 } catch (KeyStoreException
| CertificateException
| IOException
| NoSuchAlgorithmException e
) {
48 throw new AssertionError(e
);
52 public static boolean isSignalClientAvailable() {
54 org
.signal
.client
.internal
.Native
.DisplayableFingerprint_Format(new byte[30], new byte[30]);
56 } catch (UnsatisfiedLinkError ignored
) {
61 public static AccountAttributes
.Capabilities
getCapabilities() {
65 public static KeyStore
getIasKeyStore() {
69 public static ServiceEnvironmentConfig
getServiceEnvironmentConfig(
70 ServiceEnvironment serviceEnvironment
, String userAgent
72 final Interceptor userAgentInterceptor
= chain
-> chain
.proceed(chain
.request()
74 .header("User-Agent", userAgent
)
77 final var interceptors
= List
.of(userAgentInterceptor
);
79 switch (serviceEnvironment
) {
81 return new ServiceEnvironmentConfig(LiveConfig
.createDefaultServiceConfiguration(interceptors
),
82 LiveConfig
.getUnidentifiedSenderTrustRoot(),
83 LiveConfig
.createKeyBackupConfig(),
84 LiveConfig
.getCdsMrenclave());
86 return new ServiceEnvironmentConfig(SandboxConfig
.createDefaultServiceConfiguration(interceptors
),
87 SandboxConfig
.getUnidentifiedSenderTrustRoot(),
88 SandboxConfig
.createKeyBackupConfig(),
89 SandboxConfig
.getCdsMrenclave());
91 throw new IllegalArgumentException("Unsupported environment");