ecb(arc4) is getting replaced by arc4 which is a blkcipher by itself.

Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
---
 net/mac80211/Kconfig |    3 +--
 net/mac80211/wep.c   |   11 +++++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/net/mac80211/Kconfig b/net/mac80211/Kconfig
index a10d508..d14fe06 100644
--- a/net/mac80211/Kconfig
+++ b/net/mac80211/Kconfig
@@ -2,8 +2,7 @@ config MAC80211
        tristate "Generic IEEE 802.11 Networking Stack (mac80211)"
        depends on CFG80211
        select CRYPTO
-       select CRYPTO_ECB
-       select CRYPTO_ARC4
+       select CRYPTO_ARC4BLK
        select CRYPTO_AES
        select CRC32
        ---help---
diff --git a/net/mac80211/wep.c b/net/mac80211/wep.c
index 247123f..4314b50 100644
--- a/net/mac80211/wep.c
+++ b/net/mac80211/wep.c
@@ -17,6 +17,7 @@
 #include <linux/err.h>
 #include <linux/mm.h>
 #include <linux/scatterlist.h>
+#include <crypto/arc4.h>
 #include <asm/unaligned.h>
 
 #include <net/mac80211.h>
@@ -29,12 +30,12 @@ int ieee80211_wep_init(struct ieee80211_local *local)
        /* start WEP IV from a random value */
        get_random_bytes(&local->wep_iv, WEP_IV_LEN);
 
-       local->wep_tx_tfm = crypto_alloc_blkcipher("ecb(arc4)", 0,
+       local->wep_tx_tfm = crypto_alloc_blkcipher("arc4", 0,
                                                CRYPTO_ALG_ASYNC);
        if (IS_ERR(local->wep_tx_tfm))
                return PTR_ERR(local->wep_tx_tfm);
 
-       local->wep_rx_tfm = crypto_alloc_blkcipher("ecb(arc4)", 0,
+       local->wep_rx_tfm = crypto_alloc_blkcipher("arc4", 0,
                                                CRYPTO_ALG_ASYNC);
        if (IS_ERR(local->wep_rx_tfm)) {
                crypto_free_blkcipher(local->wep_tx_tfm);
@@ -125,13 +126,14 @@ void ieee80211_wep_encrypt_data(struct crypto_blkcipher 
*tfm, u8 *rc4key,
                                size_t klen, u8 *data, size_t data_len)
 {
        struct blkcipher_desc desc = { .tfm = tfm };
+       struct arc4_iv *iv = crypto_blkcipher_crt(tfm)->iv;
        struct scatterlist sg;
        __le32 icv;
 
        icv = cpu_to_le32(~crc32_le(~0, data, data_len));
        put_unaligned(icv, (__le32 *)(data + data_len));
 
-       crypto_blkcipher_setkey(tfm, rc4key, klen);
+       arc4_setup_iv(iv, rc4key, klen);
        sg_init_one(&sg, data, data_len + WEP_ICV_LEN);
        crypto_blkcipher_encrypt(&desc, &sg, &sg, sg.length);
 }
@@ -181,10 +183,11 @@ int ieee80211_wep_decrypt_data(struct crypto_blkcipher 
*tfm, u8 *rc4key,
                               size_t klen, u8 *data, size_t data_len)
 {
        struct blkcipher_desc desc = { .tfm = tfm };
+       struct arc4_iv *iv = crypto_blkcipher_crt(tfm)->iv;
        struct scatterlist sg;
        __le32 crc;
 
-       crypto_blkcipher_setkey(tfm, rc4key, klen);
+       arc4_setup_iv(iv, rc4key, klen);
        sg_init_one(&sg, data, data_len + WEP_ICV_LEN);
        crypto_blkcipher_decrypt(&desc, &sg, &sg, sg.length);
 
-- 
1.6.6

--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to