簡體   English   中英

有沒有辦法在由 pkcs11Interop 創建的簽名中獲取簽名創建日期?

[英]Is there a way to get signature creation date in signature that was created by pkcs11Interop?

我使用X509Chain.Build(X509Certificate2)方法驗證證書。 如果證書有效,我會使用Pkcs11Interop庫對數據進行簽名 有興趣的用戶可以下載此簽名自行驗證。 但他們也應該能夠檢查證書的有效性。

我現在正在編寫一些測試工具來獲取所有這些文件並檢查有效性。 但是為了驗證證書,我需要一個簽名創建日期。 是否可以從簽名中獲取此日期?

現在我將簽名創建日期存儲在表中的單獨字段中。 但我真的認為簽名包含創建日期。 至少我希望如此。

我正在驗證證書,然后如果可以,我使用下一個代碼來簽署一些數據。

var privateKeys = session.FindAllObjects(SignSettings.PrivateKeyAttributes);

var mechanism = session.Factories.MechanismFactory.Create(CKM.CKM_GOSTR3411);

byte[] hash = session.Digest(mechanism, data);

var signMechanism = session.Factories.MechanismFactory.Create(CKM.CKM_GOSTR3410);

var signature = session.Sign(signMechanism, privateKeys[0], hash);

return signature;

然后我將此簽名與簽名數據存儲在數據庫中

在我的測試簽名檢查器應用程序中,我使用 X509Chain 來檢查證書是否有效。

var chain = X509Chain.Create();
var policy = chain.ChainPolicy;
policy.RevocationMode = X509RevocationMode.Offline;
policy.RevocationFlag = X509RevocationFlag.EndCertificateOnly;
policy.VerificationTime = @signatureDate;
policy.UrlRetrievalTimeout = UrlRetrievalTimeout;

chain.Build(cert);
return chain;

您使用常規 PKCS#11 調用獲得沒有任何額外屬性的普通簽名。

要將簽名日期嵌入到簽名中,您必須使用 PKCS#7 消息傳遞功能。

據我記得您之前的問題,您使用的是 ruToken。
看看他們自己在 .Net 中使用 PKCS#11 擴展的示例

byte[] signature = session.PKCS7Sign(SampleData.PKCS7_SignDataBytes,
    certificates[0], privateKeys[0], null, SampleConstants.UseHardwareHash);

然后,您可以使用EnvelopedCmsSignedCms獲取簽名屬性SignerInfo.SignedAttributes ,其中之一是簽名時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM