mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 21:15:48 +00:00
Improve network reliability.
This commit is contained in:
@@ -475,50 +475,6 @@ public class SignalServiceAccountManager {
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
public Map<String, ACI> getRegisteredUsers(KeyStore iasKeyStore, Set<String> e164numbers, String mrenclave)
|
||||
throws IOException, Quote.InvalidQuoteFormatException, UnauthenticatedQuoteException, SignatureException, UnauthenticatedResponseException, InvalidKeyException
|
||||
{
|
||||
if (e164numbers.isEmpty()) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
try {
|
||||
String authorization = this.pushServiceSocket.getContactDiscoveryAuthorization();
|
||||
Map<String, RemoteAttestation> attestations = RemoteAttestationUtil.getAndVerifyMultiRemoteAttestation(pushServiceSocket,
|
||||
PushServiceSocket.ClientSet.ContactDiscovery,
|
||||
iasKeyStore,
|
||||
mrenclave,
|
||||
mrenclave,
|
||||
authorization);
|
||||
|
||||
List<String> addressBook = new ArrayList<>(e164numbers.size());
|
||||
|
||||
for (String e164number : e164numbers) {
|
||||
addressBook.add(e164number.substring(1));
|
||||
}
|
||||
|
||||
List<String> cookies = attestations.values().iterator().next().getCookies();
|
||||
DiscoveryRequest request = ContactDiscoveryCipher.createDiscoveryRequest(addressBook, attestations);
|
||||
DiscoveryResponse response = this.pushServiceSocket.getContactDiscoveryRegisteredUsers(authorization, request, cookies, mrenclave);
|
||||
byte[] data = ContactDiscoveryCipher.getDiscoveryResponseData(response, attestations.values());
|
||||
|
||||
HashMap<String, ACI> results = new HashMap<>(addressBook.size());
|
||||
DataInputStream uuidInputStream = new DataInputStream(new ByteArrayInputStream(data));
|
||||
|
||||
for (String candidate : addressBook) {
|
||||
long candidateUuidHigh = uuidInputStream.readLong();
|
||||
long candidateUuidLow = uuidInputStream.readLong();
|
||||
if (candidateUuidHigh != 0 || candidateUuidLow != 0) {
|
||||
results.put('+' + candidate, ACI.from(new UUID(candidateUuidHigh, candidateUuidLow)));
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
} catch (InvalidCiphertextException e) {
|
||||
throw new UnauthenticatedResponseException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public CdsiV2Service.Response getRegisteredUsersWithCdsi(Set<String> previousE164s,
|
||||
Set<String> newE164s,
|
||||
Map<ServiceId, ProfileKey> serviceIds,
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
package org.whispersystems.signalservice.internal.configuration;
|
||||
|
||||
|
||||
import org.whispersystems.signalservice.api.push.TrustStore;
|
||||
|
||||
import okhttp3.ConnectionSpec;
|
||||
|
||||
public class SignalContactDiscoveryUrl extends SignalUrl {
|
||||
|
||||
public SignalContactDiscoveryUrl(String url, TrustStore trustStore) {
|
||||
super(url, trustStore);
|
||||
}
|
||||
|
||||
public SignalContactDiscoveryUrl(String url, String hostHeader, TrustStore trustStore, ConnectionSpec connectionSpec) {
|
||||
super(url, hostHeader, trustStore, connectionSpec);
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,6 @@ public final class SignalServiceConfiguration {
|
||||
|
||||
private final SignalServiceUrl[] signalServiceUrls;
|
||||
private final Map<Integer, SignalCdnUrl[]> signalCdnUrlMap;
|
||||
private final SignalContactDiscoveryUrl[] signalContactDiscoveryUrls;
|
||||
private final SignalCdsiUrl[] signalCdsiUrls;
|
||||
private final SignalKeyBackupServiceUrl[] signalKeyBackupServiceUrls;
|
||||
private final SignalStorageUrl[] signalStorageUrls;
|
||||
@@ -21,23 +20,19 @@ public final class SignalServiceConfiguration {
|
||||
private final Optional<Dns> dns;
|
||||
private final Optional<SignalProxy> proxy;
|
||||
private final byte[] zkGroupServerPublicParams;
|
||||
private final boolean supportsWebSocket;
|
||||
|
||||
public SignalServiceConfiguration(SignalServiceUrl[] signalServiceUrls,
|
||||
Map<Integer, SignalCdnUrl[]> signalCdnUrlMap,
|
||||
SignalContactDiscoveryUrl[] signalContactDiscoveryUrls,
|
||||
SignalKeyBackupServiceUrl[] signalKeyBackupServiceUrls,
|
||||
SignalStorageUrl[] signalStorageUrls,
|
||||
SignalCdsiUrl[] signalCdsiUrls,
|
||||
List<Interceptor> networkInterceptors,
|
||||
Optional<Dns> dns,
|
||||
Optional<SignalProxy> proxy,
|
||||
byte[] zkGroupServerPublicParams,
|
||||
boolean supportsWebSocket)
|
||||
byte[] zkGroupServerPublicParams)
|
||||
{
|
||||
this.signalServiceUrls = signalServiceUrls;
|
||||
this.signalCdnUrlMap = signalCdnUrlMap;
|
||||
this.signalContactDiscoveryUrls = signalContactDiscoveryUrls;
|
||||
this.signalCdsiUrls = signalCdsiUrls;
|
||||
this.signalKeyBackupServiceUrls = signalKeyBackupServiceUrls;
|
||||
this.signalStorageUrls = signalStorageUrls;
|
||||
@@ -45,7 +40,6 @@ public final class SignalServiceConfiguration {
|
||||
this.dns = dns;
|
||||
this.proxy = proxy;
|
||||
this.zkGroupServerPublicParams = zkGroupServerPublicParams;
|
||||
this.supportsWebSocket = supportsWebSocket;
|
||||
}
|
||||
|
||||
public SignalServiceUrl[] getSignalServiceUrls() {
|
||||
@@ -56,10 +50,6 @@ public final class SignalServiceConfiguration {
|
||||
return signalCdnUrlMap;
|
||||
}
|
||||
|
||||
public SignalContactDiscoveryUrl[] getSignalContactDiscoveryUrls() {
|
||||
return signalContactDiscoveryUrls;
|
||||
}
|
||||
|
||||
public SignalCdsiUrl[] getSignalCdsiUrls() {
|
||||
return signalCdsiUrls;
|
||||
}
|
||||
@@ -87,8 +77,4 @@ public final class SignalServiceConfiguration {
|
||||
public Optional<SignalProxy> getSignalProxy() {
|
||||
return proxy;
|
||||
}
|
||||
|
||||
public boolean supportsWebSockets() {
|
||||
return supportsWebSocket;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,7 +292,6 @@ public class PushServiceSocket {
|
||||
|
||||
private final ServiceConnectionHolder[] serviceClients;
|
||||
private final Map<Integer, ConnectionHolder[]> cdnClientsMap;
|
||||
private final ConnectionHolder[] contactDiscoveryClients;
|
||||
private final ConnectionHolder[] keyBackupServiceClients;
|
||||
private final ConnectionHolder[] storageClients;
|
||||
|
||||
@@ -313,7 +312,6 @@ public class PushServiceSocket {
|
||||
this.automaticNetworkRetry = automaticNetworkRetry;
|
||||
this.serviceClients = createServiceConnectionHolders(configuration.getSignalServiceUrls(), configuration.getNetworkInterceptors(), configuration.getDns(), configuration.getSignalProxy());
|
||||
this.cdnClientsMap = createCdnClientsMap(configuration.getSignalCdnUrlMap(), configuration.getNetworkInterceptors(), configuration.getDns(), configuration.getSignalProxy());
|
||||
this.contactDiscoveryClients = createConnectionHolders(configuration.getSignalContactDiscoveryUrls(), configuration.getNetworkInterceptors(), configuration.getDns(), configuration.getSignalProxy());
|
||||
this.keyBackupServiceClients = createConnectionHolders(configuration.getSignalKeyBackupServiceUrls(), configuration.getNetworkInterceptors(), configuration.getDns(), configuration.getSignalProxy());
|
||||
this.storageClients = createConnectionHolders(configuration.getSignalStorageUrls(), configuration.getNetworkInterceptors(), configuration.getDns(), configuration.getSignalProxy());
|
||||
this.random = new SecureRandom();
|
||||
@@ -1155,14 +1153,6 @@ public class PushServiceSocket {
|
||||
}
|
||||
}
|
||||
|
||||
public DiscoveryResponse getContactDiscoveryRegisteredUsers(String authorizationToken, DiscoveryRequest request, List<String> cookies, String mrenclave)
|
||||
throws IOException
|
||||
{
|
||||
try (Response response = makeRequest(ClientSet.ContactDiscovery, authorizationToken, cookies, "/v1/discovery/" + mrenclave, "PUT", JsonUtil.toJson(request))) {
|
||||
return readBodyJson(response, DiscoveryResponse.class);
|
||||
}
|
||||
}
|
||||
|
||||
public KeyBackupResponse putKbsData(String authorizationToken, KeyBackupRequest request, List<String> cookies, String mrenclave)
|
||||
throws IOException
|
||||
{
|
||||
@@ -1842,8 +1832,6 @@ public class PushServiceSocket {
|
||||
|
||||
private ConnectionHolder[] clientsFor(ClientSet clientSet) {
|
||||
switch (clientSet) {
|
||||
case ContactDiscovery:
|
||||
return contactDiscoveryClients;
|
||||
case KeyBackup:
|
||||
return keyBackupServiceClients;
|
||||
default:
|
||||
@@ -2319,7 +2307,7 @@ public class PushServiceSocket {
|
||||
public void handle(int responseCode, ResponseBody body) { }
|
||||
}
|
||||
|
||||
public enum ClientSet { ContactDiscovery, KeyBackup }
|
||||
public enum ClientSet { KeyBackup }
|
||||
|
||||
public CredentialResponse retrieveGroupsV2Credentials(long todaySeconds)
|
||||
throws IOException
|
||||
|
||||
Reference in New Issue
Block a user