从 etoken 创建 PKCS7 签名

Creating PKCS7 signature from etoken

我正在尝试使用电子令牌生成数字签名。 我正在使用 BouncyCastle 库并且正在生成签名。 问题是我希望它采用 pkcs7 格式,其中还包含诸如“-----BEGIN PKCS7-----”之类的标签并以“-----END PKCS7-----”结尾。但是签名我生成的不包含这些标签。 我不确定我哪里出错了。 这是我的代码..

CMSProcessable content = new CMSProcessableByteArray(contentbytes);

    CMSSignedData signedData = signGen.generate(content, securityProviderName);

    byte[] signeddata = signedData.getEncoded();
BASE64Encoder encoder = new BASE64Encoder();
        digitalSignature = encoder.encode(signeddata);

现在我需要将数据放入 pkcs7 format.Is 代码有什么问题吗?或者我需要添加什么吗?请帮忙..谢谢.

PKCS#7,通常称为 CMS(加密消息语法),是一种使用 ASN.1 指定并使用 BER/DER(Basic/Distinguished 编码规则)编码的容器格式。 BER/DER 是执行 二进制 编码的方法。

您说的是 PEM 格式,它是为 Privacy Enhanced Mail 指定的。它有时也被称为 ASCII 装甲,因为它可以通过文本接口发送二进制数据。它由 header 和页脚组成,这些页脚也标识数据,以及 DER 编码 blob 的 base 64 编码。

您可以自己实现 header 和页脚生成,或者您可以查看 Bouncy Castle 中的 PemWriter class Java 功能。可以找到格式的规范 here.