diff --git a/emulator/bthost.c b/emulator/bthost.c
index a15aab0..22bdca5 100644
--- a/emulator/bthost.c
+++ b/emulator/bthost.c
return;
conn->encr_mode = ev->encr_mode;
+
+ if (conn->smp_data)
+ smp_conn_encrypted(conn->smp_data, conn->encr_mode);
}
static void evt_io_cap_response(struct bthost *bthost, const void *data,
diff --git a/emulator/bthost.h b/emulator/bthost.h
index 45ea7b5..9d75e2c 100644
--- a/emulator/bthost.h
+++ b/emulator/bthost.h
void *smp_conn_add(void *smp_data, uint16_t handle, const uint8_t *ia,
const uint8_t *ra, bool conn_init);
void smp_conn_del(void *conn_data);
+void smp_conn_encrypted(void *conn_data, uint8_t encrypt);
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, uint8_t auth_req);
diff --git a/emulator/smp.c b/emulator/smp.c
index 8da7043..85901d4 100644
--- a/emulator/smp.c
+++ b/emulator/smp.c
struct smp *smp;
uint16_t handle;
bool out;
+ uint8_t local_key_dist;
+ uint8_t remote_key_dist;
uint8_t ia[6];
uint8_t ia_type;
uint8_t ra[6];
return 0;
}
+void smp_conn_encrypted(void *conn_data, uint8_t encrypt)
+{
+ struct smp_conn *conn = conn_data;
+
+ if (!encrypt)
+ return;
+
+ if (conn->out && conn->remote_key_dist)
+ return;
+
+ /* Distribute keys */
+}
+
void *smp_conn_add(void *smp_data, uint16_t handle, const uint8_t *ia,
const uint8_t *ra, bool conn_init)
{