2014-01-05 218 views
1

在我的Java應用程序中,我有一個帶有自簽名證書/密鑰的JKS密鑰庫。我需要加載它們並將它們轉換爲BouncyCastle類型。如何將JKS證書/密鑰轉換爲BouncyCastle證書/密鑰

我正在使用java.security.KeyStore加載證書/密鑰,它給了我java.security.cert.Certificate和java.security.Key。

如何再轉換這些到BouncyCastle的用途(org.bouncycastle.asn1.x509.Certificate等)的格式

如果我使用Security.addProvider(新BouncyCastleProvider());這會使KeyStore返回不同​​的類型嗎?

BC是否擁有自己的KeyStore API(注意:密鑰庫是JKS/SUN格式)。

謝謝

回答

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); 
     }