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 属性值,请设置以下标志。
值 | 含义 |
---|---|
|
仅获取扩展。 |
|
仅获取扩展属性值。 |
[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 扩展属性,则它仅对两个列表上的用途有效。
如果 cUsageIdentifier 成员为零,则证书可能对所有用途都有效,或者证书可能没有有效用途。 调用 GetLastError 的返回可用于确定证书是适合所有用途还是无。 如果 GetLastError 返回CRYPT_E_NOT_FOUND,则证书适用于所有用途。 如果返回零,则表示证书没有有效的用途。
要求
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |