|
@@ -3889,41 +3889,37 @@ static u8 bredr_oob_data_present(struct hci_conn *conn)
|
|
|
if (!data)
|
|
|
return 0x00;
|
|
|
|
|
|
- if (conn->out || test_bit(HCI_CONN_REMOTE_OOB, &conn->flags)) {
|
|
|
- if (bredr_sc_enabled(hdev)) {
|
|
|
- /* When Secure Connections is enabled, then just
|
|
|
- * return the present value stored with the OOB
|
|
|
- * data. The stored value contains the right present
|
|
|
- * information. However it can only be trusted when
|
|
|
- * not in Secure Connection Only mode.
|
|
|
- */
|
|
|
- if (!hci_dev_test_flag(hdev, HCI_SC_ONLY))
|
|
|
- return data->present;
|
|
|
-
|
|
|
- /* When Secure Connections Only mode is enabled, then
|
|
|
- * the P-256 values are required. If they are not
|
|
|
- * available, then do not declare that OOB data is
|
|
|
- * present.
|
|
|
- */
|
|
|
- if (!memcmp(data->rand256, ZERO_KEY, 16) ||
|
|
|
- !memcmp(data->hash256, ZERO_KEY, 16))
|
|
|
- return 0x00;
|
|
|
-
|
|
|
- return 0x02;
|
|
|
- }
|
|
|
+ if (bredr_sc_enabled(hdev)) {
|
|
|
+ /* When Secure Connections is enabled, then just
|
|
|
+ * return the present value stored with the OOB
|
|
|
+ * data. The stored value contains the right present
|
|
|
+ * information. However it can only be trusted when
|
|
|
+ * not in Secure Connection Only mode.
|
|
|
+ */
|
|
|
+ if (!hci_dev_test_flag(hdev, HCI_SC_ONLY))
|
|
|
+ return data->present;
|
|
|
|
|
|
- /* When Secure Connections is not enabled or actually
|
|
|
- * not supported by the hardware, then check that if
|
|
|
- * P-192 data values are present.
|
|
|
+ /* When Secure Connections Only mode is enabled, then
|
|
|
+ * the P-256 values are required. If they are not
|
|
|
+ * available, then do not declare that OOB data is
|
|
|
+ * present.
|
|
|
*/
|
|
|
- if (!memcmp(data->rand192, ZERO_KEY, 16) ||
|
|
|
- !memcmp(data->hash192, ZERO_KEY, 16))
|
|
|
+ if (!memcmp(data->rand256, ZERO_KEY, 16) ||
|
|
|
+ !memcmp(data->hash256, ZERO_KEY, 16))
|
|
|
return 0x00;
|
|
|
|
|
|
- return 0x01;
|
|
|
+ return 0x02;
|
|
|
}
|
|
|
|
|
|
- return 0x00;
|
|
|
+ /* When Secure Connections is not enabled or actually
|
|
|
+ * not supported by the hardware, then check that if
|
|
|
+ * P-192 data values are present.
|
|
|
+ */
|
|
|
+ if (!memcmp(data->rand192, ZERO_KEY, 16) ||
|
|
|
+ !memcmp(data->hash192, ZERO_KEY, 16))
|
|
|
+ return 0x00;
|
|
|
+
|
|
|
+ return 0x01;
|
|
|
}
|
|
|
|
|
|
static void hci_io_capa_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
|