From 6c50a037c49e4b0994af65ca1082d8a2de782c14 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 16 Sep 2014 14:30:44 +0300 Subject: [PATCH] emulator: Add support for specifying SMP authentication requirement --- emulator/bthost.c | 2 +- emulator/bthost.h | 2 +- emulator/smp.c | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/emulator/bthost.c b/emulator/bthost.c index 7f9af4313..1fae58079 100644 --- a/emulator/bthost.c +++ b/emulator/bthost.c @@ -2135,7 +2135,7 @@ void bthost_request_auth(struct bthost *bthost, uint16_t handle) cp.handle = cpu_to_le16(handle); send_command(bthost, BT_HCI_CMD_AUTH_REQUESTED, &cp, sizeof(cp)); } else { - smp_pair(conn->smp_data, bthost->io_capability); + smp_pair(conn->smp_data, bthost->io_capability, bthost->auth_req); } } diff --git a/emulator/bthost.h b/emulator/bthost.h index 49a8649f4..042f1cd07 100644 --- a/emulator/bthost.h +++ b/emulator/bthost.h @@ -128,4 +128,4 @@ void *smp_conn_add(void *smp_data, uint16_t handle, const uint8_t *ia, void smp_conn_del(void *conn_data); void smp_data(void *conn_data, const void *data, uint16_t len); int smp_get_ltk(void *smp_data, uint64_t rand, uint16_t ediv, uint8_t *ltk); -void smp_pair(void *conn_data, uint8_t io_cap); +void smp_pair(void *conn_data, uint8_t io_cap, uint8_t auth_req); diff --git a/emulator/smp.c b/emulator/smp.c index 5a6c558e5..eea960baa 100644 --- a/emulator/smp.c +++ b/emulator/smp.c @@ -152,17 +152,17 @@ static void pairing_rnd(struct smp_conn *conn, const void *data, uint16_t len) bthost_send_cid(bthost, conn->handle, SMP_CID, rsp, sizeof(rsp)); } -void smp_pair(void *conn_data, uint8_t io_cap) +void smp_pair(void *conn_data, uint8_t io_cap, uint8_t auth_req) { struct smp_conn *conn = conn_data; struct bthost *bthost = conn->smp->bthost; - const uint8_t smp_pair_req[] = { 0x01, /* Pairing Request */ - io_cap, /* IO Capability */ - 0x00, /* OOB Flag */ - 0x01, /* Bonding - no MITM */ - 0x10, /* Max key size */ - 0x00, /* Init. key dist. */ - 0x01, /* Rsp. key dist. */ + const uint8_t smp_pair_req[] = { 0x01, /* Pairing Request */ + io_cap, /* IO Capability */ + 0x00, /* OOB Flag */ + auth_req, /* Auth requirement */ + 0x10, /* Max key size */ + 0x00, /* Init. key dist. */ + 0x01, /* Rsp. key dist. */ }; memcpy(conn->preq, smp_pair_req, sizeof(smp_pair_req)); -- 2.47.3