Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFSSLCertificateManager

IMFSSLCertificateManager

COM
IID61f7d887-1230-4a8b-aeba-8ad434d1a64d継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

クライアントが実装し、サーバーから要求されたクライアントの Secure Sockets Layer (SSL) 証明書を取得するために Microsoft Media Foundation から呼び出されます。

メソッド 5

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetClientCertificate(LPWSTR pszURL, BYTE** ppbData, DWORD* pcbData)

クライアントの SSL 証明書を同期的に取得します。

pszURLLPWSTRinクライアント側の SSL 証明書が必要となる URL を含む文字列へのポインター。Media Foundation はスキームを解決し、サーバーに要求を送信できます。
ppbDataBYTE**out証明書を格納するバッファーへのポインター。 呼び出し元は CoTaskMemFree を呼び出してバッファーを解放する必要があります。
pcbDataDWORD*out*ppbData が指すバッファー内の証明書データを保持するために必要なバイト数を受け取る DWORD 変数へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 4 HRESULT BeginGetClientCertificate(LPWSTR pszURL, IMFAsyncCallback* pCallback, IUnknown* pState)

クライアントの SSL 証明書を取得する非同期呼び出しを開始します。

pszURLLPWSTRinクライアント側の SSL 証明書が必要となる URL を含む、null で終わる文字列。Media Foundation はスキームを解決し、サーバーに要求を送信できます。
pCallbackIMFAsyncCallback*inコールバックオブジェクトの IMFAsyncCallback インターフェイスへのポインター。呼び出し元はこのインターフェイスを実装する必要があります。
pStateIUnknown*in呼び出し元が定義する状態オブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL でもかまいません。このオブジェクトを使用して状態情報を保持できます。コールバックが呼び出されるとき、このオブジェクトが呼び出し元に返されます。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

操作が完了すると、コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。その時点で、アプリケーションは IMFSSLCertificateManager::EndGetClientCertificate を呼び出して非同期要求を完了する必要があります。

vtbl 5 HRESULT EndGetClientCertificate(IMFAsyncResult* pResult, BYTE** ppbData, DWORD* pcbData)

クライアントの SSL 証明書を取得する非同期要求を完了します。

pResultIMFAsyncResult*inIMFAsyncResult インターフェイスへのポインター。コールバックオブジェクトが IMFAsyncCallback::Invoke メソッドで受け取ったものと同じポインターを渡します。
ppbDataBYTE**out証明書を格納するバッファーへのポインターを受け取ります。 呼び出し元は CoTaskMemFree を呼び出してバッファーを解放する必要があります。
pcbDataDWORD*outppbData バッファーのサイズをバイト単位で受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

IMFSSLCertificateManager::BeginGetClientCertificate メソッドが非同期に完了した後に、このメソッドを呼び出します。

vtbl 6 HRESULT GetCertificatePolicy(LPWSTR pszURL, BOOL* pfOverrideAutomaticCheck, BOOL* pfClientCertificateAvailable)

サーバーの SSL 証明書を、呼び出し元、Media Foundation、または IMFSSLCertificateManager の実装クラスのいずれが検証する必要があるかを示します。

pszURLLPWSTRinサーバーに送信される URL を含む文字列へのポインター。
pfOverrideAutomaticCheckBOOL*outBOOL 値へのポインター。サーバー証明書の検証に IMFSSLCertificateManager::OnServerCertificate を使用する場合は TRUE に設定します。 Media Foundation が Windows 証明書ストア内の証明書を使用してサーバー証明書を検証する場合は FALSE に設定します。
pfClientCertificateAvailableBOOL*outBOOL 値へのポインター。クライアントの SSL 証明書を即座に取得できる場合は TRUE に設定します。Media Foundation は IMFSSLCertificateManager::GetClientCertificate を呼び出してクライアント証明書を同期的に取得します。この値が FALSE に設定されている場合、Media Foundation は IMFSSLCertificateManager::BeginGetClientCertificate への非同期呼び出しによってクライアントの SSL 証明書を取得します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT OnServerCertificate(LPWSTR pszURL, BYTE* pbData, DWORD cbData, BOOL* pfIsGood)

サーバーの SSL 証明書を受信したときに Media Foundation から呼び出され、サーバー証明書を受け入れるかどうかを示します。

pszURLLPWSTRinサーバーへの要求送信に使用され、サーバー側の SSL 証明書を受信した URL を含む文字列へのポインター。
pbDataBYTE*inサーバーの SSL 証明書を含むバッファーへのポインター。
cbDataDWORDinpbData のサイズをバイト単位で示す DWORD 変数へのポインター。
pfIsGoodBOOL*out証明書を受け入れるかどうかを示す BOOL 変数へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IMFSSLCertificateManager "{61F7D887-1230-4A8B-AEBA-8AD434D1A64D}"
#usecom global IMFSSLCertificateManager IID_IMFSSLCertificateManager "{}"
#comfunc global IMFSSLCertificateManager_GetClientCertificate       3 wstr,var,var
#comfunc global IMFSSLCertificateManager_BeginGetClientCertificate  4 wstr,sptr,sptr
#comfunc global IMFSSLCertificateManager_EndGetClientCertificate    5 sptr,var,var
#comfunc global IMFSSLCertificateManager_GetCertificatePolicy       6 wstr,var,var
#comfunc global IMFSSLCertificateManager_OnServerCertificate        7 wstr,var,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。