From 541718fd114a6f2336222a571869e1056cd122dd Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Tue, 20 Dec 2016 09:55:52 -0800 Subject: [PATCH] Support for censorship circumvention in Egypt and UAE // FREEBIE --- build.gradle | 10 +-- res/raw/censorship_fronting.store | Bin 0 -> 1096 bytes .../securesms/ApplicationContext.java | 4 +- .../securesms/DeviceActivity.java | 4 +- .../PassphraseRequiredActionBarActivity.java | 11 ++-- .../RegistrationProgressActivity.java | 6 +- ...le.java => SignalCommunicationModule.java} | 57 +++++++++++------- .../securesms/jobs/AvatarDownloadJob.java | 53 ++++++++-------- .../securesms/jobs/DeliveryReceiptJob.java | 6 +- .../jobs/MultiDeviceBlockedUpdateJob.java | 4 +- .../jobs/MultiDeviceContactUpdateJob.java | 4 +- .../jobs/MultiDeviceGroupUpdateJob.java | 4 +- .../jobs/MultiDeviceReadUpdateJob.java | 4 +- .../securesms/jobs/PushGroupSendJob.java | 4 +- .../securesms/jobs/PushGroupUpdateJob.java | 4 +- .../securesms/jobs/PushMediaSendJob.java | 4 +- .../securesms/jobs/PushTextSendJob.java | 4 +- .../securesms/jobs/RequestGroupInfoJob.java | 6 +- .../AdvancedPreferenceFragment.java | 4 +- .../securesms/push/AccountManagerFactory.java | 50 +++++++++++++++ .../securesms/push/Censorship.java | 26 ++++++++ .../push/CensorshipFrontingTrustStore.java | 29 +++++++++ ...tore.java => SignalServiceTrustStore.java} | 5 +- .../push/TextSecureCommunicationFactory.java | 24 -------- .../service/RegistrationService.java | 6 +- .../securesms/sms/MessageSender.java | 4 +- .../securesms/util/DirectoryHelper.java | 6 +- .../jobs/DeliveryReceiptJobTest.java | 6 +- 28 files changed, 222 insertions(+), 127 deletions(-) create mode 100644 res/raw/censorship_fronting.store rename src/org/thoughtcrime/securesms/dependencies/{TextSecureCommunicationModule.java => SignalCommunicationModule.java} (70%) create mode 100644 src/org/thoughtcrime/securesms/push/AccountManagerFactory.java create mode 100644 src/org/thoughtcrime/securesms/push/Censorship.java create mode 100644 src/org/thoughtcrime/securesms/push/CensorshipFrontingTrustStore.java rename src/org/thoughtcrime/securesms/push/{TextSecurePushTrustStore.java => SignalServiceTrustStore.java} (72%) delete mode 100644 src/org/thoughtcrime/securesms/push/TextSecureCommunicationFactory.java diff --git a/build.gradle b/build.gradle index eedd54e32c..5bae1a9504 100644 --- a/build.gradle +++ b/build.gradle @@ -76,7 +76,7 @@ dependencies { compile 'org.whispersystems:jobmanager:1.0.2' compile 'org.whispersystems:libpastelog:1.0.7' compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' - compile 'org.whispersystems:signal-service-android:2.4.2' + compile 'org.whispersystems:signal-service-android:2.4.3' compile 'com.h6ah4i.android.compat:mulsellistprefcompat:1.0.0' compile 'com.google.zxing:core:3.2.1' @@ -134,7 +134,7 @@ dependencyVerification { 'org.whispersystems:jobmanager:506f679fc2fcf7bb6d10f00f41d6f6ea0abf75c70dc95b913398661ad538a181', 'org.whispersystems:libpastelog:bb331d9a98240fc139101128ba836c1edec3c40e000597cdbb29ebf4cbf34d88', 'com.amulyakhare:com.amulyakhare.textdrawable:54c92b5fba38cfd316a07e5a30528068f45ce8515a6890f1297df4c401af5dcb', - 'org.whispersystems:signal-service-android:c86041f97294f8ad701cdfe0c84e5558cdb856933753aaa4b8223b0fff25809f', + 'org.whispersystems:signal-service-android:59e4cec73b9160b7d7c073841318098d46f25c618561d457baf4e10775a6e7b1', 'com.h6ah4i.android.compat:mulsellistprefcompat:47167c5cb796de1a854788e9ff318358e36c8fb88123baaa6e38fb78511dfabe', 'com.google.zxing:core:b4d82452e7a6bf6ec2698904b332431717ed8f9a850224f295aec89de80f2259', 'cn.carbswang.android:NumberPickerView:18b3c316d62c7c277978a8d4ed57a5b8f4e943762264960f579a8a549c756729', @@ -144,7 +144,7 @@ dependencyVerification { 'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff', 'com.madgag.spongycastle:core:8d6240b974b0aca4d3da9c7dd44d42339d8a374358aca5fc98e50a995764511f', 'org.whispersystems:signal-protocol-android:1b4b9d557c8eaf861797ff683990d482d4aa8e9f23d9b17ff0cc67a02f38cb19', - 'org.whispersystems:signal-service-java:18ac4595da7ad24b4dae3d277ba0ab624440343490c164a0ed3cc00307388d8b', + 'org.whispersystems:signal-service-java:9e983922084ca2c8089de0a58d7f2032e50026c2456c2bf9dfb0a56ac46a5864', 'com.google.android.gms:play-services-basement:e1d29b21e02fd2a63e5a31807415cbb17a59568e27e3254181c01ffae10659bf', 'org.whispersystems:curve25519-android:bf6c34223d45d2f2813a8efcab9923caf99115115c760c9acea680bcb42d23c0', 'org.whispersystems:signal-protocol-java:a835cd0609cf116a74651bd0aa748db9392bba48c2d2af787757b8a1b50d131c', @@ -160,7 +160,6 @@ dependencyVerification { ] } - android { compileSdkVersion 24 buildToolsVersion '23.0.3' @@ -178,6 +177,9 @@ android { buildConfigField "long", "BUILD_TIMESTAMP", getLastCommitTimestamp() + "L" buildConfigField "String", "TEXTSECURE_URL", "\"https://textsecure-service.whispersystems.org\"" + buildConfigField "String[]", "CENSORED_COUNTRIES", "{\"+20\", \"+971\"}" + buildConfigField "String", "UNCENSORED_FRONTING_HOST", "\"https://www.google.com\"" + buildConfigField "String", "CENSORED_REFLECTOR", "\"signal-reflector-meek.appspot.com\"" buildConfigField "String", "GIPHY_PROXY_HOST", "\"giphy-proxy-production.whispersystems.org\"" buildConfigField "int", "GIPHY_PROXY_PORT", "80" buildConfigField "String", "USER_AGENT", "\"OWA\"" diff --git a/res/raw/censorship_fronting.store b/res/raw/censorship_fronting.store new file mode 100644 index 0000000000000000000000000000000000000000..431b9c54f9d1eca9b74751ac5bd418b54a59be9a GIT binary patch literal 1096 zcmZQzU|?imU=UGX@>Y~{-pjM!N)3;u1T2^Zl`kztM&OL@$VfQeRY zi<=(Y2=Lg`Y5!5OK&r#7?m_?2kDccf-$ngP&T$+@PasqbD##vgmg z+8}f!Zi@Y$Xb+1o!QWM${hs(z^vL-y!MtC*{>%@#SG#XPc7FST3jy*P2Fwn(IEn*v z>i=8WEH`KC+v_dJ^14>#-m{;73=4lxxtj1<&uhKYrPHsDWJzs06MR?HyIcN*WTO1p zxhw3FwOdRxQ(I0*9(7at5j=I@;|4E*V_I)^O;->+ZaGtcWxC%u7dJjPXnbNI4-8OQWflnou?CR?RWmYrJAbccP2mx&T~(X9^!3yAiYs%IQ}mMaa}9(*`h`LIISkl<6cZzZfhkB#o<+|<$3Sa= z#salA6%>t0AdULTMLEU#=_Tpl1f~b%8Hj_lDX<6_@EP#1aRFVy!g#HciIovKEdWz9 zFfA}LaQLw-Z>Sd#bB<$Ld)=ww%Z9#7>o&g@tewyzQTu#?=x@*Z6*E~U?yfp{&Bk1U zbJn)wlN8uZjX9raBp2~+d0;fBeZ~>#vd;8_0TCO7R|!i=8!g@UN^q)=N3!S3nXwAy zXZ~qr28vDfUU|>6>3~4N7oE><_Nb^_@LRL=W}IB^q=U=Xc$hZ+eEMWgYUbJYC5{31 zdf`ha1`0*+^>8j+Q?*2Bsru(x0@G_lnc2RlMa0LaJX{@{yVTO7bcT;+lvVF#?Nf6? zS@wT messageIds; @Inject - transient TextSecureCommunicationModule.TextSecureMessageSenderFactory messageSenderFactory; + transient SignalCommunicationModule.SignalMessageSenderFactory messageSenderFactory; public MultiDeviceReadUpdateJob(Context context, List messageIds) { super(context, JobParameters.newBuilder() diff --git a/src/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java index 6e3325b3ca..457f47bfbf 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java @@ -42,7 +42,7 @@ import javax.inject.Inject; import ws.com.google.android.mms.MmsException; -import static org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory; +import static org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory; public class PushGroupSendJob extends PushSendJob implements InjectableType { @@ -50,7 +50,7 @@ public class PushGroupSendJob extends PushSendJob implements InjectableType { private static final String TAG = PushGroupSendJob.class.getSimpleName(); - @Inject transient TextSecureMessageSenderFactory messageSenderFactory; + @Inject transient SignalMessageSenderFactory messageSenderFactory; private final long messageId; private final long filterRecipientId; diff --git a/src/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java b/src/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java index b6b32b7724..19cbe42588 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java @@ -8,7 +8,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.GroupDatabase; import org.thoughtcrime.securesms.database.GroupDatabase.GroupRecord; import org.thoughtcrime.securesms.dependencies.InjectableType; -import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory; +import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory; import org.whispersystems.jobqueue.JobParameters; import org.whispersystems.jobqueue.requirements.NetworkRequirement; import org.whispersystems.signalservice.api.SignalServiceMessageSender; @@ -32,7 +32,7 @@ public class PushGroupUpdateJob extends ContextJob implements InjectableType { private static final long serialVersionUID = 0L; - @Inject transient TextSecureMessageSenderFactory messageSenderFactory; + @Inject transient SignalMessageSenderFactory messageSenderFactory; private final String source; private final byte[] groupId; diff --git a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index af5d74758a..4422f9f64b 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -34,7 +34,7 @@ import javax.inject.Inject; import ws.com.google.android.mms.MmsException; -import static org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory; +import static org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory; public class PushMediaSendJob extends PushSendJob implements InjectableType { @@ -42,7 +42,7 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType { private static final String TAG = PushMediaSendJob.class.getSimpleName(); - @Inject transient TextSecureMessageSenderFactory messageSenderFactory; + @Inject transient SignalMessageSenderFactory messageSenderFactory; private final long messageId; diff --git a/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java index 45d9145c53..4201167ba1 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java @@ -28,7 +28,7 @@ import java.io.IOException; import javax.inject.Inject; -import static org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory; +import static org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory; public class PushTextSendJob extends PushSendJob implements InjectableType { @@ -36,7 +36,7 @@ public class PushTextSendJob extends PushSendJob implements InjectableType { private static final String TAG = PushTextSendJob.class.getSimpleName(); - @Inject transient TextSecureMessageSenderFactory messageSenderFactory; + @Inject transient SignalMessageSenderFactory messageSenderFactory; private final long messageId; diff --git a/src/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java b/src/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java index 4dae72c424..a2679d4ebd 100644 --- a/src/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java +++ b/src/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java @@ -4,9 +4,7 @@ import android.content.Context; import android.support.annotation.NonNull; import org.thoughtcrime.securesms.dependencies.InjectableType; -import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule; -import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory; -import org.whispersystems.jobqueue.Job; +import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory; import org.whispersystems.jobqueue.JobParameters; import org.whispersystems.jobqueue.requirements.NetworkRequirement; import org.whispersystems.signalservice.api.SignalServiceMessageSender; @@ -27,7 +25,7 @@ public class RequestGroupInfoJob extends ContextJob implements InjectableType { private static final long serialVersionUID = 0L; - @Inject transient TextSecureMessageSenderFactory messageSenderFactory; + @Inject transient SignalMessageSenderFactory messageSenderFactory; private final String source; private final byte[] groupId; diff --git a/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java index 030b75d79e..2d56e7a12a 100644 --- a/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java @@ -30,7 +30,7 @@ import org.thoughtcrime.securesms.RegistrationActivity; import org.thoughtcrime.securesms.contacts.ContactAccessor; import org.thoughtcrime.securesms.contacts.ContactIdentityManager; import org.thoughtcrime.securesms.crypto.MasterSecret; -import org.thoughtcrime.securesms.push.TextSecureCommunicationFactory; +import org.thoughtcrime.securesms.push.AccountManagerFactory; import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.libsignal.util.guava.Optional; @@ -188,7 +188,7 @@ public class AdvancedPreferenceFragment extends PreferenceFragment { protected Integer doInBackground(Void... params) { try { Context context = getActivity(); - SignalServiceAccountManager accountManager = TextSecureCommunicationFactory.createManager(context); + SignalServiceAccountManager accountManager = AccountManagerFactory.createManager(context); RedPhoneAccountManager redPhoneAccountManager = new RedPhoneAccountManager(BuildConfig.REDPHONE_MASTER_URL, new RedPhoneTrustStore(context), TextSecurePreferences.getLocalNumber(context), diff --git a/src/org/thoughtcrime/securesms/push/AccountManagerFactory.java b/src/org/thoughtcrime/securesms/push/AccountManagerFactory.java new file mode 100644 index 0000000000..c96b2d0fe2 --- /dev/null +++ b/src/org/thoughtcrime/securesms/push/AccountManagerFactory.java @@ -0,0 +1,50 @@ +package org.thoughtcrime.securesms.push; + +import android.content.Context; +import android.support.annotation.NonNull; + +import org.thoughtcrime.securesms.BuildConfig; +import org.thoughtcrime.securesms.util.TextSecurePreferences; +import org.whispersystems.signalservice.api.SignalServiceAccountManager; +import org.whispersystems.signalservice.api.push.TrustStore; +import org.whispersystems.signalservice.internal.push.SignalServiceUrl; + +public class AccountManagerFactory { + + public static SignalServiceAccountManager createManager(Context context) { + return new SignalServiceAccountManager(getUrl(context), getTrustStore(context), + TextSecurePreferences.getLocalNumber(context), + TextSecurePreferences.getPushServerPassword(context), + BuildConfig.USER_AGENT); + } + + public static SignalServiceAccountManager createManager(Context context, String number, String password) { + return new SignalServiceAccountManager(getUrl(number), getTrustStore(context, number), + number, password, BuildConfig.USER_AGENT); + } + + private static SignalServiceUrl getUrl(@NonNull Context context) { + return getUrl(TextSecurePreferences.getLocalNumber(context)); + } + + private static TrustStore getTrustStore(@NonNull Context context) { + return getTrustStore(context, TextSecurePreferences.getLocalNumber(context)); + } + + private static SignalServiceUrl getUrl(@NonNull String number) { + if (Censorship.isCensored(number)) { + return new SignalServiceUrl(BuildConfig.UNCENSORED_FRONTING_HOST, BuildConfig.CENSORED_REFLECTOR); + } else { + return new SignalServiceUrl(BuildConfig.TEXTSECURE_URL, null); + } + } + + private static TrustStore getTrustStore(@NonNull Context context, @NonNull String number) { + if (Censorship.isCensored(number)) { + return new CensorshipFrontingTrustStore(context); + } else { + return new SignalServiceTrustStore(context); + } + } + +} diff --git a/src/org/thoughtcrime/securesms/push/Censorship.java b/src/org/thoughtcrime/securesms/push/Censorship.java new file mode 100644 index 0000000000..536f9e8914 --- /dev/null +++ b/src/org/thoughtcrime/securesms/push/Censorship.java @@ -0,0 +1,26 @@ +package org.thoughtcrime.securesms.push; + + +import android.content.Context; + +import org.thoughtcrime.securesms.BuildConfig; +import org.thoughtcrime.securesms.util.TextSecurePreferences; + +public class Censorship { + + public static boolean isCensored(Context context) { + String localNumber = TextSecurePreferences.getLocalNumber(context); + return isCensored(localNumber); + } + + public static boolean isCensored(String localNumber) { + for (String censoredRegion : BuildConfig.CENSORED_COUNTRIES) { + if (localNumber.startsWith(censoredRegion)) { + return true; + } + } + + return false; + } + +} diff --git a/src/org/thoughtcrime/securesms/push/CensorshipFrontingTrustStore.java b/src/org/thoughtcrime/securesms/push/CensorshipFrontingTrustStore.java new file mode 100644 index 0000000000..e9ea80c61e --- /dev/null +++ b/src/org/thoughtcrime/securesms/push/CensorshipFrontingTrustStore.java @@ -0,0 +1,29 @@ +package org.thoughtcrime.securesms.push; + + +import android.content.Context; + +import org.thoughtcrime.securesms.R; +import org.whispersystems.signalservice.api.push.TrustStore; + +import java.io.InputStream; + +public class CensorshipFrontingTrustStore implements TrustStore { + + private final Context context; + + public CensorshipFrontingTrustStore(Context context) { + this.context = context.getApplicationContext(); + } + + @Override + public InputStream getKeyStoreInputStream() { + return context.getResources().openRawResource(R.raw.censorship_fronting); + } + + @Override + public String getKeyStorePassword() { + return "whisper"; + } + +} diff --git a/src/org/thoughtcrime/securesms/push/TextSecurePushTrustStore.java b/src/org/thoughtcrime/securesms/push/SignalServiceTrustStore.java similarity index 72% rename from src/org/thoughtcrime/securesms/push/TextSecurePushTrustStore.java rename to src/org/thoughtcrime/securesms/push/SignalServiceTrustStore.java index b403c332a2..f19691e9df 100644 --- a/src/org/thoughtcrime/securesms/push/TextSecurePushTrustStore.java +++ b/src/org/thoughtcrime/securesms/push/SignalServiceTrustStore.java @@ -4,15 +4,14 @@ import android.content.Context; import org.thoughtcrime.securesms.R; import org.whispersystems.signalservice.api.push.TrustStore; -import org.whispersystems.signalservice.internal.push.PushServiceSocket; import java.io.InputStream; -public class TextSecurePushTrustStore implements TrustStore { +public class SignalServiceTrustStore implements TrustStore { private final Context context; - public TextSecurePushTrustStore(Context context) { + public SignalServiceTrustStore(Context context) { this.context = context.getApplicationContext(); } diff --git a/src/org/thoughtcrime/securesms/push/TextSecureCommunicationFactory.java b/src/org/thoughtcrime/securesms/push/TextSecureCommunicationFactory.java deleted file mode 100644 index 9107e71b16..0000000000 --- a/src/org/thoughtcrime/securesms/push/TextSecureCommunicationFactory.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.thoughtcrime.securesms.push; - -import android.content.Context; - -import org.thoughtcrime.securesms.BuildConfig; -import org.thoughtcrime.securesms.util.TextSecurePreferences; -import org.whispersystems.signalservice.api.SignalServiceAccountManager; - -public class TextSecureCommunicationFactory { - - public static SignalServiceAccountManager createManager(Context context) { - return new SignalServiceAccountManager(BuildConfig.TEXTSECURE_URL, - new TextSecurePushTrustStore(context), - TextSecurePreferences.getLocalNumber(context), - TextSecurePreferences.getPushServerPassword(context), - BuildConfig.USER_AGENT); - } - - public static SignalServiceAccountManager createManager(Context context, String number, String password) { - return new SignalServiceAccountManager(BuildConfig.TEXTSECURE_URL, new TextSecurePushTrustStore(context), - number, password, BuildConfig.USER_AGENT); - } - -} diff --git a/src/org/thoughtcrime/securesms/service/RegistrationService.java b/src/org/thoughtcrime/securesms/service/RegistrationService.java index 49d3482761..bd5f282817 100644 --- a/src/org/thoughtcrime/securesms/service/RegistrationService.java +++ b/src/org/thoughtcrime/securesms/service/RegistrationService.java @@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.crypto.IdentityKeyUtil; import org.thoughtcrime.securesms.crypto.PreKeyUtil; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.jobs.GcmRefreshJob; -import org.thoughtcrime.securesms.push.TextSecureCommunicationFactory; +import org.thoughtcrime.securesms.push.AccountManagerFactory; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientFactory; import org.thoughtcrime.securesms.util.DirectoryHelper; @@ -161,7 +161,7 @@ public class RegistrationService extends Service { String signalingKey = intent.getStringExtra("signaling_key"); try { - SignalServiceAccountManager accountManager = TextSecureCommunicationFactory.createManager(this, number, password); + SignalServiceAccountManager accountManager = AccountManagerFactory.createManager(this, number, password); handleCommonRegistration(accountManager, number, password, signalingKey); @@ -198,7 +198,7 @@ public class RegistrationService extends Service { initializeChallengeListener(); setState(new RegistrationState(RegistrationState.STATE_CONNECTING, number)); - SignalServiceAccountManager accountManager = TextSecureCommunicationFactory.createManager(this, number, password); + SignalServiceAccountManager accountManager = AccountManagerFactory.createManager(this, number, password); accountManager.requestSmsVerificationCode(); setState(new RegistrationState(RegistrationState.STATE_VERIFYING, number)); diff --git a/src/org/thoughtcrime/securesms/sms/MessageSender.java b/src/org/thoughtcrime/securesms/sms/MessageSender.java index 2660a8a7e0..a08bcc1988 100644 --- a/src/org/thoughtcrime/securesms/sms/MessageSender.java +++ b/src/org/thoughtcrime/securesms/sms/MessageSender.java @@ -36,7 +36,7 @@ import org.thoughtcrime.securesms.jobs.PushMediaSendJob; import org.thoughtcrime.securesms.jobs.PushTextSendJob; import org.thoughtcrime.securesms.jobs.SmsSendJob; import org.thoughtcrime.securesms.mms.OutgoingMediaMessage; -import org.thoughtcrime.securesms.push.TextSecureCommunicationFactory; +import org.thoughtcrime.securesms.push.AccountManagerFactory; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.service.ExpiringMessageManager; @@ -296,7 +296,7 @@ public class MessageSender { return directory.isSecureTextSupported(destination); } catch (NotInDirectoryException e) { try { - SignalServiceAccountManager accountManager = TextSecureCommunicationFactory.createManager(context); + SignalServiceAccountManager accountManager = AccountManagerFactory.createManager(context); Optional registeredUser = accountManager.getContact(destination); if (!registeredUser.isPresent()) { diff --git a/src/org/thoughtcrime/securesms/util/DirectoryHelper.java b/src/org/thoughtcrime/securesms/util/DirectoryHelper.java index e808f5d4d1..709449fcae 100644 --- a/src/org/thoughtcrime/securesms/util/DirectoryHelper.java +++ b/src/org/thoughtcrime/securesms/util/DirectoryHelper.java @@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.database.NotInDirectoryException; import org.thoughtcrime.securesms.database.TextSecureDirectory; import org.thoughtcrime.securesms.jobs.MultiDeviceContactUpdateJob; import org.thoughtcrime.securesms.notifications.MessageNotifier; -import org.thoughtcrime.securesms.push.TextSecureCommunicationFactory; +import org.thoughtcrime.securesms.push.AccountManagerFactory; import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.sms.IncomingJoinedMessage; import org.thoughtcrime.securesms.util.DirectoryHelper.UserCapabilities.Capability; @@ -70,7 +70,7 @@ public class DirectoryHelper { throws IOException { List newUsers = refreshDirectory(context, - TextSecureCommunicationFactory.createManager(context), + AccountManagerFactory.createManager(context), TextSecurePreferences.getLocalNumber(context)); if (!newUsers.isEmpty() && TextSecurePreferences.isMultiDevice(context)) { @@ -112,7 +112,7 @@ public class DirectoryHelper { { try { TextSecureDirectory directory = TextSecureDirectory.getInstance(context); - SignalServiceAccountManager accountManager = TextSecureCommunicationFactory.createManager(context); + SignalServiceAccountManager accountManager = AccountManagerFactory.createManager(context); String number = Util.canonicalizeNumber(context, recipients.getPrimaryRecipient().getNumber()); Optional details = accountManager.getContact(number); diff --git a/test/unitTest/java/org/thoughtcrime/securesms/jobs/DeliveryReceiptJobTest.java b/test/unitTest/java/org/thoughtcrime/securesms/jobs/DeliveryReceiptJobTest.java index 9439f09011..ead94c85c0 100644 --- a/test/unitTest/java/org/thoughtcrime/securesms/jobs/DeliveryReceiptJobTest.java +++ b/test/unitTest/java/org/thoughtcrime/securesms/jobs/DeliveryReceiptJobTest.java @@ -4,7 +4,7 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; import org.thoughtcrime.securesms.BaseUnitTest; -import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory; +import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory; import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.api.push.exceptions.NotFoundException; @@ -91,8 +91,8 @@ public class DeliveryReceiptJobTest extends BaseUnitTest { } @Provides - TextSecureMessageSenderFactory provideSignalServiceMessageSenderFactory() { - return new TextSecureMessageSenderFactory() { + SignalMessageSenderFactory provideSignalServiceMessageSenderFactory() { + return new SignalMessageSenderFactory() { @Override public SignalServiceMessageSender create() { return textSecureMessageSender;