wolfssl-examples/btle
David Garske 32d8e4ad5b Fix bug with not sending server salt before setting peer salt. Added additional error check in `btle_send`. Fixed filename type in ecc-client.c. Added notes about how to validate server public key using a trusted cert (TODO). 2017-07-20 11:13:36 -07:00
..
BTLESecureMessageExchange.pdf First pass at a BTLE example for ECC encrypt scheme. 2017-07-17 20:20:32 -07:00
Makefile First pass at a BTLE example for ECC encrypt scheme. 2017-07-17 20:20:32 -07:00
README.md Additional fixes and updates to doc. 2017-07-19 19:20:02 -07:00
btle-sim.c Fix bug with not sending server salt before setting peer salt. Added additional error check in `btle_send`. Fixed filename type in ecc-client.c. Added notes about how to validate server public key using a trusted cert (TODO). 2017-07-20 11:13:36 -07:00
btle-sim.h Added error response checking. Added header to indicate packet type and length. Added padding for packets. Testing almost complete. 2017-07-18 20:43:14 -07:00
ecc-client.c Fix bug with not sending server salt before setting peer salt. Added additional error check in `btle_send`. Fixed filename type in ecc-client.c. Added notes about how to validate server public key using a trusted cert (TODO). 2017-07-20 11:13:36 -07:00
ecc-server.c Fix bug with not sending server salt before setting peer salt. Added additional error check in `btle_send`. Fixed filename type in ecc-client.c. Added notes about how to validate server public key using a trusted cert (TODO). 2017-07-20 11:13:36 -07:00

README.md

BTLE Examples

Bluetooth Low Energy (BTLE or BLE) is a leightweight / low power wireless protocol. Its supported by Apple iPhone 4s and later and most Android phones. It operates in the 2.4GHz spectrum and has 3 advertising channels and 37 data channels.

These examples demonstrate leightweight methods for exchanging data securley over anytype of publically visible link.

The first phase is key establishment, which is done through ECDH and HDKF. ECC was choosen for these examples because its leightweight and widely used. Salt exchanged to provent data reply of messages. The enryption is done with AES CBC. The data integrity is done using HMAC-SHA256.

ECC Encrypt/Decrypt Example

See BTLESecureMessageExchange.pdf for details.

Building

The wolfSSL library must be built and installed using './configure --enable-ecc --enable-eccencrypt --enable-hkdf && make && sudo make install' or by defining #define HAVE_ECC, #define HAVE_ECC_ENCRYPT and HAVE_HKDF.

Usage

Use two consoles and STDIN to exchange data between the client and server.

./ecc-server
./ecc-client

BTLE Simulator

The simulator uses IPC (pipes) to communicate between threads for simualted communication between two devices.