我正在嘗試創建一個包含pkcs 7塊的文件。在這個容器中,我需要我的公鑰和我的簽名者信息(沒有簽名的數據!!!)。我已經嘗試了幾種選擇,但沒有任何運氣。這是我的代碼:如何創建僅用於密鑰交換的pkcs7塊(充氣城堡)
首先簽名信息:
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 []包含已簽名的消化一段信息。
現在,當我嘗試創建簽名數據,一切都下山
var signedContent = new ContentInfo(CmsObjectIdentifiers.Data, DerNull.Instance);
CmsSignedData csd = new CmsSignedData(signedContent);
我沒有嘗試發送信息,這只是針對密鑰交換和驗證。我相信這是一個有效的情況,但不知何故,這是行不通的。
感謝您的幫助。
更新:
更多上下文。
我想從.net可執行文件簽名JAR。我已經幾乎完成了過程的其餘部分,但的jarsigner創建PKCS7文件有:
ContentInfo組輸入數據和沒有內容。到目前爲止,在將內容信息添加到CmsData時,使新的ContentInfo(CmsObjectIdentifiers.Data,null)僅引發異常。添加SignerInfo時,此SignerInfo包含先前從JAR內容派生的簽名。
請添加詳細信息的聲明 「......沒有任何的運氣」。 –
請在下面看到我的評論(我不小心將它作爲答案,對不起) – Flaker
@GregS我已經添加了更多信息的問題。 BTW我沒有看到.Net端口中的CMSAbsentContent類。我會看看Java版本,看看它是什麼。 – Flaker