From a573ab7c7668360c3ab411627bbb23109ef9facc Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 27 Mar 2018 14:22:56 -0700 Subject: [PATCH] Setup alternate domain front. In preparation for Google shutting down domain fronting. Closes #7584 --- res/raw/censorship_fronting.store | Bin 6525 -> 2271 bytes ...ore.java => DomainFrontingTrustStore.java} | 4 +- .../push/SignalServiceNetworkAccess.java | 123 +++--------------- 3 files changed, 20 insertions(+), 107 deletions(-) rename src/org/thoughtcrime/securesms/push/{GoogleFrontingTrustStore.java => DomainFrontingTrustStore.java} (81%) diff --git a/res/raw/censorship_fronting.store b/res/raw/censorship_fronting.store index f91af9fa04d2d4c6e24c4b0c58869f98cebe79a1..88b3f43762e60a5efb7c53f23cbe38134aafa93b 100644 GIT binary patch delta 1220 zcmexsbYHNZfq{Vuh($zS*|J>n&$Buvbah(CcP^3d2d_+FU|`$C$iPyZUs}k(z?hVm z7PcO!l!1XYLeJE|l7WGx(x8c@)S!tub^$XJBNG!R!*V_^ACso-^#;6boLX%jZQpqr z8M#>*3^EM44LI4DLs{5_nL>jNRSlFu94=v*`rwkpqO{D^oD_wS)Z~o3{G9ys%+z8X z1<$->Jwqb{1CTmyVNHZG=bXgiVg(}w=hUK-%(Tqp#FEVXJO#(nl8pSK%#un2IdNVC zOCSX51%W7WUSksjGb0N_b7MlAq-~(C0A61&Mzq`PD#v3MRGI3Em)jvZD0w~%Pee!P!^n8RF;{XTC5P1pI?IH@KgmyUYNTT zbQRo|E>L}s&m`(OzEIm6CM^mzM;$Om;ddA=gn=OrNY)}Zz~abeg3!FW2s%T z)AX{eBc^n^hy7PwFu5SO`BqDb$l>&PEE!h!`y8TVz5LEQPqeOo9(IkP;B?Tt>e_Wy z&-WPqbp3WH;kI^v3>x1W@B>3rR+y3TKMSh?GmrvDmMlL= zfCZT7+6-ht3iw#WSVZQ;Gu&Urc-=tTqGQpHT(3Ew1Sd8d$b+PnStJa^8btQTZ@+l% zu6)~<=+HHHt_vLETiNm4z@Lpnn~jl`m7S51#o55opk4+hV8GZWkWo@nV5P60uUA}b zq*q$3Z=eX5Woi?J%2vQ+EA*06iwx92R?4%;8^{_+FOXay4p&zUQ&*&yT$BS&WU>k@ zTm~ElY-}u{vI-2KY*UYvZGM%8^zWJAJUe&(`^Q2*ZDKKd z+aMo&B-TVDd*AWUKk2Vd+t*LnWPDaSLZFH1#}ECl!U2!aIow@hE zPoBuJtIk2^?ZH>O%jOxgmCN#S)Cb>{PFdZg{xS2aZ``{2FAEQsE{|~0{bW-xW6iG2 zZBxtZ`3>WA{w!#>a?kuw8UIBjWXaSx!3v=S^>gzNmH$@`E|1;y|5fDk+vnF$n)Y60 zmZ?D1oQcQyYG;14m%RVADCD8&O7_U==KVo>ZateAQp#jJF5jqpkr#GmoeuMa>yj2T zpPb^9jQ-C)ZNrLs6HlT0VJp9Hh<|JRw#R+D0dwpZ=AO+fd4*X-864WH6b?#mse9eD O^N)3^0mrXa32y+wYq+QY literal 6525 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 diff --git a/src/org/thoughtcrime/securesms/push/GoogleFrontingTrustStore.java b/src/org/thoughtcrime/securesms/push/DomainFrontingTrustStore.java similarity index 81% rename from src/org/thoughtcrime/securesms/push/GoogleFrontingTrustStore.java rename to src/org/thoughtcrime/securesms/push/DomainFrontingTrustStore.java index 03167ec428..f2ce38c895 100644 --- a/src/org/thoughtcrime/securesms/push/GoogleFrontingTrustStore.java +++ b/src/org/thoughtcrime/securesms/push/DomainFrontingTrustStore.java @@ -8,11 +8,11 @@ import org.whispersystems.signalservice.api.push.TrustStore; import java.io.InputStream; -public class GoogleFrontingTrustStore implements TrustStore { +public class DomainFrontingTrustStore implements TrustStore { private final Context context; - public GoogleFrontingTrustStore(Context context) { + public DomainFrontingTrustStore(Context context) { this.context = context.getApplicationContext(); } diff --git a/src/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.java b/src/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.java index 5ea2c17718..15c3fd573c 100644 --- a/src/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.java +++ b/src/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.java @@ -22,133 +22,46 @@ public class SignalServiceNetworkAccess { private static final String TAG = SignalServiceNetworkAccess.class.getName(); - private static final String APPSPOT_SERVICE_REFLECTOR_HOST = "signal-reflector-meek.appspot.com"; - private static final String APPSPOT_CDN_REFLECTOR_HOST = "signal-cdn-reflector.appspot.com"; + private static final String COUNTRY_CODE_EGYPT = "+20"; + private static final String COUNTRY_CODE_UAE = "+971"; + private static final String COUNTRY_CODE_OMAN = "+968"; + private static final String COUNTRY_CODE_QATAR = "+974"; - private static final ConnectionSpec GMAPS_CONNECTION_SPEC = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) + private static final String SERVICE_REFLECTOR_HOST = "textsecure-service-reflected.whispersystems.org"; + + private static final ConnectionSpec SOUQ_CONNECTION_SPEC = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) .tlsVersions(TlsVersion.TLS_1_2) - .cipherSuites(CipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - CipherSuite.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, + .cipherSuites(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, - CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_DHE_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_DHE_RSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA) .supportsTlsExtensions(true) .build(); - private static final ConnectionSpec GMAIL_CONNECTION_SPEC = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) - .tlsVersions(TlsVersion.TLS_1_2) - .cipherSuites(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, - CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_DHE_RSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_DHE_RSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, - CipherSuite.TLS_ECDHE_RSA_WITH_RC4_128_SHA, - CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384, - CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_RSA_WITH_RC4_128_SHA, - CipherSuite.TLS_EMPTY_RENEGOTIATION_INFO_SCSV) - .supportsTlsExtensions(true) - .build(); - - private static final ConnectionSpec PLAY_CONNECTION_SPEC = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) - .tlsVersions(TlsVersion.TLS_1_2) - .cipherSuites(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, - CipherSuite.TLS_ECDHE_RSA_WITH_RC4_128_SHA, - CipherSuite.TLS_DHE_RSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_DHE_RSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_RSA_WITH_RC4_128_SHA, - CipherSuite.TLS_EMPTY_RENEGOTIATION_INFO_SCSV) - .supportsTlsExtensions(true) - .build(); - - private final Map censorshipConfiguration; private final String[] censoredCountries; private final SignalServiceConfiguration uncensoredConfiguration; public SignalServiceNetworkAccess(Context context) { - final TrustStore googleTrustStore = new GoogleFrontingTrustStore(context); - final SignalServiceUrl baseGoogleService = new SignalServiceUrl("https://www.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, GMAIL_CONNECTION_SPEC); - final SignalServiceUrl baseAndroidService = new SignalServiceUrl("https://android.clients.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, PLAY_CONNECTION_SPEC); - final SignalServiceUrl mapsOneAndroidService = new SignalServiceUrl("https://clients3.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, GMAPS_CONNECTION_SPEC); - final SignalServiceUrl mapsTwoAndroidService = new SignalServiceUrl("https://clients4.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, GMAPS_CONNECTION_SPEC); - final SignalServiceUrl mailAndroidService = new SignalServiceUrl("https://mail.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, GMAIL_CONNECTION_SPEC); - - final SignalCdnUrl baseGoogleCdn = new SignalCdnUrl("https://www.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, GMAIL_CONNECTION_SPEC); - final SignalCdnUrl baseAndroidCdn = new SignalCdnUrl("https://android.clients.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, PLAY_CONNECTION_SPEC); - final SignalCdnUrl mapsOneAndroidCdn = new SignalCdnUrl("https://clients3.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, GMAPS_CONNECTION_SPEC); - final SignalCdnUrl mapsTwoAndroidCdn = new SignalCdnUrl("https://clients4.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, GMAPS_CONNECTION_SPEC); - final SignalCdnUrl mailAndroidCdn = new SignalCdnUrl("https://mail.google.com", APPSPOT_SERVICE_REFLECTOR_HOST, googleTrustStore, GMAIL_CONNECTION_SPEC); + final TrustStore trustStore = new DomainFrontingTrustStore(context); + final SignalServiceUrl service = new SignalServiceUrl("https://cms.souqcdn.com", SERVICE_REFLECTOR_HOST, trustStore, SOUQ_CONNECTION_SPEC); + final SignalCdnUrl serviceCdn = new SignalCdnUrl("https://cms.souqcdn.com", SERVICE_REFLECTOR_HOST, trustStore, SOUQ_CONNECTION_SPEC); + final SignalServiceConfiguration serviceConfig = new SignalServiceConfiguration(new SignalServiceUrl[] { service }, + new SignalCdnUrl[] { serviceCdn }); this.censorshipConfiguration = new HashMap() {{ - put("+20", new SignalServiceConfiguration(new SignalServiceUrl[] {new SignalServiceUrl("https://www.google.com.eg", - APPSPOT_SERVICE_REFLECTOR_HOST, - googleTrustStore, GMAIL_CONNECTION_SPEC), - baseAndroidService, mapsOneAndroidService, mapsTwoAndroidService, mailAndroidService}, - new SignalCdnUrl[] {new SignalCdnUrl("https://www.google.com.eg", - APPSPOT_CDN_REFLECTOR_HOST, - googleTrustStore, GMAIL_CONNECTION_SPEC), - baseAndroidCdn, mapsOneAndroidCdn, mapsTwoAndroidCdn, mailAndroidCdn, mailAndroidCdn})); - - put("+971", new SignalServiceConfiguration(new SignalServiceUrl[] {new SignalServiceUrl("https://www.google.ae", - APPSPOT_SERVICE_REFLECTOR_HOST, - googleTrustStore, GMAIL_CONNECTION_SPEC), - baseAndroidService, baseGoogleService, mapsOneAndroidService, mapsTwoAndroidService, mailAndroidService}, - new SignalCdnUrl[] {new SignalCdnUrl("https://www.google.ae", - APPSPOT_CDN_REFLECTOR_HOST, - googleTrustStore, GMAIL_CONNECTION_SPEC), - baseAndroidCdn, baseGoogleCdn, mapsOneAndroidCdn, mapsTwoAndroidCdn, mailAndroidCdn})); - - put("+968", new SignalServiceConfiguration(new SignalServiceUrl[] {new SignalServiceUrl("https://www.google.com.om", - APPSPOT_SERVICE_REFLECTOR_HOST, - googleTrustStore, GMAIL_CONNECTION_SPEC), - baseAndroidService, baseGoogleService, mapsOneAndroidService, mapsTwoAndroidService, mailAndroidService}, - new SignalCdnUrl[] {new SignalCdnUrl("https://www.google.com.om", - APPSPOT_CDN_REFLECTOR_HOST, - googleTrustStore, GMAIL_CONNECTION_SPEC), - baseAndroidCdn, baseGoogleCdn, mapsOneAndroidCdn, mapsTwoAndroidCdn, mailAndroidCdn})); - - put("+974", new SignalServiceConfiguration(new SignalServiceUrl[] {new SignalServiceUrl("https://www.google.com.qa", - APPSPOT_SERVICE_REFLECTOR_HOST, - googleTrustStore, GMAIL_CONNECTION_SPEC), - baseAndroidService, baseGoogleService, mapsOneAndroidService, mapsTwoAndroidService, mailAndroidService}, - new SignalCdnUrl[] {new SignalCdnUrl("https://www.google.com.qa", - APPSPOT_CDN_REFLECTOR_HOST, - googleTrustStore, GMAIL_CONNECTION_SPEC), - baseAndroidCdn, baseGoogleCdn, mapsOneAndroidCdn, mapsTwoAndroidCdn, mailAndroidCdn})); + put(COUNTRY_CODE_EGYPT, serviceConfig); + put(COUNTRY_CODE_UAE, serviceConfig); + put(COUNTRY_CODE_OMAN, serviceConfig); + put(COUNTRY_CODE_QATAR, serviceConfig); }}; this.uncensoredConfiguration = new SignalServiceConfiguration(new SignalServiceUrl[] {new SignalServiceUrl(BuildConfig.SIGNAL_URL, new SignalServiceTrustStore(context))},