diff options
Diffstat (limited to 'drivers/staging/rtl8192e/rtllib_crypt_wep.c')
-rw-r--r-- | drivers/staging/rtl8192e/rtllib_crypt_wep.c | 91 |
1 files changed, 4 insertions, 87 deletions
diff --git a/drivers/staging/rtl8192e/rtllib_crypt_wep.c b/drivers/staging/rtl8192e/rtllib_crypt_wep.c index 3867922..201e2ec 100644 --- a/drivers/staging/rtl8192e/rtllib_crypt_wep.c +++ b/drivers/staging/rtl8192e/rtllib_crypt_wep.c @@ -18,44 +18,19 @@ #include <asm/string.h> #include "rtllib.h" -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,20)) -#endif - - -#if defined(BUILT_IN_CRYPTO) || (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -#include "rtl_crypto.h" -#else #include <linux/crypto.h> -#endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) - #include <asm/scatterlist.h> -#else - #include <linux/scatterlist.h> -#endif +#include <linux/scatterlist.h> #include <linux/crc32.h> -/* -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -#include "rtl_crypto.h" -#else -#include <linux/crypto.h> -#endif -#include <asm/scatterlist.h> -#include <linux/crc32.h> -*/ struct prism2_wep_data { u32 iv; #define WEP_KEY_LEN 13 u8 key[WEP_KEY_LEN + 1]; u8 key_len; u8 key_idx; - #if ( defined(BUILT_IN_CRYPTO) || ((LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)) && (!OPENSUSE_SLED)) ) - struct crypto_tfm *tfm; - #else struct crypto_blkcipher *tx_tfm; struct crypto_blkcipher *rx_tfm; - #endif }; @@ -69,14 +44,6 @@ static void * prism2_wep_init(int keyidx) memset(priv, 0, sizeof(*priv)); priv->key_idx = keyidx; - #if ( defined(BUILT_IN_CRYPTO) || ((LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)) && (!OPENSUSE_SLED)) ) - priv->tfm = crypto_alloc_tfm("arc4", 0); - if (priv->tfm == NULL) { - printk(KERN_DEBUG "rtllib_crypt_wep: could not allocate " - "crypto API arc4\n"); - goto fail; - } - #else priv->tx_tfm = crypto_alloc_blkcipher("ecb(arc4)", 0, CRYPTO_ALG_ASYNC); if (IS_ERR(priv->tx_tfm)) { printk(KERN_DEBUG "rtllib_crypt_wep: could not allocate " @@ -91,7 +58,6 @@ static void * prism2_wep_init(int keyidx) priv->rx_tfm = NULL; goto fail; } - #endif /* start WEP IV from a random value */ get_random_bytes(&priv->iv, 4); @@ -99,13 +65,6 @@ static void * prism2_wep_init(int keyidx) return priv; fail: - #if ( defined(BUILT_IN_CRYPTO) || ((LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)) && (!OPENSUSE_SLED)) ) - if (priv) { - if (priv->tfm) - crypto_free_tfm(priv->tfm); - kfree(priv); - } - #else if (priv) { if (priv->tx_tfm) crypto_free_blkcipher(priv->tx_tfm); @@ -113,7 +72,6 @@ fail: crypto_free_blkcipher(priv->rx_tfm); kfree(priv); } - #endif return NULL; } @@ -121,17 +79,13 @@ fail: static void prism2_wep_deinit(void *priv) { struct prism2_wep_data *_priv = priv; - #if ( defined(BUILT_IN_CRYPTO) || ((LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)) && (!OPENSUSE_SLED)) ) - if (_priv && _priv->tfm) - crypto_free_tfm(_priv->tfm); - #else + if (_priv) { if (_priv->tx_tfm) crypto_free_blkcipher(_priv->tx_tfm); if (_priv->rx_tfm) crypto_free_blkcipher(_priv->rx_tfm); } - #endif kfree(priv); } @@ -148,9 +102,7 @@ static int prism2_wep_encrypt(struct sk_buff *skb, int hdr_len, void *priv) u8 key[WEP_KEY_LEN + 3]; u8 *pos; cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); - #if ( !defined(BUILT_IN_CRYPTO) && ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)) || (OPENSUSE_SLED)) ) struct blkcipher_desc desc = {.tfm = wep->tx_tfm}; - #endif u32 crc; u8 *icv; struct scatterlist sg; @@ -186,36 +138,19 @@ static int prism2_wep_encrypt(struct sk_buff *skb, int hdr_len, void *priv) /* Copy rest of the WEP key (the secret part) */ memcpy(key + 3, wep->key, wep->key_len); - if (!tcb_desc->bHwSec) - { + if (!tcb_desc->bHwSec) { /* Append little-endian CRC32 and encrypt it to produce ICV */ - #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) crc = ~crc32_le(~0, pos, len); - #else - crc = ~ether_crc_le(len, pos); - #endif icv = skb_put(skb, 4); icv[0] = crc; icv[1] = crc >> 8; icv[2] = crc >> 16; icv[3] = crc >> 24; - #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) - sg.page = virt_to_page(pos); - sg.offset = offset_in_page(pos); - sg.length = len + 4; - #else sg_init_one(&sg, pos, len+4); - #endif - #if ( defined(BUILT_IN_CRYPTO) || ((LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)) && (!OPENSUSE_SLED)) ) - crypto_cipher_setkey(wep->tfm, key, klen); - crypto_cipher_encrypt(wep->tfm, &sg, &sg, len + 4); - return 0; - #else crypto_blkcipher_setkey(wep->tx_tfm, key, klen); return crypto_blkcipher_encrypt(&desc, &sg, &sg, len + 4); - #endif } return 0; @@ -236,9 +171,7 @@ static int prism2_wep_decrypt(struct sk_buff *skb, int hdr_len, void *priv) u8 key[WEP_KEY_LEN + 3]; u8 keyidx, *pos; cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); - #if ( !defined(BUILT_IN_CRYPTO) && ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)) || (OPENSUSE_SLED)) ) struct blkcipher_desc desc = {.tfm = wep->rx_tfm}; - #endif u32 crc; u8 icv[4]; struct scatterlist sg; @@ -261,28 +194,12 @@ static int prism2_wep_decrypt(struct sk_buff *skb, int hdr_len, void *priv) /* Apply RC4 to data and compute CRC32 over decrypted data */ plen = skb->len - hdr_len - 8; - if (!tcb_desc->bHwSec) - { - #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) - sg.page = virt_to_page(pos); - sg.offset = offset_in_page(pos); - sg.length = plen + 4; - #else + if (!tcb_desc->bHwSec) { sg_init_one(&sg, pos, plen+4); - #endif - #if ( defined(BUILT_IN_CRYPTO) || ((LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)) && (!OPENSUSE_SLED)) ) - crypto_cipher_setkey(wep->tfm, key, klen); - crypto_cipher_decrypt(wep->tfm, &sg, &sg, plen + 4); - #else crypto_blkcipher_setkey(wep->rx_tfm, key, klen); if (crypto_blkcipher_decrypt(&desc, &sg, &sg, plen + 4)) return -7; - #endif - #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) crc = ~crc32_le(~0, pos, plen); - #else - crc = ~ether_crc_le(plen, pos); - #endif icv[0] = crc; icv[1] = crc >> 8; icv[2] = crc >> 16; |