BLE Application to open a Garage door

Dependencies:   BLE_API Crypto RNG mbed nRF51822

Fork of BLE_LED by Bluetooth Low Energy

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__ */