Skip to content

Commit b70093b

Browse files
committed
option to trust all web certs for very old android phones
1 parent 5c925e9 commit b70093b

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

android-refimpl-app/app/src/main/java/com/zoffcc/applications/trifa/MainActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,7 @@ public class MainActivity extends AppCompatActivity
530530
static int PREF__ngc_audio_channels = 1;
531531
static boolean PREF__gainprocessing_active = true;
532532
static boolean PREF__rnnoise_active = false;
533+
static boolean PREF__trust_all_webcerts = false; // HINT: !!be careful with this option!!
533534

534535
static String versionName = "";
535536
static int versionCode = -1;

android-refimpl-app/app/src/main/java/com/zoffcc/applications/trifa/MaintenanceActivity.java

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import android.media.MediaPlayer;
3030
import android.media.Ringtone;
3131
import android.media.RingtoneManager;
32+
import android.net.SSLCertificateSocketFactory;
3233
import android.net.Uri;
3334
import android.os.AsyncTask;
3435
import android.os.Build;
@@ -43,15 +44,23 @@
4344
import com.google.gson.Gson;
4445
import com.yariksoffice.lingver.Lingver;
4546

47+
import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
48+
4649
import java.io.File;
4750
import java.io.IOException;
4851
import java.io.PrintWriter;
52+
import java.net.HttpURLConnection;
4953
import java.util.ArrayList;
5054
import java.util.Iterator;
5155
import java.util.List;
5256
import java.util.Locale;
5357
import java.util.concurrent.TimeUnit;
5458

59+
import javax.net.ssl.HttpsURLConnection;
60+
import javax.net.ssl.SSLContext;
61+
import javax.net.ssl.TrustManager;
62+
import javax.net.ssl.X509TrustManager;
63+
5564
import androidx.annotation.NonNull;
5665
import androidx.appcompat.app.AlertDialog;
5766
import androidx.appcompat.app.AppCompatActivity;
@@ -74,6 +83,7 @@
7483
import static com.zoffcc.applications.trifa.MainActivity.MAIN_VFS_NAME;
7584
import static com.zoffcc.applications.trifa.MainActivity.PREF__DB_secrect_key;
7685
import static com.zoffcc.applications.trifa.MainActivity.PREF__orbot_enabled;
86+
import static com.zoffcc.applications.trifa.MainActivity.PREF__trust_all_webcerts;
7787
import static com.zoffcc.applications.trifa.MainActivity.SD_CARD_ENC_CHATS_EXPORT_DIR;
7888
import static com.zoffcc.applications.trifa.MainActivity.SD_CARD_ENC_FILES_EXPORT_DIR;
7989
import static com.zoffcc.applications.trifa.MainActivity.SD_CARD_FILES_EXPORT_DIR;
@@ -372,8 +382,61 @@ public void onClick(View v)
372382
}
373383
else
374384
{
385+
/*
386+
*
387+
* this will trust all CERTS
388+
* !!DANGER!! !!DANGER!!
389+
*/
390+
TrustManager[] trustAllCerts = new TrustManager[]{
391+
new X509TrustManager() {
392+
@Override
393+
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {
394+
}
395+
396+
@Override
397+
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
398+
}
399+
400+
@Override
401+
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
402+
return new java.security.cert.X509Certificate[]{};
403+
}
404+
}
405+
};
406+
SSLContext sslContext = SSLContext.getInstance("SSL");
407+
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
408+
/*
409+
*
410+
* this will trust all CERTS
411+
* !!DANGER!! !!DANGER!!
412+
*/
413+
414+
// this is correct call in all cases -------------
415+
// this is correct call in all cases -------------
416+
OkHttpClient.Builder newBuilder = new OkHttpClient.Builder();
417+
// this is correct call in all cases -------------
418+
// this is correct call in all cases -------------
419+
420+
/*
421+
*
422+
* this will trust all CERTS
423+
* !!DANGER!! !!DANGER!!
424+
* to avoid this: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
425+
* when your android is just too old
426+
*/
427+
if (PREF__trust_all_webcerts)
428+
{
429+
newBuilder.sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0]);
430+
newBuilder.hostnameVerifier((hostname, session) -> true);
431+
}
432+
/*
433+
*
434+
* this will trust all CERTS
435+
* !!DANGER!! !!DANGER!!
436+
*/
437+
375438
Log.i(TAG, "StrongOkHttpClientBuilder:002");
376-
onConnected(new OkHttpClient.Builder().
439+
onConnected(newBuilder.
377440
addNetworkInterceptor(new Interceptor()
378441
{
379442
@NonNull

0 commit comments

Comments
 (0)