CertRetrieveLogoOrBiometricInfo 函数 (wincrypt.h)

CertRetrieveLogoOrBiometricInfo 函数对szOID_LOGOTYPE_EXT或szOID_BIOMETRIC_EXT证书扩展中指定的徽标或生物识别信息执行 URL 检索。 szOID_BIOMETRIC_EXT扩展 (IETF RFC 3739) 支持添加证书持有人的签名或图片表示形式。 szOID_LOGOTYPE_EXT扩展 (IETF RFC 3709) 支持在证书中添加组织图形表示形式。

语法

BOOL CertRetrieveLogoOrBiometricInfo(
  [in]  PCCERT_CONTEXT pCertContext,
  [in]  LPCSTR         lpszLogoOrBiometricType,
  [in]  DWORD          dwRetrievalFlags,
  [in]  DWORD          dwTimeout,
  [in]  DWORD          dwFlags,
        void           *pvReserved,
  [out] BYTE           **ppbData,
  [out] DWORD          *pcbData,
  [out] LPWSTR         *ppwszMimeType
);

参数

[in] pCertContext

包含证书 的CERT_CONTEXT 结构的地址。

[in] lpszLogoOrBiometricType

包含 对象标识符 的以 null 结尾的 ANSI 字符串的地址 (OID) 字符串,用于标识要检索的信息类型。

此参数还可以包含以下预定义值之一。

含义
CERT_RETRIEVE_ISSUER_LOGO
检索证书颁发者徽标类型。
CERT_RETRIEVE_SUBJECT_LOGO
检索证书使用者徽标类型。
CERT_RETRIEVE_COMMUNITY_LOGO
检索证书社区徽标类型。
CERT_RETRIEVE_BIOMETRIC_PICTURE_TYPE
检索与证书关联的图片。
CERT_RETRIEVE_BIOMETRIC_SIGNATURE_TYPE
检索与证书关联的签名。

[in] dwRetrievalFlags

一组指定如何检索信息的标志。 此参数作为 CryptRetrieveObjectByUrl 函数中的 dwRetrievalFlags 传递。

[in] dwTimeout

等待检索的最长时间(以毫秒为单位)。

[in] dwFlags

未使用此参数,它必须为零。

pvReserved

不使用此参数,必须为 NULL

[out] ppbData

接收徽标类型或生物识别数据的 BYTE 指针的地址。 当不再需要此内存时,必须通过将此指针传递给 CryptMemFree 函数来释放此内存。

[out] pcbData

接收 ppbData 缓冲区中的字节数的 DWORD 变量的地址。

[out] ppwszMimeType

指向以 null 结尾的 Unicode 字符串的指针的地址,该字符串接收多用途 Internet 邮件扩展 (MIME) 数据类型。 如果不需要此信息,此参数可以为 NULL 。 当不再需要此内存时,必须通过将此指针传递给 CryptMemFree 函数来释放此内存。

对于生物识别类型,此地址始终接收 NULL 。 在尝试访问内存之前,必须始终确保此参数包含有效的内存地址。

返回值

如果成功,则返回非零值,否则返回零。

有关扩展的错误信息,请调用 GetLastErrorGetLastError 函数返回的可能错误代码包括但不限于以下内容。

返回代码 说明
CRYPT_E_HASH_VALUE
计算的哈希值与证书中的哈希值不匹配。
CRYPT_E_NOT_FOUND
证书不包含 szOID_LOGOTYPE_EXTszOID_BIOMETRIC_EXT 扩展,或者找不到指定的 lpszLogoOrBiometricType
E_INVALIDARG
一个或多个参数无效。
ERROR_INVALID_DATA
无法从证书扩展插件指定的 URL 检索任何数据。
ERROR_NOT_SUPPORTED
证书不支持所需的扩展。
NTE_BAD_ALGID
哈希算法 OID 未知。

要求

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

另请参阅

CryptMemFree