Commit b904ad38 authored by Mariusz Skamra's avatar Mariusz Skamra Committed by Anas Nashif
Browse files

Bluetooth: Add Kconfig option to disable HCI ECDH support

This adds Kconfig option to disable HCI ECDH support.
It will compile out ECDH related code, especially HCI event handlers.

Signed-off-by: default avatarMariusz Skamra <mariusz.skamra@codecoup.pl>
parent 8f5ba0be
Loading
Loading
Loading
Loading
+8 −2
Changes for subsys/bluetooth/host/Kconfig: 8 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -273,6 +273,7 @@ config BT_SMP
	select TINYCRYPT_AES
	select TINYCRYPT_AES_CMAC
	select BT_RPA
	select BT_ECC
	help
	  This option enables support for the Security Manager Protocol
	  (SMP), making it possible to pair devices over LE.
@@ -488,12 +489,17 @@ config BT_ID_MAX

endif # BT_HCI_HOST

config BT_ECC
	bool "Enable ECDH key generation support"
	help
	  This option adds support for ECDH HCI commands.

config BT_TINYCRYPT_ECC
	bool "Use TinyCrypt library for ECDH"
	select TINYCRYPT
	select TINYCRYPT_ECC_DH
	depends on BT_HCI_RAW || BT_HCI_HOST
	default y if BT_CTLR && (BT_SMP || BT_MESH_PROV)
	depends on BT_ECC && (BT_HCI_RAW || BT_HCI_HOST)
	default y if BT_CTLR
	help
	  If this option is set TinyCrypt library is used for emulating the
	  ECDH HCI commands and events needed by e.g. LE Secure Connections.
+8 −0
Changes for subsys/bluetooth/host/hci_core.c: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -83,9 +83,11 @@ static bt_ready_cb_t ready_cb;

static bt_le_scan_cb_t *scan_dev_found_cb;

#if defined(CONFIG_BT_ECC)
static u8_t pub_key[64];
static struct bt_pub_key_cb *pub_key_cb;
static bt_dh_key_cb_t dh_key_cb;
#endif /* CONFIG_BT_ECC */

#if defined(CONFIG_BT_BREDR)
static bt_br_discovery_cb_t *discovery_cb;
@@ -2958,6 +2960,7 @@ done:
}
#endif /* CONFIG_BT_SMP */

#if defined(CONFIG_BT_ECC)
static void le_pkey_complete(struct net_buf *buf)
{
	struct bt_hci_evt_le_p256_public_key_complete *evt = (void *)buf->data;
@@ -2988,6 +2991,7 @@ static void le_dhkey_complete(struct net_buf *buf)
		dh_key_cb = NULL;
	}
}
#endif /* CONFIG_BT_ECC */

static void hci_reset_complete(struct net_buf *buf)
{
@@ -3324,12 +3328,14 @@ static void hci_le_meta_event(struct net_buf *buf)
		le_ltk_request(buf);
		break;
#endif /* CONFIG_BT_SMP */
#if defined(CONFIG_BT_ECC)
	case BT_HCI_EVT_LE_P256_PUBLIC_KEY_COMPLETE:
		le_pkey_complete(buf);
		break;
	case BT_HCI_EVT_LE_GENERATE_DHKEY_COMPLETE:
		le_dhkey_complete(buf);
		break;
#endif /* CONFIG_BT_SMP */
#if defined(CONFIG_BT_OBSERVER)
	case BT_HCI_EVT_LE_ADVERTISING_REPORT:
		le_adv_report(buf);
@@ -5740,6 +5746,7 @@ u16_t bt_hci_get_cmd_opcode(struct net_buf *buf)
	return cmd(buf)->opcode;
}

#if defined(CONFIG_BT_ECC)
int bt_pub_key_gen(struct bt_pub_key_cb *new_cb)
{
	struct bt_pub_key_cb *cb;
@@ -5825,6 +5832,7 @@ int bt_dh_key_gen(const u8_t remote_pk[64], bt_dh_key_cb_t cb)

	return 0;
}
#endif /* CONFIG_BT_ECC */

#if defined(CONFIG_BT_BREDR)
int bt_br_oob_get_local(struct bt_br_oob *oob)
+1 −0
Changes for subsys/bluetooth/host/mesh/Kconfig: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ if BT_MESH
# Virtual option enabled whenever Generic Provisioning layer is needed
config BT_MESH_PROV
	bool
	select BT_ECC

config BT_MESH_PB_ADV
	bool "Provisioning support using the advertising bearer (PB-ADV)"