在我的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格式)。
由于
答案 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);
}