package org.zpcat.test.certs; import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.Principal; import java.security.PrivateKey; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509KeyManager; import javax.net.ssl.X509TrustManager; /** * Created by moses on 7/14/15. */ public class BKSKeyStoreKeyManager implements X509KeyManager { private X509KeyManager mX509KeyManagerImpl; public BKSKeyStoreKeyManager(InputStream input, String passwd) { KeyManager[] kms = fetchKeyManagers(input, passwd); } @Override public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket) { return null; } @Override public String chooseServerAlias(String keyType, Principal[] issuers, Socket socket) { return null; } @Override public X509Certificate[] getCertificateChain(String alias) { return new X509Certificate[0]; } @Override public String[] getClientAliases(String keyType, Principal[] issuers) { return new String[0]; } @Override public String[] getServerAliases(String keyType, Principal[] issuers) { return new String[0]; } @Override public PrivateKey getPrivateKey(String alias) { return null; } private KeyManager[] fetchKeyManagers(InputStream in, String passwd) { KeyStore keyStore = null; try { keyStore = KeyStore.getInstance("BKS"); keyStore.load(in, passwd.toCharArray()); KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509"); kmf.init(keyStore, passwd.toCharArray()); KeyManager[] kms = kmf.getKeyManagers(); return kms; } catch (KeyStoreException e) { e.printStackTrace(); } catch (CertificateException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (UnrecoverableKeyException e) { e.printStackTrace(); } return null; } }