【发布时间】:2011-07-03 05:11:56
【问题描述】:
我正在尝试创建一个包含 pkcs 7 块的文件。在这个容器中,我需要我的公钥和我的签名者信息(没有签名数据!!!)。我已经尝试了几种替代方法,但没有任何运气。这是我的代码:
首先是签名信息:
List<X509Certificate> certs = new List<X509Certificate> { cert };
IX509Store x509Certs = X509StoreFactory.Create(
"CERTIFICATE/COLLECTION",
new X509CollectionStoreParameters(certs));
var ias = new IssuerAndSerialNumber(cert.IssuerDN, cert.SerialNumber);
SignerIdentifier sid = new SignerIdentifier(ias);
AlgorithmIdentifier algoDigId = new AlgorithmIdentifierCmsSignedGenerator.DigestSha1);
AlgorithmIdentifier algoCryptId = new AlgorithmIdentifier(CmsSignedGenerator.EncryptionRsa);
SignerInfo si = new SignerInfo(sid, algoDigId, null, algoCryptId,
new DerOctetString(contentSignature), null);
contentSignature byte[] 包含一些信息的签名摘要。
现在,当我尝试创建 SignedData 时,一切都失败了
var signedContent = new ContentInfo(CmsObjectIdentifiers.Data, DerNull.Instance);
CmsSignedData csd = new CmsSignedData(signedContent);
我不想发送信息,这仅用于密钥交换和验证目的。我相信这是一个有效的场景,但不知何故这不起作用。
感谢您的帮助。
更新:
更多上下文。
我正在尝试从 .Net 可执行文件中签署 JAR。我已经完成了剩下的过程,但 jarsigner 创建了一个 pkcs7 文件:
ContentInfo 设置为数据类型且无内容。到目前为止,制作 new ContentInfo(CmsObjectIdentifiers.Data, null) 只是在将内容信息添加到 CmsData 时引发异常
添加了一个 SignerInfo,此 SignerInfo 包含先前从 JAR 内容派生的签名。
【问题讨论】:
-
请在语句“...没有任何运气”中添加详细信息。
-
请看我下面的评论(我不小心把它作为答案,对不起)
-
@GregS 我已经为这个问题添加了更多信息。顺便说一句,我还没有在 .Net 端口中看到 CMSAbsentContent 类。我去看看java版本看看是什么。
标签: c# rsa bouncycastle pkcs#7