Как преобразовать сертификаты / ключи JKS в сертификаты / ключи BouncyCastle

В моем Java-приложении у меня есть хранилище ключей JKS с самозаверяющим сертификатом / ключом. Мне нужно загрузить их и преобразовать их в типы BouncyCastle.

Я использую java.security.KeyStore для загрузки сертификата / ключа, который дает мне java.security.cert.Certificate и java.security.Key.

Как мне затем преобразовать их в формат, который использует BouncyCastle (org.bouncycastle.asn1.x509.Certificate и т. Д.)

Если я использую Security.addProvider(новый BouncyCastleProvider()); это заставит KeyStore возвращать разные типы???

Или BC имеет свой собственный API хранилища ключей (примечание: хранилище ключей имеет формат JKS/SUN).

Спасибо

1 ответ

Я понял это, вот какой-то псевдокод.

Чтобы конвертировать сертификаты:

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);
      }
Другие вопросы по тегам