code: 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);
    }
docs: 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.