No Description

RNFetchBlobUtils.java 3.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.RNFetchBlob;
  2. import com.facebook.react.bridge.Arguments;
  3. import com.facebook.react.bridge.WritableMap;
  4. import com.facebook.react.modules.core.DeviceEventManagerModule;
  5. import java.security.MessageDigest;
  6. import java.security.cert.CertificateException;
  7. import javax.net.ssl.HostnameVerifier;
  8. import javax.net.ssl.SSLContext;
  9. import javax.net.ssl.SSLSession;
  10. import javax.net.ssl.SSLSocketFactory;
  11. import javax.net.ssl.TrustManager;
  12. import javax.net.ssl.X509TrustManager;
  13. import okhttp3.OkHttpClient;
  14. public class RNFetchBlobUtils {
  15. public static String getMD5(String input) {
  16. String result = null;
  17. try {
  18. MessageDigest md = MessageDigest.getInstance("MD5");
  19. md.update(input.getBytes());
  20. byte[] digest = md.digest();
  21. StringBuilder sb = new StringBuilder();
  22. for (byte b : digest) {
  23. sb.append(String.format("%02x", b & 0xff));
  24. }
  25. result = sb.toString();
  26. } catch (Exception ex) {
  27. ex.printStackTrace();
  28. } finally {
  29. // TODO: Is discarding errors the intent? (https://www.owasp.org/index.php/Return_Inside_Finally_Block)
  30. return result;
  31. }
  32. }
  33. public static void emitWarningEvent(String data) {
  34. WritableMap args = Arguments.createMap();
  35. args.putString("event", "warn");
  36. args.putString("detail", data);
  37. // emit event to js context
  38. RNFetchBlob.RCTContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
  39. .emit(RNFetchBlobConst.EVENT_MESSAGE, args);
  40. }
  41. public static OkHttpClient.Builder getUnsafeOkHttpClient(OkHttpClient client) {
  42. try {
  43. // Create a trust manager that does not validate certificate chains
  44. final TrustManager[] trustAllCerts = new TrustManager[]{
  45. new X509TrustManager() {
  46. @Override
  47. public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
  48. }
  49. @Override
  50. public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
  51. }
  52. @Override
  53. public java.security.cert.X509Certificate[] getAcceptedIssuers() {
  54. return new java.security.cert.X509Certificate[]{};
  55. }
  56. }
  57. };
  58. // Install the all-trusting trust manager
  59. final SSLContext sslContext = SSLContext.getInstance("SSL");
  60. sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
  61. // Create an ssl socket factory with our all-trusting manager
  62. final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
  63. OkHttpClient.Builder builder = client.newBuilder();
  64. builder.sslSocketFactory(sslSocketFactory);
  65. builder.hostnameVerifier(new HostnameVerifier() {
  66. @Override
  67. public boolean verify(String hostname, SSLSession session) {
  68. return true;
  69. }
  70. });
  71. return builder;
  72. } catch (Exception e) {
  73. throw new RuntimeException(e);
  74. }
  75. }
  76. }