X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fhelpers%2FCheckPinnedMismatchHelper.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fhelpers%2FCheckPinnedMismatchHelper.java;h=0000000000000000000000000000000000000000;hp=011b783f37338a84ee81000c35d57e1874bfb893;hb=38919c77d15eeacbee96ab337afc62b30ddc74ca;hpb=333ec579b52efbfbad89e0150c7c320822ba9ecf diff --git a/app/src/main/java/com/stoutner/privacybrowser/helpers/CheckPinnedMismatchHelper.java b/app/src/main/java/com/stoutner/privacybrowser/helpers/CheckPinnedMismatchHelper.java deleted file mode 100644 index 011b783f..00000000 --- a/app/src/main/java/com/stoutner/privacybrowser/helpers/CheckPinnedMismatchHelper.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright © 2018-2019,2021-2022 Soren Stoutner . - * - * This file is part of Privacy Browser Android . - * - * Privacy Browser Android is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Privacy Browser Android is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Privacy Browser Android. If not, see . - */ - -package com.stoutner.privacybrowser.helpers; - -import android.app.Activity; -import android.net.http.SslCertificate; - -import androidx.fragment.app.DialogFragment; -import androidx.fragment.app.FragmentManager; - -import com.stoutner.privacybrowser.R; -import com.stoutner.privacybrowser.activities.MainWebViewActivity; -import com.stoutner.privacybrowser.dataclasses.PendingDialog; -import com.stoutner.privacybrowser.dialogs.PinnedMismatchDialog; -import com.stoutner.privacybrowser.views.NestedScrollWebView; - -import java.util.ArrayList; -import java.util.Date; - -public class CheckPinnedMismatchHelper { - public static void checkPinnedMismatch(Activity activity, FragmentManager fragmentManager, NestedScrollWebView nestedScrollWebView) { - // Initialize the current SSL certificate variables. - String currentWebsiteIssuedToCName = ""; - String currentWebsiteIssuedToOName = ""; - String currentWebsiteIssuedToUName = ""; - String currentWebsiteIssuedByCName = ""; - String currentWebsiteIssuedByOName = ""; - String currentWebsiteIssuedByUName = ""; - Date currentWebsiteSslStartDate = null; - Date currentWebsiteSslEndDate = null; - - // Initialize the pinned SSL certificate variables. - String pinnedSslIssuedToCName = ""; - String pinnedSslIssuedToOName = ""; - String pinnedSslIssuedToUName = ""; - String pinnedSslIssuedByCName = ""; - String pinnedSslIssuedByOName = ""; - String pinnedSslIssuedByUName = ""; - Date pinnedSslStartDate = null; - Date pinnedSslEndDate = null; - - // Get the current website SSL certificate. - SslCertificate currentWebsiteSslCertificate = nestedScrollWebView.getCertificate(); - - // Extract the individual pieces of information from the current website SSL certificate if it is not null. - if (currentWebsiteSslCertificate != null) { - currentWebsiteIssuedToCName = currentWebsiteSslCertificate.getIssuedTo().getCName(); - currentWebsiteIssuedToOName = currentWebsiteSslCertificate.getIssuedTo().getOName(); - currentWebsiteIssuedToUName = currentWebsiteSslCertificate.getIssuedTo().getUName(); - currentWebsiteIssuedByCName = currentWebsiteSslCertificate.getIssuedBy().getCName(); - currentWebsiteIssuedByOName = currentWebsiteSslCertificate.getIssuedBy().getOName(); - currentWebsiteIssuedByUName = currentWebsiteSslCertificate.getIssuedBy().getUName(); - currentWebsiteSslStartDate = currentWebsiteSslCertificate.getValidNotBeforeDate(); - currentWebsiteSslEndDate = currentWebsiteSslCertificate.getValidNotAfterDate(); - } - - // Get the pinned SSL certificate information if it exists. - if (nestedScrollWebView.hasPinnedSslCertificate()) { - // Get the pinned SSL certificate. - ArrayList pinnedSslCertificateArrayList = nestedScrollWebView.getPinnedSslCertificate(); - - // Extract the arrays from the array list. - String[] pinnedSslCertificateStringArray = (String[]) pinnedSslCertificateArrayList.get(0); - Date[] pinnedSslCertificateDateArray = (Date[]) pinnedSslCertificateArrayList.get(1); - - // Populate the pinned SSL certificate string variables. - pinnedSslIssuedToCName = pinnedSslCertificateStringArray[0]; - pinnedSslIssuedToOName = pinnedSslCertificateStringArray[1]; - pinnedSslIssuedToUName = pinnedSslCertificateStringArray[2]; - pinnedSslIssuedByCName = pinnedSslCertificateStringArray[3]; - pinnedSslIssuedByOName = pinnedSslCertificateStringArray[4]; - pinnedSslIssuedByUName = pinnedSslCertificateStringArray[5]; - - // Populate the pinned SSL certificate date variables. - pinnedSslStartDate = pinnedSslCertificateDateArray[0]; - pinnedSslEndDate = pinnedSslCertificateDateArray[1]; - } - - // Initialize string variables to store the SSL certificate dates. Strings are needed to compare the values below, which doesn't work with dates if the first one is null. - String currentWebsiteSslStartDateString = ""; - String currentWebsiteSslEndDateString = ""; - String pinnedSslStartDateString = ""; - String pinnedSslEndDateString = ""; - - // Convert the dates to strings if they are not null. - if (currentWebsiteSslStartDate != null) { - currentWebsiteSslStartDateString = currentWebsiteSslStartDate.toString(); - } - - if (currentWebsiteSslEndDate != null) { - currentWebsiteSslEndDateString = currentWebsiteSslEndDate.toString(); - } - - if (pinnedSslStartDate != null) { - pinnedSslStartDateString = pinnedSslStartDate.toString(); - } - - if (pinnedSslEndDate != null) { - pinnedSslEndDateString = pinnedSslEndDate.toString(); - } - - // Check to see if the pinned information matches the current information. - if ((!nestedScrollWebView.getPinnedIpAddresses().equals("") && !nestedScrollWebView.getCurrentIpAddresses().equals(nestedScrollWebView.getPinnedIpAddresses())) || - (nestedScrollWebView.hasPinnedSslCertificate() && (!currentWebsiteIssuedToCName.equals(pinnedSslIssuedToCName) || - !currentWebsiteIssuedToOName.equals(pinnedSslIssuedToOName) || !currentWebsiteIssuedToUName.equals(pinnedSslIssuedToUName) || - !currentWebsiteIssuedByCName.equals(pinnedSslIssuedByCName) || !currentWebsiteIssuedByOName.equals(pinnedSslIssuedByOName) || - !currentWebsiteIssuedByUName.equals(pinnedSslIssuedByUName) || !currentWebsiteSslStartDateString.equals(pinnedSslStartDateString) || - !currentWebsiteSslEndDateString.equals(pinnedSslEndDateString)))) { - - // Get a handle for the pinned mismatch alert dialog. - DialogFragment pinnedMismatchDialogFragment = PinnedMismatchDialog.displayDialog(nestedScrollWebView.getWebViewFragmentId()); - - // Try to show the dialog. Sometimes the window is not active. - try { - // Show the pinned mismatch alert dialog. - pinnedMismatchDialogFragment.show(fragmentManager, activity.getString(R.string.pinned_mismatch)); - } catch (Exception exception) { - // Add the dialog to the pending dialog array list. It will be displayed in `onStart()`. - MainWebViewActivity.pendingDialogsArrayList.add(new PendingDialog(pinnedMismatchDialogFragment, activity.getString(R.string.pinned_mismatch))); - } - } - } -} \ No newline at end of file