CertIsRDNAttrsInCertificateName 函数 (wincrypt.h)
CertIsRDNAttrsInCertificateName 函数将证书名称中的属性与指定的CERT_RDN进行比较,以确定是否包含所有属性。 比较将循环访问 CERT_RDN ,并在证书名称的任何 CERT_RDN中查找属性匹配项。
语法
BOOL CertIsRDNAttrsInCertificateName(
[in] DWORD dwCertEncodingType,
[in] DWORD dwFlags,
[in] PCERT_NAME_BLOB pCertName,
[in] PCERT_RDN pRDN
);
参数
[in] dwCertEncodingType
指定使用的编码类型。 始终可以通过将证书和 消息编码类型 与按位 OR 操作结合使用来指定它们,如以下示例所示:
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING
当前定义的编码类型为:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] dwFlags
如果 pRDN 是使用 Unicode 字符串初始化的,则必须设置CERT_UNICODE_IS_RDN_ATTRS_FLAG,如 CryptEncodeObject 中的 lpszStructType 设置为 X509_UNICODE_NAME。
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG设置为不区分大小写的匹配。 否则,将完成完全区分大小写的匹配。
[in] pCertName
指向包含编码主题或颁发者名称 的CRYPT_INTEGER_BLOB 的指针。
[in] pRDN
包含名称中要找到的属性 的CERT_RDN 结构的数组。 CERT_RDN 结构的CERT_RDN_ATTR成员的行为遵循以下规则。
- 如果 pszObjId 为 NULL,则忽略 OID) (属性 对象标识符 。
- 如果 dwValueType 为CERT_RDN_ANY_TYPE,则忽略值类型。
- 如果 Value 的 pbData 成员为 NULL,则任何值都可以是匹配项。
返回值
如果函数成功,并且指定 CERT_RDN 中的所有 RDN 值都在证书名称中,则返回值为非零 (TRUE) 。
如果函数失败,或者指定 CERT_RDN 中有不在证书名称中的 RDN 值,则返回值为 0 (FALSE) 。 有关扩展的错误信息,请调用 GetLastError。
下表列出了一些可能的错误代码。
返回代码 | 说明 |
---|---|
|
并非所有属性都已找到并匹配。 |
|
无效的证书编码类型。 目前仅支持X509_ASN_ENCODING。 |
如果函数失败, GetLastError 可能会返回 抽象语法表示法 One (ASN.1) 编码/解码错误。 有关这些错误的信息,请参阅 ASN.1 编码/解码返回值。
注解
目前,仅支持精确区分大小写的匹配。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |