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: Mariusz Skamra <mariusz.skamra@codecoup.pl>
This commit is contained in:
parent
8f5ba0be88
commit
b904ad387f
3 changed files with 17 additions and 2 deletions
|
@ -273,6 +273,7 @@ config BT_SMP
|
||||||
select TINYCRYPT_AES
|
select TINYCRYPT_AES
|
||||||
select TINYCRYPT_AES_CMAC
|
select TINYCRYPT_AES_CMAC
|
||||||
select BT_RPA
|
select BT_RPA
|
||||||
|
select BT_ECC
|
||||||
help
|
help
|
||||||
This option enables support for the Security Manager Protocol
|
This option enables support for the Security Manager Protocol
|
||||||
(SMP), making it possible to pair devices over LE.
|
(SMP), making it possible to pair devices over LE.
|
||||||
|
@ -488,12 +489,17 @@ config BT_ID_MAX
|
||||||
|
|
||||||
endif # BT_HCI_HOST
|
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
|
config BT_TINYCRYPT_ECC
|
||||||
bool "Use TinyCrypt library for ECDH"
|
bool "Use TinyCrypt library for ECDH"
|
||||||
select TINYCRYPT
|
select TINYCRYPT
|
||||||
select TINYCRYPT_ECC_DH
|
select TINYCRYPT_ECC_DH
|
||||||
depends on BT_HCI_RAW || BT_HCI_HOST
|
depends on BT_ECC && (BT_HCI_RAW || BT_HCI_HOST)
|
||||||
default y if BT_CTLR && (BT_SMP || BT_MESH_PROV)
|
default y if BT_CTLR
|
||||||
help
|
help
|
||||||
If this option is set TinyCrypt library is used for emulating the
|
If this option is set TinyCrypt library is used for emulating the
|
||||||
ECDH HCI commands and events needed by e.g. LE Secure Connections.
|
ECDH HCI commands and events needed by e.g. LE Secure Connections.
|
||||||
|
|
|
@ -83,9 +83,11 @@ static bt_ready_cb_t ready_cb;
|
||||||
|
|
||||||
static bt_le_scan_cb_t *scan_dev_found_cb;
|
static bt_le_scan_cb_t *scan_dev_found_cb;
|
||||||
|
|
||||||
|
#if defined(CONFIG_BT_ECC)
|
||||||
static u8_t pub_key[64];
|
static u8_t pub_key[64];
|
||||||
static struct bt_pub_key_cb *pub_key_cb;
|
static struct bt_pub_key_cb *pub_key_cb;
|
||||||
static bt_dh_key_cb_t dh_key_cb;
|
static bt_dh_key_cb_t dh_key_cb;
|
||||||
|
#endif /* CONFIG_BT_ECC */
|
||||||
|
|
||||||
#if defined(CONFIG_BT_BREDR)
|
#if defined(CONFIG_BT_BREDR)
|
||||||
static bt_br_discovery_cb_t *discovery_cb;
|
static bt_br_discovery_cb_t *discovery_cb;
|
||||||
|
@ -2958,6 +2960,7 @@ done:
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_BT_SMP */
|
#endif /* CONFIG_BT_SMP */
|
||||||
|
|
||||||
|
#if defined(CONFIG_BT_ECC)
|
||||||
static void le_pkey_complete(struct net_buf *buf)
|
static void le_pkey_complete(struct net_buf *buf)
|
||||||
{
|
{
|
||||||
struct bt_hci_evt_le_p256_public_key_complete *evt = (void *)buf->data;
|
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;
|
dh_key_cb = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif /* CONFIG_BT_ECC */
|
||||||
|
|
||||||
static void hci_reset_complete(struct net_buf *buf)
|
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);
|
le_ltk_request(buf);
|
||||||
break;
|
break;
|
||||||
#endif /* CONFIG_BT_SMP */
|
#endif /* CONFIG_BT_SMP */
|
||||||
|
#if defined(CONFIG_BT_ECC)
|
||||||
case BT_HCI_EVT_LE_P256_PUBLIC_KEY_COMPLETE:
|
case BT_HCI_EVT_LE_P256_PUBLIC_KEY_COMPLETE:
|
||||||
le_pkey_complete(buf);
|
le_pkey_complete(buf);
|
||||||
break;
|
break;
|
||||||
case BT_HCI_EVT_LE_GENERATE_DHKEY_COMPLETE:
|
case BT_HCI_EVT_LE_GENERATE_DHKEY_COMPLETE:
|
||||||
le_dhkey_complete(buf);
|
le_dhkey_complete(buf);
|
||||||
break;
|
break;
|
||||||
|
#endif /* CONFIG_BT_SMP */
|
||||||
#if defined(CONFIG_BT_OBSERVER)
|
#if defined(CONFIG_BT_OBSERVER)
|
||||||
case BT_HCI_EVT_LE_ADVERTISING_REPORT:
|
case BT_HCI_EVT_LE_ADVERTISING_REPORT:
|
||||||
le_adv_report(buf);
|
le_adv_report(buf);
|
||||||
|
@ -5740,6 +5746,7 @@ u16_t bt_hci_get_cmd_opcode(struct net_buf *buf)
|
||||||
return cmd(buf)->opcode;
|
return cmd(buf)->opcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_BT_ECC)
|
||||||
int bt_pub_key_gen(struct bt_pub_key_cb *new_cb)
|
int bt_pub_key_gen(struct bt_pub_key_cb *new_cb)
|
||||||
{
|
{
|
||||||
struct bt_pub_key_cb *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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif /* CONFIG_BT_ECC */
|
||||||
|
|
||||||
#if defined(CONFIG_BT_BREDR)
|
#if defined(CONFIG_BT_BREDR)
|
||||||
int bt_br_oob_get_local(struct bt_br_oob *oob)
|
int bt_br_oob_get_local(struct bt_br_oob *oob)
|
||||||
|
|
|
@ -22,6 +22,7 @@ if BT_MESH
|
||||||
# Virtual option enabled whenever Generic Provisioning layer is needed
|
# Virtual option enabled whenever Generic Provisioning layer is needed
|
||||||
config BT_MESH_PROV
|
config BT_MESH_PROV
|
||||||
bool
|
bool
|
||||||
|
select BT_ECC
|
||||||
|
|
||||||
config BT_MESH_PB_ADV
|
config BT_MESH_PB_ADV
|
||||||
bool "Provisioning support using the advertising bearer (PB-ADV)"
|
bool "Provisioning support using the advertising bearer (PB-ADV)"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue