相关疑难解决方法(0)

使用bouncycastle X509v3CertificateBuilder生成X509Certificate

我正在尝试移植JXTA以在App Engine上运行.鉴于App Engine尚不支持BouncyCastle"BC"提供程序,我必须移植现有的JXTA代码以使用列入白名单的类生成X509Certificate.我对Crypto的了解很少,我不确定我想要实现的目标是否可行.以下是来自JXTA项目的PSEUtils.java的原始代码:

PSEUtils.java

有一个包含java.security.cert.X509Certificate的帮助器类:

public static class IssuerInfo {
    public X509Certificate cert; // subject Cert
    public PrivateKey subjectPkey; // subject private key
    public X509Certificate issuer; // issuer Cert
    public PrivateKey issuerPkey; // issuer private key
}
Run Code Online (Sandbox Code Playgroud)

在方法中:

public static IssuerInfo genCert(X500Principal subject, KeyPair keypair, IssuerInfo issuerinfo)
Run Code Online (Sandbox Code Playgroud)

我将主题传递给:

new X500Principal("CN="+useCN)
Run Code Online (Sandbox Code Playgroud)

密钥对(来自原始代码):

KeyPairGenerator g = KeyPairGenerator.getInstance("RSA");
g.initialize(1024, UTILS.srng);
KeyPair keypair = g.generateKeyPair();
Run Code Online (Sandbox Code Playgroud)

和jxta编码的IssuerInfo.

现在因为我无法引入bouncycastle.jce包,我必须删除JXTA使用的X509Principal和X509V3CertificateGenerator代码,并尝试用符合GAE限制的实现替换它.以下是我目前使用org.bouncycastle.X509.X509v3CertificateBuilder的genCert方法.

SubjectPublicKeyInfo subPubKeyInfo =  SubjectPublicKeyInfo.getInstance(keypair.getPublic().getEncoded());

X509v3CertificateBuilder v3CertGen = new X509v3CertificateBuilder(
     new X500Name(issuer.getName()), 
     BigInteger.ONE, 
     today, …
Run Code Online (Sandbox Code Playgroud)

jxta google-app-engine bouncycastle x509certificate x509

6
推荐指数
1
解决办法
2万
查看次数