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 旗標。
如果指定此旗標,此函式會嘗試取得對象的相關信息,嘗試不同的內容類型,直到找到適當的內容類型或內容類型耗盡為止。 這顯然沒有效率,因此只有在不知道內容類型時,才應該使用此旗標。 |
|
內容是單一憑證。 |
|
內容是 抽象語法表示法一 (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
表示所傳回型別的預期格式。 這可以是下列其中一個值。
值 | 意義 |
---|---|
|
內容可以任何格式傳回。 |
|
內容應以 ASCII 十六進位編碼格式傳回,其前置詞為 “{ASN}”。 |
|
內容應該以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。 傳回的格式類型可以是下列其中一個值。
值 | 意義 |
---|---|
|
內容採用具有 “{ASN}” 前置詞的 ASCII 十六進位編碼格式。 |
|
內容採用Base64編碼格式。 |
|
內容格式為二進位格式。 |
[out] phCertStore
HCERTSTORE 值的指標,這個值會接收憑證存放區的句柄,其中包含物件中的所有憑證、CRL 和 CCL。
當 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 |
程式庫 | Crypt32.lib |
Dll | Crypt32.dll |