X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/1ace8a21efd5b5d5ff371cfca652eaa98b63b0ef..101cbbe492469265603145640835e244d6e2949a:/src/com/owncloud/android/authentication/SsoWebViewClient.java diff --git a/src/com/owncloud/android/authentication/SsoWebViewClient.java b/src/com/owncloud/android/authentication/SsoWebViewClient.java index aa193143..89f66ef2 100644 --- a/src/com/owncloud/android/authentication/SsoWebViewClient.java +++ b/src/com/owncloud/android/authentication/SsoWebViewClient.java @@ -18,16 +18,15 @@ package com.owncloud.android.authentication; import java.io.ByteArrayInputStream; -import java.io.IOException; import java.lang.ref.WeakReference; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import com.owncloud.android.lib.common.network.NetworkUtils; +import com.actionbarsherlock.app.SherlockFragmentActivity; +import com.owncloud.android.ui.dialog.SslUntrustedCertDialogABSTRACT; import com.owncloud.android.utils.Log_OC; import android.content.Context; @@ -37,6 +36,8 @@ import android.net.http.SslError; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; import android.view.KeyEvent; import android.view.View; import android.webkit.CookieManager; @@ -149,35 +150,35 @@ public class SsoWebViewClient extends WebViewClient { } @Override - public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) { + public void onReceivedSslError (final WebView view, final SslErrorHandler handler, SslError error) { Log_OC.d(TAG, "onReceivedSslError : " + error); // Test 1 X509Certificate x509Certificate = getX509CertificateFromError(error); - boolean isKnowServer = false; + boolean isKnownServer = false; if (x509Certificate != null) { Log_OC.d(TAG, "------>>>>> x509Certificate " + x509Certificate.toString()); try { - isKnowServer = NetworkUtils.isCertInKnownServersStore((Certificate) x509Certificate, mContext); - } catch (KeyStoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (CertificateException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + isKnownServer = NetworkUtils.isCertInKnownServersStore((Certificate) x509Certificate, mContext); + } catch (Exception e) { + Log_OC.e(TAG, "Exception: " + e.getMessage()); } } - if (isKnowServer) { + + if (isKnownServer) { handler.proceed(); + } else if (x509Certificate != null) { + // Show a dialog with the certificate info + ((AuthenticatorActivity)mContext).showUntrustedCertDialog(x509Certificate, error); + handler.cancel(); } else { - + // Show a dialog with the certificate information available in SslError (not full) + SslUntrustedCertDialogABSTRACT dialog = SslUntrustedCertDialogABSTRACT.newInstanceForEmptySslError(error, handler); + FragmentManager fm = ((SherlockFragmentActivity)mContext).getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + dialog.show(ft, AuthenticatorActivity.DIALOG_UNTRUSTED_CERT); + // let's forward the handler, and see what happens... } } @@ -200,12 +201,7 @@ public class SsoWebViewClient extends WebViewClient { } catch (CertificateException e) { x509Certificate = null; } - } - -// if (x509Certificate != null) { -// Log_OC.d(TAG, "------>>>>> x509Certificate " + x509Certificate.toString()); -// } - + } return x509Certificate; }