protected static KeyManagerFactory buildKeyManagerFactory(final File certChainFile,
      final File keyFile, final String keyPassword)
          throws UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException,
          NoSuchPaddingException, InvalidKeySpecException, InvalidAlgorithmParameterException,
          CertificateException, KeyException, IOException {
    """
	Build a {@link KeyManagerFactory} based upon a key file, key file password, and a certificate
	chain.
	
	@param certChainFile a X.509 certificate chain file in PEM format
	@param keyFile a PKCS#8 private key file in PEM format
	@param keyPassword the password of the {@code keyFile}.
	{@code null} if it's not password-protected.
	@param kmf The existing {@link KeyManagerFactory} that will be used if not {@code null}
	@return A {@link KeyManagerFactory} based upon a key file, key file password, and a certificate
	chain.
    """
    String algorithm = Security.getProperty("ssl.KeyManagerFactory.algorithm");
    if (algorithm == null) {
      algorithm = "SunX509";
    }
    return buildKeyManagerFactory(certChainFile, algorithm, keyFile, keyPassword);
  }
protected static KeyManagerFactory buildKeyManagerFactory(final File certChainFile,
      final File keyFile, final String keyPassword)
          throws UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException,
          NoSuchPaddingException, InvalidKeySpecException, InvalidAlgorithmParameterException,
          CertificateException, KeyException, IOException {
    String algorithm = Security.getProperty("ssl.KeyManagerFactory.algorithm");
    if (algorithm == null) {
      algorithm = "SunX509";
    }
    return buildKeyManagerFactory(certChainFile, algorithm, keyFile, keyPassword);
  }
protected static KeyManagerFactory buildKeyManagerFactory ( final File certChainFile , final File keyFile , final String keyPassword ) throws UnrecoverableKeyException , KeyStoreException , NoSuchAlgorithmException , NoSuchPaddingException , InvalidKeySpecException , InvalidAlgorithmParameterException , CertificateException , KeyException , IOException { String algorithm = Security . getProperty ( "ssl.KeyManagerFactory.algorithm" ) ; if ( algorithm == null ) { algorithm = "SunX509" ; } return buildKeyManagerFactory ( certChainFile , algorithm , keyFile , keyPassword ) ; }
Build a {@link KeyManagerFactory} based upon a key file, key file password, and a certificate
chain.

@param certChainFile a X.509 certificate chain file in PEM format
@param keyFile a PKCS#8 private key file in PEM format
@param keyPassword the password of the {@code keyFile}.
{@code null} if it's not password-protected.
@param kmf The existing {@link KeyManagerFactory} that will be used if not {@code null}
@return A {@link KeyManagerFactory} based upon a key file, key file password, and a certificate
chain.
Build a { @link KeyManagerFactory } based upon a key file key file password and a certificate chain .