diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_sec.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_sec.c new file mode 100644 index 000000000..7662e6e68 --- /dev/null +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_sec.c @@ -0,0 +1,108 @@ +/** + **************************************************************************************** + * + * @file bt_app_sec.c + * + * @brief Application entry point + * + * Copyright (C) Espressif 2016 + * Created by Yulong at 2016/10/13 + * + * + **************************************************************************************** + */ + +#include "bt_app_sec.h" +#include // standard library +#include + + + +extern void srand (unsigned int seed); +extern int random (void); + +/// Application Security Environment Structure +tAPP_SEC_ENV app_sec_env; + + +/******************************************************************************* +** +** Function app_ble_sec_gen_tk +** +** Description This function is called to generate the ble tk +** +** Returns the generate tk value +** +*******************************************************************************/ +UINT32 app_ble_sec_gen_tk(void) +{ + // Generate a PIN Code (Between 100000 and 999999) + return (100000 + (random()%900000)); +} + +/******************************************************************************* +** +** Function app_ble_sec_gen_ltk +** +** Description This function is called to generate the ble ltk +** +** Returns NULL +** +*******************************************************************************/ +void app_ble_sec_gen_ltk(UINT8 key_size) +{ + // Counter + UINT8 i; + app_sec_env.key_size = key_size; + + // Randomly generate the LTK and the Random Number + for (i = 0; i < RAND_NB_LEN; i++) + { + app_sec_env.rand_nb.nb[i] = random()%256; + } + + // Randomly generate the end of the LTK + for (i = 0; i < SEC_KEY_LEN; i++) + { + app_sec_env.ltk.key[i] = (((key_size) < (16 - i)) ? 0 : random()%256); + } + + // Randomly generate the EDIV + app_sec_env.ediv = random()%65536; +} + + +/******************************************************************************* +** +** Function app_ble_sec_init +** +** Description This function is init the security env and function +** +** Returns NULL +** +*******************************************************************************/ +void app_ble_sec_init() +{ + // Reset Security Environment + memset(&app_sec_env, 0, sizeof(app_sec_env)); +} + + +/******************************************************************************* +** +** Function app_ble_security_start +** +** Description This function is called by the slave when the seurity start +** +** Returns NULL +** +*******************************************************************************/ +void app_ble_security_start(void) +{ + +} + + + + + diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/include/bt_app_sec.h b/examples/06_bluedroid_demos/components/bluedroid_demos/include/bt_app_sec.h new file mode 100644 index 000000000..6c003ae0c --- /dev/null +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/include/bt_app_sec.h @@ -0,0 +1,78 @@ +/** + **************************************************************************************** + * + * @file bt_app_sec.h + * + * @brief Application entry point + * + * Copyright (C) Espressif 2016 + * Created by Yulong at 2016/10/13 + * + * + **************************************************************************************** + */ + +#include "bt_types.h" + +#define APP_SEC_IRK_FLAG (0) +#define RAND_NB_LEN 0x08 +#define SEC_KEY_LEN 0x10 + + /* + * STRUCTURES DEFINITIONS + **************************************************************************************** + */ + + + /// Generic Security key structure +typedef struct + { + /// Key value MSB -> LSB + UINT8 key[SEC_KEY_LEN]; + }smp_sec_key; + + ///Random number structure +typedef struct +{ + ///8-byte array for random number + UINT8 nb[RAND_NB_LEN]; +}rand_nb; + + typedef struct + { + // LTK + smp_sec_key ltk; + // Random Number + rand_nb rand_nb; + // EDIV + UINT16 ediv; + // LTK key size + UINT8 key_size; + + // Last paired peer address type + UINT8 peer_addr_type; + // Last paired peer address + BD_ADDR peer_addr; + + // authentication level + UINT8 auth; + + }tAPP_SEC_ENV; + + extern tAPP_SEC_ENV app_sec_env; + + /* + * GLOBAL FUNCTIONS DECLARATIONS + **************************************************************************************** + */ + +void app_ble_sec_init(void); + +void app_ble_sec_pairing_cmp_evt_send(UINT8); + +UINT32 app_ble_sec_gen_tk(void); + +void app_ble_sec_gen_ltk(UINT8 key_size); + +void app_ble_security_start(void); +