bluez/mesh
Inga Stotland 17516034a6 mesh: Fix app payload decryption for virtual labels
This fixes a bug when a virtual label and its size hasn't been passed
to a decryption function: instead of always using NULL pointer for
label and 0 for lable size, use actual virtual label info if decrypting
a payload addressed to a virtual destination.
2020-02-18 15:55:30 -08:00
..
agent.c mesh: Fix provisioning agent method call failure 2020-01-23 07:38:23 -08:00
agent.h mesh: Fix inOOB and outOOB agent handling on prov initiate 2019-11-19 15:22:18 -08:00
appkey.c mesh: Move Replay Protection to mesh/net.c 2020-01-30 11:03:47 -08:00
appkey.h mesh: Move Replay Protection to mesh/net.c 2020-01-30 11:03:47 -08:00
bluetooth-mesh.conf mesh: Allow sending on org.bluez.mesh.Provisioner1 2019-07-18 09:47:14 -07:00
bluetooth-mesh.service.in build: Add support for systemd bluetooth-mesh service 2019-06-06 11:58:22 -07:00
cfgmod-server.c mesh: Fix node reset 2020-01-08 09:07:15 -08:00
cfgmod.h mesh: Fix opcode for OP_VEND_MODEL_APP_GET 2020-01-17 23:06:57 -08:00
crypto.c mesh: Sequence number related fixes 2020-01-16 08:45:31 -08:00
crypto.h mesh: test AEAD at startup to check kernel support 2019-09-01 08:34:00 -07:00
dbus.c mesh: Use l_dbus_message...() APIs in more consistent fashion 2019-07-04 10:08:49 -07:00
dbus.h mesh: Use l_dbus_message...() APIs in more consistent fashion 2019-07-04 10:08:49 -07:00
error.h mesh: Update copyright dates 2019-05-17 13:14:40 -07:00
friend.c mesh: Friendship clean-up and rewrite 2019-11-28 13:49:59 -08:00
friend.h mesh: Friendship clean-up and rewrite 2019-11-28 13:49:59 -08:00
keyring.c mesh: Fix keyring app keys directory iteration 2020-02-07 09:22:47 -08:00
keyring.h mesh: Automate AppKey update on KR phase 2-->3-->0 2019-09-10 09:32:40 -07:00
main.c mesh: Rename --index to --io, support additional io types. 2020-01-16 08:45:31 -08:00
manager.c mesh: Style fix 2020-01-06 07:29:34 -08:00
manager.h mesh: Cancel unprovisioned scan on exit or app disconnect 2019-11-14 14:10:18 -08:00
mesh-config-json.c mesh: Relocate tree deletion to util.c/h 2020-01-30 11:03:47 -08:00
mesh-config.h mesh: Make mesh-config API more consistent 2019-10-01 09:51:54 -07:00
mesh-defs.h mesh: Initialize net modes based on node configuration 2019-12-10 09:57:11 -08:00
mesh-io-api.h mesh: Fix io inititalization sequence 2019-11-15 09:23:16 -08:00
mesh-io-generic.c mesh: Fix io inititalization sequence 2019-11-15 09:23:16 -08:00
mesh-io-generic.h mesh: Shared private meshd interfaces 2018-08-20 12:48:14 -07:00
mesh-io.c mesh: Refactor Secure Network Beaconing 2019-12-16 08:18:20 -08:00
mesh-io.h mesh: Fix io inititalization sequence 2019-11-15 09:23:16 -08:00
mesh-main.conf mesh: Add mesh-main.conf file with general mesh configuration 2019-12-16 14:52:36 -08:00
mesh-mgmt.c mesh: Remove redundant code in mesh IO mgmt 2019-12-15 09:33:37 -08:00
mesh-mgmt.h mesh: Move HCI handling to mesh-io-generic 2019-06-24 09:04:44 -07:00
mesh.c mesh: Add mesh-main.conf file with general mesh configuration 2019-12-16 14:52:36 -08:00
mesh.h mesh: Add mesh-main.conf file with general mesh configuration 2019-12-16 14:52:36 -08:00
model.c mesh: Fix app payload decryption for virtual labels 2020-02-18 15:55:30 -08:00
model.h mesh: Clean up node.c 2019-12-10 09:57:11 -08:00
net-keys.c mesh: Recognize SNBs in SecondsSinceLastHeard 2019-12-24 10:38:34 -08:00
net-keys.h mesh: Recognize SNBs in SecondsSinceLastHeard 2019-12-24 10:38:34 -08:00
net.c mesh: Re-arrange replay protection check and add 2020-01-31 10:15:08 -08:00
net.h mesh: Re-arrange replay protection check and add 2020-01-31 10:15:08 -08:00
node.c mesh: remove unused node_set_device_key() 2020-01-31 10:22:16 -08:00
node.h mesh: remove unused node_set_device_key() 2020-01-31 10:22:16 -08:00
org.bluez.mesh.service build: Add support for systemd bluetooth-mesh service 2019-06-06 11:58:22 -07:00
pb-adv.c mesh: Implement provisioning loop-back 2020-01-13 09:15:15 -08:00
pb-adv.h mesh: Fix support for Provisioner Initiator 2019-07-14 08:32:18 -07:00
prov-acceptor.c mesh: Fix to send close indication on timeout 2019-12-04 09:10:38 -08:00
prov-initiator.c mesh: Handle publickey exchange phase for initiator 2020-01-25 08:25:37 -08:00
prov.h mesh: Convert provisioning pkts to packed structs 2019-07-14 08:32:18 -07:00
provision.h mesh: Fix implementation of Provisioner Initiator 2019-07-14 08:32:18 -07:00
README mesh: ELL encrypt dependancy README section added 2019-05-31 16:46:34 -07:00
rpl.c mesh: Add NVM storage of Replay Protection 2020-01-30 11:03:47 -08:00
rpl.h mesh: Add NVM storage of Replay Protection 2020-01-30 11:03:47 -08:00
util.c mesh: Relocate tree deletion to util.c/h 2020-01-30 11:03:47 -08:00
util.h mesh: Relocate tree deletion to util.c/h 2020-01-30 11:03:47 -08:00

