static KeyStore buildKeyStore(final File certChainFile, final File keyFile,
      final char[] keyPasswordChars)
          throws KeyStoreException, NoSuchAlgorithmException,
          NoSuchPaddingException, InvalidKeySpecException, InvalidAlgorithmParameterException,
          CertificateException, KeyException, IOException {
    """
	Generates a new {@link KeyStore}.
	
	@param certChainFile a X.509 certificate chain file in PEM format,
	@param keyFile a PKCS#8 private key file in PEM format,
	@param keyPasswordChars the password of the {@code keyFile}.
	{@code null} if it's not password-protected.
	@return generated {@link KeyStore}.
    """
    ByteBuffer encodedKeyBuf = PemReader.readPrivateKey(keyFile);
    byte[] encodedKey = encodedKeyBuf.array();

    PKCS8EncodedKeySpec encodedKeySpec = generateKeySpec(keyPasswordChars, encodedKey);

    PrivateKey key;
    try {
      key = KeyFactory.getInstance("RSA").generatePrivate(encodedKeySpec);
    } catch (InvalidKeySpecException ignore) {
      try {
        key = KeyFactory.getInstance("DSA").generatePrivate(encodedKeySpec);
      } catch (InvalidKeySpecException ignore2) {
        try {
          key = KeyFactory.getInstance("EC").generatePrivate(encodedKeySpec);
        } catch (InvalidKeySpecException e) {
          throw new InvalidKeySpecException("Neither RSA, DSA nor EC worked", e);
        }
      }
    }

    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    List<ByteBuffer> certs = PemReader.readCertificates(certChainFile);
    List<Certificate> certChain = new ArrayList<Certificate>(certs.size());

    for (ByteBuffer buf : certs) {
      certChain.add(cf.generateCertificate(new ByteArrayInputStream(buf.array())));
    }

    KeyStore ks = KeyStore.getInstance("JKS");
    ks.load(null, null);
    ks.setKeyEntry("key", key, keyPasswordChars,
        certChain.toArray(new Certificate[certChain.size()]));
    return ks;
  }
static KeyStore buildKeyStore(final File certChainFile, final File keyFile,
      final char[] keyPasswordChars)
          throws KeyStoreException, NoSuchAlgorithmException,
          NoSuchPaddingException, InvalidKeySpecException, InvalidAlgorithmParameterException,
          CertificateException, KeyException, IOException {
    ByteBuffer encodedKeyBuf = PemReader.readPrivateKey(keyFile);
    byte[] encodedKey = encodedKeyBuf.array();

    PKCS8EncodedKeySpec encodedKeySpec = generateKeySpec(keyPasswordChars, encodedKey);

    PrivateKey key;
    try {
      key = KeyFactory.getInstance("RSA").generatePrivate(encodedKeySpec);
    } catch (InvalidKeySpecException ignore) {
      try {
        key = KeyFactory.getInstance("DSA").generatePrivate(encodedKeySpec);
      } catch (InvalidKeySpecException ignore2) {
        try {
          key = KeyFactory.getInstance("EC").generatePrivate(encodedKeySpec);
        } catch (InvalidKeySpecException e) {
          throw new InvalidKeySpecException("Neither RSA, DSA nor EC worked", e);
        }
      }
    }

    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    List<ByteBuffer> certs = PemReader.readCertificates(certChainFile);
    List<Certificate> certChain = new ArrayList<Certificate>(certs.size());

    for (ByteBuffer buf : certs) {
      certChain.add(cf.generateCertificate(new ByteArrayInputStream(buf.array())));
    }

    KeyStore ks = KeyStore.getInstance("JKS");
    ks.load(null, null);
    ks.setKeyEntry("key", key, keyPasswordChars,
        certChain.toArray(new Certificate[certChain.size()]));
    return ks;
  }
static KeyStore buildKeyStore ( final File certChainFile , final File keyFile , final char [ ] keyPasswordChars ) throws KeyStoreException , NoSuchAlgorithmException , NoSuchPaddingException , InvalidKeySpecException , InvalidAlgorithmParameterException , CertificateException , KeyException , IOException { ByteBuffer encodedKeyBuf = PemReader . readPrivateKey ( keyFile ) ; byte [ ] encodedKey = encodedKeyBuf . array ( ) ; PKCS8EncodedKeySpec encodedKeySpec = generateKeySpec ( keyPasswordChars , encodedKey ) ; PrivateKey key ; try { key = KeyFactory . getInstance ( "RSA" ) . generatePrivate ( encodedKeySpec ) ; } catch ( InvalidKeySpecException ignore ) { try { key = KeyFactory . getInstance ( "DSA" ) . generatePrivate ( encodedKeySpec ) ; } catch ( InvalidKeySpecException ignore2 ) { try { key = KeyFactory . getInstance ( "EC" ) . generatePrivate ( encodedKeySpec ) ; } catch ( InvalidKeySpecException e ) { throw new InvalidKeySpecException ( "Neither RSA, DSA nor EC worked" , e ) ; } } } CertificateFactory cf = CertificateFactory . getInstance ( "X.509" ) ; List < ByteBuffer > certs = PemReader . readCertificates ( certChainFile ) ; List < Certificate > certChain = new ArrayList < Certificate > ( certs . size ( ) ) ; for ( ByteBuffer buf : certs ) { certChain . add ( cf . generateCertificate ( new ByteArrayInputStream ( buf . array ( ) ) ) ) ; } KeyStore ks = KeyStore . getInstance ( "JKS" ) ; ks . load ( null , null ) ; ks . setKeyEntry ( "key" , key , keyPasswordChars , certChain . toArray ( new Certificate [ certChain . size ( ) ] ) ) ; return ks ; }
Generates a new {@link KeyStore}.

@param certChainFile a X.509 certificate chain file in PEM format,
@param keyFile a PKCS#8 private key file in PEM format,
@param keyPasswordChars the password of the {@code keyFile}.
{@code null} if it's not password-protected.
@return generated {@link KeyStore}.
Generates a new { @link KeyStore } .