Re: [PATCH 6/7] net/mac80211: convert wep from arc4 to arc4blk

2010-04-05 Thread John W. Linville
On Sat, Apr 03, 2010 at 09:49:28AM +0200, Sebastian Andrzej Siewior wrote:
 ecb(arc4) is getting replaced by arc4 which is a blkcipher by itself.
 
 Signed-off-by: Sebastian Andrzej Siewior sebast...@breakpoint.cc

Seems ok to me...

John
-- 
John W. LinvilleSomeday the world will need a hero, and you
linvi...@tuxdriver.com  might be all we have.  Be ready.
--
To unsubscribe from this list: send the line unsubscribe linux-crypto in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 6/7] net/mac80211: convert wep from arc4 to arc4blk

2010-04-03 Thread Sebastian Andrzej Siewior
ecb(arc4) is getting replaced by arc4 which is a blkcipher by itself.

Signed-off-by: Sebastian Andrzej Siewior sebast...@breakpoint.cc
---
 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html