CryptQueryObject 函数 (wincrypt.h)
语法
BOOL CryptQueryObject(
[in] DWORD dwObjectType,
[in] const void *pvObject,
[in] DWORD dwExpectedContentTypeFlags,
[in] DWORD dwExpectedFormatTypeFlags,
[in] DWORD dwFlags,
[out] DWORD *pdwMsgAndCertEncodingType,
[out] DWORD *pdwContentType,
[out] DWORD *pdwFormatType,
[out] HCERTSTORE *phCertStore,
[out] HCRYPTMSG *phMsg,
[out] const void **ppvContext
);
参数
[in] dwObjectType
指示要查询的对象的类型。 这必须是以下值之一。
值 | 含义 |
---|---|
|
对象存储在内存中的 结构中。 |
|
对象存储在 文件中。 |
[in] pvObject
指向要查询的 对象的指针。 数据指针的类型取决于 dwObjectType 参数的内容。
dwObjectType 值 | 含义 |
---|---|
|
此参数是指向包含要查询对象的 CERT_BLOB或类似结构的指针。 |
|
此参数是指向以 null 结尾的 Unicode 字符串的指针,该字符串包含要查询的文件的路径和名称。 |
[in] dwExpectedContentTypeFlags
指示预期的内容类型。 这可以是以下值之一。
值 | 含义 |
---|---|
|
内容可以是任意类型。 这不包括 CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD 标志。
如果指定了此标志,此函数将尝试获取有关对象的信息,尝试不同的内容类型,直到找到正确的内容类型或内容类型已用尽。 这显然效率低下,因此仅当内容类型未知时,才应使用此标志。 |
|
内容是单个证书。 |
|
内容是 抽象语法表示法 One (ASN.1) 编码X509_CERT_PAIR (包含正向、反向或正向和反向交叉证书) 的编码证书对。 |
|
内容是单个 CRL。 |
|
内容是单个 CTL。 |
|
内容是 PFX (PKCS #12) 数据包,但此函数不会加载它。 可以使用 PFXImportCertStore 函数将其加载到存储中。 |
|
内容是 PFX (PKCS #12) 数据包,此函数将根据以下说明中指定的条件加载。
注意
如果 PFX 数据包包含的嵌入密码不是空字符串或 NULL,并且密码未受到 Active Directory (AD) 主体(包括调用用户)的保护,则此函数将无法解密 PFX 数据包。 但是,如果创建 PFX 数据包时使用的密码已加密给 AD 主体,并且用户作为该主体的一部分有权解密密码,则可以解密该数据包。 有关详细信息,请参阅 pvPara 参数和 PFXExportCertStoreEx 函数的 PKCS12_PROTECT_TO_DOMAIN_SIDS 标志。 可以从Windows 8和Windows Server 2012开始保护 AD 主体的 PFX 密码。 |
|
内容是 PKCS #7 签名的消息。 |
|
内容是嵌入的 PKCS #7 签名消息。 |
|
内容是 PKCS #7 未签名的消息。 |
|
内容是 PKCS #10 消息。 |
|
内容是序列化的单个证书。 |
|
内容是序列化的单个 CRL。 |
|
内容序列化为单个 CTL。 |
|
内容是序列化存储区。 |
[in] dwExpectedFormatTypeFlags
指示返回类型的预期格式。 这可以是以下值之一。
值 | 含义 |
---|---|
|
可以采用任何格式返回内容。 |
|
内容应以带有“{ASN}”前缀的 ASCII 十六进制编码格式返回。 |
|
内容应以 Base64 编码格式返回。 |
|
内容应以二进制格式返回。 |
[in] dwFlags
此参数保留供将来使用,必须设置为零。
[out] pdwMsgAndCertEncodingType
指向接收消息中使用的编码类型的 DWORD 值的指针。 如果不需要此信息,请将此参数设置为 NULL。
此参数可以接收以下一个或多个值的组合。
值 | 含义 |
---|---|
|
指定 PKCS 7 消息编码。 |
|
指定 X.509 证书编码。 |
[out] pdwContentType
指向接收内容的实际类型的 DWORD 值的指针。 如果不需要此信息,请将此参数设置为 NULL。 返回的内容类型可以是以下值之一。
值 | 含义 |
---|---|
|
内容是单个证书。 |
|
内容是 ASN.1 编码X509_CERT_pair。 |
|
内容是单个 CRL。 |
|
内容是单个 CTL。 |
|
内容是 PFX (PKCS #12) 数据包。 此函数仅验证对象是否为 PKCS #12 数据包。 PKCS #12 数据包未加载到证书存储中。 |
|
内容是 PFX (PKCS #12) 数据包,并且已加载到证书存储中。
Windows Server 2003 和 Windows XP: 不支持此值。 |
|
内容是 PKCS #7 签名的消息。 |
|
内容是嵌入的 PKCS #7 签名消息。 |
|
内容是 PKCS #7 未签名消息。 |
|
内容是 PKCS #10 消息。 |
|
内容是序列化的单个证书。 |
|
内容是序列化的单个 CRL。 |
|
内容是序列化的单个 CTL。 |
|
内容是序列化存储。 |
[out] pdwFormatType
指向接收内容的实际格式类型的 DWORD 值的指针。 如果不需要此信息,请将此参数设置为 NULL。 返回的格式类型可以是以下值之一。
值 | 含义 |
---|---|
|
内容采用 ASCII 十六进制编码格式,前缀为“{ASN}”。 |
|
内容采用 Base64 编码格式。 |
|
内容采用二进制格式。 |
[out] phCertStore
指向 HCERTSTORE 值的指针,该值接收包含 对象中所有证书、CRL 和 CTL 的证书存储的句柄。
仅当 dwContentType 参数收到以下值之一时,此参数才会接收证书存储句柄。 此参数接收所有其他内容类型的 NULL 。
CERT_QUERY_CONTENT_CERT
CERT_QUERY_CONTENT_CRL
CERT_QUERY_CONTENT_CTL
CERT_QUERY_CONTENT_PFX_AND_LOAD
CERT_QUERY_CONTENT_PKCS7_SIGNED
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
CERT_QUERY_CONTENT_SERIALIZED_CERT
CERT_QUERY_CONTENT_SERIALIZED_CRL
CERT_QUERY_CONTENT_SERIALIZED_CTL
CERT_QUERY_CONTENT_SERIALIZED_STORE
使用完句柄后,通过将句柄传递给 CertCloseStore 函数来释放它。
如果不需要此信息,请将此参数设置为 NULL。
[out] phMsg
指向接收打开的消息句柄的 HCRYPTMSG 值的指针。
仅当 dwContentType 参数收到以下值之一时,此参数才会接收消息句柄。 此参数接收所有其他内容类型的 NULL 。
CERT_QUERY_CONTENT_PKCS7_SIGNED
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
使用完句柄后,通过将句柄传递给 CryptMsgClose 函数来释放它。
如果不需要此信息,请将此参数设置为 NULL。
[out] ppvContext
指向接收有关对象的其他信息的指针的指针。
此数据的格式取决于 dwContentType 参数接收的值。 下表列出了指定 dwContentType 值的数据格式。
dwContentType 值 | 含义 |
---|---|
|
此参数接收指向 CERT_CONTEXT 结构的指针。 使用完 结构后,通过将此指针传递到 CertFreeCertificateContext 函数来释放它。 |
|
此参数接收指向 CRL_CONTEXT 结构的指针。 使用完 结构后,通过将此指针传递给 CertFreeCRLContext 函数来释放它。 |
|
此参数接收指向 CTL_CONTEXT 结构的指针。 使用完 结构后,通过将此指针传递给 CertFreeCTLContext 函数来释放它。 |
|
此参数接收指向 CERT_CONTEXT 结构的指针。 使用完 结构后,通过将此指针传递到 CertFreeCertificateContext 函数来释放它。 |
|
此参数接收指向 CRL_CONTEXT 结构的指针。 使用完 结构后,通过将此指针传递给 CertFreeCRLContext 函数来释放它。 |
|
此参数接收指向 CTL_CONTEXT 结构的指针。 使用完 结构后,通过将此指针传递给 CertFreeCTLContext 函数来释放它。 |
如果不需要此信息,请将此参数设置为 NULL。
返回值
如果函数成功,该函数将返回非零值。
如果函数失败,则返回零。 有关扩展的错误信息,请调用 GetLastError。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |