10e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar/****************************************************************************** 20e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * 30e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved. 40e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * 50e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * This program is free software; you can redistribute it and/or modify it 60e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * under the terms of version 2 of the GNU General Public License as 70e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * published by the Free Software Foundation. 80e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * 90e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * This program is distributed in the hope that it will be useful, but WITHOUT 100e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 110e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 120e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * more details. 130e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * 140e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * You should have received a copy of the GNU General Public License along with 150e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * this program; if not, write to the Free Software Foundation, Inc., 160e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 170e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * 18b4f6209d733b6570947507a18f76def6e16393cbAli Bahar * Modifications for inclusion into the Linux staging tree are 19b4f6209d733b6570947507a18f76def6e16393cbAli Bahar * Copyright(c) 2010 Larry Finger. All rights reserved. 20b4f6209d733b6570947507a18f76def6e16393cbAli Bahar * 21b4f6209d733b6570947507a18f76def6e16393cbAli Bahar * Contact information: 22b4f6209d733b6570947507a18f76def6e16393cbAli Bahar * WLAN FAE <wlanfae@realtek.com> 23b4f6209d733b6570947507a18f76def6e16393cbAli Bahar * Larry Finger <Larry.Finger@lwfinger.net> 240e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar * 250e54f6090db9eed25a745e5abf45b3c12ce724d1Ali Bahar ******************************************************************************/ 262865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#ifndef __RTL871X_SECURITY_H_ 272865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define __RTL871X_SECURITY_H_ 282865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 292865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#include "osdep_service.h" 302865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#include "drv_types.h" 312865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 322865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _NO_PRIVACY_ 0x0 332865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _WEP40_ 0x1 342865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _TKIP_ 0x2 352865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _TKIP_WTMIC_ 0x3 362865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _AES_ 0x4 372865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _WEP104_ 0x5 382865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 392865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _WPA_IE_ID_ 0xdd 402865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _WPA2_IE_ID_ 0x30 412865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 422865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#ifndef Ndis802_11AuthModeWPA2 432865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define Ndis802_11AuthModeWPA2 (Ndis802_11AuthModeWPANone + 1) 442865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#endif 452865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 462865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#ifndef Ndis802_11AuthModeWPA2PSK 472865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define Ndis802_11AuthModeWPA2PSK (Ndis802_11AuthModeWPANone + 2) 482865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#endif 490593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid 502865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerunion pn48 { 512865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u64 val; 522865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#if defined(__BIG_ENDIAN) 530593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid struct { 540593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC7; 550593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC6; 560593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC5; 570593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC4; 580593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC3; 590593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC2; 600593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC1; 610593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC0; 620593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid } _byte_; 632865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#else 640593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid struct { 650593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC0; 660593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC1; 670593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC2; 680593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC3; 690593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC4; 700593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC5; 710593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC6; 720593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 TSC7; 730593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid } _byte_; 742865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#endif 752865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger}; 762865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 772865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerunion Keytype { 782865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 skey[16]; 792865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 lkey[4]; 802865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger}; 812865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 822865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerstruct RT_PMKID_LIST { 832865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 bUsed; 842865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 Bssid[6]; 852865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 PMKID[16]; 862865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 SsidBuf[33]; 872865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 *ssid_octet; 882865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u16 ssid_length; 892865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger}; 902865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 912865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerstruct security_priv { 922865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 AuthAlgrthm; /* 802.11 auth, could be open, shared, 932865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger * 8021x and authswitch */ 942865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 PrivacyAlgrthm; /* This specify the privacy for shared 952865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger * auth. algorithm. */ 962865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 PrivacyKeyIndex; /* this is only valid for legendary 972865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger * wep, 0~3 for key id. */ 982865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger union Keytype DefKey[4]; /* this is only valid for def. key */ 992865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 DefKeylen[4]; 1002865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 XGrpPrivacy; /* This specify the privacy algthm. 1012865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger * used for Grp key */ 1022865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 XGrpKeyid; /* key id used for Grp Key */ 1032865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger union Keytype XGrpKey[2]; /* 802.1x Group Key, for 1042865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger * inx0 and inx1 */ 1052865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger union Keytype XGrptxmickey[2]; 1062865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger union Keytype XGrprxmickey[2]; 1072865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger union pn48 Grptxpn; /* PN48 used for Grp Key xmit. */ 1082865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger union pn48 Grprxpn; /* PN48 used for Grp Key recv. */ 1092865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 wps_hw_pbc_pressed;/*for hw pbc pressed*/ 1102865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 wps_phase;/*for wps*/ 1112865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 wps_ie[MAX_WPA_IE_LEN<<2]; 1122865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger int wps_ie_len; 1132865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 binstallGrpkey; 1142865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 busetkipkey; 1152865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger struct timer_list tkip_timer; 1162865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 bcheck_grpkey; 1172865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 bgrpkey_handshake; 1182865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger s32 sw_encrypt; /* from registry_priv */ 1192865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger s32 sw_decrypt; /* from registry_priv */ 1202865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger s32 hw_decrypted; /* if the rx packets is hw_decrypted==false, 1212865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger * it means the hw has not been ready. */ 1222865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 ndisauthtype; /* keeps the auth_type & enc_status from upper 1232865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger * layer ioctl(wpa_supplicant or wzc) */ 1242865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 ndisencryptstatus; 1252865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger struct wlan_bssid_ex sec_bss; /* for joinbss (h2c buffer) usage */ 1262865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger struct NDIS_802_11_WEP ndiswep; 1272865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 assoc_info[600]; 1282865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 szofcapability[256]; /* for wpa2 usage */ 1292865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 oidassociation[512]; /* for wpa/wpa2 usage */ 1302865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 authenticator_ie[256]; /* store ap security information element */ 1312865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 supplicant_ie[256]; /* store sta security information element */ 1322865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger /* for tkip countermeasure */ 1332865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 last_mic_err_time; 1342865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 btkip_countermeasure; 1352865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 btkip_wait_report; 1362865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 btkip_countermeasure_time; 1372865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger /*------------------------------------------------------------------- 1382865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger * For WPA2 Pre-Authentication. 1392865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger *------------------------------------------------------------------ */ 1402865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger struct RT_PMKID_LIST PMKIDList[NUM_PMKID_CACHE]; 1412865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 PMKIDIndex; 1422865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger}; 1432865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 1442865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define GET_ENCRY_ALGO(psecuritypriv, psta, encry_algo, bmcst) \ 1452865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerdo { \ 1462865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger switch (psecuritypriv->AuthAlgrthm) { \ 1472865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger case 0: \ 1482865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger case 1: \ 1492865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger case 3: \ 1502865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger encry_algo = (u8)psecuritypriv->PrivacyAlgrthm; \ 1512865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger break; \ 1522865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger case 2: \ 1532865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger if (bmcst) \ 1542865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger encry_algo = (u8)psecuritypriv->XGrpPrivacy; \ 1552865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger else \ 1562865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger encry_algo = (u8)psta->XPrivacy; \ 1572865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger break; \ 1582865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger } \ 1592865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger} while (0) 1602865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define SET_ICE_IV_LEN(iv_len, icv_len, encrypt)\ 1612865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerdo {\ 1622865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger switch (encrypt) { \ 1632865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger case _WEP40_: \ 1642865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger case _WEP104_: \ 1652865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger iv_len = 4; \ 1662865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger icv_len = 4; \ 1672865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger break; \ 1682865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger case _TKIP_: \ 1692865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger iv_len = 8; \ 1702865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger icv_len = 4; \ 1712865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger break; \ 1722865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger case _AES_: \ 1732865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger iv_len = 8; \ 1742865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger icv_len = 8; \ 1752865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger break; \ 1762865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger default: \ 1772865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger iv_len = 0; \ 1782865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger icv_len = 0; \ 1792865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger break; \ 1802865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger } \ 1812865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger} while (0) 1822865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define GET_TKIP_PN(iv, txpn) \ 1832865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerdo {\ 1842865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger txpn._byte_.TSC0 = iv[2];\ 1852865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger txpn._byte_.TSC1 = iv[0];\ 1862865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger txpn._byte_.TSC2 = iv[4];\ 1872865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger txpn._byte_.TSC3 = iv[5];\ 1882865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger txpn._byte_.TSC4 = iv[6];\ 1892865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger txpn._byte_.TSC5 = iv[7];\ 1902865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger} while (0) 1912865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 1922865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define ROL32(A, n) (((A) << (n)) | (((A)>>(32-(n))) & ((1UL << (n)) - 1))) 1932865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define ROR32(A, n) ROL32((A), 32 - (n)) 1942865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 1952865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerstruct mic_data { 1962865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 K0, K1; /* Key */ 1972865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 L, R; /* Current state */ 1982865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 M; /* Message accumulator (single word) */ 1992865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u32 nBytesInM; /* # bytes in M */ 2002865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger}; 2012865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 2022865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingervoid seccalctkipmic( 2030593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 *key, 2040593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 *header, 2050593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 *data, 2060593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u32 data_len, 2070593758e4b71836d3a95714b626d273ee51173e0Javier M. Mellid u8 *Miccode, 2082865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger u8 priority); 2092865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 210c07f972105a19104f56e82fab6c65c364d9f33b8Przemo Firsztvoid r8712_secmicsetkey(struct mic_data *pmicdata, u8 *key); 211c07f972105a19104f56e82fab6c65c364d9f33b8Przemo Firsztvoid r8712_secmicappend(struct mic_data *pmicdata, u8 *src, u32 nBytes); 212c07f972105a19104f56e82fab6c65c364d9f33b8Przemo Firsztvoid r8712_secgetmic(struct mic_data *pmicdata, u8 *dst); 2132865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru32 r8712_aes_encrypt(struct _adapter *padapter, u8 *pxmitframe); 2142865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru32 r8712_tkip_encrypt(struct _adapter *padapter, u8 *pxmitframe); 2152865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingervoid r8712_wep_encrypt(struct _adapter *padapter, u8 *pxmitframe); 2162865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru32 r8712_aes_decrypt(struct _adapter *padapter, u8 *precvframe); 2172865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru32 r8712_tkip_decrypt(struct _adapter *padapter, u8 *precvframe); 2182865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingervoid r8712_wep_decrypt(struct _adapter *padapter, u8 *precvframe); 2192865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingervoid r8712_use_tkipkey_handler(void *FunctionContext); 2202865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 2212865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#endif /*__RTL871X_SECURITY_H_ */ 2222865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger 223