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成员的行为遵循以下规则。

  • 如果 pszObjIdNULL,则忽略 OID) (属性 对象标识符
  • 如果 dwValueType 为CERT_RDN_ANY_TYPE,则忽略值类型。
  • 如果 ValuepbData 成员为 NULL,则任何值都可以是匹配项。

返回值

如果函数成功,并且指定 CERT_RDN 中的所有 RDN 值都在证书名称中,则返回值为非零 (TRUE) 。

如果函数失败,或者指定 CERT_RDN 中有不在证书名称中的 RDN 值,则返回值为 0 (FALSE) 。 有关扩展的错误信息,请调用 GetLastError

下表列出了一些可能的错误代码。

返回代码 说明
CRYPT_E_NO_MATCH
并非所有属性都已找到并匹配。
ERROR_FILE_NOT_FOUND
无效的证书编码类型。 目前仅支持X509_ASN_ENCODING。
 

如果函数失败, GetLastError 可能会返回 抽象语法表示法 One (ASN.1) 编码/解码错误。 有关这些错误的信息,请参阅 ASN.1 编码/解码返回值

注解

目前,仅支持精确区分大小写的匹配。

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 wincrypt.h
Library Crypt32.lib
DLL Crypt32.dll

另请参阅

CertFindCertificateInStore

数据管理函数