CertGetEnhancedKeyUsage 函数 (wincrypt.h)

CertGetEnhancedKeyUsage 函数从增强型密钥用法 (EKU) 扩展或证书的 EKU 扩展属性返回信息。 EKU 指示证书的有效用法。

语法

BOOL CertGetEnhancedKeyUsage(
  [in]      PCCERT_CONTEXT     pCertContext,
  [in]      DWORD              dwFlags,
  [out]     PCERT_ENHKEY_USAGE pUsage,
  [in, out] DWORD              *pcbUsage
);

参数

[in] pCertContext

指向CERT_CONTEXT证书上下文 指针。

[in] dwFlags

指示函数是报告证书的扩展和/或扩展属性。 如果设置为零,则函数将基于证书的 EKU 扩展和 EKU 扩展属性值返回证书的有效用法。

若要仅返回 EKU 扩展或 EKU 属性值,请设置以下标志。

含义
CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG
仅获取扩展。
CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG
仅获取扩展属性值。

[out] pUsage

指向 CERT_ENHKEY_USAGE 结构的指针 (CERT_ENHKEY_USAGE 是接收证书有效用法 的CTL_USAGE 结构) 的备用 typedef 名称。

此参数可以为 NULL ,用于设置密钥使用的大小,以便进行内存分配。 有关详细信息,请参阅 检索长度未知的数据

[in, out] pcbUsage

指向 DWORD 的指针,该指针指定 pUsage 所指向的结构的大小(以字节为单位)。 函数返回时, DWORD 包含结构的大小(以字节为单位)。

返回值

如果函数成功,则函数) 返回非零 (TRUE

如果函数失败,则返回零 (FALSE) 。

注解

如果证书具有 EKU 扩展,该扩展会列出用于有效使用该证书 (OID) 的对象标识符 。 在 Microsoft 环境中,证书可能还具有 EKU 扩展属性,这些属性指定证书的有效用途。

  • 如果证书既没有 EKU 扩展也没有 EKU 扩展属性,则假定它对所有用途都有效。
  • 如果它具有 EKU 扩展或 EKU 扩展属性,但不同时具有两者,则它仅对扩展或扩展属性中指示的用途有效。
  • 如果证书同时具有 EKU 扩展和 EKU 扩展属性,则它仅对两个列表上的用途有效。
如果 dwFlags 设置为零,则 CERT_ENHKEY_USAGE 结构的 cUsageIdentifier 成员将设置为由 EKU 扩展和 EKU 扩展属性值确定的证书的有效使用数。

如果 cUsageIdentifier 成员为零,则证书可能对所有用途都有效,或者证书可能没有有效用途。 调用 GetLastError 的返回可用于确定证书是适合所有用途还是无。 如果 GetLastError 返回CRYPT_E_NOT_FOUND,则证书适用于所有用途。 如果返回零,则表示证书没有有效的用途。

要求

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

另请参阅

CertSetEnhancedKeyUsage

增强的键用法函数