| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 |
- /**************************************************************************************************
- Filename: ZDSecMgr.h
- Revised: $Date: 2009-03-12 16:25:22 -0700 (Thu, 12 Mar 2009) $
- Revision: $Revision: 19404 $
- Description: This file contains the interface to the ZigBee Device Security Manager.
- Copyright 2005-2007 Texas Instruments Incorporated. All rights reserved.
- IMPORTANT: Your use of this Software is limited to those specific rights
- granted under the terms of a software license agreement between the user
- who downloaded the software, his/her employer (which must be your employer)
- and Texas Instruments Incorporated (the "License"). You may not use this
- Software unless you agree to abide by the terms of the License. The License
- limits your use, and you acknowledge, that the Software may not be modified,
- copied or distributed unless embedded on a Texas Instruments microcontroller
- or used solely and exclusively in conjunction with a Texas Instruments radio
- frequency transceiver, which is integrated into your product. Other than for
- the foregoing purpose, you may not use, reproduce, copy, prepare derivative
- works of, modify, distribute, perform, display or sell this Software and/or
- its documentation for any purpose.
- YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
- PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
- NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
- TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
- NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
- LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
- INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
- OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
- OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
- (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
- Should you have any questions regarding your right to use this Software,
- contact Texas Instruments Incorporated at www.TI.com.
- **************************************************************************************************/
- #ifndef ZDSECMGR_H
- #define ZDSECMGR_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /******************************************************************************
- * INCLUDES
- */
- #include "ZComDef.h"
- #include "ZDApp.h"
- /******************************************************************************
- * TYPEDEFS
- */
- // Authentication options
- typedef enum
- {
- ZDSecMgr_Not_Authenticated = 0, // The device has not been authenticated
- ZDSecMgr_Authenticated_CBCK, // The devcie has been authenticated using CBKE
- ZDSecMgr_Authenticated_EA // The device has been authenticated using EA
- }ZDSecMgr_Authentication_Option;
- /******************************************************************************
- * PUBLIC FUNCTIONS
- */
- /******************************************************************************
- * @fn ZDSecMgrInit
- *
- * @brief Initialize ZigBee Device Security Manager.
- *
- * @param none
- *
- * @return none
- */
- extern void ZDSecMgrInit( void );
- /******************************************************************************
- * @fn ZDSecMgrConfig
- *
- * @brief Configure ZigBee Device Security Manager.
- *
- * @param none
- *
- * @return none
- */
- extern void ZDSecMgrConfig( void );
- /******************************************************************************
- * @fn ZDSecMgrPermitJoining
- *
- * @brief Process request to change joining permissions.
- *
- * @param duration - [in] timed duration for join in seconds
- * - 0x00 not allowed
- * - 0xFF allowed without timeout
- *
- * @return uint8 - success(TRUE:FALSE)
- */
- extern uint8 ZDSecMgrPermitJoining( uint8 duration );
- /******************************************************************************
- * @fn ZDSecMgrPermitJoiningTimeout
- *
- * @brief Process permit joining timeout
- *
- * @param none
- *
- * @return none
- */
- extern void ZDSecMgrPermitJoiningTimeout( void );
- /******************************************************************************
- * @fn ZDSecMgrNewDeviceEvent
- *
- * @brief Process a the new device event, if found reset new device
- * event/timer.
- *
- * @param none
- *
- * @return uint8 - found(TRUE:FALSE)
- */
- extern uint8 ZDSecMgrNewDeviceEvent( void );
- /******************************************************************************
- * @fn ZDSecMgrEvent
- *
- * @brief Handle ZDO Security Manager event/timer(ZDO_SECMGR_EVENT).
- *
- * @param none
- *
- * @return none
- */
- extern void ZDSecMgrEvent( void );
- /******************************************************************************
- * @fn ZDSecMgrEstablishKeyCfm
- *
- * @brief Process the ZDO_EstablishKeyCfm_t message.
- *
- * @param cfm - [in] ZDO_EstablishKeyCfm_t confirmation
- *
- * @return none
- */
- extern void ZDSecMgrEstablishKeyCfm( ZDO_EstablishKeyCfm_t* cfm );
- /******************************************************************************
- * @fn ZDSecMgrEstablishKeyInd
- *
- * @brief Process the ZDO_EstablishKeyInd_t message.
- *
- * @param ind - [in] ZDO_EstablishKeyInd_t indication
- *
- * @return none
- */
- extern void ZDSecMgrEstablishKeyInd( ZDO_EstablishKeyInd_t* ind );
- /******************************************************************************
- * @fn ZDSecMgrTransportKeyInd
- *
- * @brief Process the ZDO_TransportKeyInd_t message.
- *
- * @param ind - [in] ZDO_TransportKeyInd_t indication
- *
- * @return none
- */
- extern void ZDSecMgrTransportKeyInd( ZDO_TransportKeyInd_t* ind );
- /******************************************************************************
- * @fn ZDSecMgrUpdateDeviceInd
- *
- * @brief Process the ZDO_UpdateDeviceInd_t message.
- *
- * @param ind - [in] ZDO_UpdateDeviceInd_t indication
- *
- * @return none
- */
- extern void ZDSecMgrUpdateDeviceInd( ZDO_UpdateDeviceInd_t* ind );
- /******************************************************************************
- * @fn ZDSecMgrRemoveDeviceInd
- *
- * @brief Process the ZDO_RemoveDeviceInd_t message.
- *
- * @param ind - [in] ZDO_RemoveDeviceInd_t indication
- *
- * @return none
- */
- extern void ZDSecMgrRemoveDeviceInd( ZDO_RemoveDeviceInd_t* ind );
- /******************************************************************************
- * @fn ZDSecMgrRequestKeyInd
- *
- * @brief Process the ZDO_RequestKeyInd_t message.
- *
- * @param ind - [in] ZDO_RequestKeyInd_t indication
- *
- * @return none
- */
- extern void ZDSecMgrRequestKeyInd( ZDO_RequestKeyInd_t* ind );
- /******************************************************************************
- * @fn ZDSecMgrSwitchKeyInd
- *
- * @brief Process the ZDO_SwitchKeyInd_t message.
- *
- * @param ind - [in] ZDO_SwitchKeyInd_t indication
- *
- * @return none
- */
- extern void ZDSecMgrSwitchKeyInd( ZDO_SwitchKeyInd_t* ind );
- /******************************************************************************
- * @fn ZDSecMgrAuthenticateInd
- *
- * @brief Process the ZDO_AuthenticateInd_t message.
- *
- * @param ind - [in] ZDO_AuthenticateInd_t indication
- *
- * @return none
- */
- extern void ZDSecMgrAuthenticateInd( ZDO_AuthenticateInd_t* ind );
- /******************************************************************************
- * @fn ZDSecMgrAuthenticateCfm
- *
- * @brief Process the ZDO_AuthenticateCfm_t message.
- *
- * @param cfm - [in] ZDO_AuthenticateCfm_t confirmation
- *
- * @return none
- */
- extern void ZDSecMgrAuthenticateCfm( ZDO_AuthenticateCfm_t* cfm );
- /******************************************************************************
- * @fn ZDSecMgrUpdateNwkKey
- *
- * @brief Load a new NWK key and trigger a network wide update.
- *
- * @param key - [in] new NWK key
- * @param keySeqNum - [in] new NWK key sequence number
- *
- * @return ZStatus_t
- */
- extern ZStatus_t ZDSecMgrUpdateNwkKey( uint8* key, uint8 keySeqNum, uint16 dstAddr );
- /******************************************************************************
- * @fn ZDSecMgrSwitchNwkKey
- *
- * @brief Causes the NWK key to switch via a network wide command.
- *
- * @param keySeqNum - [in] new NWK key sequence number
- *
- * @return ZStatus_t
- */
- extern ZStatus_t ZDSecMgrSwitchNwkKey( uint8 keySeqNum, uint16 dstAddr );
- /******************************************************************************
- * @fn ZDSecMgrRequestAppKey
- *
- * @brief Request an application key with partner.
- *
- * @param partNwkAddr - [in] partner network address
- *
- * @return ZStatus_t
- */
- ZStatus_t ZDSecMgrRequestAppKey( uint16 partNwkAddr );
- /******************************************************************************
- * @fn ZDSecMgrSetupPartner
- *
- * @brief Setup for application key partner.
- *
- * @param partNwkAddr - [in] partner network address
- * @param partExtAddr - [in] partner extended address
- *
- * @return ZStatus_t
- */
- ZStatus_t ZDSecMgrSetupPartner( uint16 partNwkAddr, uint8* partExtAddr );
- /******************************************************************************
- * @fn ZDSecMgrAppKeyTypeSet
- *
- * @brief Set application key type.
- *
- * @param keyType - [in] application key type (KEY_TYPE_APP_MASTER@2 or
- * KEY_TYPE_APP_LINK@3
- *
- * @return ZStatus_t
- */
- ZStatus_t ZDSecMgrAppKeyTypeSet( uint8 keyType );
- /******************************************************************************
- * @fn ZDSecMgrAddLinkKey
- *
- * @brief Add the application link key to ZDSecMgr.
- *
- * @param shortAddr - [in] short address of the partner device
- * @param extAddr - [in] extended address of the partner device
- * @param key - [in] link key
- *
- * @return none
- */
- extern void ZDSecMgrAddLinkKey( uint16 shortAddr, uint8 *extAddr, uint8 *key);
- /*********************************************************************
- * @fn ZDSecMgrWriteNV()
- *
- * @brief Save off the link key list to NV
- *
- * @param none
- *
- * @return none
- */
- extern void ZDSecMgrWriteNV( void );
- /******************************************************************************
- * @fn ZDSecMgrRestoreFromNV
- *
- * @brief Restore the SecMgr entry data from NV.
- *
- * @param none
- *
- * @return ZStatus_t
- */
- extern ZStatus_t ZDSecMgrRestoreFromNV( void );
- /******************************************************************************
- * @fn ZDSecMgrInitNV
- *
- * @brief Initialize the SecMgr entry data in NV.
- *
- * @param none
- *
- * @return uint8 - <osal_nv_item_init> return codes
- */
- extern uint8 ZDSecMgrInitNV( void );
- /******************************************************************************
- * @fn ZDSecMgrSetDefaultNV
- *
- * @brief Set default SecMgr entry data in NV.
- *
- * @param none
- *
- * @return none
- */
- void ZDSecMgrSetDefaultNV( void );
- /******************************************************************************
- * @fn ZDSecMgrAPSRemove
- *
- * @brief Remove device from network.
- *
- * @param nwkAddr - device's NWK address
- * @param extAddr - device's Extended address
- * @param parentAddr - parent's NWK address
- *
- * @return ZStatus_t
- */
- ZStatus_t ZDSecMgrAPSRemove( uint16 nwkAddr, uint8 *extAddr, uint16 parentAddr );
- /******************************************************************************
- * @fn ZDSecMgrAuthenticationCheck
- *
- * @brief Check if the specific device has been authenticated or not
- *
- * @param shortAddr - [in] short address
- *
- * @return uint8 - TRUE @ authenticated
- * FALSE @ not authenticated
- */
- uint8 ZDSecMgrAuthenticationCheck( uint16 shortAddr );
- /******************************************************************************
- ******************************************************************************/
- #ifdef __cplusplus
- }
- #endif
- #endif /* ZDSECMGR_H */
|