Bluetooth Mesh Daemon
*********************

Copyright (C) 2019  Intel Corporation. All rights reserved.

Compilation and installation
============================

In addition to main BlueZ requirements, MeshCtl needs the following:
	- json-c library

Configuration and options
=========================

	--enable-mesh

		Build mesh daemon and other Bluetooth Mesh based tools

Current implementation of the mesh daemon requires exclusive access to
a Bluetooth controller.
The AutoEnable option in the installed main.conf should be set to "false".

Storage
=======

Default storage directory is /var/lib/bluetooth/mesh.

The directory contains the provisioned nodes configurations.
Each node has its own subdirectory, named after node's Device UUID (32-digit
hexadecimal string) that is generated by the application that created a node.

Each subdirectory contains the following files:
	- node.json:
		node configuration and is populated by the
		daemon based on the configuration commands from a
		provisioner/configuration client
	- node.json.bak:
		a backup that the last known good node configuration.
	- seq_num:
		File containing next sequence number to use
	- seq_num.bak:
		Backup of the sequence number. This may be larger than the
		actual sequence number being used at runtime, to prevent re-use
		of sequence numbers in the event of an unexpected restart.
	- ./rpl/:
		Directory to store the sequence numbers of remote nodes, as
		required by Replay Protection List (RPL) parameters.
		- xxxx:
			Files named for remote Unicast addresses, and contain
			last received iv_index + seq_num from each SRC address.
	- ./dev_keys/:
		Directory to store remote Device keys. This is only created/used
		by Configuration Client (Network administration) nodes.
		- xxxx:
			Files named for remote Unicast addresses, and contains
			16 octet key.
	- ./net_keys/:
		Directory to store network subnet keys. This is only
		created/used by Configuration Client (Network administration)
		nodes.
		- xxx:
			Files named for subnet index, and contains key refresh
			phase, and old/new versions of the key.
	- ./app_keys/:
		Directory to store application keys. This is only created/used
		by Configuration Client (Network administration) nodes.
		- xxx:
			Files named for application index, and contains bound
			subnet index, and old/new versions of the key.

The node.json and node.json.bak are in JSON format. All other files are stored
in little endian binary format.

Known Issues
============

Bluetooth Mesh makes heavy usage of AEAD-AES_CCM encryption, which is
implemented in the Linux kernel on most platforms. Some platforms, including
those with kernel versions including and prior to v4.8, did *not* correctly
implement the AEAD encryption routines. If Mesh is to be ported to such a
system, it will be the responsibility of the vendor to provide support for
AEAD-AES_CCM encryption by some other method.

Support for the required AEAD routines can be determined by running the unit
tests provided with the ELL libraries used by Mesh. Specifically, the tests
found in .../ell/unit/test-cipher.c

Information
===========

Mailing lists:
	linux-bluetooth@vger.kernel.org

For additional information about the project visit BlueZ web site:
	http://www.bluez.org