diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2015-01-31 02:20:56 -0500 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2015-01-31 15:26:12 -0500 |
commit | 659c7fb08463b3dcf6aebb4daa0c5463289ccb97 (patch) | |
tree | 38bf0a926f2ae378a341064f68a4192ac9e10bcd /net/bluetooth/hci_event.c | |
parent | f7697b1602d13ef80779caf23d13fa1511193144 (diff) |
Bluetooth: Fix OOB data present value for BR/EDR Secure Connections
When BR/EDR Secure Connections has been enabled, the OOB data present
value can take 2 additional values. The host has to clearly provide
details about if P-192 OOB data, P-256 OOB data or a combination of
P-192 and P-256 OOB data is present.
In case BR/EDR Secure Connections is not enabled or not supported,
then check that P-192 OOB data is actually present and return the
correct value based on that.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'net/bluetooth/hci_event.c')
-rw-r--r-- | net/bluetooth/hci_event.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 055625b7368f..af181f455f6f 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
@@ -3881,8 +3881,25 @@ static u8 bredr_oob_data_present(struct hci_conn *conn) | |||
3881 | !memcmp(data->hash256, ZERO_KEY, 16))) | 3881 | !memcmp(data->hash256, ZERO_KEY, 16))) |
3882 | return 0x00; | 3882 | return 0x00; |
3883 | 3883 | ||
3884 | if (conn->out || test_bit(HCI_CONN_REMOTE_OOB, &conn->flags)) | 3884 | if (conn->out || test_bit(HCI_CONN_REMOTE_OOB, &conn->flags)) { |
3885 | /* When Secure Connections has been enabled, then just | ||
3886 | * return the present value stored with the OOB data. It | ||
3887 | * will contain the right information about which data | ||
3888 | * is present. | ||
3889 | */ | ||
3890 | if (bredr_sc_enabled(hdev)) | ||
3891 | return data->present; | ||
3892 | |||
3893 | /* When Secure Connections is not enabled or actually | ||
3894 | * not supported by the hardware, then check that if | ||
3895 | * P-192 data values are present. | ||
3896 | */ | ||
3897 | if (!memcmp(data->rand192, ZERO_KEY, 16) || | ||
3898 | !memcmp(data->hash192, ZERO_KEY, 16)) | ||
3899 | return 0x00; | ||
3900 | |||
3885 | return 0x01; | 3901 | return 0x01; |
3902 | } | ||
3886 | 3903 | ||
3887 | return 0x00; | 3904 | return 0x00; |
3888 | } | 3905 | } |