【发布时间】:2019-07-08 02:37:02
【问题描述】:
我使用 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 pkcs11interop