BLE Application to open a Garage door
Dependencies: BLE_API Crypto RNG mbed nRF51822
Fork of BLE_LED by
Diff: SecurityService.h
- Revision:
- 12:eaee29bfa1c7
- Parent:
- 11:3de9b542eeac
- Child:
- 13:bc1be947b497
diff -r 3de9b542eeac -r eaee29bfa1c7 SecurityService.h --- a/SecurityService.h Wed Aug 26 00:13:10 2015 +0000 +++ b/SecurityService.h Wed Aug 26 00:59:07 2015 +0000 @@ -2,26 +2,28 @@ #define __BLE_SECURITY_SERVICE_H__ #include "Crypto.h" + + class SecurityService { public: const static uint16_t SECURITY_SERVICE_UUID = 0x3000; const static uint16_t SECURITY_IV_CHARACTERISTIC_UUID = 0x3001; const static uint16_t SECURITY_KEY_CHARACTERISTIC_UUID = 0x3002; - SecurityService(BLE &_ble, char *shared_key) : + SecurityService(BLE &_ble) : ble(_ble), - SecurityIV(SECURITY_IV_CHARACTERISTIC_UUID, (uint8_t *) 0), - SecurityKey(SECURITY_KEY_CHARACTERISTIC_UUID, (uint8_t *) 0) + SecurityIV(SECURITY_IV_CHARACTERISTIC_UUID, (uint8_t *) "IV"), + SecurityKey(SECURITY_KEY_CHARACTERISTIC_UUID, (uint8_t *) "KEY") { - boot = true; GattCharacteristic *charTable[] = {&SecurityIV, &SecurityKey}; GattService SecurityService(SECURITY_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); ble.gattServer().addService(SecurityService); - + } + void init(char *shared_key) { //Initialize AES setKey(shared_key); - genIV(); + genIV(); } void decode(uint8_t *out, uint8_t *in, uint32_t len) { @@ -31,15 +33,9 @@ } void setKey(char *shared_key) { - if(boot) { - DBG("Set shared_key = %s\r\n", shared_key); - MD5::computeHash(myKey, (uint8_t*) shared_key, strlen(shared_key)); - } - } - - void bootComplete() { - boot = false; - } + DBG("Set shared_key = %s\r\n", shared_key); + MD5::computeHash(myKey, (uint8_t*) shared_key, strlen(shared_key)); + } void genIV() { //TODO RANDOM THIS: @@ -51,17 +47,14 @@ GattAttribute::Handle_t getKeyHandle() const { return SecurityKey.getValueHandle(); } + +private: + uint8_t iv[16]; + uint8_t myKey[16]; -private: BLE &ble; ReadOnlyArrayGattCharacteristic<uint8_t, 16> SecurityIV; - WriteOnlyArrayGattCharacteristic<uint8_t, 16> SecurityKey; - bool boot; - - uint8_t iv[16]; - //openssl enc -aes-128-cbc -pass pass:********** -nosalt -P - uint8_t myKey[16]; - + WriteOnlyArrayGattCharacteristic<uint8_t, 16> SecurityKey; }; #endif /* #ifndef __BLE_SECURITY_SERVICE_H__ */