From 43dc617db6351e318634678d34eabe6dd7450e9f Mon Sep 17 00:00:00 2001 From: Tobias Schneider <tobias.schneider@tado.com> Date: Tue, 1 Oct 2019 14:24:35 +0200 Subject: [PATCH] hack(ble): Turn of encryption after closing a connection --- .../controller/sources/ble/lctr/lctr_sm_conn_slave.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c b/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c index 55cb9109..ce3334e7 100644 --- a/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c +++ b/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c @@ -217,6 +217,15 @@ void lctrConnStatelessEventHandler(lctrConnCtx_t *pCtx, uint8_t event) { case LCTR_CONN_TERMINATED: LL_TRACE_INFO2("lctrConnStatelessEventHandler: handle=%u, state=%u, event=TERMINATED", LCTR_GET_CONN_HANDLE(pCtx), pCtx->state); + + /* card10 HACK: + * After an encrypted connection is closed, the stack does not instruct the radio to turn off encryption again. + * There is no direct interface to this either. lctrCalcSessionKey() does transfer the flag though. */ + lctrDisableTxDataEnc(pCtx); + lctrDisableRxDataEnc(pCtx); + lctrCalcSessionKey(pCtx); + /*END card10 HACK */ + lctrNotifyHostDisconnectInd(pCtx); lctrFreeConnCtx(pCtx); break; -- GitLab