aboutsummaryrefslogtreecommitdiffstats
path: root/epan/crypt
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2011-09-12 08:23:15 +0000
committerAnders Broman <anders.broman@ericsson.com>2011-09-12 08:23:15 +0000
commitc7c6bbf831e23cb2db4b1cedcd22c8c059ab2f8f (patch)
tree54a95e93aff9342fe7eef41174ae94912145773c /epan/crypt
parent7a0cb7ea93b3a7222d607899c658e281189d67e9 (diff)
Move airpcap_wep.c to /wsutil
svn path=/trunk/; revision=38969
Diffstat (limited to 'epan/crypt')
-rw-r--r--epan/crypt/Makefile.common1
-rw-r--r--epan/crypt/airpdcap_int.h3
-rw-r--r--epan/crypt/airpdcap_system.h7
-rw-r--r--epan/crypt/airpdcap_tkip.c1
-rw-r--r--epan/crypt/airpdcap_wep.c105
5 files changed, 1 insertions, 116 deletions
diff --git a/epan/crypt/Makefile.common b/epan/crypt/Makefile.common
index 93c5f65537..02d2a753fb 100644
--- a/epan/crypt/Makefile.common
+++ b/epan/crypt/Makefile.common
@@ -29,7 +29,6 @@ LIBAIRPDCAP_SRC = \
airpdcap_debug.c \
airpdcap_rijndael.c \
airpdcap_tkip.c \
- airpdcap_wep.c \
crypt-aes.c \
crypt-des.c \
crypt-md4.c \
diff --git a/epan/crypt/airpdcap_int.h b/epan/crypt/airpdcap_int.h
index b0fcfdffdc..e6c1b20a61 100644
--- a/epan/crypt/airpdcap_int.h
+++ b/epan/crypt/airpdcap_int.h
@@ -88,9 +88,6 @@
#define AIRPDCAP_EAP_MIC(KeyInfo_0) (KeyInfo_0 & 0x1)
#define AIRPDCAP_EAP_SEC(KeyInfo_0) ((KeyInfo_0 >> 1) & 0x1)
-/* Note: copied from net80211/ieee80211_airpdcap_tkip.c */
-#define S_SWAP(a,b) { UINT8 t = S[a]; S[a] = S[b]; S[b] = t; }
-
/****************************************************************************/
/****************************************************************************/
diff --git a/epan/crypt/airpdcap_system.h b/epan/crypt/airpdcap_system.h
index cf57201112..69ec762f4c 100644
--- a/epan/crypt/airpdcap_system.h
+++ b/epan/crypt/airpdcap_system.h
@@ -336,13 +336,6 @@ INT AirPDcapDestroyContext(
PAIRPDCAP_CONTEXT ctx)
;
-
-extern INT AirPDcapWepDecrypt(
- const UCHAR *seed,
- const size_t seed_len, /* max AIRPDCAP_KEYBUF_SIZE */
- UCHAR *cypher_text,
- const size_t data_len)
- ;
extern INT AirPDcapCcmpDecrypt(
UINT8 *m,
gint mac_header_len,
diff --git a/epan/crypt/airpdcap_tkip.c b/epan/crypt/airpdcap_tkip.c
index a8ba95a1d9..9920485968 100644
--- a/epan/crypt/airpdcap_tkip.c
+++ b/epan/crypt/airpdcap_tkip.c
@@ -36,6 +36,7 @@
/* File includes */
/* */
#include <epan/pint.h>
+#include <wsutil/crc32.h>
#include "airpdcap_system.h"
#include "airpdcap_int.h"
diff --git a/epan/crypt/airpdcap_wep.c b/epan/crypt/airpdcap_wep.c
deleted file mode 100644
index 9353d06f77..0000000000
--- a/epan/crypt/airpdcap_wep.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* airpcap_wep.c
- *
- * $Id$
- *
- * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
- * Copyright (c) 2006 CACE Technologies, Davis (California)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-/************************************************************************/
-/* File includes */
-
-#include <epan/tvbuff.h>
-#include <wsutil/crc32.h>
-
-#include "airpdcap_system.h"
-#include "airpdcap_int.h"
-
-#include "airpdcap_debug.h"
-
-/************************************************************************/
-
-/* Note: copied from FreeBSD source code, RELENG 6, */
-/* sys/net80211/ieee80211_crypto_wep.c, 391 */
-INT AirPDcapWepDecrypt(
- const UCHAR *seed,
- const size_t seed_len,
- UCHAR *cypher_text,
- const size_t data_len)
-{
- UINT32 i, j, k, crc;
- UINT8 S[256];
- UINT8 icv[4];
- size_t buflen;
-
- /* Generate key stream (RC4 Pseudo-Random Number Generator) */
- for (i = 0; i < 256; i++)
- S[i] = (UINT8)i;
- for (j = i = 0; i < 256; i++) {
- j = (j + S[i] + seed[i % seed_len]) & 0xff;
- S_SWAP(i, j);
- }
-
- /* Apply RC4 to data and compute CRC32 over decrypted data */
- crc = ~(UINT32)0;
- buflen = data_len;
-
- for (i = j = k = 0; k < buflen; k++) {
- i = (i + 1) & 0xff;
- j = (j + S[i]) & 0xff;
- S_SWAP(i, j);
- *cypher_text ^= S[(S[i] + S[j]) & 0xff];
- crc = crc32_ccitt_table_lookup((crc ^ *cypher_text) & 0xff) ^ (crc >> 8);
- cypher_text++;
- }
-
- crc = ~crc;
-
- /* Encrypt little-endian CRC32 and verify that it matches with the received ICV */
- icv[0] = (UINT8)crc;
- icv[1] = (UINT8)(crc >> 8);
- icv[2] = (UINT8)(crc >> 16);
- icv[3] = (UINT8)(crc >> 24);
- for (k = 0; k < 4; k++) {
- i = (i + 1) & 0xff;
- j = (j + S[i]) & 0xff;
- S_SWAP(i, j);
- if ((icv[k] ^ S[(S[i] + S[j]) & 0xff]) != *cypher_text++) {
- /* ICV mismatch - drop frame */
- return AIRPDCAP_RET_UNSUCCESS;
- }
- }
-
- return AIRPDCAP_RET_SUCCESS;
-}