aboutsummaryrefslogtreecommitdiffstats
path: root/epan/crypt/airpdcap_user.h
diff options
context:
space:
mode:
authorgerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2006-12-28 17:22:12 +0000
committergerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2006-12-28 17:22:12 +0000
commit67206f046cafbc58fb7b7c36425fdbadbda1bc74 (patch)
treeef14ce379885a746930a9839b20bebb530b35d04 /epan/crypt/airpdcap_user.h
parent755eecea3093d1067490d3aaf2e3a3a799c7bdc0 (diff)
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. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@20231 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/crypt/airpdcap_user.h')
-rw-r--r--epan/crypt/airpdcap_user.h167
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 */