diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c4f27935aa..004065ef86 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -209,7 +209,6 @@ android { buildConfigField("String[]", "SIGNAL_CDSI_IPS", rootProject.extra["cdsi_ips"] as String) buildConfigField("String[]", "SIGNAL_SVR2_IPS", rootProject.extra["svr2_ips"] as String) buildConfigField("String", "SIGNAL_AGENT", "\"OWA\"") - buildConfigField("String", "CDSI_MRENCLAVE", "\"0f6fd79cdfdaa5b2e6337f534d3baf999318b0c462a7ac1f41297a3e4b424a57\"") buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"a6622ad4656e1abcd0bc0ff17c229477747d2ded0495c4ebee7ed35c1789fa97\"") buildConfigField("String", "SVR2_MRENCLAVE", "\"9314436a9a144992bb3680770ea5fd7934a7ffd29257844a33763a238903d570\"") buildConfigField("String", "UNIDENTIFIED_SENDER_TRUST_ROOT", "\"BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF\"") diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryRefreshV2.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryRefreshV2.kt index f4f283ea21..efcc309e2f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryRefreshV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryRefreshV2.kt @@ -5,7 +5,6 @@ import androidx.annotation.WorkerThread import org.signal.contacts.SystemContactsRepository import org.signal.core.util.Stopwatch import org.signal.core.util.logging.Log -import org.thoughtcrime.securesms.BuildConfig import org.thoughtcrime.securesms.contacts.sync.FuzzyPhoneNumberHelper.InputResult import org.thoughtcrime.securesms.contacts.sync.FuzzyPhoneNumberHelper.OutputResult import org.thoughtcrime.securesms.database.RecipientTable.CdsV2Result @@ -96,9 +95,8 @@ object ContactDiscoveryRefreshV2 { setOf(e164), SignalDatabase.recipients.getAllServiceIdProfileKeyPairs(), Optional.empty(), - BuildConfig.CDSI_MRENCLAVE, 10_000, - if (RemoteConfig.useLibsignalNetForCdsiLookup) AppDependencies.libsignalNetwork else null + AppDependencies.libsignalNetwork ) { Log.i(TAG, "Ignoring token for one-off lookup.") } @@ -161,9 +159,8 @@ object ContactDiscoveryRefreshV2 { newE164s, SignalDatabase.recipients.getAllServiceIdProfileKeyPairs(), Optional.ofNullable(token), - BuildConfig.CDSI_MRENCLAVE, timeoutMs, - if (RemoteConfig.useLibsignalNetForCdsiLookup) AppDependencies.libsignalNetwork else null + AppDependencies.libsignalNetwork ) { tokenToSave -> stopwatch.split("network-pre-token") if (!isPartialRefresh) { diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java index b5757026fe..d7754756e7 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java @@ -20,9 +20,6 @@ import org.signal.libsignal.usernames.Username.UsernameLink; import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential; import org.signal.libsignal.zkgroup.profiles.ProfileKey; import org.whispersystems.signalservice.api.account.AccountAttributes; -import org.whispersystems.signalservice.api.account.ChangePhoneNumberRequest; -import org.whispersystems.signalservice.api.account.PniKeyDistributionRequest; -import org.whispersystems.signalservice.api.account.PreKeyCollection; import org.whispersystems.signalservice.api.account.PreKeyUpload; import org.whispersystems.signalservice.api.crypto.ProfileCipher; import org.whispersystems.signalservice.api.crypto.ProfileCipherOutputStream; @@ -31,7 +28,6 @@ import org.whispersystems.signalservice.api.groupsv2.ClientZkOperations; import org.whispersystems.signalservice.api.groupsv2.GroupsV2Api; import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations; import org.whispersystems.signalservice.api.kbs.MasterKey; -import org.whispersystems.signalservice.api.keys.KeysApi; import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo; import org.whispersystems.signalservice.api.messages.multidevice.DeviceInfo; import org.whispersystems.signalservice.api.payments.CurrencyConversions; @@ -64,8 +60,6 @@ import org.whispersystems.signalservice.internal.ServiceResponse; import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration; import org.whispersystems.signalservice.internal.crypto.PrimaryProvisioningCipher; import org.whispersystems.signalservice.internal.push.AuthCredentials; -import org.whispersystems.signalservice.internal.push.BackupAuthCheckRequest; -import org.whispersystems.signalservice.internal.push.BackupV2AuthCheckResponse; import org.whispersystems.signalservice.internal.push.CdsiAuthResponse; import org.whispersystems.signalservice.internal.push.OneTimePreKeyCounts; import org.whispersystems.signalservice.internal.push.PaymentAddress; @@ -73,10 +67,8 @@ import org.whispersystems.signalservice.internal.push.ProfileAvatarData; import org.whispersystems.signalservice.internal.push.ProvisionMessage; import org.whispersystems.signalservice.internal.push.ProvisioningVersion; import org.whispersystems.signalservice.internal.push.PushServiceSocket; -import org.whispersystems.signalservice.internal.push.RegistrationSessionMetadataResponse; import org.whispersystems.signalservice.internal.push.RemoteConfigResponse; import org.whispersystems.signalservice.internal.push.ReserveUsernameResponse; -import org.whispersystems.signalservice.internal.push.VerifyAccountResponse; import org.whispersystems.signalservice.internal.push.WhoAmIResponse; import org.whispersystems.signalservice.internal.push.http.ProfileCipherOutputStreamFactory; import org.whispersystems.signalservice.internal.storage.protos.ManifestRecord; @@ -86,12 +78,8 @@ import org.whispersystems.signalservice.internal.storage.protos.StorageItems; import org.whispersystems.signalservice.internal.storage.protos.StorageManifest; import org.whispersystems.signalservice.internal.storage.protos.WriteOperation; import org.whispersystems.signalservice.internal.util.StaticCredentialsProvider; -import org.whispersystems.signalservice.internal.util.Util; -import org.whispersystems.signalservice.internal.websocket.DefaultResponseMapper; import java.io.IOException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -109,7 +97,6 @@ import java.util.function.Consumer; import java.util.stream.Collectors; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import io.reactivex.rxjava3.core.Single; import okio.ByteString; @@ -255,14 +242,13 @@ public class SignalServiceAccountManager { Set newE164s, Map serviceIds, Optional token, - String mrEnclave, Long timeoutMs, - @Nullable Network libsignalNetwork, + @Nonnull Network libsignalNetwork, Consumer tokenSaver) throws IOException { CdsiAuthResponse auth = pushServiceSocket.getCdsiAuth(); - CdsiV2Service service = new CdsiV2Service(configuration, mrEnclave, libsignalNetwork); + CdsiV2Service service = new CdsiV2Service(libsignalNetwork); CdsiV2Service.Request request = new CdsiV2Service.Request(previousE164s, newE164s, serviceIds, token); Single> single = service.getRegisteredUsers(auth.getUsername(), auth.getPassword(), request, tokenSaver); diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/services/CdsiV2Service.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/services/CdsiV2Service.java index e6e8b83d22..3c8fac1ecf 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/services/CdsiV2Service.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/services/CdsiV2Service.java @@ -2,7 +2,6 @@ package org.whispersystems.signalservice.api.services; import org.signal.cdsi.proto.ClientRequest; import org.signal.cdsi.proto.ClientResponse; -import org.signal.core.util.logging.Log; import org.signal.libsignal.net.CdsiLookupRequest; import org.signal.libsignal.net.CdsiLookupResponse; import org.signal.libsignal.net.Network; @@ -18,7 +17,6 @@ import org.whispersystems.signalservice.api.push.exceptions.CdsiResourceExhauste import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException; import org.whispersystems.signalservice.api.util.UuidUtil; import org.whispersystems.signalservice.internal.ServiceResponse; -import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -37,7 +35,7 @@ import java.util.concurrent.Future; import java.util.function.Consumer; import java.util.stream.Collectors; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Single; @@ -55,35 +53,24 @@ public final class CdsiV2Service { private final CdsiRequestHandler cdsiRequestHandler; - public CdsiV2Service(SignalServiceConfiguration configuration, String mrEnclave, @Nullable Network network) { - - if (network != null) { - this.cdsiRequestHandler = (username, password, request, tokenSaver) -> { - try { - Log.i(TAG, "Starting CDSI lookup via libsignal-net"); - Future cdsiRequest = network.cdsiLookup(username, password, buildLibsignalRequest(request), tokenSaver); - return Single.fromFuture(cdsiRequest) - .onErrorResumeNext((Throwable err) -> { - if (err instanceof ExecutionException && err.getCause() != null) { - err = err.getCause(); - } - return Single.error(mapLibsignalError(err)); - }) - .map(CdsiV2Service::parseLibsignalResponse) - .toObservable(); - } catch (Exception exception) { - return Observable.error(mapLibsignalError(exception)); - } - }; - } else { - CdsiSocket cdsiSocket = new CdsiSocket(configuration, mrEnclave); - this.cdsiRequestHandler = (username, password, request, tokenSaver) -> { - return cdsiSocket - .connect(username, password, buildClientRequest(request), tokenSaver) - .map(CdsiV2Service::parseEntries); - }; + public CdsiV2Service(@Nonnull Network network) { + this.cdsiRequestHandler = (username, password, request, tokenSaver) -> { + try { + Future cdsiRequest = network.cdsiLookup(username, password, buildLibsignalRequest(request), tokenSaver); + return Single.fromFuture(cdsiRequest) + .onErrorResumeNext((Throwable err) -> { + if (err instanceof ExecutionException && err.getCause() != null) { + err = err.getCause(); + } + return Single.error(mapLibsignalError(err)); + }) + .map(CdsiV2Service::parseLibsignalResponse) + .toObservable(); + } catch (Exception exception) { + return Observable.error(mapLibsignalError(exception)); } - } + }; + } public Single> getRegisteredUsers(String username, String password, Request request, Consumer tokenSaver) { return cdsiRequestHandler.handleRequest(username, password, request, tokenSaver)