Rfc3161TimestampToken.VerifySignatureForSignerInfo 方法

定义

验证当前令牌是否为提供的 SignerInfo 的有效时间戳令牌。

public bool VerifySignatureForSignerInfo (System.Security.Cryptography.Pkcs.SignerInfo signerInfo, out System.Security.Cryptography.X509Certificates.X509Certificate2 signerCertificate, System.Security.Cryptography.X509Certificates.X509Certificate2Collection extraCandidates = default);
public bool VerifySignatureForSignerInfo (System.Security.Cryptography.Pkcs.SignerInfo signerInfo, out System.Security.Cryptography.X509Certificates.X509Certificate2? signerCertificate, System.Security.Cryptography.X509Certificates.X509Certificate2Collection? extraCandidates = default);
member this.VerifySignatureForSignerInfo : System.Security.Cryptography.Pkcs.SignerInfo * X509Certificate2 * System.Security.Cryptography.X509Certificates.X509Certificate2Collection -> bool
Public Function VerifySignatureForSignerInfo (signerInfo As SignerInfo, ByRef signerCertificate As X509Certificate2, Optional extraCandidates As X509Certificate2Collection = Nothing) As Boolean

参数

signerInfo
SignerInfo

用于验证所生成的时间戳的 CMS 签名者信息。

signerCertificate
X509Certificate2

此方法返回结果时,从签署此令牌的时间戳颁发机构 (TSA) 返回证书,如果无法确定签名者证书,则返回 null。 该参数未经初始化即被处理。

extraCandidates
X509Certificate2Collection

除了令牌中可能包含的任何证书之外,还可以考虑作为时间戳颁发机构 (TSA) 证书的可选证书集合。

返回

如果找到了时间戳颁发机构(TSA)证书,证书公钥对令牌签名进行了验证,并且该令牌与 signerInfo 的签名匹配,则为 true;否则,为 false

例外

signerInfonull

注解

根据使用 CMS) 的 IETF RFC 3161 附录 A (SignerInfo签名时间戳属性,此方法验证时间戳令牌是否对加密消息语法 (CMS) 有效。

此方法要求 TSA 证书具有所需的扩展密钥使用值 (1.3.6.1.5.5.7.3.8) ,匹配令牌的嵌入 ESSCertID 或 ESSCertID2 标识符,具有包含令牌时间戳值的有效范围,并且具有成功验证令牌签名的公钥。

确定适当的 TSA 证书后,此方法确定提供的 signerInfo 中的签名值是否与令牌中的摘要和算法标识符匹配。 signerInfo如果签名与令牌的摘要和算法标识符匹配,则通过 signerCertificate 报告证书,并且 方法返回 true

signerInfo如果签名不匹配,或者无法确定 TSA 证书,该方法将报告signerCertificatenull 并返回 false

此方法不考虑 UnsignedAttributes 正在考虑的 signerInfo ,也不会确定签名是否 signerInfo 适合该签名声称已签名的数据。

适用于

另请参阅