Skip to content

Commit

Permalink
Bluetooth: Align minimum encryption key size for LE and BR/EDR connec…
Browse files Browse the repository at this point in the history
…tions

The minimum encryption key size for LE connections is 56 bits and to
align LE with BR/EDR, enforce 56 bits of minimum encryption key size for
BR/EDR connections as well.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Cc: stable@vger.kernel.org
  • Loading branch information
holtmann authored and Johan Hedberg committed Apr 25, 2019
1 parent e668eb1 commit d5bb334
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
3 changes: 3 additions & 0 deletions include/net/bluetooth/hci_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,9 @@ struct adv_info {

#define HCI_MAX_SHORT_NAME_LENGTH 10

/* Min encryption key size to match with SMP */
#define HCI_MIN_ENC_KEY_SIZE 7

/* Default LE RPA expiry time, 15 minutes */
#define HCI_DEFAULT_RPA_TIMEOUT (15 * 60)

Expand Down
8 changes: 8 additions & 0 deletions net/bluetooth/hci_conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -1276,6 +1276,14 @@ int hci_conn_check_link_mode(struct hci_conn *conn)
!test_bit(HCI_CONN_ENCRYPT, &conn->flags))
return 0;

/* The minimum encryption key size needs to be enforced by the
* host stack before establishing any L2CAP connections. The
* specification in theory allows a minimum of 1, but to align
* BR/EDR and LE transports, a minimum of 7 is chosen.
*/
if (conn->enc_key_size < HCI_MIN_ENC_KEY_SIZE)
return 0;

return 1;
}

Expand Down

0 comments on commit d5bb334

Please sign in to comment.