• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2 **+-----------------------------------------------------------------------+**
3 **|                                                                       |**
4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
5 **| All rights reserved.                                                  |**
6 **|                                                                       |**
7 **| Redistribution and use in source and binary forms, with or without    |**
8 **| modification, are permitted provided that the following conditions    |**
9 **| are met:                                                              |**
10 **|                                                                       |**
11 **|  * Redistributions of source code must retain the above copyright     |**
12 **|    notice, this list of conditions and the following disclaimer.      |**
13 **|  * Redistributions in binary form must reproduce the above copyright  |**
14 **|    notice, this list of conditions and the following disclaimer in    |**
15 **|    the documentation and/or other materials provided with the         |**
16 **|    distribution.                                                      |**
17 **|  * Neither the name Texas Instruments nor the names of its            |**
18 **|    contributors may be used to endorse or promote products derived    |**
19 **|    from this software without specific prior written permission.      |**
20 **|                                                                       |**
21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
32 **|                                                                       |**
33 **+-----------------------------------------------------------------------+**
34 ****************************************************************************/
35 
36 #ifndef _WHAL_SECURITY_H
37 #define _WHAL_SECURITY_H
38 
39 #include "whalCommon.h"
40 #include "whalCtrl_api.h"
41 #include "whalWep.h"
42 #include "whalWpa.h"
43 #ifdef CKIP_ENABLED
44 #include "whalExc.h"
45 #endif /* CKIP_ENABLED*/
46 
47 #define NO_OF_RECONF_SECUR_KEYS_PER_STATION		1 /* define the number of keys allocated on reconfigure
48 													 data structure for each station*/
49 #define NO_OF_EXTRA_RECONF_SECUR_KEYS			3
50 
51 typedef struct
52 {
53 	TI_HANDLE hReport; /* handle to the reporter module*/
54 	TI_HANDLE hMemMgr; /* handle to the memory manager module*/
55 } whalSecur_config_t;
56 
57 
58 /* reconfigure security structure for reconfigure (FW reload) time*/
59 typedef struct
60 {
61 	BOOL reconfHwEncEnable;	  	/* save the last HW encryption Enable flag for reconfigure time*/
62 	BOOL reconfHwDecrEnable;	/* save the last HW decryption Enable flag for reconfigure time*/
63 	BOOL isHwEncDecrEnableValid;
64 
65 	UINT8 reconfDefaultKeyId;	/* save the last configured defualt key ID for reconfigure time*/
66 	BOOL  isDefaultKeyIdValid;
67 
68 	securityKeys_t* reconfKeys; /* save all the configured keys for reconfigure time, keys which
69 								   it's keyType are not NULL_KEY, are valid*/
70 } securReconf_t;
71 
72 
73 /* CLASS WHAL_SECURITY*/
74 typedef struct _WHAL_SECURITY
75 {
76 	UINT32 numOfStations;
77 	cipherSuite_e securityMode;
78 	securReconf_t reconfData;      /* reconfigure security structure for reconfigure (FW reload) time*/
79 
80 	WHAL_CTRL	*pWhalCtrl;		/* Pointer to the HL_HAL control module*/
81 	WHAL_WEP	*pWhalWep;
82 	WHAL_WPA	*pWhalWpa;
83 #ifdef CKIP_ENABLED
84 	privacy_t   *pWhalPrivacy;
85 	WHAL_EXC	*pWhalExc;
86 #endif /*CKIP_ENABLED*/
87 	TI_HANDLE hOs;
88 	TI_HANDLE hReport;
89 	TI_HANDLE hMemMgr;
90 } WHAL_SECURITY;
91 
92 /* WHAL SECURITY Class API*/
93 TI_HANDLE whalSecur_Create (TI_HANDLE hOs, TI_HANDLE hWhalCtrl, UINT16 numOfStations);
94 
95 int whalSecur_Config (TI_HANDLE hWhalSecur, whalSecur_config_t* pWhalSecurCfg);
96 
97 int whalSecur_KeyAdd (TI_HANDLE hWhalSecur, securityKeys_t* apKey, BOOL reconfFlag, void *CB_Func, TI_HANDLE CB_handle);
98 
99 int whalSecur_KeyRemove (TI_HANDLE hWhalSecur, securityKeys_t* apKey, BOOL reconfFlag, void *CB_Func, TI_HANDLE CB_handle);
100 
101 int whalSecur_DefaultKeyIdSet (TI_HANDLE hWhalSecur, UINT8 aKeyId, void *CB_Func, TI_HANDLE CB_handle);
102 
103 int whalSecur_HwEncDecrEnable (TI_HANDLE hWhalSecur, BOOL aHwEncEnable);
104 
105 int whalSecur_SwEncEnable (TI_HANDLE hWhalSecur, BOOL aSwEncEnable);
106 
107 int whalSecur_MicFieldEnable (TI_HANDLE hWhalSecur, BOOL aMicFieldEnable);
108 
109 int whalSecur_SecurModeSet (TI_HANDLE hWhalSecur, cipherSuite_e aSecurMode);
110 
111 cipherSuite_e whalSecur_SecurModeGet (TI_HANDLE hWhalSecur);
112 
113 int whalSecur_KeysReconfig (TI_HANDLE hWhalSecur);
114 
115 int whalSecur_Destroy (TI_HANDLE hWhalSecur, UINT16 numOfStations);
116 
117 #endif /* _WHAL_SECURITY_H*/
118