Bluetooth: Add definitions for new link key types
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 10 Jan 2014 10:07:19 +0000 (02:07 -0800)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 13 Feb 2014 07:51:31 +0000 (09:51 +0200)
With the introduction of Secure Connections, the list of link key types
got extended by P-256 versions of authenticated and unauthenticated
link keys.

To avoid any confusion the previous authenticated and unauthenticated
link key types got ammended with a P912 postfix. And the two new keys
have a P256 postfix now. Existing code using the previous definitions
has been adjusted.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
include/net/bluetooth/hci.h
net/bluetooth/hci_conn.c
net/bluetooth/hci_event.c

index e4e94bf..8d888bc 100644 (file)
@@ -331,9 +331,11 @@ enum {
 #define HCI_LK_LOCAL_UNIT              0x01
 #define HCI_LK_REMOTE_UNIT             0x02
 #define HCI_LK_DEBUG_COMBINATION       0x03
-#define HCI_LK_UNAUTH_COMBINATION      0x04
-#define HCI_LK_AUTH_COMBINATION                0x05
+#define HCI_LK_UNAUTH_COMBINATION_P192 0x04
+#define HCI_LK_AUTH_COMBINATION_P192   0x05
 #define HCI_LK_CHANGED_COMBINATION     0x06
+#define HCI_LK_UNAUTH_COMBINATION_P256 0x07
+#define HCI_LK_AUTH_COMBINATION_P256   0x08
 /* The spec doesn't define types for SMP keys, the _MASTER suffix is implied */
 #define HCI_SMP_STK                    0x80
 #define HCI_SMP_STK_SLAVE              0x81
index ba5366c..251f22e 100644 (file)
@@ -802,12 +802,12 @@ int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
 
        /* An authenticated combination key has sufficient security for any
           security level. */
-       if (conn->key_type == HCI_LK_AUTH_COMBINATION)
+       if (conn->key_type == HCI_LK_AUTH_COMBINATION_P192)
                goto encrypt;
 
        /* An unauthenticated combination key has sufficient security for
           security level 1 and 2. */
-       if (conn->key_type == HCI_LK_UNAUTH_COMBINATION &&
+       if (conn->key_type == HCI_LK_UNAUTH_COMBINATION_P192 &&
            (sec_level == BT_SECURITY_MEDIUM || sec_level == BT_SECURITY_LOW))
                goto encrypt;
 
index cfcce44..defa125 100644 (file)
@@ -2633,7 +2633,7 @@ static void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
 
        conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
        if (conn) {
-               if (key->type == HCI_LK_UNAUTH_COMBINATION &&
+               if (key->type == HCI_LK_UNAUTH_COMBINATION_P192 &&
                    conn->auth_type != 0xff && (conn->auth_type & 0x01)) {
                        BT_DBG("%s ignoring unauthenticated key", hdev->name);
                        goto not_found;