📄 zdsecmgr.lst
字号:
138 };
139 #endif // defined ( ZDSECMGR_SECURE ) && defined ( ZDO_COORDINATOR )
140
141 #if defined ( ZDSECMGR_COMMERCIAL )
142 #if ( ZDSECMGR_PRECONFIG_MAX != 0 )
143 const ZDSecMgrPreConfigData_t ZDSecMgrPreConfigData[ZDSECMGR_PRECONFIG_MAX] =
144 {
145 //---------------------------------------------------------------------------
146 // DEVICE A
147 //---------------------------------------------------------------------------
148 {
149 // extAddr
150 {0x7C,0x01,0x12,0x13,0x14,0x15,0x16,0x17},
151
152 // key
153 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
154 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
155 },
156 //---------------------------------------------------------------------------
157 // DEVICE B
158 //---------------------------------------------------------------------------
159 {
160 // extAddr
161 {0x84,0x03,0x00,0x00,0x00,0x4B,0x12,0x00},
162
163 // key
164 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
165 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
166 },
167 //---------------------------------------------------------------------------
168 // DEVICE C
169 //---------------------------------------------------------------------------
170 {
171 // extAddr
172 {0x3E,0x01,0x12,0x13,0x14,0x15,0x16,0x17},
173
174 // key
175 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
176 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
177 },
178 };
179 #endif // ( ZDSECMGR_PRECONFIG_MAX != 0 )
180 #endif // defined ( ZDSECMGR_COMMERCIAL )
181
182 #if defined ( ZDSECMGR_COMMERCIAL )
183 ZDSecMgrMasterKeyData_t* ZDSecMgrMasterKeyData = NULL;
184 ZDSecMgrEntry_t* ZDSecMgrEntries = NULL;
185 ZDSecMgrCtrl_t* ZDSecMgrCtrlData = NULL;
186 void ZDSecMgrAddrMgrUpdate( uint16 ami, uint16 nwkAddr );
187 void ZDSecMgrAddrMgrCB( uint8 update, AddrMgrEntry_t* newEntry, AddrMgrEntry_t* oldEntry );
188 #endif // defined ( ZDSECMGR_COMMERCIAL )
189
190 #if defined ( ZDSECMGR_SECURE ) && defined ( ZDO_COORDINATOR )
191 uint8 ZDSecMgrPermitJoiningEnabled;
192 uint8 ZDSecMgrPermitJoiningTimed;
193 #endif // defined ( ZDSECMGR_SECURE ) && defined ( ZDO_COORDINATOR )
194
195 #if defined ( ZDSECMGR_SECURE )
196 /******************************************************************************
197 * PRIVATE FUNCTIONS
198 *
199 * ZDSecMgrMasterKeyInit
200 * ZDSecMgrExtAddrLookup
201 * ZDSecMgrExtAddrStore
202 * ZDSecMgrMasterKeyLookup
203 * ZDSecMgrMasterKeyStore
204 * ZDSecMgrEntryInit
205 * ZDSecMgrEntryLookup
206 * ZDSecMgrEntryLookupAMI
207 * ZDSecMgrEntryLookupExt
208 * ZDSecMgrEntryFree
209 * ZDSecMgrEntryNew
210 * ZDSecMgrCtrlInit
211 * ZDSecMgrCtrlRelease
212 * ZDSecMgrCtrlLookup
213 * ZDSecMgrCtrlSet
214 * ZDSecMgrCtrlAdd
215 * ZDSecMgrCtrlTerm
216 * ZDSecMgrCtrlReset
217 * ZDSecMgrMasterKeyLoad
218 * ZDSecMgrAppKeyGet
219 * ZDSecMgrAppKeyReq
220 * ZDSecMgrEstablishKey
221 * ZDSecMgrSendMasterKey
222 * ZDSecMgrSendNwkKey
223 * ZDSecMgrDeviceEntryRemove
224 * ZDSecMgrDeviceEntryAdd
225 * ZDSecMgrDeviceCtrlHandler
226 * ZDSecMgrDeviceCtrlSetup
227 * ZDSecMgrDeviceCtrlUpdate
228 * ZDSecMgrDeviceRemove
229 * ZDSecMgrDeviceValidateSKKE
230 * ZDSecMgrDeviceValidateRM
231 * ZDSecMgrDeviceValidateCM
232 * ZDSecMgrDeviceValidate
233 * ZDSecMgrDeviceJoin
234 * ZDSecMgrDeviceJoinDirect
235 * ZDSecMgrDeviceJoinFwd
236 * ZDSecMgrDeviceNew
237 * ZDSecMgrAssocDeviceAuth
238 */
239 //-----------------------------------------------------------------------------
240 // master key data
241 //-----------------------------------------------------------------------------
242 void ZDSecMgrMasterKeyInit( void );
243
244 //-----------------------------------------------------------------------------
245 // EXT address management
246 //-----------------------------------------------------------------------------
247 ZStatus_t ZDSecMgrExtAddrLookup( uint8* extAddr, uint16* ami );
248 ZStatus_t ZDSecMgrExtAddrStore( uint8* extAddr, uint16* ami );
249
250 //-----------------------------------------------------------------------------
251 // MASTER key data
252 //-----------------------------------------------------------------------------
253 ZStatus_t ZDSecMgrMasterKeyLookup( uint16 ami, uint8** key );
254 ZStatus_t ZDSecMgrMasterKeyStore( uint16 ami, uint8* key );
255
256 //-----------------------------------------------------------------------------
257 // entry data
258 //-----------------------------------------------------------------------------
259 void ZDSecMgrEntryInit( void );
260 ZStatus_t ZDSecMgrEntryLookup( uint16 nwkAddr, ZDSecMgrEntry_t** entry );
261 ZStatus_t ZDSecMgrEntryLookupAMI( uint16 ami, ZDSecMgrEntry_t** entry );
262 ZStatus_t ZDSecMgrEntryLookupExt( uint8* extAddr, ZDSecMgrEntry_t** entry );
263 void ZDSecMgrEntryFree( ZDSecMgrEntry_t* entry );
264 ZStatus_t ZDSecMgrEntryNew( ZDSecMgrEntry_t** entry );
265
266 //-----------------------------------------------------------------------------
267 // control data
268 //-----------------------------------------------------------------------------
269 void ZDSecMgrCtrlInit( void );
270 void ZDSecMgrCtrlRelease( ZDSecMgrCtrl_t* ctrl );
271 void ZDSecMgrCtrlLookup( ZDSecMgrEntry_t* entry, ZDSecMgrCtrl_t** ctrl );
272 void ZDSecMgrCtrlSet( ZDSecMgrDevice_t* device,
273 ZDSecMgrEntry_t* entry,
274 ZDSecMgrCtrl_t* ctrl );
275 ZStatus_t ZDSecMgrCtrlAdd( ZDSecMgrDevice_t* device, ZDSecMgrEntry_t* entry );
276 void ZDSecMgrCtrlTerm( ZDSecMgrEntry_t* entry );
277 ZStatus_t ZDSecMgrCtrlReset( ZDSecMgrDevice_t* device,
278 ZDSecMgrEntry_t* entry );
279
280 //-----------------------------------------------------------------------------
281 // key support
282 //-----------------------------------------------------------------------------
283 void ZDSecMgrMasterKeyLoad( uint16 nwkAddr, uint8* extAddr, uint8* key );
284 ZStatus_t ZDSecMgrAppKeyGet( uint16 initNwkAddr,
285 uint8* initExtAddr,
286 uint16 partNwkAddr,
287 uint8* partExtAddr,
288 uint8** key,
289 uint8* keyType );
290 void ZDSecMgrAppKeyReq( ZDO_RequestKeyInd_t* ind );
291 ZStatus_t ZDSecMgrEstablishKey( ZDSecMgrDevice_t* device );
292 ZStatus_t ZDSecMgrSendMasterKey( ZDSecMgrDevice_t* device );
293 ZStatus_t ZDSecMgrSendNwkKey( ZDSecMgrDevice_t* device );
294
295 //-----------------------------------------------------------------------------
296 // device entry
297 //-----------------------------------------------------------------------------
298 void ZDSecMgrDeviceEntryRemove( ZDSecMgrEntry_t* entry );
299 ZStatus_t ZDSecMgrDeviceEntryAdd( ZDSecMgrDevice_t* device, uint16 ami );
300
301 //-----------------------------------------------------------------------------
302 // device control
303 //-----------------------------------------------------------------------------
304 void ZDSecMgrDeviceCtrlHandler( ZDSecMgrDevice_t* device );
305 void ZDSecMgrDeviceCtrlSetup( ZDSecMgrDevice_t* device );
306 void ZDSecMgrDeviceCtrlUpdate( uint8* extAddr, uint8 state );
307
308 //-----------------------------------------------------------------------------
309 // device management
310 //-----------------------------------------------------------------------------
311 void ZDSecMgrDeviceRemove( ZDSecMgrDevice_t* device );
312 ZStatus_t ZDSecMgrDeviceValidateSKKE( ZDSecMgrDevice_t* device );
313 ZStatus_t ZDSecMgrDeviceValidateRM( ZDSecMgrDevice_t* device );
314 ZStatus_t ZDSecMgrDeviceValidateCM( ZDSecMgrDevice_t* device );
315 ZStatus_t ZDSecMgrDeviceValidate( ZDSecMgrDevice_t* device );
316 ZStatus_t ZDSecMgrDeviceJoin( ZDSecMgrDevice_t* device );
317 ZStatus_t ZDSecMgrDeviceJoinDirect( ZDSecMgrDevice_t* device );
318 ZStatus_t ZDSecMgrDeviceJoinFwd( ZDSecMgrDevice_t* device );
319 ZStatus_t ZDSecMgrDeviceNew( ZDSecMgrDevice_t* device );
320
321 //-----------------------------------------------------------------------------
322 // association management
323 //-----------------------------------------------------------------------------
324 void ZDSecMgrAssocDeviceAuth( associated_devices_t* assoc );
325
326 #if defined ( ZDSECMGR_COMMERCIAL )
327 /******************************************************************************
328 * @fn ZDSecMgrMasterKeyInit ]
329 *
330 * @brief Initialize master key data.
331 *
332 * @param none
333 *
334 * @return none
335 */
336 void ZDSecMgrMasterKeyInit( void )
337 {
338 uint16 index;
339 uint16 size;
340 AddrMgrEntry_t entry;
341
342
343 // allocate MASTER key data
344 size = (short)( sizeof(ZDSecMgrMasterKeyData_t) * ZDSECMGR_MASTERKEY_MAX );
345
346 ZDSecMgrMasterKeyData = osal_mem_alloc( size );
347
348 // initialize MASTER key data
349 if ( ZDSecMgrMasterKeyData != NULL )
350 {
351 for ( index = 0; index < ZDSECMGR_MASTERKEY_MAX; index++ )
352 {
353 ZDSecMgrMasterKeyData[index].ami = INVALID_NODE_ADDR;
354 }
355
356 // check if preconfigured keys are enabled
357 //-------------------------------------------------------------------------
358 #if ( ZDSECMGR_PRECONFIG_MAX != 0 )
359 //-------------------------------------------------------------------------
360 if ( zgPreConfigKeys == TRUE )
361 {
362 // sync configured data
363 entry.user = ADDRMGR_USER_SECURITY;
364
365 for ( index = 0; index < ZDSECMGR_PRECONFIG_MAX; index++ )
366 {
367 // check for Address Manager entry
368 AddrMgrExtAddrSet( entry.extAddr,
369 (uint8*)ZDSecMgrPreConfigData[index].extAddr );
370
371 if ( AddrMgrEntryLookupExt( &entry ) != TRUE )
372 {
373 // update Address Manager
374 AddrMgrEntryUpdate( &entry );
375 }
376
377 if ( entry.index != INVALID_NODE_ADDR )
378 {
379 // sync MASTER keys with Address Manager index
380 ZDSecMgrMasterKeyData[index].ami = entry.index;
381
382 osal_cpyExtAddr( ZDSecMgrMasterKeyData[index].key,
383 (void*)ZDSecMgrPreConfigData[index].key );
384 }
385 }
386 }
387 //-------------------------------------------------------------------------
388 #endif // ( ZDSECMGR_PRECONFIG_MAX != 0 )
389 //-------------------------------------------------------------------------
390 }
391 }
392 #endif // defined ( ZDSECMGR_COMMERCIAL )
393
394 #if defined ( ZDSECMGR_COMMERCIAL )
395 /******************************************************************************
396 * @fn ZDSecMgrExtAddrLookup
397 *
398 * @brief Lookup index for specified EXT address.
399 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -