CryptRetrieveObjectByUrlA 函式 (wincrypt.h)
CryptRetrieveObjectByUrl 函式會從 URL 指定的位置擷取公鑰基礎結構 (PKI) 物件。
這些遠端物件採用編碼格式,並以「內容」形式擷取。
語法
BOOL CryptRetrieveObjectByUrlA(
[in] LPCSTR pszUrl,
[in] LPCSTR pszObjectOid,
[in] DWORD dwRetrievalFlags,
[in] DWORD dwTimeout,
[out] LPVOID *ppvObject,
[in] HCRYPTASYNC hAsyncRetrieve,
[in, optional] PCRYPT_CREDENTIALS pCredentials,
[in, optional] LPVOID pvVerify,
[in] PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
);
參數
[in] pszUrl
要擷取之 PKI 物件的位址。 支援下列設定:
- ldap (輕量型目錄存取通訊協定)
- http
- HTTPs (證書吊銷清單 (CRL) 或 在線憑證狀態通訊協定 , (OCSP) 僅擷取)
- file
[in] pszObjectOid
Null 終止的 ANSI 字串位址,可識別要擷取的物件類型。 這可以是下列其中一個值。
值 | 意義 |
---|---|
|
擷取一或多個數據 BLOB。 編碼的位會在 BLOB 的數位中傳回。 ppvObject 是接收 BLOB 陣列之 CRYPT_BLOB_ARRAY 結構指標的位址。 不再需要此結構時,您必須將這個結構的位址傳遞至 CryptMemFree 函式來釋放它。 |
|
擷取一或多個憑證。
如果要擷取單一物件, ppvObject 是接收內容 之CERT_CONTEXT 結構指標的位址。 不再需要此內容時,您必須將 CERT_CONTEXT 結構指標傳遞至 CertFreeCertificateContext 函式,以釋放它。 如果要擷取多個物件, ppvObject 是 HCERTSTORE 變數的位址,可接收包含憑證之存放區的句柄。 不再需要此存放區時,您必須將此句柄傳遞至 CertCloseStore 函式來關閉它。 |
|
擷取一或多個 證書吊銷清單 , (CRL) 。
如果要擷取單一物件, ppvObject 是接收內容之 CRL_CONTEXT 結構指標的位址。 不再需要此內容時,您必須將 CRL_CONTEXT 結構指標傳遞至 CertFreeCRLContext 函式來釋放它。 如果要擷取多個物件, ppvObject 是 HCERTSTORE 變數的位址,可接收包含 CRL 之存放區的句柄。 不再需要此存放區時,您必須將此句柄傳遞至 CertCloseStore 函式來關閉它。 |
|
擷取一或多個 憑證信任清單 , (CCL) 。
如果要擷取單一物件, ppvObject 是接收內容 之CTL_CONTEXT 結構指標的位址。 不再需要此內容時,您必須將 CTL_CONTEXT 結構指標傳遞至 CertFreeCTLContext 函式來釋放它。 如果要擷取多個物件, ppvObject 是 HCERTSTORE 變數的位址,可接收包含 CCL 之存放區的句柄。 不再需要此存放區時,您必須將此句柄傳遞至 CertCloseStore 函式來關閉它。 |
|
ppvObject 是 HCERTSTORE 變數的位址,可接收包含訊息中物件的存放區句柄。 不再需要此存放區時,您必須將此句柄傳遞至 CertCloseStore 函式來關閉它。 |
|
ppvObject 是 HCERTSTORE 變數的位址,可接收包含物件的存放區句柄。 不再需要此存放區時,您必須將此句柄傳遞至 CertCloseStore 函式來關閉它。 |
|
ppvObject 是 CRYPT_BLOB_ARRAY 結構的指標位址。 |
[in] dwRetrievalFlags
決定是否要使用快取的 URL 或從網路 URL 擷取的 URL。 傳回物件的窗體取決於 pszObjectOid 的值。
值 | 意義 |
---|---|
|
先驗證網路 URL 所擷取的內容,再將URL寫入快取。
預設提供者不支援 AIA 擷取的 HTTPS 通訊協定。 |
|
不支援此值。 |
|
只從 URL 快取擷取編碼位。 請勿使用網路來擷取 URL。 |
|
不會將擷取的編碼位儲存至URL快取。 如果未設定此旗標,則會快取擷取的URL。 |
|
使用 POST 方法,而不是 HTTP 擷取的預設 GET 方法。
在 POST URL 中,其他二進位數據和標頭字串會以下列格式附加至基底 URL: BaseURL/OptionalURLEscaped&Base64EncodedAdditionalData?OptionalAdditionalHTTPHeaders 下列範例顯示最後一個斜線標記 (/) 分隔的其他二進位數據,以及以問號分隔 (?) 附加至基底 URL 的 Content-Type 標頭。
設定此旗標時, CryptRetrieveObjectByUrl 函式會使用最後一個斜線標記 (/) 和問號 (?) 分隔符來剖析 URL。 以斜線標記分隔的字串 (/) ,包含未逸出的 URL (,也就是沒有逸出字元的純文本 URL,或逸出序列,) 和 Base64 數據譯碼為二進位格式,再傳遞至 WinHttpSendRequest 函式做為 lpOptional 參數。 以問號 (?) 分隔的字串會傳遞至 WinHttpSendRequest 函式做為 pwszHeaders 參數。 |
|
在提供的主機字串上執行僅限記錄的 DNS 查閱,以避免解析主機名時產生 false DNS 查詢。 傳遞主機名而非功能變數名稱時,應該使用這個旗標。 |
|
擷取每個LDAP物件的專案索引和屬性名稱。 每個傳回 BLOB 的開頭都包含下列 ANSI 字串: “decimal\0屬性名稱\0 中的專案索引” 設定此旗標時, pszObjectOid 必須是 NULL ,才能傳回 BLOB。 此旗標僅適用於ldap配置。 |
|
如果LDAP搜尋範圍未設定為URL中的基底,就會失敗。 僅搭配LDAP使用。 |
|
使用 Kerberos 驗證通訊協定,以數位方式簽署來自伺服器的所有 LDAP 流量。 這項功能提供某些應用程式所需的完整性。 |
|
禁止自動驗證處理。 |
|
啟用條件式 HTTP URL 擷取。 設定此旗標時,針對傳回 HTTP_STATUS_NOT_MODIFIED的條件式擷取, CryptRetrieveObjectByUrl 會傳回 TRUE ,並將 ppvObject 設定為 NULL。 如果 pAuxInfo 不是 NULL,dwHttpStatusCode 會設定為 HTTP_STATUS_NOT_MODIFIED。 否則, ppvObject 會更新為成功擷取。 |
|
在後續擷取上線之前,持續追蹤脫機失敗和延遲。 此值僅適用於網路擷取。 |
|
啟用物件的 Proxy 快取擷取。 如果未明確略過 Proxy 快取,fProxyCacheRetrieval 會在 pAuxInfo 中設定為 TRUE。 此值僅適用於 HTTP URL 擷取。 |
|
如果有的話,擷取多個物件。 除非物件標識碼 (OID) CONTEXT_OID_CAPI2_ANY 值,否則所有對象都必須是 pszObjectOid 的值所決定的同質物件類型。 |
|
將 URL 標記為豁免從快取排清。 如需詳細資訊,請參閱 INTERNET_CACHE_ENTRY_INFO 中的STICKY_CACHE_ENTRY。 |
|
取得所建立內容上的簽章驗證。 在此情況下,pszObjectOid 必須是非 NULL,pvVerify 指向簽署者憑證內容。 |
|
此旗標未實作。 不要使用它。 |
|
只從線路擷取編碼位。 不使用 URL 快取。 |
[in] dwTimeout
指定要等候擷取的最大毫秒數。 如果指定零的值,則此函式不會逾時。如果 URL 配置 file:///,則不會使用此參數。
[out] ppvObject
所傳回物件的指標位址。 傳回型別可以是 pszObjectOid 中顯示的其中一種支持類型。
[in] hAsyncRetrieve
此參數是保留的,而且必須設定為 NULL。
[in, optional] pCredentials
不使用這個參數。
[in, optional] pvVerify
驗證物件的指標。 這個物件是 dwRetrievalFlags 參數的函式 。 如果 dwRetrievalFlags 已CRYPT_VERIFY_CONTEXT_SIGNATURE,則為 NULL,表示呼叫端對取得簽署者的憑證內容或索引不感興趣。
[in] pAuxInfo
CRYPT_RETRIEVE_AUX_INFO 結構的選擇性指標。 如果不是 NULL ,而且已設定結構的 cbSize 成員,此參數會傳回上次成功擷取線路的時間。
傳回值
如果函式成功,則傳回值為非零 (TRUE) 。
如果函式失敗,則傳回值為零, (FALSE) 。
備註
遠程物件擷取管理員會公開兩個提供者模型。 其中一個是配置提供者模型,允許 URL 配置所定義的可安裝通訊協定提供者,也就是 ldap、HTTP、ftp 或檔案。 配置提供者進入點與 CryptRetrieveObjectByUrl 函式相同;不過,傳回的 *ppvObject 一律是編碼位的計數陣列, (每個擷取) 一個物件。
第二個提供者模型是內容提供者模型,可讓您根據擷取的編碼位,將內容句柄 (物件) 的可安裝建立者。 這些會根據呼叫 CryptRetrieveObjectByUrl 中指定的物件標識碼 (OID) 來分派。
可以擷取個別的 PKI 物件,例如憑證、信任清單、撤銷清單、PKCS #7 訊息和多個同質物件。 從 Windows Vista 搭配 Service Pack 1 (SP1) 和 Windows Server 2008 開始,已強化 “HTTP:” 和 “ldap:” 擷取的安全性。 此函式支援 “HTTP:” 和 “ldap:” URL 配置,以及新定義的配置。
Windows XP: “ftp:” 不支持網络擷取。
注意
wincrypt.h 標頭會根據 UNICODE 預處理器常數的定義,將 CryptRetrieveObjectByUrl 定義為別名,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | wincrypt.h |
程式庫 | Cryptnet.lib |
Dll | Cryptnet.dll |