LoginSignup
1
2

More than 3 years have passed since last update.

wpa_supplicantを組み込みで使う方法

Last updated at Posted at 2018-12-25

すぐにどうのというつもりはないが、ちょっと調べてみた。

wpa_supplicantはWPAをサポートするためのコードで、WPAの接続処理とデータの送受信での暗号化の処理を行う。

ソースコードでOSやplatformに依存する部分のスケルトンはnoneというファイルで用意されている。

$ find src -name '*none.c'
src/crypto/crypto_none.c
src/crypto/tls_none.c
src/drivers/driver_none.c
src/l2_packet/l2_packet_none.c
src/utils/os_none.c

os,l2_packet,driverは下位レベルのコードと思われる。

cryptoとtldはsslライブラリのヘルパーでgnutls,openssl,wolfsslが用意されている。bearsslのものはまだない。mbedでWIFIサポートしているものがあるような気がするがmbed tlsのヘルパーも本家のツリーにはない。

これらを作り込めば組み込みでも使えると思われる。

EPS32はFreeRTOSを使ってlwipとwpa_supplicantを組み込んでいる。wifiに関係しそうなcomponentsはesp_wifi,wpa_supplicant,wifi_provisioningがある。またローレベルのnetwork関係はesp_netif,lwipがある。ESP32にはEthernet MACが入っていてPHY(LAN8720)をつなぐとEthernetが使えるようになるようだ。そのコードはesp_ethにある。wpa_supplicantはmbedtlsを使っているようだが、l2_packet,driverのディレクトリがなく、esp_supplicantというディレクトリがある。おそらくチップの機能を使いwpa_supplicantの機能の一部を使うような実装になっているのではないかと思われる。

Hardwareサポートなしに処理する場合はこのような流れになると思われる。

wpa.png

11bのWEPしかサポートしてないデバイスを利用する場合はこのような流れになるが、WPAをサポートしたデバイスでハードウエアサポートを利用すると初期の処理のみをwpa_supplicant経由にして、データの送受信はハードウエアから直接lwIPに渡す実装になるものと思われる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2