61 lines
2.2 KiB
C
61 lines
2.2 KiB
C
//-------------------------------------------------------------------
|
|
// Filename: basic_rf_security.c
|
|
// Description: Basic RF security library
|
|
//-------------------------------------------------------------------
|
|
//-------------------------------------------------------------------
|
|
// INCLUDES
|
|
//-------------------------------------------------------------------
|
|
#ifdef SECURITY_CCM
|
|
#include "hal_defs.h"
|
|
#include "hal_rf_security.h"
|
|
#include "basic_rf.h"
|
|
#include "basic_rf_security.h"
|
|
|
|
//-------------------------------------------------------------------
|
|
// CONSTANTS AND DEFINES
|
|
//-------------------------------------------------------------------
|
|
#define FLAG_FIELD 0x09
|
|
#define NONCE_SIZE 16
|
|
|
|
//-------------------------------------------------------------------
|
|
// LOCAL VARIABLES
|
|
//-------------------------------------------------------------------
|
|
static uint8 nonceTx[NONCE_SIZE];
|
|
static uint8 nonceRx[NONCE_SIZE];
|
|
|
|
//-------------------------------------------------------------------
|
|
// GLOBAL FUNCTIONS
|
|
//-------------------------------------------------------------------
|
|
//-------------------------------------------------------------------
|
|
// @fn basicRfSecurityInit
|
|
// @brief Initialise key and nonces and write to radio
|
|
// @param pConfig - file scope variable holding configuration data for basic RF
|
|
// @return none
|
|
//-------------------------------------------------------------------
|
|
void basicRfSecurityInit(basicRfCfg_t *pConfig)
|
|
{
|
|
uint8 i;
|
|
|
|
// Initialise nonce bytes to 0
|
|
for (i = 0; i < NONCE_SIZE; i++)
|
|
{
|
|
nonceRx[i] = 0;
|
|
nonceTx[i] = 0;
|
|
}
|
|
|
|
// Set nonce flag field (Byte 0)
|
|
nonceRx[0] = FLAG_FIELD;
|
|
nonceTx[0] = FLAG_FIELD;
|
|
|
|
// Set byte 7 and 8 of nonce to myAddr
|
|
nonceTx[8] = (uint8)pConfig->myAddr;
|
|
nonceTx[7] = (uint8)(pConfig->myAddr >> 8);
|
|
|
|
// Set Security mode field of nonces (Byte 13)
|
|
nonceRx[13] = SECURITY_CONTROL;
|
|
nonceTx[13] = SECURITY_CONTROL;
|
|
|
|
halRfSecurityInit(pConfig->securityKey, nonceRx, nonceTx);
|
|
}
|
|
#endif
|