diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp
index b3d19f61a3..4c3e6f158f 100644
--- a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp
+++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp
@@ -168,6 +168,13 @@ ble_error_t CordioSecurityManager::set_private_address_timeout(
 ble_error_t CordioSecurityManager::set_ltk(
     connection_handle_t connection, const ltk_t ltk
 ) {
+    // FIXME: get access to the security level of a key
+    DmSecLtkRsp(
+        connection,
+        /* key found */ true,
+        /* sec level ??? */ DM_SEC_LEVEL_ENC_AUTH,
+        const_cast<uint8_t*>(ltk)
+    );
     return BLE_ERROR_NOT_IMPLEMENTED;
 }
 
@@ -241,6 +248,9 @@ ble_error_t CordioSecurityManager::send_pairing_request(
     KeyDistribution initiator_dist,
     KeyDistribution responder_dist
 ) {
+    //FIXME: understand if this is required
+    pSmpCfg->auth = authentication_requirements.value();
+
     DmSecPairReq(
         connection,
         oob_data_flag,
@@ -428,14 +438,29 @@ bool CordioSecurityManager::sm_handler(const wsfMsgHdr_t* msg) {
 
             switch(evt->type) {
                 case DM_KEY_LOCAL_LTK:
-                    // TODO: usefull ???
+                    // FIXME: forward local ltk
+#if 0
+                    printf("local ltk: ");
+                    for (size_t i = 0; i < sizeof(ltk_t); ++i) {
+                        printf("%02X ", evt->keyData.ltk.key[i]);
+                    }
+                    printf("\r\n");
+
+                    printf("local ediv: %04X\r\n", evt->keyData.ltk.ediv);
+                    printf("local rand: ");
+                    for (size_t i = 0; i < sizeof(rand_t); ++i) {
+                        printf("%02X ", evt->keyData.ltk.rand[i]);
+                    }
+                    printf("\r\n");
+                    memcpy(local_ltk, evt->keyData.ltk.key, sizeof(local_ltk));
+#endif
                     break;
 
                 case DM_KEY_PEER_LTK:
                     handler->on_keys_distributed_ltk(connection, evt->keyData.ltk.key);
                     handler->on_keys_distributed_ediv_rand(
                         connection,
-                        reinterpret_cast<uint8_t*>(evt->keyData.ltk.ediv),
+                        reinterpret_cast<uint8_t*>(&(evt->keyData.ltk.ediv)),
                         evt->keyData.ltk.rand
                     );
                     break;