mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
![Johannes Berg](/assets/img/avatar_default.png)
This reworks the key operation in cfg80211, and now only allows, from userspace, configuring keys (via nl80211) after the connection has been established (in managed mode), the IBSS been joined (in IBSS mode), at any time (in AP[_VLAN] modes) or never for all the other modes. In order to do shared key authentication correctly, it is now possible to give a WEP key to the AUTH command. To configure static WEP keys, these are given to the CONNECT or IBSS_JOIN command directly, for a userspace SME it is assumed it will configure it properly after the connection has been established. Since mac80211 used to check the default key in IBSS mode to see whether or not the network is protected, it needs an update in that area, as well as an update to make use of the WEP key passed to auth() for shared key authentication. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
35 lines
1.2 KiB
C
35 lines
1.2 KiB
C
/*
|
|
* Software WEP encryption implementation
|
|
* Copyright 2002, Jouni Malinen <jkmaline@cc.hut.fi>
|
|
* Copyright 2003, Instant802 Networks, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef WEP_H
|
|
#define WEP_H
|
|
|
|
#include <linux/skbuff.h>
|
|
#include <linux/types.h>
|
|
#include "ieee80211_i.h"
|
|
#include "key.h"
|
|
|
|
int ieee80211_wep_init(struct ieee80211_local *local);
|
|
void ieee80211_wep_free(struct ieee80211_local *local);
|
|
void ieee80211_wep_encrypt_data(struct crypto_blkcipher *tfm, u8 *rc4key,
|
|
size_t klen, u8 *data, size_t data_len);
|
|
int ieee80211_wep_encrypt(struct ieee80211_local *local,
|
|
struct sk_buff *skb,
|
|
const u8 *key, int keylen, int keyidx);
|
|
int ieee80211_wep_decrypt_data(struct crypto_blkcipher *tfm, u8 *rc4key,
|
|
size_t klen, u8 *data, size_t data_len);
|
|
bool ieee80211_wep_is_weak_iv(struct sk_buff *skb, struct ieee80211_key *key);
|
|
|
|
ieee80211_rx_result
|
|
ieee80211_crypto_wep_decrypt(struct ieee80211_rx_data *rx);
|
|
ieee80211_tx_result
|
|
ieee80211_crypto_wep_encrypt(struct ieee80211_tx_data *tx);
|
|
|
|
#endif /* WEP_H */
|