# WM_SetWEPKeyEx

## 構文

      #include <nitro/wm.h>

      WMErrCode WM_SetWEPKeyEx(
              WMCallbackFunc  callback ,
              u16             wepmode ,
              u16             wepkeyid ,
              const u8*       wepkey
      );

## 引数

callback | 非同期処理が完了した時に呼び出されるコールバック関数を指定します。 このコールバックは割り込みハンドラ内から呼び出されます。

wepmode

暗号通信機能の動作モードを指定します。以下の 0 〜 3 のモードから指定して下さい。

- 0 ： 暗号機能なし
- 1 ： RC4( 40 ビット )暗号モード
- 2 ： RC4( 104 ビット )暗号モード
- 3 ： RC4( 128 ビット )暗号モード

wepkeyid | 4つのWEPキーの内どのキーを用いるかを 0 〜 3 の値で指定して下さい。

wepkey

暗号キーデータ( 80バイト )へのポインタを指定します。
キーデータは4つのデータで構成され、それぞれ20バイトです。各20バイトのうち、

- 40 ビットモードでは 5 バイト
- 104 ビットモードでは 13 バイト
- 128 ビットモードでは 16 バイト

のデータが使用されます。
また、このデータの実体は強制的にキャッシュストアされる点に注意して下さい。

## 返り値

WMErrCode列挙型の処理結果を返します。

## 説明

暗号機能、暗号キーを設定します。WM_SetWEPKey( ) より詳細に設定を行うことができます。 WMがIDLEステートの場合に実行可能です。 関数の戻り値がWM_ERRCODE_OPERATINGであった場合、暗号機能設定処理が完了した後にコールバックが発生します。
WEPキーによる暗号化は、接続時の認証処理、及びインフラストラクチャモードでのデータ送受信に適用されます。 wepmodeは通信相手と同じ設定にしておく必要があります。 wepkeyidはデータを送信する際の暗号化データ列の選択に用いられます。 逆にデータ受信時の復号化には送信側が指定したIDのWEPキーが用いられます。 共通鍵認証においては子機が暗号化し、親機が復号化することでキーの一致が確認されるため、親機でのIDの指定は実質意味を持ちません。 また、インフラストラクチャモードでの受信データ復号化には、アクセスポイントが指定するIDのWEPキーが一致する必要があります。
当関数によってWEP暗号設定が行われた親機に子機として接続する際には、当関数によりWEP設定を行った上で WM_StartConnectEx( )のauthModeに共通鍵認証( WM_AUTHMODE_SHARED_KEY )であることを指定する必要がある点に注意して下さい。

## 注意

引数に渡したデータ(wepkey) は内部で強制的にキャッシュストアされます。キャッシュのトラブルを回避するには、32バイト境界に揃ったデータを渡す必要があります。
注意点などの詳細は「ワイヤレス通信ライブラリ解説 (AboutWirelessManager.pdf)」を参照してください。

## 参照

`WM_SetWEPKey, WM_StartConnectEx`

## 履歴

2008/12/17 引数に渡したデータが内部で強制的にキャッシュストアされる点について注意を追記
2005/06/08 コールバックが割り込みハンドラから呼び出される旨を補足
2005/03/07 説明追記
2005/03/02 wepmode引数について指定可能範囲を追記
2005/02/14 初版