Bouncy Castle:创建CMS(a.k.a。PKCS7)证书?

时间:2014-05-08 18:54:21

标签: ssl cryptography ssl-certificate bouncycastle pkcs#7

如何创建CMS(a.k.a. PKCS7)证书?

以下充气城堡代码创建了PKCS12证书:

    ASN1EncodableVector  v = new ASN1EncodableVector();

    v.add(tbsCert);
    v.add(sigAlgId);
    v.add(new DERBitString(signature));

    X509CertificateObject clientCert = new X509CertificateObject(Certificate.getInstance(new DERSequence(v))); 

    PKCS12BagAttributeCarrier bagCert = clientCert;
    bagCert.setBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_friendlyName,
            new DERBMPString("Certificate for IPSec WLAN access"));
    bagCert.setBagAttribute(
            PKCSObjectIdentifiers.pkcs_9_at_localKeyId,
            new SubjectKeyIdentifierStructure(pubKey));

我发现API中有CMSSignedDataGenerator,但如果它适用于我的情况,我不是,如果适用的话......

我也不明白为什么,如果创建的证书是PKCS12,那么为什么他们使用PKCS9变量来构建它。

1 个答案:

答案 0 :(得分:2)

没有CMS证书或PKCS#12证书。

CMS是加密消息语法。它指定了可能包含签名者的X5.09兼容证书的容器格式。 PKCS#12是加密对象的容器格式,它通常用于存储一个或多个证书/私钥对。 PKCS#9明确定义了X5.09证书的属性。

您可能只需要构建X5.09 certificate,可能使用PKCS#9 defined attributes。这些证书应与CMS和PKCS#12兼容。