diff options
author | Gerald Combs <gerald@wireshark.org> | 2006-12-28 17:22:12 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2006-12-28 17:22:12 +0000 |
commit | bd282b4114be8c7060fbc3873a04b80ec18317b8 (patch) | |
tree | ef14ce379885a746930a9839b20bebb530b35d04 /epan/crypt/airpdcap_user.h | |
parent | 60180815a6a70d264fdf4f6ff9f49eeb1a7c6742 (diff) | |
download | wireshark-bd282b4114be8c7060fbc3873a04b80ec18317b8.tar.gz wireshark-bd282b4114be8c7060fbc3873a04b80ec18317b8.tar.bz2 wireshark-bd282b4114be8c7060fbc3873a04b80ec18317b8.zip |
Move the contents of airpdcap to epan/crypt. Try to fix the current
distcheck failure. Move the nmake build targets for airpdcap from
epan/dissectors to epan. This will probably break the Windows build.
svn path=/trunk/; revision=20231
Diffstat (limited to 'epan/crypt/airpdcap_user.h')
-rw-r--r-- | epan/crypt/airpdcap_user.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/epan/crypt/airpdcap_user.h b/epan/crypt/airpdcap_user.h new file mode 100644 index 0000000000..b637ea90b8 --- /dev/null +++ b/epan/crypt/airpdcap_user.h @@ -0,0 +1,167 @@ +#ifndef _AIRPDCAP_USER_H +#define _AIRPDCAP_USER_H + +/******************************************************************************/ +/* File includes */ +/* */ +#include "airpdcap_interop.h" +/* */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Constant definitions */ +/* */ +/* Decryption key types */ +#define AIRPDCAP_KEY_TYPE_WEP 0 +#define AIRPDCAP_KEY_TYPE_WEP_40 1 +#define AIRPDCAP_KEY_TYPE_WEP_104 2 +#define AIRPDCAP_KEY_TYPE_WPA_PWD 3 +#define AIRPDCAP_KEY_TYPE_WPA_PSK 4 +#define AIRPDCAP_KEY_TYPE_WPA_PMK 5 +#define AIRPDCAP_KEY_TYPE_TKIP 6 +#define AIRPDCAP_KEY_TYPE_CCMP 7 + +/* Decryption algorithms fields size definition (bytes) */ +#define AIRPDCAP_WEP_KEY_MINLEN 1 +#define AIRPDCAP_WEP_KEY_MAXLEN 32 +#define AIRPDCAP_WEP_40_KEY_LEN 5 +#define AIRPDCAP_WEP_104_KEY_LEN 13 + +#define AIRPDCAP_WPA_PASSPHRASE_MIN_LEN 8 +#define AIRPDCAP_WPA_PASSPHRASE_MAX_LEN 63 /* null-terminated string, the actual length of the storage is 64 */ +#define AIRPDCAP_WPA_SSID_MIN_LEN 0 +#define AIRPDCAP_WPA_SSID_MAX_LEN 32 +#define AIRPDCAP_WPA_PSK_LEN 64 +#define AIRPDCAP_WPA_PMK_LEN 32 +/* */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Macro definitions */ +/* */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Type definitions */ +/* */ +/** + * Struct to store info about a specific decryption key. + */ +typedef struct { + GString *key; + GString *ssid; + guint bits; + guint type; +} decryption_key_t; + +/** + * Key item used during the decryption process. + */ +typedef struct _AIRPDCAP_KEY_ITEM { + /** + * Type of key. The type will remain unchanged during the + * processing, even if some fields could be changed (e.g., WPA + * fields). + * @note + * You can use constants AIRPDCAP_KEY_TYPE_xxx to indicate the + * key type. + */ + UINT8 KeyType; + + /** + * Key data. + * This field can be used for the following decryptographic + * algorithms: WEP-40, with a key of 40 bits (10 hex-digits); + * WEP-104, with a key of 104 bits (or 26 hex-digits); WPA or + * WPA2. + * @note + * For WPA/WPA2, the PMK is calculated from the PSK, and the PSK + * is calculated from the passphrase-SSID pair. You can enter one + * of these 3 values and subsequent fields will be automatically + * calculated. + * @note + * For WPA and WPA2 this implementation will use standards as + * defined in 802.11i (2004) and 802.1X (2004). + */ + union AIRPDCAP_KEY_ITEMDATA { + struct AIRPDCAP_KEY_ITEMDATA_WEP { + /** + * The binary value of the WEP key. + * @note + * It is accepted a key of lenght between + * AIRPDCAP_WEP_KEY_MINLEN and + * AIRPDCAP_WEP_KEY_MAXLEN. A WEP key + * standard-compliante should be either 40 bits + * (10 hex-digits, 5 bytes) for WEP-40 or 104 bits + * (26 hex-digits, 13 bytes) for WEP-104. + */ + UCHAR WepKey[AIRPDCAP_WEP_KEY_MAXLEN]; + /** + * The length of the WEP key. Acceptable range + * is [AIRPDCAP_WEP_KEY_MINLEN;AIRPDCAP_WEP_KEY_MAXLEN]. + */ + size_t WepKeyLen; + } Wep; + + /** + * WPA/WPA2 key data. Note that the decryption process + * will use the PMK (equal to PSK), that is calculated + * from passphrase-SSID pair. You can define one of these + * three fields and necessary fields will be automatically + * calculated. + */ + union AIRPDCAP_KEY_ITEMDATA_WPA { + struct AIRPDCAP_KEY_ITEMDATA_PWD { + /** + * The string (null-terminated) value of + * the passphrase. + */ + CHAR Passphrase[AIRPDCAP_WPA_PASSPHRASE_MAX_LEN+1]; + /** + * The value of the SSID (up to + * AIRPDCAP_WPA_SSID_MAX_LEN octets). + * @note + * A zero-length SSID indicates broadcast. + */ + CHAR Ssid[AIRPDCAP_WPA_SSID_MAX_LEN]; + /** + *The length of the SSID + */ + size_t SsidLen; + } UserPwd; + + UCHAR Psk[AIRPDCAP_WPA_PSK_LEN]; + + UCHAR Pmk[AIRPDCAP_WPA_PMK_LEN]; + } Wpa; + } KeyData; +} AIRPDCAP_KEY_ITEM, *PAIRPDCAP_KEY_ITEM; + +/** + * Collection of keys to use to decrypt packets + */ +typedef struct _AIRPDCAP_KEYS_COLLECTION { + /** + * Number of stored keys + */ + size_t nKeys; + + /** + * Array of nKeys keys + */ + AIRPDCAP_KEY_ITEM Keys[256]; +} AIRPDCAP_KEYS_COLLECTION, *PAIRPDCAP_KEYS_COLLECTION; +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Function prototype declarations */ +/* */ +/* */ +/* */ +/******************************************************************************/ + +#endif /* _AIRPDCAP_USER_H */ |