Bluetooth: Fix IRK dstribution issue when Privacy is disabled 92/98992/4 accepted/tizen/mobile/20161123.000107 submit/tizen/20161122.062721
authorh.sandeep <h.sandeep@samsung.com>
Mon, 21 Nov 2016 10:23:26 +0000 (15:53 +0530)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Tue, 22 Nov 2016 05:44:40 +0000 (14:44 +0900)
The devices, like Android 6.x, which don't support privacy 1.2
couldn't make BLE connection to the device which doesn't distribute
IRK when pairing because they use use wrong address type.
For compatibility, it needs to distribute IRK even though Privacy
feature is disabled. So setting IRK interface is added and BlueZ
will set IRK if privacy feature is disabled. And when BLE pairing,
IRK will be always distributed.

Change-Id: I196b6e726bff3a396ba040201c760f74ddfba946
Signed-off-by: h.sandeep <h.sandeep@samsung.com>
net/bluetooth/smp.c

index 08ac8d9..57244f4 100644 (file)
 /* Maximum message length that can be passed to aes_cmac */
 #define CMAC_MSG_MAX   80
 
+#ifdef  CONFIG_TIZEN_WIP
+#define ZERO_KEY "\x00\x00\x00\x00\x00\x00\x00\x00" \
+                "\x00\x00\x00\x00\x00\x00\x00\x00"
+#endif
+
 enum {
        SMP_FLAG_TK_VALID,
        SMP_FLAG_CFM_PENDING,
@@ -604,8 +609,13 @@ static void build_pairing_cmd(struct l2cap_conn *conn,
        if (test_bit(HCI_RPA_RESOLVING, &hdev->dev_flags))
                remote_dist |= SMP_DIST_ID_KEY;
 
+#ifdef CONFIG_TIZEN_WIP
+       if (memcmp(hdev->irk, ZERO_KEY, 16))
+               local_dist |= SMP_DIST_ID_KEY;
+#else
        if (test_bit(HCI_PRIVACY, &hdev->dev_flags))
                local_dist |= SMP_DIST_ID_KEY;
+#endif
 
        if (test_bit(HCI_SC_ENABLED, &hdev->dev_flags) &&
            (authreq & SMP_AUTH_SC)) {