wolfssl-examples/btle
David Garske bf4b1875ba 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
..
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 First pass at a BTLE example for ECC encrypt scheme. 2017-07-17 20:20:32 -07:00
btle-sim.c 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
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 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-server.c 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

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 some type of shared secret mechanism such as ECDH and a HKDF. ECC was choosen for these examples because its leightweight and widely used.

The second phase is encrypted data communication and data integrity.

ECC Encrypt/Decrypt Example

See BTLESecureMessageExchange.pdf for details.

Building

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

Usage

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

./ecc-server
./ecc-client