如何将JKS证书/密钥转换为BouncyCastle证书/密钥

时间:2014-01-05 16:43:30

标签: java security bouncycastle

在我的java应用程序中,我有一个带有自签名证书/密钥的JKS密钥库。我需要加载它们并将它们转换为BouncyCastle类型。

我正在使用java.security.KeyStore来加载cert / key,它给了我java.security.cert.Certificate和java.security.Key。

如何将这些转换为BouncyCastle使用的格式(org.bouncycastle.asn1.x509.Certificate等)

如果我使用Security.addProvider(new BouncyCastleProvider());会使KeyStore返回不同​​的类型???

或BC是否拥有自己的KeyStore API(注意:密钥库采用JKS / SUN格式)。

由于

1 个答案:

答案 0 :(得分:2)

我想通了,这里有一些伪代码。

转换证书:

byte data[] = java.security.cert.Certificate.getEncoded();
org.bouncycastle.asn1.x509.Certificate.getInstance(data);

转换密钥:

      byte data[] = java.securty.Key.getEncoded();
      if (isRSA) {
        RSAPrivateKey rsa = RSAPrivateKey.getInstance(data);
        return new RSAPrivateCrtKeyParameters(rsa.getModulus(), rsa.getPublicExponent(),
          rsa.getPrivateExponent(), rsa.getPrime1(), rsa.getPrime2(), rsa.getExponent1(),
          rsa.getExponent2(), rsa.getCoefficient());
      } else {
        return PrivateKeyFactory.createKey(data);
      }