WinTrustSubjectCheckContentInfo

【勇芳软件工作室】汉化HomePreviousNext

[New - Windows NT]

WinTrustSubjectCheckContentInfo功能验证指定的证书是否充分表示指定主题的内容。

BOOL WinTrustSubjectCheckContentInfo(

LPWIN_TRUST_SIP_SUBJECT 【lpSubject】,//指向主题描述的指针
LPWIN_CERTIFICATE 【lpSignedData】//指向主题的证书的指针
); 

参数

【lpSubject】

指向WIN_TRUST_SIP_SUBJECT结构的指针,描述要与证书进行比较的主题。

【lpSignedData】

指向WIN_CERT_TYPE_PKCS_SIGNED_DATA类型的WIN_CERTIFICATE结构。此结构的bCertificate成员中的数据采用PKCS#7签名数据结构的格式。有关此数据格式的详细信息,请参见RSA Data Security,Inc.发布的【公钥加密标准(PKCS)】

SIP可以使用来自该PKCS#7结构的ContentInfo成员的信息来确定关于主题必须被验证的内容。例如,便携式执行(PE)图像可以包括图像的摘要中的资源信息和调试信息。如果是这样,SIP可以在相应的PKCS#7签名数据结构的ContentInfo成员中找到该信息。SIP不应该依赖于ContentInfo成员以外的PKCS#7结构的内容。

返回值

如果【lpSignedData】中的信息充分表示主题,则返回值不为零。否则返回值为零。

备注

信任提供者调用WinTrustSubjectCheckContentInfo函数来验证证书中的签名是否与指定主题的内容匹配。信任提供者调用该函数的WinTrust实现。WinTrust然后调用WinTrustSubjectCheckContentInfo相应主题界面包(SIP)的实现。适当的SIP是注册用于处理由【lpSubject】参数指定的主题类型的SIP。

要验证签名,信任提供商首先调用WinTrustSubjectEnumCertificates函数来枚举主题中包含的证书类型。接下来,信任提供者调用WinTrustSubjectGetCertificate函数来获取验证主题所需的证书。通常,这是一个包含来自主题的PKCS#7签名数据结构的证书。然后,信任提供商调用WinTrustSubjectCheckContentInfo来确定PKCS#7签名数据结构的ContentInfo成员是否与主题相匹配。如果返回值表示SIP已经验证了ContentInfo成员,则信任提供者还必须检查PKCS#7签名数据结构的签名。为此,信任提供者必须消化PKCS结构并将其与该结构中的签名值进行比较。

每个主题界面包(SIP)DLL必须实现WinTrustSubjectCheckContentInfo功能。当WinTrust调用SIP的WinTrustSipInitialize初始化功能时,WinTrust获取指向SIP的WinTrustSubjectCheckContentInfo实现的指针。

WinTrustSubjectCheckContentInfo的SIP实现将PKCS#7的ContentInfo成员中的信息与从【lpSubject】参数标识的主题检索到的信息进行比较。为此,SIP从主题生成新的ContentInfo信息,然后将其与PKCS#7签署数据结构的ContentInfo成员进行比较。ContentInfo成员包含对主体的消息摘要,这对验证主题的有效性非常重要。请注意,ContentInfo成员中的其他信息可能与主题不符。例如,文件的名称不重要,因为名称可以更改而不影响主题的完整性。

LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO类型是指向WinTrustSubjectCheckContentInfo函数的指针。

也可以看看

WIN_CERTIFICATE, WIN_TRUST_SIP_SUBJECT, WinTrustSipInitialize, WinTrustSubjectEnumCertificates, WinTrustSubjectGetCertificate