VintageNetWiFi.WPA2 (vintage_net_wifi v0.10.0) View Source

WPA2 preshared key calculations

WPA2 doesn't use passphrases directly, but instead hashes them with the SSID and uses the result for the network key. The algorithm that runs the hash takes some time so it's useful to compute the PSK from the passphrase once rather than specifying it each time.

Link to this section Summary

Functions

Convert a WiFi WPA2 passphrase into a PSK

Validate the length and characters of a passphrase

Validate the length of the SSID

Link to this section Types

Link to this type

invalid_passphrase_error()

View Source

Specs

invalid_passphrase_error() ::
  :password_too_short | :password_too_long | :invalid_characters

Specs

invalid_ssid_error() :: :ssid_too_short | :ssid_too_long

Specs

psk() :: <<_::512>>

A WPA2 preshared key

Link to this section Functions

Specs

to_psk(String.t(), psk() | String.t()) ::
  {:ok, psk()} | {:error, invalid_ssid_error() | invalid_passphrase_error()}

Convert a WiFi WPA2 passphrase into a PSK

If a passphrase looks like a PSK, then it's assumed that it already is a PSK and is passed through.

See IEEE Std 802.11i-2004 Appendix H.4 for the algorithm.

Link to this function

validate_passphrase(password)

View Source

Specs

validate_passphrase(String.t()) :: :ok | {:error, invalid_passphrase_error()}

Validate the length and characters of a passphrase

A valid passphrase is between 8 and 63 characters long, and only contains ASCII characters (values between 32 and 126, inclusive).

Specs

validate_ssid(String.t()) :: :ok | {:error, invalid_ssid_error()}

Validate the length of the SSID

A valid SSID is between 1 and 32 characters long.