X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/0a7d508f92c758a47376bf833c54c2511482f1f4..ee79b7a9a957e74b94b6c84ee5136d4fa6b124a9:/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 4f26a805..9d9bca15 100644 --- a/src/com/owncloud/android/authentication/SsoWebViewClient.java +++ b/src/com/owncloud/android/authentication/SsoWebViewClient.java @@ -17,15 +17,33 @@ package com.owncloud.android.authentication; +import java.io.ByteArrayInputStream; +import java.io.IOException; import java.lang.ref.WeakReference; +import java.security.KeyStore; +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.Log_OC; +import com.owncloud.android.lib.common.network.NetworkUtils; +import com.owncloud.android.utils.Log_OC; +import android.content.Context; import android.graphics.Bitmap; +import android.net.http.SslCertificate; +import android.net.http.SslError; +import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.view.KeyEvent; import android.view.View; import android.webkit.CookieManager; +import android.webkit.HttpAuthHandler; +import android.webkit.SslErrorHandler; +import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; @@ -106,7 +124,7 @@ public class SsoWebViewClient extends WebViewClient { view.setVisibility(View.GONE); CookieManager cookieManager = CookieManager.getInstance(); final String cookies = cookieManager.getCookie(url); - //Log_OC.d(TAG, "Cookies: " + cookies); + Log_OC.d(TAG, "Cookies: " + cookies); if (mListenerHandler != null && mListenerRef != null) { // this is good idea because onPageFinished is not running in the UI thread mListenerHandler.post(new Runnable() { @@ -114,16 +132,16 @@ public class SsoWebViewClient extends WebViewClient { public void run() { SsoWebViewClientListener listener = mListenerRef.get(); if (listener != null) { + // Send Cookies to the listener listener.onSsoFinished(cookies); } } }); } - } - + } } - /* + @Override public void doUpdateVisitedHistory (WebView view, String url, boolean isReload) { Log_OC.d(TAG, "doUpdateVisitedHistory : " + url); @@ -132,6 +150,43 @@ public class SsoWebViewClient extends WebViewClient { @Override public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) { Log_OC.d(TAG, "onReceivedSslError : " + error); + // Test 1 + X509Certificate x509Certificate = getX509CertificateFromError(error); + + if (x509Certificate != null) { + Log_OC.d(TAG, "------>>>>> x509Certificate " + x509Certificate.toString()); + + } + + handler.proceed(); + } + + /** + * Obtain the X509Certificate from SslError + * @param error SslError + * @return X509Certificate from error + */ + public X509Certificate getX509CertificateFromError (SslError error) { + Bundle bundle = SslCertificate.saveState(error.getCertificate()); + X509Certificate x509Certificate; + byte[] bytes = bundle.getByteArray("x509-certificate"); + if (bytes == null) { + x509Certificate = null; + } else { + try { + CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); + Certificate cert = certFactory.generateCertificate(new ByteArrayInputStream(bytes)); + x509Certificate = (X509Certificate) cert; + } catch (CertificateException e) { + x509Certificate = null; + } + } + +// if (x509Certificate != null) { +// Log_OC.d(TAG, "------>>>>> x509Certificate " + x509Certificate.toString()); +// } + + return x509Certificate; } @Override @@ -171,5 +226,5 @@ public class SsoWebViewClient extends WebViewClient { Log_OC.d(TAG, "shouldOverrideKeyEvent : " + event); return false; } - */ + }