Example usage for java.security.cert CertificateException printStackTrace

List of usage examples for java.security.cert CertificateException printStackTrace

Introduction

In this page you can find the example usage for java.security.cert CertificateException printStackTrace.

Prototype

public void printStackTrace() 

Source Link

Document

Prints this throwable and its backtrace to the standard error stream.

Usage

From source file:de.duenndns.ssl.MemorizingTrustManager.java

public void checkCertTrusted(X509Certificate[] chain, String authType, String domain, boolean isServer,
        boolean interactive) throws CertificateException {
    LOGGER.log(Level.FINE, "checkCertTrusted(" + chain + ", " + authType + ", " + isServer + ")");
    try {//from w  ww .j a v a2 s  .  c om
        LOGGER.log(Level.FINE, "checkCertTrusted: trying appTrustManager");
        if (isServer)
            appTrustManager.checkServerTrusted(chain, authType);
        else
            appTrustManager.checkClientTrusted(chain, authType);
    } catch (CertificateException ae) {
        LOGGER.log(Level.FINER, "checkCertTrusted: appTrustManager failed", ae);
        // if the cert is stored in our appTrustManager, we ignore expiredness
        if (isExpiredException(ae)) {
            LOGGER.log(Level.INFO, "checkCertTrusted: accepting expired certificate from keystore");
            return;
        }
        if (isCertKnown(chain[0])) {
            LOGGER.log(Level.INFO, "checkCertTrusted: accepting cert already stored in keystore");
            return;
        }
        try {
            if (defaultTrustManager == null)
                throw ae;
            LOGGER.log(Level.FINE, "checkCertTrusted: trying defaultTrustManager");
            if (isServer)
                defaultTrustManager.checkServerTrusted(chain, authType);
            else
                defaultTrustManager.checkClientTrusted(chain, authType);
        } catch (CertificateException e) {
            boolean trustSystemCAs = !PreferenceManager.getDefaultSharedPreferences(master)
                    .getBoolean("dont_trust_system_cas", false);
            if (domain != null && isServer && trustSystemCAs && !isIp(domain)) {
                String hash = getBase64Hash(chain[0], "SHA-256");
                List<String> fingerprints = getPoshFingerprints(domain);
                if (hash != null && fingerprints.contains(hash)) {
                    Log.d("mtm", "trusted cert fingerprint of " + domain + " via posh");
                    return;
                }
            }
            e.printStackTrace();
            if (interactive) {
                interactCert(chain, authType, e);
            } else {
                throw e;
            }
        }
    }
}