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 が 0 の場合、LOWORD は指定した構造体の型の整数識別子を指定します。

このパラメーターには、次の値のいずれかを指定できます。 これらの値が pvPara パラメーターにどのように影響するかについては、「意味」列の「pvPara パラメーターの場合」という見出しを参照してください。

意味
TIME_VALID_OID_GET_CTL
((LPCSTR)1)
NextUpdateLocation プロパティまたは現在の CTL コンテキストの拡張から取得した 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 を呼び出します。

考えられるエラー コードの一部を次に示します。

リターン コード 説明
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 ダイナミック リンク ライブラリは、 CryptGetTimeValidObject 関数をサポートするために使用される時間有効なオブジェクト (TVO) キャッシュを実装します。 キャッシュは、各キャッシュ エントリが次の情報で構成されるプロセス グローバル TVO エージェントによって使用されます。

  • 配信元識別子
  • コンテキスト OID
  • Context
  • 取得 URL
  • 有効期限
  • オフライン URL 時刻情報
TVO エージェントは、オンデマンドまたは自動更新による TVO オブジェクトの取得をサポートします。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Cryptnet.lib
[DLL] Cryptnet.dll