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

IWMSecureChannel

COM
IID2720598a-d0f2-4189-bd10-91c46ef0936f継承元IWMAuthorizer自前メソッド開始 vtbl6

公式ドキュメント

IWMSecureChannel インターフェイスは、2 つの DLL が相互に検証を行い、セキュアな通信を実行できるようにするメソッドを提供します。

メソッド 11

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

vtbl 6 HRESULT WMSC_AddCertificate(IWMAuthorizer* pCert)

WMSC_AddCertificate メソッドは、このオブジェクトが他のセキュアチャネルオブジェクトに提示できる証明書を追加します。証明書が 1 つも追加されていない場合、このオブジェクトは署名を持たないオブジェクトにのみ接続できます。

pCertIWMAuthorizer*inauthorizer オブジェクトへのポインター。

戻り値

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

vtbl 7 HRESULT WMSC_AddSignature(BYTE* pbCertSig, DWORD cbCertSig)

WMSC_AddSignature メソッドは、このオブジェクトが接続を試みる際に探す署名を追加します。署名が 1 つも追加されていない場合、このオブジェクトは他の任意のオブジェクトに接続します。

pbCertSigBYTE*in証明書署名データのバイト配列へのポインタ。
cbCertSigDWORDin証明書署名データのバイト数。

戻り値

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

vtbl 8 HRESULT WMSC_Connect(IWMSecureChannel* pOtherSide)

WMSC_Connect メソッドは、セキュアな接続を初期化します。

pOtherSideIWMSecureChannel*inセキュアチャネルオブジェクトへのポインター。

戻り値

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

解説(Remarks)

この関数により、チャネルの各側は、暗号化に使用されるシークレットを共有する前に、相手側を検証できます。 さらに、暗号化のシリアル化に使用される DLL シリアライザーが共有されるようになります。

vtbl 9 HRESULT WMSC_IsConnected(BOOL* pfIsConnected)

WMSC_IsConnected メソッドは、セキュアな接続が有効かどうかを確認します。

pfIsConnectedBOOL*outセキュアな接続が有効かどうかを示す値へのポインター。

戻り値

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

vtbl 10 HRESULT WMSC_Disconnect()

WMSC_Disconnect メソッドは、セキュアな接続を破棄します。

戻り値

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

vtbl 11 HRESULT WMSC_GetValidCertificate(BYTE** ppbCertificate, DWORD* pdwSignature)

WMSC_GetValidCertificate メソッドは、接続の相手側から提供された証明書のコピーを返します。また、その証明書を検証した署名のインデックスも返します。

ppbCertificateBYTE**outppbCertificate は、ユーザーが CoTaskMemFree で解放する必要があります。 証明書が提供されなかった場合、ppbCertificateNULL になることがあります。 接続が確立されなかった場合、この関数は E_FAIL を返します。
pdwSignatureDWORD*out証明書の検証に署名が使用されなかった場合、pdwSignature は 0xFFFFFFFF になることがあります。

戻り値

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

vtbl 12 HRESULT WMSC_Encrypt(BYTE* pbData, DWORD cbData)

WMSC_Encrypt メソッドは、DLL の境界をまたいでデータを暗号化します。

pbDataBYTE*in暗号化対象データを格納したバッファへのポインタ。インプレースで暗号化される。
cbDataDWORDin暗号化するデータのバイト数。

戻り値

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

解説(Remarks)

Encrypt は接続に対するロックを保持し、そのロックは Decrypt によって解放されます。そのため、暗号化と復号の呼び出しの間でスレッドをブロックしないようにする必要があります。

vtbl 13 HRESULT WMSC_Decrypt(BYTE* pbData, DWORD cbData)

WMSC_Decrypt メソッドは、DLL の境界をまたいでデータを復号します。

pbDataBYTE*in復号対象データを格納したバッファへのポインタ。インプレースで復号される。
cbDataDWORDin復号するデータのバイト数。

戻り値

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

解説(Remarks)

Encrypt は接続に対するロックを保持し、そのロックは Decrypt によって解放されます。そのため、暗号化と復号の呼び出しの間でスレッドをブロックしないようにする必要があります。

vtbl 14 HRESULT WMSC_Lock()

WMSC_Lock メソッドは、セキュアな接続へのアクセスをロックします。

戻り値

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

vtbl 15 HRESULT WMSC_Unlock()

WMSC_Unlock メソッドは、セキュアな接続へのアクセスのロックを解除します。

戻り値

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

vtbl 16 HRESULT WMSC_SetSharedData(DWORD dwCertIndex, BYTE* pbSharedData)

WMSC_SetSharedData メソッドは、接続のネゴシエーション処理の際に使用されます。

dwCertIndexDWORDin共有データを設定する証明書のゼロ起点インデックス。
pbSharedDataBYTE*in設定する共有データのバイト配列へのポインタ。

戻り値

このメソッドが成功した場合は 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_IWMSecureChannel "{2720598A-D0F2-4189-BD10-91C46EF0936F}"
#usecom global IWMSecureChannel IID_IWMSecureChannel "{}"
#comfunc global IWMSecureChannel_WMSC_AddCertificate       6 sptr
#comfunc global IWMSecureChannel_WMSC_AddSignature         7 var,int
#comfunc global IWMSecureChannel_WMSC_Connect              8 sptr
#comfunc global IWMSecureChannel_WMSC_IsConnected          9 var
#comfunc global IWMSecureChannel_WMSC_Disconnect           10
#comfunc global IWMSecureChannel_WMSC_GetValidCertificate  11 var,var
#comfunc global IWMSecureChannel_WMSC_Encrypt              12 var,int
#comfunc global IWMSecureChannel_WMSC_Decrypt              13 var,int
#comfunc global IWMSecureChannel_WMSC_Lock                 14
#comfunc global IWMSecureChannel_WMSC_Unlock               15
#comfunc global IWMSecureChannel_WMSC_SetSharedData        16 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。