CryptRetrieveObjectByUrlW 関数 (wincrypt.h)
CryptRetrieveObjectByUrl 関数は、URL で指定された場所から公開キー 基盤 (PKI) オブジェクトを取得します。
これらのリモート オブジェクトはエンコードされた形式で、"コンテキスト" 形式で取得されます。
構文
BOOL CryptRetrieveObjectByUrlW(
[in] LPCWSTR 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) 取得のみ) - ファイル
[in] pszObjectOid
取得するオブジェクトの種類を識別する null で終わる ANSI 文字列のアドレス。 次のいずれかの値を指定できます。
価値 | 意味 |
---|---|
|
BLOB |
|
1 つ以上の証明書を取得します。
単一のオブジェクトが取得されている場合、ppvObject は、コンテキストを受け取る CERT_CONTEXT 構造体ポインターのアドレスです。 このコンテキストが不要になったら、CertFreeCertificateContext 関数に CERT_CONTEXT 構造体ポインターを渡して解放する必要があります。 複数のオブジェクトが取得されている場合、ppvObject は、証明書を含むストアのハンドルを受け取る HCERTSTORE 変数のアドレスです。 このストアが不要になったら、このハンドルを CertCloseStore 関数に渡して閉じる必要があります。 |
|
1 つ以上の 証明書失効リスト (CRL) を取得します。
1 つのオブジェクトを取得する場合、ppvObject は、コンテキストを受け取る CRL_CONTEXT 構造体ポインターのアドレスです。 このコンテキストが不要になったら、CRL_CONTEXT 構造体ポインターを CertFreeCRLContext 関数に渡して解放する必要があります。 複数のオブジェクトが取得されている場合、ppvObject は、CRL を含むストアのハンドルを受け取る HCERTSTORE 変数のアドレスです。 このストアが不要になったら、このハンドルを CertCloseStore 関数に渡して閉じる必要があります。 |
|
1 つ以上の 証明書信頼リスト (CCTL) を取得します。
単一のオブジェクトが取得されている場合、ppvObject は、コンテキストを受け取る CTL_CONTEXT 構造体ポインターのアドレスです。 このコンテキストが不要になったら、CertFreeCTLContext 関数に CTL_CONTEXT 構造体ポインターを渡して解放する必要があります。 複数のオブジェクトが取得されている場合、ppvObject は、CCTL を含むストアのハンドルを受け取る HCERTSTORE 変数のアドレスです。 このストアが不要になったら、このハンドルを 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 がキャッシュされます。 |
|
HTTP 取得に既定の GET メソッドの代わりに POST メソッドを使用します。
POST URL では、追加のバイナリ データとヘッダー文字列がベース URL に次の形式で追加されます。 次の例は、最後のスラッシュ (/) で区切られた追加のバイナリ データと、ベース URL に追加された疑問符 (?) で区切られた Content-Type ヘッダーを示しています。
このフラグを設定すると、CryptRetrieveObjectByUrl 関数は、最後のスラッシュ (/) 区切り記号と疑問符 (?) 区切り記号を使用して URL を解析します。 スラッシュ (/) で区切られた文字列には、エスケープされていない URL (つまり、エスケープ文字やエスケープ シーケンスのないプレーン テキスト URL) と、WinHttpSendRequestlpOptional パラメーターとして関数に渡される前にバイナリ形式でデコードされた Base64 データが含まれます。 疑問符 (?) で区切られた文字列は、pwszHeaders パラメーターとして、WinHttpSendRequest 関数に渡されます。 |
|
指定されたホスト文字列に対して A レコードのみの DNS 参照を実行し、ホスト名を解決するときに偽の DNS クエリが生成されないようにします。 このフラグは、ドメイン名ではなくホスト名を渡すときに使用する必要があります。 |
|
各 LDAP オブジェクトのエントリ インデックスと属性名を取得します。 返される各 BLOB の先頭には、次の ANSI 文字列が含まれています。 "エントリ インデックス (10 進\0属性名\0" このフラグが設定されている場合、BLOB が返されるように pszObjectOid |
|
LDAP 検索スコープが URL のベースに設定されていない場合、失敗します。 LDAP でのみ使用します。 |
|
Kerberos 認証プロトコルを使用して、サーバーとの間のすべての LDAP トラフィックにデジタル署名します。 この機能は、一部のアプリケーションで必要な整合性を提供します。 |
|
自動認証処理を禁止します。 |
|
条件付き HTTP URL の取得を有効にします。 このフラグが設定されている場合、 |
|
後続の取得時にネットワークにヒットする前に、オフラインの障害と遅延を追跡します。 この値は、ワイヤ取得専用です。 |
|
オブジェクトのプロキシ キャッシュ取得を有効にします。 プロキシ キャッシュが明示的にバイパスされていない場合、 |
|
使用可能な場合は、複数のオブジェクトを取得します。 オブジェクト 識別子 (OID) の値がCONTEXT_OID_CAPI2_ANYされていない限り、すべてのオブジェクト pszObjectOidの値によって決定される同種のオブジェクト型である必要があります。 |
|
URL にキャッシュからのフラッシュの除外としてタグを付けます。 詳細については、INTERNET_CACHE_ENTRY_INFOのSTICKY_CACHE_ENTRYを参照してください。 |
|
作成されたコンテキストで署名の検証を取得します。 この場合 |
|
このフラグは実装されていません。 使用しないでください。 |
|
ワイヤからのみエンコードされたビットを取得します。 URL キャッシュを使用しません。 |
[in] dwTimeout
取得を待機する最大ミリ秒数を指定します。 値が 0 の場合、この関数はタイムアウトしません。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
戻り値
関数が成功した場合、戻り値は 0 以外 (true
関数が失敗した場合、戻り値は 0 (FALSE
備考
リモート オブジェクト取得マネージャーは、2 つのプロバイダー モデルを公開します。 1 つは、URL スキーム (ldap、http、ftp、またはファイル) で定義されているインストール可能なプロトコル プロバイダーを許可するスキーム プロバイダー モデルです。 スキーム プロバイダーのエントリ ポイントは、CryptRetrieveObjectByUrl 関数と同じです。ただし、返される *ppvObject は常に、エンコードされたビット (取得されたオブジェクトごとに 1 つ) のカウントされた配列です。
2 番目のプロバイダー モデルは、取得したエンコードされたビットに基づいてコンテキスト ハンドル (オブジェクト) のインストール可能な作成者を許可するコンテキスト プロバイダー モデルです。 これらは、CryptRetrieveObjectByUrlの呼び出しで指定された オブジェクト識別子 (OID) に基づいてディスパッチされます。
証明書、信頼リスト、失効リスト、PKCS #7 メッセージ、複数の同種オブジェクトなどの個々の PKI オブジェクトを取得できます。 Windows Vista Service Pack 1 (SP1) および Windows Server 2008 以降では、"http:" と "ldap:" の取得のセキュリティが強化されました。
この関数は、"http:" と "ldap:" の URL スキームと、新しく定義されたスキームをサポートします。
Windows XP: "ftp:" は、ネットワーク取得ではサポートされていません。
手記
wincrypt.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CryptRetrieveObjectByUrl を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | wincrypt.h |
ライブラリ | Cryptnet.lib |
DLL | Cryptnet.dll |