我目前使用BouncyCastle 1.46 (bc-prov
和bc-mail
库)。目前还不可能切换到新版本。
然而,我正试图重写一些东西,以摆脱各种被弃用的类,使用替代的东西,如X509v3CertificateBuilder
和PKCS10CertificateRequestBuilder
等,以便当我有机会更新库时,将有更少的编码更改。
这些构建器返回"holder"对象,如X509CertificateHolder
或PKCS10CertificateRequestHolder
。
我想知道的是如何将它们以PEM格式写出来?首先,PEMWriter
已被弃用,所以我宁愿不使用它。其次,即使我使用了它,它也不能处理"持有者"类。现在,我确实可以通过使用JcaCertificateConverter
将X509CertificateHolder
的实例转换为X509Certificate
,然后将其发送给PEMWriter
,但再次,这是一个废弃的类。至于PKCS10CertificateRequestBuilder
,即使我想这样做,1.46库中也没有转换器将其转换为旧式PKCS10CertificateRequest
的实例(尽管我可能可以通过从前者获得编码的字节并将其传递给后者的构造函数来实现这一点——尽管再次强调,我想摆脱已弃用的东西)。
因此,当您拥有各种构建器类给您的对象时,将它们转换为PEM数据的非弃用方式是什么(除了获取编码字节并自己"PEM")?如果这是1.51,我可以使用JcaPemWriter
,但这在1.46不存在。
openssl的PEMWriter已被PEMWriter取代,这是一个本地的弹性城堡实现。
`
import org.bouncycastle.util.io.pem.PemWriter;
import java.io.StringWriter;
class SomeClass(){
SomeClass(){
}
public void myWriter(){
StringWriter sw = new StringWriter();
PemWriter pw = new PemWriter(sw);
}
}
`