/* * ==================================================================== * Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.internal.io.dav; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.security.KeyStore; import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import org.tmatesoft.svn.util.SVNDebugLog; import org.tmatesoft.svn.util.SVNLogType; /** * @version 1.3 * @author TMate Software Ltd. */ class DAVKeyManager { private static final String CERTIFICATE_FILE = "svnkit.ssl.client-cert-file"; private static final String CERTIFICATE_PASSPHRASE = "svnkit.ssl.client-cert-password"; private static final String OLD_CERTIFICATE_FILE = "javasvn.ssl.client-cert-file"; private static final String OLD_CERTIFICATE_PASSPHRASE = "javasvn.ssl.client-cert-password"; private static KeyManager[] ourKeyManagers; private static boolean ourIsInitialized; public static KeyManager[] getKeyManagers() { if (ourIsInitialized) { return ourKeyManagers; } ourIsInitialized = true; String certFileName = System.getProperty(CERTIFICATE_FILE, System.getProperty(OLD_CERTIFICATE_FILE)); if (certFileName == null) { return null; } char[] passphrase = null; String pph = System.getProperty(CERTIFICATE_PASSPHRASE, System.getProperty(OLD_CERTIFICATE_PASSPHRASE)); if (pph != null) { passphrase = pph.toCharArray(); } KeyStore keyStore = null; InputStream is = null; try { keyStore = KeyStore.getInstance("PKCS12"); if (keyStore != null) { is = new FileInputStream(certFileName); keyStore.load(is, passphrase); } } catch (Throwable th) { SVNDebugLog.getDefaultLog().logFine(SVNLogType.DEFAULT, th); } finally { if (is != null) { try { is.close(); } catch (IOException e) { } } } KeyManagerFactory kmf = null; if (keyStore != null) { try { kmf = KeyManagerFactory.getInstance("SunX509"); if (kmf != null) { kmf.init(keyStore, passphrase); ourKeyManagers = kmf.getKeyManagers(); } } catch (Throwable e) { SVNDebugLog.getDefaultLog().logFine(SVNLogType.DEFAULT, e); } } return ourKeyManagers; } }