Date: Tue, 27 May 2008 23:18:48 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 142417 for review Message-ID: <200805272318.m4RNImco049247@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=142417 Change 142417 by sam@sam_ebb on 2008/05/27 23:18:12 split s/w crypt/mic attributes to allow future hackery; this change should be a noop Affected files ... .. //depot/projects/vap/sys/net80211/ieee80211_crypto.h#16 edit .. //depot/projects/vap/sys/net80211/ieee80211_crypto_ccmp.c#12 edit .. //depot/projects/vap/sys/net80211/ieee80211_crypto_tkip.c#12 edit .. //depot/projects/vap/sys/net80211/ieee80211_crypto_wep.c#12 edit .. //depot/projects/vap/sys/net80211/ieee80211_output.c#50 edit Differences ... ==== //depot/projects/vap/sys/net80211/ieee80211_crypto.h#16 (text+ko) ==== @@ -78,8 +78,10 @@ #define IEEE80211_KEY_XMIT 0x01 /* key used for xmit */ #define IEEE80211_KEY_RECV 0x02 /* key used for recv */ #define IEEE80211_KEY_GROUP 0x04 /* key used for WPA group operation */ -#define IEEE80211_KEY_SWCRYPT 0x10 /* host-based encrypt/decrypt */ -#define IEEE80211_KEY_SWMIC 0x20 /* host-based enmic/demic */ +#define IEEE80211_KEY_SWENCRYPT 0x10 /* host-based encrypt */ +#define IEEE80211_KEY_SWDECRYPT 0x20 /* host-based decrypt */ +#define IEEE80211_KEY_SWENMIC 0x40 /* host-based enmic */ +#define IEEE80211_KEY_SWDEMIC 0x80 /* host-based demic */ ieee80211_keyix wk_keyix; /* h/w key index */ ieee80211_keyix wk_rxkeyix; /* optional h/w rx key index */ uint8_t wk_key[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE]; @@ -95,6 +97,10 @@ #define IEEE80211_KEY_COMMON /* common flags passed in by apps */\ (IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV | IEEE80211_KEY_GROUP) +#define IEEE80211_KEY_SWCRYPT \ + (IEEE80211_KEY_SWENCRYPT | IEEE80211_KEY_SWDECRYPT) +#define IEEE80211_KEY_SWMIC (IEEE80211_KEY_SWENMIC | IEEE80211_KEY_SWDEMIC) + #define IEEE80211_KEYIX_NONE ((ieee80211_keyix) -1) /* ==== //depot/projects/vap/sys/net80211/ieee80211_crypto_ccmp.c#12 (text+ko) ==== @@ -129,7 +129,7 @@ __func__, k->wk_keylen, 128/NBBY); return 0; } - if (k->wk_flags & IEEE80211_KEY_SWCRYPT) + if (k->wk_flags & IEEE80211_KEY_SWENCRYPT) rijndael_set_key(&ctx->cc_aes, k->wk_key, k->wk_keylen*NBBY); return 1; } @@ -170,7 +170,7 @@ /* * Finally, do software encrypt if neeed. */ - if ((k->wk_flags & IEEE80211_KEY_SWCRYPT) && + if ((k->wk_flags & IEEE80211_KEY_SWENCRYPT) && !ccmp_encrypt(k, m, hdrlen)) return 0; @@ -242,7 +242,7 @@ * latter we leave the header in place for use in the * decryption work. */ - if ((k->wk_flags & IEEE80211_KEY_SWCRYPT) && + if ((k->wk_flags & IEEE80211_KEY_SWDECRYPT) && !ccmp_decrypt(k, pn, m, hdrlen)) return 0; ==== //depot/projects/vap/sys/net80211/ieee80211_crypto_tkip.c#12 (text+ko) ==== @@ -196,7 +196,7 @@ /* * Finally, do software encrypt if neeed. */ - if (k->wk_flags & IEEE80211_KEY_SWCRYPT) { + if (k->wk_flags & IEEE80211_KEY_SWENCRYPT) { if (!tkip_encrypt(ctx, k, m, hdrlen)) return 0; /* NB: tkip_encrypt handles wk_keytsc */ @@ -214,7 +214,7 @@ { struct tkip_ctx *ctx = k->wk_private; - if (force || (k->wk_flags & IEEE80211_KEY_SWMIC)) { + if (force || (k->wk_flags & IEEE80211_KEY_SWENMIC)) { struct ieee80211_frame *wh = mtod(m, struct ieee80211_frame *); struct ieee80211vap *vap = ctx->tc_vap; struct ieee80211com *ic = vap->iv_ic; @@ -302,7 +302,7 @@ * If so we just strip the header; otherwise we need to * handle the decrypt in software. */ - if ((k->wk_flags & IEEE80211_KEY_SWCRYPT) && + if ((k->wk_flags & IEEE80211_KEY_SWDECRYPT) && !tkip_decrypt(ctx, k, m, hdrlen)) return 0; @@ -327,7 +327,7 @@ uint8_t tid; wh = mtod(m, struct ieee80211_frame *); - if (force || (k->wk_flags & IEEE80211_KEY_SWMIC)) { + if ((k->wk_flags & IEEE80211_KEY_SWDEMIC) || force) { struct ieee80211vap *vap = ctx->tc_vap; int hdrlen = ieee80211_hdrspace(vap->iv_ic, wh); u8 mic[IEEE80211_WEP_MICLEN]; ==== //depot/projects/vap/sys/net80211/ieee80211_crypto_wep.c#12 (text+ko) ==== @@ -186,7 +186,7 @@ /* * Finally, do software encrypt if neeed. */ - if ((k->wk_flags & IEEE80211_KEY_SWCRYPT) && + if ((k->wk_flags & IEEE80211_KEY_SWENCRYPT) && !wep_encrypt(k, m, hdrlen)) return 0; @@ -222,7 +222,7 @@ * If so we just strip the header; otherwise we need to * handle the decrypt in software. */ - if ((k->wk_flags & IEEE80211_KEY_SWCRYPT) && + if ((k->wk_flags & IEEE80211_KEY_SWDECRYPT) && !wep_decrypt(k, m, hdrlen)) { IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_CRYPTO, wh->i_addr2, "%s", "WEP ICV mismatch on decrypt"); ==== //depot/projects/vap/sys/net80211/ieee80211_output.c#50 (text+ko) ==== @@ -717,7 +717,7 @@ * a writable mbuf chain. * XXX handle SWMIC specially */ - if (key->wk_flags & (IEEE80211_KEY_SWCRYPT|IEEE80211_KEY_SWMIC)) { + if (key->wk_flags & (IEEE80211_KEY_SWENCRYPT|IEEE80211_KEY_SWENMIC)) { m = m_unshare(m, M_NOWAIT); if (m == NULL) { IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200805272318.m4RNImco049247>