共用方式為


CryptGetTimeValidObject 函式 (wincrypt.h)

CryptGetTimeValidObject 函式會擷取在指定內容和時間內有效的 CRL、OCSP 回應或 CTL 物件。

語法

BOOL CryptGetTimeValidObject(
  [in]                LPCSTR                                  pszTimeValidOid,
  [in]                LPVOID                                  pvPara,
  [in]                PCCERT_CONTEXT                          pIssuer,
  [in, optional]      LPFILETIME                              pftValidFor,
  [in]                DWORD                                   dwFlags,
  [in]                DWORD                                   dwTimeout,
  [out, optional]     LPVOID                                  *ppvObject,
  [in, optional]      PCRYPT_CREDENTIALS                      pCredentials,
  [in, out, optional] PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO pExtraInfo
);

參數

[in] pszTimeValidOid

識別所要求 對象的物件標識碼 指標 (OID) 。 如果 pszTimeValidOid 參數的 HIWORD 為零,LOWORD 會指定指定結構類型的整數識別碼。

此參數可以是下列其中一個值。 如需這些值如何影響 pvPara 參數的資訊,請參閱 [意義] 資料行中的標題“For the pvPara parameter”。

意義
TIME_VALID_OID_GET_CTL
( (LPCSTR) 1)
根據從目前 CTL 內容的 NextUpdateLocation 屬性或延伸模組取得的 URL,提供憑證信任清單 (CTL) 。

針對 pvPara 參數:代表目前憑證信任清單 之PCCTL_CONTEXT 的指標。

TIME_VALID_OID_GET_CRL
這個值已保留供未來使用
TIME_VALID_OID_GET_CRL_FROM_CERT
( (LPCSTR) 3)
根據從目前憑證內容之 CRL 發佈點延伸取得的資訊,提供 CRL。

針對 pvPara 參數:代表主體憑證 之PCCERT_CONTEXT 的指標。

TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT
( (LPCSTR) 4)
根據從目前憑證內容的最新CRL延伸模組取得的資訊,提供差異CRL。

針對 pvPara 參數:代表主體憑證 之PCCERT_CONTEXT 的指標。

TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL
( (LPCSTR) 5)
根據從目前 CRL 內容的最新 CRL 延伸模組取得的資訊,提供差異 CRL。

針對 pvPara 參數:代表主體憑證及其基底 CRL 之PCCERT_CRL_CONTEXT_PAIR 的指標。

[in] pvPara

pszTimeValidOid 值決定的結構。 如需詳細資訊,請參閱 pszTimeValidOid 參數的描述。

[in] pIssuer

包含簽發者憑證 之CERT_CONTEXT 的指標。

[in, optional] pftValidFor

目前系統時間選擇性 FILETIME 結構版本的指標,或目前內容的全新時間。

[in] dwFlags

值,決定各種擷取因素,例如逾時、來源和有效性檢查。

下表列出 dwFlags 參數的可能值。

意義
CRYPT_ACCUMULATIVE_TIMEOUT
0x00000800
使用用戶端電腦的累積逾時登錄設定來撤銷 URL 擷取。
CRYPT_CACHE_ONLY_RETRIEVAL
0x00000002
只從用戶端 URL 快取擷取編碼位。 請勿使用網路來擷取 URL。
CRYPT_CHECK_FRESHNESS_TIME_VALIDITY
0x00000400
檢查目前內容的 ThisUpdate 屬性或延伸是否大於或等於 ftValidFor 參數。
CRYPT_DONT_CHECK_TIME_VALIDITY
0x00000200
請勿執行時間有效性檢查。 使用此選項可透過網路擷取較新的基底CRL,或略過快取擷取期間的時間有效性檢查。 設定此旗標時, pftValidFor 可以是 NULL
CRYPT_DONT_VERIFY_SIGNATURE
0x00000100
請勿執行簽章驗證。 當驗證擷取的物件將在此函式外部執行,或強制取代已擷取的快取專案與物件的新快取專案時,請使用這個方法。
CRYPT_KEEP_TIME_VALID
0x00000080
這個值已保留供未來使用
CRYPT_OCSP_ONLY_RETRIEVAL
0x01000000
僅根據目前內容中的授權單位資訊存取 URL,從 OCSP 回應程式服務擷取有效的時間物件。 當呼叫時, CertVerifyRevocation 函式會將 dwFlags 參數設定為 CERT_VERIFY_REV_SERVER_OCSP_FLAG 時設定此旗標。
CRYPT_WIRE_ONLY_RETRIEVAL
0x00000004
只從線路擷取編碼位。 不使用 URL 快取。

[in] dwTimeout

值,以毫秒為單位,指定何時終止未傳回結果的 URL 擷取嘗試。

[out, optional] ppvObject

所傳回物件的位址指標。 傳回型別可以是 CryptRetrieveObjectByUrl 函式之 pszObjectOid 參數中顯示的其中一種支援型別。

[in, optional] pCredentials

用來存取 URL 之選擇性 CRYPT_CREDENTIALS 結構的指標。 目前唯一支持的認證類型是使用者名稱和密碼認證。

[in, out, optional] pExtraInfo

選擇性 CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO 結構的指標,其中包含物件快取專案的額外資訊。

傳回值

如果函式成功,函式會傳回 TRUE

如果函式失敗,則會傳回 FALSE。 如需擴充錯誤資訊,請呼叫 GetLastError

以下是一些可能的錯誤碼。

傳回碼 Description
CRYPT_E_NOT_FOUND
針對 pszTimeValidOid 參數指定的呼叫端TIME_VALID_OID_GET_CRL。 不支援此 OID。
CRYPT_E_NOT_IN_REVOCATION_DATABASE
呼叫端會設定CRYPT_OCSP_ONLY_RETRIEVAL旗標,而內容包含非 OCSP URL。
E_INVALIDARG
函式無法從憑證內容擷取CRL或擷取 CTL,而且無法從快取項目複製任何URL。
E_OUTOFMEMORY
函式無法為內部數位作業配置記憶體。
ERROR_NOT_CONNECTED
呼叫端未設定 CRYPT_CACHE_ONLY_RETRIEVAL 旗標,且未連線到因特網。

備註

Cryptnet 動態連結庫會實作時間有效的物件 (TVO) 快取,用來支援 CryptGetTimeValidObject 函式。 快取是由進程全域 TVO 代理程式使用,其中每個快取專案都包含下列資訊。

  • 原始標識碼
  • 內容 OID
  • Context
  • 擷取
  • 到期時間
  • 離線 URL 時間資訊
TVO 代理程式支援隨選或自動更新來擷取TVO物件。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Cryptnet.lib
Dll Cryptnet.dll