The API name space for Bluetooth is bt_* and BT_* so it makes sense to align the Kconfig name space with this. The additional benefit is that this also makes the names shorter. It is also in line with what Linux uses for Bluetooth Kconfig entries. Some Bluetooth-related Networking Kconfig defines are renamed as well in order to be consistent, such as NET_L2_BLUETOOTH. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
91 lines
2.1 KiB
C
91 lines
2.1 KiB
C
/* keys.h - Bluetooth key handling */
|
|
|
|
/*
|
|
* Copyright (c) 2015-2016 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
enum {
|
|
BT_KEYS_SLAVE_LTK = BIT(0),
|
|
BT_KEYS_IRK = BIT(1),
|
|
BT_KEYS_LTK = BIT(2),
|
|
BT_KEYS_LOCAL_CSRK = BIT(3),
|
|
BT_KEYS_REMOTE_CSRK = BIT(4),
|
|
BT_KEYS_LTK_P256 = BIT(5),
|
|
|
|
BT_KEYS_ALL = (BT_KEYS_SLAVE_LTK | BT_KEYS_IRK | \
|
|
BT_KEYS_LTK | BT_KEYS_LOCAL_CSRK | \
|
|
BT_KEYS_REMOTE_CSRK | BT_KEYS_LTK_P256),
|
|
};
|
|
|
|
enum {
|
|
BT_KEYS_AUTHENTICATED,
|
|
BT_KEYS_DEBUG,
|
|
|
|
/* Total number of flags - must be at the end of the enum */
|
|
BT_KEYS_NUM_FLAGS,
|
|
};
|
|
|
|
struct bt_ltk {
|
|
u64_t rand;
|
|
u16_t ediv;
|
|
u8_t val[16];
|
|
};
|
|
|
|
struct bt_irk {
|
|
u8_t val[16];
|
|
bt_addr_t rpa;
|
|
};
|
|
|
|
struct bt_csrk {
|
|
u8_t val[16];
|
|
u32_t cnt;
|
|
};
|
|
|
|
struct bt_keys {
|
|
bt_addr_le_t addr;
|
|
u8_t enc_size;
|
|
ATOMIC_DEFINE(flags, BT_KEYS_NUM_FLAGS);
|
|
u16_t keys;
|
|
struct bt_ltk ltk;
|
|
struct bt_irk irk;
|
|
#if defined(CONFIG_BT_SIGNING)
|
|
struct bt_csrk local_csrk;
|
|
struct bt_csrk remote_csrk;
|
|
#endif /* BT_SIGNING */
|
|
#if !defined(CONFIG_BT_SMP_SC_ONLY)
|
|
struct bt_ltk slave_ltk;
|
|
#endif /* CONFIG_BT_SMP_SC_ONLY */
|
|
};
|
|
|
|
struct bt_keys *bt_keys_get_addr(const bt_addr_le_t *addr);
|
|
struct bt_keys *bt_keys_get_type(int type, const bt_addr_le_t *addr);
|
|
struct bt_keys *bt_keys_find(int type, const bt_addr_le_t *addr);
|
|
struct bt_keys *bt_keys_find_irk(const bt_addr_le_t *addr);
|
|
struct bt_keys *bt_keys_find_addr(const bt_addr_le_t *addr);
|
|
|
|
void bt_keys_add_type(struct bt_keys *keys, int type);
|
|
void bt_keys_clear(struct bt_keys *keys);
|
|
void bt_keys_clear_all(void);
|
|
|
|
enum {
|
|
BT_LINK_KEY_AUTHENTICATED,
|
|
BT_LINK_KEY_DEBUG,
|
|
BT_LINK_KEY_SC,
|
|
|
|
/* Total number of flags - must be at the end of the enum */
|
|
BT_LINK_KEY_NUM_FLAGS,
|
|
};
|
|
|
|
struct bt_keys_link_key {
|
|
bt_addr_t addr;
|
|
ATOMIC_DEFINE(flags, BT_LINK_KEY_NUM_FLAGS);
|
|
u8_t val[16];
|
|
};
|
|
|
|
struct bt_keys_link_key *bt_keys_get_link_key(const bt_addr_t *addr);
|
|
struct bt_keys_link_key *bt_keys_find_link_key(const bt_addr_t *addr);
|
|
void bt_keys_link_key_clear(struct bt_keys_link_key *link_key);
|
|
void bt_keys_link_key_clear_addr(const bt_addr_t *addr);
|