| | |
| | | import java.security.KeyStore; |
| | | import java.security.KeyStoreException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.security.NoSuchProviderException; |
| | | import java.security.Principal; |
| | | import java.security.PrivateKey; |
| | | import java.security.UnrecoverableKeyException; |
| | |
| | | /** |
| | | * The default keyManager. |
| | | */ |
| | | private X509KeyManager sunJSSEX509KeyManager = null ; |
| | | private X509KeyManager keyManager = null ; |
| | | |
| | | /** |
| | | * The default constructor. |
| | |
| | | public ApplicationKeyManager(KeyStore keystore, char[] password) |
| | | { |
| | | KeyManagerFactory kmf = null; |
| | | String algo = "SunX509"; |
| | | String provider = "SunJSSE"; |
| | | try |
| | | { |
| | | kmf = KeyManagerFactory.getInstance(algo, provider); |
| | | String algo = KeyManagerFactory.getDefaultAlgorithm(); |
| | | kmf = KeyManagerFactory.getInstance(algo); |
| | | kmf.init(keystore, password); |
| | | KeyManager kms[] = kmf.getKeyManagers(); |
| | | |
| | |
| | | { |
| | | if (kms[i] instanceof X509KeyManager) |
| | | { |
| | | sunJSSEX509KeyManager = (X509KeyManager) kms[i]; |
| | | keyManager = (X509KeyManager) kms[i]; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | catch (NoSuchAlgorithmException e) |
| | | { |
| | |
| | | // in a best effor mode. |
| | | LOG.log(Level.WARNING, "Error with the algorithm", e); |
| | | } |
| | | catch (NoSuchProviderException e) |
| | | { |
| | | // Nothing to do. Maybe we should avoid this and be strict, but we are |
| | | // in a best effor mode. |
| | | LOG.log(Level.WARNING, "Error with the provider", e); |
| | | } |
| | | catch (KeyStoreException e) |
| | | { |
| | | // Nothing to do. Maybe we should avoid this and be strict, but we are |
| | |
| | | public String chooseClientAlias(String[] keyType, Principal[] issuers, |
| | | Socket socket) |
| | | { |
| | | if (sunJSSEX509KeyManager != null) |
| | | if (keyManager != null) |
| | | { |
| | | return sunJSSEX509KeyManager.chooseClientAlias(keyType, issuers, socket); |
| | | return keyManager.chooseClientAlias(keyType, issuers, socket); |
| | | } |
| | | else |
| | | { |
| | |
| | | public String chooseServerAlias(String keyType, Principal[] issuers, |
| | | Socket socket) |
| | | { |
| | | if (sunJSSEX509KeyManager != null) |
| | | if (keyManager != null) |
| | | { |
| | | return sunJSSEX509KeyManager.chooseServerAlias(keyType, issuers, socket); |
| | | return keyManager.chooseServerAlias(keyType, issuers, socket); |
| | | } |
| | | else |
| | | { |
| | |
| | | */ |
| | | public X509Certificate[] getCertificateChain(String alias) |
| | | { |
| | | if (sunJSSEX509KeyManager != null) |
| | | if (keyManager != null) |
| | | { |
| | | return sunJSSEX509KeyManager.getCertificateChain(alias); |
| | | return keyManager.getCertificateChain(alias); |
| | | } |
| | | else |
| | | { |
| | |
| | | */ |
| | | public String[] getClientAliases(String keyType, Principal[] issuers) |
| | | { |
| | | if (sunJSSEX509KeyManager != null) |
| | | if (keyManager != null) |
| | | { |
| | | return sunJSSEX509KeyManager.getClientAliases(keyType, issuers); |
| | | return keyManager.getClientAliases(keyType, issuers); |
| | | } |
| | | else |
| | | { |
| | |
| | | */ |
| | | public PrivateKey getPrivateKey(String alias) |
| | | { |
| | | if (sunJSSEX509KeyManager != null) |
| | | if (keyManager != null) |
| | | { |
| | | return sunJSSEX509KeyManager.getPrivateKey(alias); |
| | | return keyManager.getPrivateKey(alias); |
| | | } |
| | | else |
| | | { |
| | |
| | | */ |
| | | public String[] getServerAliases(String keyType, Principal[] issuers) |
| | | { |
| | | if (sunJSSEX509KeyManager != null) |
| | | if (keyManager != null) |
| | | { |
| | | return sunJSSEX509KeyManager.getServerAliases(keyType, issuers); |
| | | return keyManager.getServerAliases(keyType, issuers); |
| | | } |
| | | else |
| | | { |