Commit 0cf73b9f authored by Johan Hedberg's avatar Johan Hedberg

Bluetooth: Enable LTK distribution to slave devices

So far we've only been requesting the LTK to be distributed to the
master (initiator) of pairing, which is usually enough since it's the
master that will establish future connections and initiate encryption.
However, in the case that both devices support switching to the opposing
role (which seems to be increasingly common) pairing will have to
performed again since the "new" master will not have all information.

As there is no real harm in it, this patch updates the code to always
try distributing the LTK also to the slave device, thereby enabling role
switches for future connections.
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Acked-by: default avatarVinicius Gomes <vcgomes@gmail.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 40456644
...@@ -216,7 +216,7 @@ static void build_pairing_cmd(struct l2cap_conn *conn, ...@@ -216,7 +216,7 @@ static void build_pairing_cmd(struct l2cap_conn *conn,
req->io_capability = conn->hcon->io_capability; req->io_capability = conn->hcon->io_capability;
req->oob_flag = SMP_OOB_NOT_PRESENT; req->oob_flag = SMP_OOB_NOT_PRESENT;
req->max_key_size = SMP_MAX_ENC_KEY_SIZE; req->max_key_size = SMP_MAX_ENC_KEY_SIZE;
req->init_key_dist = 0; req->init_key_dist = dist_keys;
req->resp_key_dist = dist_keys; req->resp_key_dist = dist_keys;
req->auth_req = (authreq & AUTH_REQ_MASK); req->auth_req = (authreq & AUTH_REQ_MASK);
return; return;
...@@ -225,7 +225,7 @@ static void build_pairing_cmd(struct l2cap_conn *conn, ...@@ -225,7 +225,7 @@ static void build_pairing_cmd(struct l2cap_conn *conn,
rsp->io_capability = conn->hcon->io_capability; rsp->io_capability = conn->hcon->io_capability;
rsp->oob_flag = SMP_OOB_NOT_PRESENT; rsp->oob_flag = SMP_OOB_NOT_PRESENT;
rsp->max_key_size = SMP_MAX_ENC_KEY_SIZE; rsp->max_key_size = SMP_MAX_ENC_KEY_SIZE;
rsp->init_key_dist = 0; rsp->init_key_dist = req->init_key_dist & dist_keys;
rsp->resp_key_dist = req->resp_key_dist & dist_keys; rsp->resp_key_dist = req->resp_key_dist & dist_keys;
rsp->auth_req = (authreq & AUTH_REQ_MASK); rsp->auth_req = (authreq & AUTH_REQ_MASK);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment