Re: [PATCH 1/8] Bluetooth: Add structures for the new LTK exchange messages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vinicius,

On 12/6/2011 4:48 PM, Vinicius Costa Gomes wrote:
This defines two in the kernel side of BlueZ two new messages, one
event that will inform userspace that a new Long Term Key was
exchanged and one that will allow userspace to load LTKs into
the kernel.

Acked-by: Marcel Holtmann<marcel@xxxxxxxxxxxx>
Signed-off-by: Vinicius Costa Gomes<vinicius.gomes@xxxxxxxxxxxxx>
---
  include/net/bluetooth/mgmt.h |   21 +++++++++++++++++++++
  1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h
index 3b68806..0f100fa9 100644
--- a/include/net/bluetooth/mgmt.h
+++ b/include/net/bluetooth/mgmt.h
@@ -264,6 +264,21 @@ struct mgmt_cp_user_passkey_neg_reply {
  	bdaddr_t bdaddr;
  } __packed;

+struct mgmt_ltk_info {
+	bdaddr_t bdaddr;
+	__u8 pin_len;
+	__u8 enc_size;
+	__le16 ediv;
+	__u8 rand[8];
+	__u8 val[16];
+} __packed;

I think we definitely want to store the auth level (octet) that was used to generate this key and/or the sec_level. Some profiles may require MITM (high sec_level) and from this key definition, there is no way to tell if it is Medium (no MITM) or High.

This then needs to be used L2CAP to map the sock options, and potentially trigger a re-bonding. Not that it is likely to happen, since devices are suppose to pair with the Highest security level they have available, but there could be malicious devices which could gain access to "High" security services without performing MITM authentication.

Also, I will harp once again that anything with an LE bdaddr should include the Public vs Random flag because the two address types are *not* interchangeable. I would like to see Johan's "mgmt_addr_info" structure used in place of the bdaddr_t here.


+
+#define MGMT_OP_LOAD_LONG_TERM_KEYS	0x0023
+struct mgmt_cp_load_long_term_keys {
+	__u16 key_count;
+	struct mgmt_ltk_info keys[0];
+} __packed;
+
  #define MGMT_EV_CMD_COMPLETE		0x0001
  struct mgmt_ev_cmd_complete {
  	__le16 opcode;
@@ -363,3 +378,9 @@ struct mgmt_ev_device_unblocked {
  struct mgmt_ev_user_passkey_request {
  	bdaddr_t bdaddr;
  } __packed;
+
+#define MGMT_EV_NEW_LONG_TERM_KEY	0x0018
+struct mgmt_ev_new_long_term_key {
+	__u8 store_hint;
+	struct mgmt_ltk_info key;
+} __packed;


--
Brian Gix
bgix@xxxxxxxxxxxxxx
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux