Skip to content

Commit 06c8b76

Browse files
committed
Update Conscrypt to 2.1.0, activate the default cipher suite in cross-arch loader
1 parent dfb1e7f commit 06c8b76

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

play-services-core/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies {
3030
implementation "com.squareup.wire:wire-runtime:1.6.1"
3131
implementation "com.takisoft.fix:preference-v7:$supportLibraryVersion.0"
3232
implementation "de.hdodenhof:circleimageview:1.3.0"
33-
implementation "org.conscrypt:conscrypt-android:2.0.0"
33+
implementation "org.conscrypt:conscrypt-android:2.1.0"
3434
// TODO: Switch to upstream once raw requests are merged
3535
// https://github.com/vitalidze/chromecast-java-api-v2/pull/99
3636
// implementation "su.litvak.chromecast:api-v2:0.10.4"

play-services-core/src/main/java/com/google/android/gms/common/security/ProviderInstallerImpl.java

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
import java.lang.reflect.Method;
3636
import java.security.Security;
3737
import java.util.Collections;
38-
import java.util.Enumeration;
3938
import java.util.List;
39+
import java.util.Set;
4040
import java.util.zip.ZipEntry;
4141
import java.util.zip.ZipFile;
4242

@@ -86,13 +86,57 @@ public static void insertProvider(Context context) {
8686
System.load(cacheFile.getAbsolutePath());
8787

8888
Class<NativeCrypto> clazz = NativeCrypto.class;
89+
8990
Field loadError = clazz.getDeclaredField("loadError");
9091
loadError.setAccessible(true);
9192
loadError.set(null, null);
92-
Method clinit =clazz.getDeclaredMethod("clinit");
93+
94+
Method clinit = clazz.getDeclaredMethod("clinit");
9395
clinit.setAccessible(true);
96+
97+
Method get_cipher_names = clazz.getDeclaredMethod("get_cipher_names", String.class);
98+
get_cipher_names.setAccessible(true);
99+
100+
Method cipherSuiteToJava = clazz.getDeclaredMethod("cipherSuiteToJava", String.class);
101+
cipherSuiteToJava.setAccessible(true);
102+
103+
Method EVP_has_aes_hardware = clazz.getDeclaredMethod("EVP_has_aes_hardware");
104+
EVP_has_aes_hardware.setAccessible(true);
105+
106+
Field f = clazz.getDeclaredField("SUPPORTED_TLS_1_2_CIPHER_SUITES_SET");
107+
f.setAccessible(true);
108+
109+
Set<String> SUPPORTED_TLS_1_2_CIPHER_SUITES_SET = (Set<String>) f.get(null);
110+
f = clazz.getDeclaredField("SUPPORTED_LEGACY_CIPHER_SUITES_SET");
111+
f.setAccessible(true);
112+
113+
Set<String> SUPPORTED_LEGACY_CIPHER_SUITES_SET = (Set<String>) f.get(null);
114+
f = clazz.getDeclaredField("SUPPORTED_TLS_1_2_CIPHER_SUITES");
115+
f.setAccessible(true);
116+
94117
try {
95118
clinit.invoke(null);
119+
120+
String[] allCipherSuites = (String[]) get_cipher_names.invoke(null, "ALL:!DHE");
121+
int size = allCipherSuites.length;
122+
123+
String[] SUPPORTED_TLS_1_2_CIPHER_SUITES = new String[size / 2 + 2];
124+
for (int i = 0; i < size; i += 2) {
125+
String cipherSuite = (String) cipherSuiteToJava.invoke(null, allCipherSuites[i]);
126+
127+
SUPPORTED_TLS_1_2_CIPHER_SUITES[i / 2] = cipherSuite;
128+
SUPPORTED_TLS_1_2_CIPHER_SUITES_SET.add(cipherSuite);
129+
130+
SUPPORTED_LEGACY_CIPHER_SUITES_SET.add(allCipherSuites[i + 1]);
131+
}
132+
SUPPORTED_TLS_1_2_CIPHER_SUITES[size / 2] = "TLS_EMPTY_RENEGOTIATION_INFO_SCSV";
133+
SUPPORTED_TLS_1_2_CIPHER_SUITES[size / 2 + 1] = "TLS_FALLBACK_SCSV";
134+
f.set(null, SUPPORTED_TLS_1_2_CIPHER_SUITES);
135+
136+
f = clazz.getDeclaredField("HAS_AES_HARDWARE");
137+
f.setAccessible(true);
138+
f.set(null, (int) EVP_has_aes_hardware.invoke(null) == 1);
139+
96140
provider = new OpenSSLProvider("GmsCore_OpenSSL");
97141
} catch (InvocationTargetException inner) {
98142
if (inner.getTargetException() instanceof UnsatisfiedLinkError) {

0 commit comments

Comments
 (0)