From f29f360163280f25d425c2c8abebe18a164c4c63 Mon Sep 17 00:00:00 2001 From: Gleidson Daniel Silva Date: Thu, 13 Jan 2022 10:05:52 -0300 Subject: [PATCH 1/2] Chore: Update react-native-device-info patch-package and pods (#3605) --- ios/Podfile.lock | 8 ++++---- ...o+8.1.3.patch => react-native-device-info+8.4.8.patch} | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) rename patches/{react-native-device-info+8.1.3.patch => react-native-device-info+8.4.8.patch} (98%) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 8ebb0485..08c8e3c0 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -514,7 +514,7 @@ PODS: - React-Core - RNDateTimePicker (3.5.2): - React-Core - - RNDeviceInfo (8.1.3): + - RNDeviceInfo (8.4.8): - React-Core - RNFastImage (8.2.0): - React @@ -950,7 +950,7 @@ SPEC CHECKSUMS: EXVideoThumbnails: 442c3abadb51a81551a3b53705b7560de390e6f7 EXWebBrowser: 76783ba5dcb8699237746ecf41a9643d428a4cc5 FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b - FBReactNativeSpec: 686ac17e193dcf7d5df4d772b224504dd2f3ad81 + FBReactNativeSpec: 8a1012a62d7a3d667376b413656d780b8e4680ce Firebase: 919186c8e119dd9372a45fd1dd17a8a942bc1892 FirebaseAnalytics: 5fa308e1b13f838d0f6dc74719ac2a72e8c5afc4 FirebaseCore: 8cd4f8ea22075e0ee582849b1cf79d8816506085 @@ -1028,7 +1028,7 @@ SPEC CHECKSUMS: RNConfigReader: 396da6a6444182a76e8ae0930b9436c7575045cb RNCPicker: 914b557e20b3b8317b084aca9ff4b4edb95f61e4 RNDateTimePicker: 7658208086d86d09e1627b5c34ba0cf237c60140 - RNDeviceInfo: 8d3a29207835f972bce883723882980143270d55 + RNDeviceInfo: 0400a6d0c94186d1120c3cbd97b23abc022187a9 RNFastImage: f40d202ea2367239f71bc7cf11315f4bebab85b4 RNFBAnalytics: dae6d7b280ba61c96e1bbdd34aca3154388f025e RNFBApp: 6fd8a7e757135d4168bf033a8812c241af7363a0 @@ -1055,4 +1055,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 9fd323641c96f6bf98b309066332c3ff95b9cf15 -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.2 diff --git a/patches/react-native-device-info+8.1.3.patch b/patches/react-native-device-info+8.4.8.patch similarity index 98% rename from patches/react-native-device-info+8.1.3.patch rename to patches/react-native-device-info+8.4.8.patch index 1a9bf25d..07b421f6 100644 --- a/patches/react-native-device-info+8.1.3.patch +++ b/patches/react-native-device-info+8.4.8.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-device-info/android/build.gradle b/node_modules/react-native-device-info/android/build.gradle -index 952667b..03cf7fd 100644 +index de22598..eafedfe 100644 --- a/node_modules/react-native-device-info/android/build.gradle +++ b/node_modules/react-native-device-info/android/build.gradle @@ -51,16 +51,19 @@ repositories { From 9d9553b075259068f91f98e907be828d815e81af Mon Sep 17 00:00:00 2001 From: Alex Junior Date: Thu, 13 Jan 2022 10:22:58 -0300 Subject: [PATCH 2/2] [FIX] App crashes when entering server after applying certificate (Android) (#3579) --- .../networking/SSLPinningModule.java | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/android/app/src/main/java/chat/rocket/reactnative/networking/SSLPinningModule.java b/android/app/src/main/java/chat/rocket/reactnative/networking/SSLPinningModule.java index 6a690a18..aad80785 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/networking/SSLPinningModule.java +++ b/android/app/src/main/java/chat/rocket/reactnative/networking/SSLPinningModule.java @@ -11,9 +11,12 @@ import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.Promise; import java.net.Socket; +import java.security.KeyStore; import java.security.Principal; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; + +import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509ExtendedKeyManager; import java.security.PrivateKey; import javax.net.ssl.SSLContext; @@ -21,11 +24,12 @@ import javax.net.ssl.X509TrustManager; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import okhttp3.OkHttpClient; -import java.lang.InterruptedException; import android.app.Activity; import javax.net.ssl.KeyManager; import android.security.KeyChain; import android.security.KeyChainAliasCallback; + +import java.util.Arrays; import java.util.concurrent.TimeUnit; import com.RNFetchBlob.RNFetchBlob; @@ -52,8 +56,9 @@ public class SSLPinningModule extends ReactContextBaseJavaModule implements KeyC public void apply(OkHttpClient.Builder builder) { if (alias != null) { SSLSocketFactory sslSocketFactory = getSSLFactory(alias); + X509TrustManager trustManager = getTrustManagerFactory(); if (sslSocketFactory != null) { - builder.sslSocketFactory(sslSocketFactory); + builder.sslSocketFactory(sslSocketFactory, trustManager); } } } @@ -68,8 +73,9 @@ public class SSLPinningModule extends ReactContextBaseJavaModule implements KeyC if (alias != null) { SSLSocketFactory sslSocketFactory = getSSLFactory(alias); + X509TrustManager trustManager = getTrustManagerFactory(); if (sslSocketFactory != null) { - builder.sslSocketFactory(sslSocketFactory); + builder.sslSocketFactory(sslSocketFactory, trustManager); } } @@ -162,25 +168,9 @@ public class SSLPinningModule extends ReactContextBaseJavaModule implements KeyC } }; - final TrustManager[] trustAllCerts = new TrustManager[] { - new X509TrustManager() { - @Override - public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { - } - - @Override - public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { - } - - @Override - public java.security.cert.X509Certificate[] getAcceptedIssuers() { - return certChain; - } - } - }; - + final X509TrustManager trustManager = getTrustManagerFactory(); final SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(new KeyManager[]{keyManager}, trustAllCerts, new java.security.SecureRandom()); + sslContext.init(new KeyManager[]{keyManager}, new TrustManager[]{trustManager}, new java.security.SecureRandom()); SSLContext.setDefault(sslContext); final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); @@ -190,4 +180,19 @@ public class SSLPinningModule extends ReactContextBaseJavaModule implements KeyC return null; } } + + public static X509TrustManager getTrustManagerFactory() { + try { + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManagerFactory.init((KeyStore) null); + TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); + if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) { + throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers)); + } + final X509TrustManager trustManager = (X509TrustManager) trustManagers[0]; + return trustManager; + } catch (Exception e) { + return null; + } + } }