import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyStore;
import java.security.NoSuchAlgorithmException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Base64;

public class TestJavaMain {

    private static final String KEY =
            "-----BEGIN PRIVATE KEY-----\r\n"
                    + "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAkNYaGGK2+f8B14Yq\r\n"
                    + "0DZlAhlfzObkJI3/86CpeomWyYF8FZ3jUj4wPtRKZ+fjFT/ScguLLoPx4qTUFkaG\r\n"
                    + "E0eRKwIDAQABAkEAiX839r6ABoTYMsrkChYZfgyordTj8O/9dEOpoPLNey1MDFi+\r\n"
                    + "DfxnOV96qV1NC3Eftb0+W9m3CzXEpP1yhcnNgQIhAMDjKHg8MEk6zBRa00wHCnEG\r\n"
                    + "kp9shUlmXaQoci34IBJZAiEAwDoK/GO6zAhREvUd2LCqD3WweAxKF+QlahVBkRK1\r\n"
                    + "pyMCIQC96WpZJ3mrQDba+6n6uxvuuLf4O5Ln99/O1vvEgv6g0QIgaYPy39PGh5TR\r\n"
                    + "G/zco0NmNhI+CceFLFQZjX+ZfA6vE80CIC7dOgSpgqIY1nuSQhhNrNwqlM90YHWA\r\n"
                    + "PUgddasePJW+\r\n"
                    + "-----END PRIVATE KEY-----\r\n";
    private static final String CERTIFICATE =
            "-----BEGIN CERTIFICATE-----\r\n"
                    + "MIIBGzCBxqADAgECAggBVa0QmShGZjANBgkqhkiG9w0BAQUFADATMREwDwYDVQQD\r\n"
                    + "DAh0ZXN0X2NydDAeFw0yMTA0MjcxMDEyMDBaFw0yMjA0MjcxMDEyMDBaMBMxETAP\r\n"
                    + "BgNVBAMMCHRlc3RfY3J0MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJDWGhhitvn/\r\n"
                    + "AdeGKtA2ZQIZX8zm5CSN//OgqXqJlsmBfBWd41I+MD7USmfn4xU/0nILiy6D8eKk\r\n"
                    + "1BZGhhNHkSsCAwEAATANBgkqhkiG9w0BAQUFAANBAD5qJwARPhpKn/zL03p7E/DL\r\n"
                    + "AB3HP/X6klwg3BkxvItG/PjBtQtf44Zn7kkbxk57jwCuuxSAtgW3Z/hTyl/0/U4=\r\n"
                    + "-----END CERTIFICATE-----\r\n";

    private static Key loadPrivateKey() throws NoSuchAlgorithmException, InvalidKeySpecException {
        final String base64Key =
                TestJavaMain.KEY
                        .replace("-----BEGIN PRIVATE KEY-----", "")
                        .replace("-----END PRIVATE KEY-----", "")
                        .replace("\r", "")
                        .replace("\n", "");
        final byte[] encodedKey = Base64.getDecoder().decode(base64Key);
        final KeyFactory kf = KeyFactory.getInstance("RSA");
        return kf.generatePrivate(new PKCS8EncodedKeySpec(encodedKey));
    }

    private static Certificate loadCertificate() throws CertificateException, IOException {
        final CertificateFactory cf = CertificateFactory.getInstance("X.509");
        final byte[] cert = TestJavaMain.CERTIFICATE.getBytes(StandardCharsets.UTF_8);
        try (final InputStream is = new ByteArrayInputStream(cert)) {
            return cf.generateCertificate(is);
        }
    }

    public static void main(final String[] args) throws Exception {
        final Key key = TestJavaMain.loadPrivateKey();
        final Certificate[] certificates = new Certificate[] {TestJavaMain.loadCertificate()};
        final char[] password = "password".toCharArray();
        final KeyStore keyStore = KeyStore.getInstance("PKCS12");
        keyStore.load(null, password);
        keyStore.setKeyEntry("alias", key, password, certificates);
    }
} 