summaryrefslogtreecommitdiffstats
path: root/hcid/security.c
diff options
context:
space:
mode:
Diffstat (limited to 'hcid/security.c')
-rw-r--r--hcid/security.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/hcid/security.c b/hcid/security.c
index 17cb2f56..9472930b 100644
--- a/hcid/security.c
+++ b/hcid/security.c
@@ -383,6 +383,14 @@ static void user_passkey_request(int dev, bdaddr_t *sba, void *ptr)
AUTH_TYPE_PASSKEY);
}
+static void user_passkey_notify(int dev, bdaddr_t *sba, void *ptr)
+{
+ evt_user_passkey_notify *req = ptr;
+
+ if (hcid_dbus_user_notify(sba, &req->bdaddr, btohl(req->passkey)) == 0)
+ hcid_dbus_new_auth_request(sba, &req->bdaddr, AUTH_TYPE_NOTIFY);
+}
+
static void remote_oob_data_request(int dev, bdaddr_t *sba, void *ptr)
{
hci_send_cmd(dev, OGF_LINK_CTL, OCF_REMOTE_OOB_DATA_NEG_REPLY, 6, ptr);
@@ -887,6 +895,10 @@ static gboolean io_security_event(GIOChannel *chan, GIOCondition cond, gpointer
user_passkey_request(dev, &di->bdaddr, ptr);
break;
+ case EVT_USER_PASSKEY_NOTIFY:
+ user_passkey_notify(dev, &di->bdaddr, ptr);
+ break;
+
case EVT_REMOTE_OOB_DATA_REQUEST:
remote_oob_data_request(dev, &di->bdaddr, ptr);
break;