Loading system/bta/test/common/btm_api_mock.cc +0 −8 Original line number Diff line number Diff line Loading @@ -30,14 +30,6 @@ void bluetooth::manager::SetMockBtmInterface( btm_interface = mock_btm_interface; } bool BTM_GetSecurityFlagsByTransport(const RawAddress& bd_addr, uint8_t* p_sec_flags, tBT_TRANSPORT transport) { LOG_ASSERT(btm_interface) << "Mock btm interface not set!"; return btm_interface->GetSecurityFlagsByTransport(bd_addr, p_sec_flags, transport); } bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) { LOG_ASSERT(btm_interface) << "Mock btm interface not set!"; return btm_interface->IsLinkKeyKnown(bd_addr, transport); Loading system/stack/btm/btm_sec.cc +4 −39 Original line number Diff line number Diff line Loading @@ -349,27 +349,19 @@ bool BTM_SecDeleteRmtNameNotifyCallback(tBTM_RMT_NAME_CALLBACK* p_callback) { } bool BTM_IsEncrypted(const RawAddress& bd_addr, tBT_TRANSPORT transport) { uint8_t flags = 0; BTM_GetSecurityFlagsByTransport(bd_addr, &flags, transport); return (flags & BTM_SEC_FLAG_ENCRYPTED) != 0; return btm_sec_cb.IsDeviceEncrypted(bd_addr, transport); } bool BTM_IsLinkKeyAuthed(const RawAddress& bd_addr, tBT_TRANSPORT transport) { uint8_t flags = 0; BTM_GetSecurityFlagsByTransport(bd_addr, &flags, transport); return (flags & BTM_SEC_FLAG_LKEY_AUTHED) != 0; return btm_sec_cb.IsLinkKeyAuthenticated(bd_addr, transport); } bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) { uint8_t flags = 0; BTM_GetSecurityFlagsByTransport(bd_addr, &flags, transport); return (flags & BTM_SEC_FLAG_LKEY_KNOWN) != 0; return btm_sec_cb.IsLinkKeyKnown(bd_addr, transport); } bool BTM_IsAuthenticated(const RawAddress& bd_addr, tBT_TRANSPORT transport) { uint8_t flags = 0; BTM_GetSecurityFlagsByTransport(bd_addr, &flags, transport); return (flags & BTM_SEC_AUTHENTICATED) != 0; return btm_sec_cb.IsDeviceAuthenticated(bd_addr, transport); } bool BTM_CanReadDiscoverableCharacteristics(const RawAddress& bd_addr) { Loading @@ -384,33 +376,6 @@ bool BTM_CanReadDiscoverableCharacteristics(const RawAddress& bd_addr) { } } /******************************************************************************* * * Function BTM_GetSecurityFlagsByTransport * * Description Get security flags for the device on a particular transport * * Returns bool true or false is device found * ******************************************************************************/ bool BTM_GetSecurityFlagsByTransport(const RawAddress& bd_addr, uint8_t* p_sec_flags, tBT_TRANSPORT transport) { tBTM_SEC_DEV_REC* p_dev_rec; p_dev_rec = btm_find_dev(bd_addr); if (p_dev_rec != NULL) { if (transport == BT_TRANSPORT_BR_EDR) *p_sec_flags = (uint8_t)p_dev_rec->sec_rec.sec_flags; else *p_sec_flags = (uint8_t)(p_dev_rec->sec_rec.sec_flags >> 8); return (true); } LOG_ERROR("BTM_GetSecurityFlags false"); return (false); } /******************************************************************************* * * Function BTM_SetPinType Loading system/stack/btm/btm_sec.h +0 −13 Original line number Diff line number Diff line Loading @@ -79,19 +79,6 @@ bool BTM_SecAddRmtNameNotifyCallback(tBTM_RMT_NAME_CALLBACK* p_callback); ******************************************************************************/ bool BTM_SecDeleteRmtNameNotifyCallback(tBTM_RMT_NAME_CALLBACK* p_callback); /******************************************************************************* * * Function BTM_GetSecurityFlagsByTransport * * Description Get security flags for the device on a particular transport * * Returns bool true or false is device found * ******************************************************************************/ bool BTM_GetSecurityFlagsByTransport(const RawAddress& bd_addr, uint8_t* p_sec_flags, tBT_TRANSPORT transport); bool BTM_IsEncrypted(const RawAddress& bd_addr, tBT_TRANSPORT transport); bool BTM_IsLinkKeyAuthed(const RawAddress& bd_addr, tBT_TRANSPORT transport); bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport); Loading system/stack/btm/btm_sec_cb.cc +81 −1 Original line number Diff line number Diff line Loading @@ -15,14 +15,18 @@ * */ #define LOG_TAG "SEC_CB" #include "stack/btm/btm_sec_cb.h" #include <cstdint> #include "internal_include/stack_config.h" #include "os/log.h" #include "osi/include/allocator.h" #include "osi/include/fixed_queue.h" #include "osi/include/list.h" #include "stack/btm/btm_dev.h" #include "stack/btm/security_device_record.h" #include "types/raw_address.h" Loading Loading @@ -107,3 +111,79 @@ tBTM_SEC_SERV_REC* tBTM_SEC_CB::find_first_serv_rec(bool is_originator, } return (NULL); } tBTM_SEC_REC* tBTM_SEC_CB::getSecRec(const RawAddress bd_addr) { tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(bd_addr); if (p_dev_rec) { return &p_dev_rec->sec_rec; } return nullptr; } bool tBTM_SEC_CB::IsDeviceEncrypted(const RawAddress bd_addr, tBT_TRANSPORT transport) { tBTM_SEC_REC* sec_rec = getSecRec(bd_addr); if (sec_rec) { if (transport == BT_TRANSPORT_BR_EDR) { return sec_rec->is_device_encrypted(); } else if (transport == BT_TRANSPORT_LE) { return sec_rec->is_le_device_encrypted(); } LOG_ERROR("unknown transport:%s", bt_transport_text(transport).c_str()); return false; } LOG_ERROR("unknown device:%s", ADDRESS_TO_LOGGABLE_CSTR(bd_addr)); return false; } bool tBTM_SEC_CB::IsLinkKeyAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT transport) { tBTM_SEC_REC* sec_rec = getSecRec(bd_addr); if (sec_rec) { if (transport == BT_TRANSPORT_BR_EDR) { return sec_rec->is_link_key_authenticated(); } else if (transport == BT_TRANSPORT_LE) { return sec_rec->is_le_link_key_authenticated(); } LOG_ERROR("unknown transport:%s", bt_transport_text(transport).c_str()); return false; } LOG_ERROR("unknown device:%s", ADDRESS_TO_LOGGABLE_CSTR(bd_addr)); return false; } bool tBTM_SEC_CB::IsDeviceAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT transport) { tBTM_SEC_REC* sec_rec = getSecRec(bd_addr); if (sec_rec) { if (transport == BT_TRANSPORT_BR_EDR) { return sec_rec->is_device_authenticated(); } else if (transport == BT_TRANSPORT_LE) { return sec_rec->is_le_device_authenticated(); } LOG_ERROR("unknown transport:%s", bt_transport_text(transport).c_str()); return false; } LOG_ERROR("unknown device:%s", ADDRESS_TO_LOGGABLE_CSTR(bd_addr)); return false; } bool tBTM_SEC_CB::IsLinkKeyKnown(const RawAddress bd_addr, tBT_TRANSPORT transport) { tBTM_SEC_REC* sec_rec = getSecRec(bd_addr); if (sec_rec) { if (transport == BT_TRANSPORT_BR_EDR) { return sec_rec->is_link_key_known(); } else if (transport == BT_TRANSPORT_LE) { return sec_rec->is_le_link_key_known(); } LOG_ERROR("unknown transport:%s", bt_transport_text(transport).c_str()); return false; } LOG_ERROR("unknown device:%s", ADDRESS_TO_LOGGABLE_CSTR(bd_addr)); return false; } system/stack/btm/btm_sec_cb.h +8 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,14 @@ class tBTM_SEC_CB { void Free(); tBTM_SEC_SERV_REC* find_first_serv_rec(bool is_originator, uint16_t psm); bool IsDeviceEncrypted(const RawAddress bd_addr, tBT_TRANSPORT transport); bool IsDeviceAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT transport); bool IsLinkKeyAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT transport); bool IsLinkKeyKnown(const RawAddress bd_addr, tBT_TRANSPORT transport); tBTM_SEC_REC* getSecRec(const RawAddress bd_addr); }; extern tBTM_SEC_CB btm_sec_cb; Loading Loading
system/bta/test/common/btm_api_mock.cc +0 −8 Original line number Diff line number Diff line Loading @@ -30,14 +30,6 @@ void bluetooth::manager::SetMockBtmInterface( btm_interface = mock_btm_interface; } bool BTM_GetSecurityFlagsByTransport(const RawAddress& bd_addr, uint8_t* p_sec_flags, tBT_TRANSPORT transport) { LOG_ASSERT(btm_interface) << "Mock btm interface not set!"; return btm_interface->GetSecurityFlagsByTransport(bd_addr, p_sec_flags, transport); } bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) { LOG_ASSERT(btm_interface) << "Mock btm interface not set!"; return btm_interface->IsLinkKeyKnown(bd_addr, transport); Loading
system/stack/btm/btm_sec.cc +4 −39 Original line number Diff line number Diff line Loading @@ -349,27 +349,19 @@ bool BTM_SecDeleteRmtNameNotifyCallback(tBTM_RMT_NAME_CALLBACK* p_callback) { } bool BTM_IsEncrypted(const RawAddress& bd_addr, tBT_TRANSPORT transport) { uint8_t flags = 0; BTM_GetSecurityFlagsByTransport(bd_addr, &flags, transport); return (flags & BTM_SEC_FLAG_ENCRYPTED) != 0; return btm_sec_cb.IsDeviceEncrypted(bd_addr, transport); } bool BTM_IsLinkKeyAuthed(const RawAddress& bd_addr, tBT_TRANSPORT transport) { uint8_t flags = 0; BTM_GetSecurityFlagsByTransport(bd_addr, &flags, transport); return (flags & BTM_SEC_FLAG_LKEY_AUTHED) != 0; return btm_sec_cb.IsLinkKeyAuthenticated(bd_addr, transport); } bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) { uint8_t flags = 0; BTM_GetSecurityFlagsByTransport(bd_addr, &flags, transport); return (flags & BTM_SEC_FLAG_LKEY_KNOWN) != 0; return btm_sec_cb.IsLinkKeyKnown(bd_addr, transport); } bool BTM_IsAuthenticated(const RawAddress& bd_addr, tBT_TRANSPORT transport) { uint8_t flags = 0; BTM_GetSecurityFlagsByTransport(bd_addr, &flags, transport); return (flags & BTM_SEC_AUTHENTICATED) != 0; return btm_sec_cb.IsDeviceAuthenticated(bd_addr, transport); } bool BTM_CanReadDiscoverableCharacteristics(const RawAddress& bd_addr) { Loading @@ -384,33 +376,6 @@ bool BTM_CanReadDiscoverableCharacteristics(const RawAddress& bd_addr) { } } /******************************************************************************* * * Function BTM_GetSecurityFlagsByTransport * * Description Get security flags for the device on a particular transport * * Returns bool true or false is device found * ******************************************************************************/ bool BTM_GetSecurityFlagsByTransport(const RawAddress& bd_addr, uint8_t* p_sec_flags, tBT_TRANSPORT transport) { tBTM_SEC_DEV_REC* p_dev_rec; p_dev_rec = btm_find_dev(bd_addr); if (p_dev_rec != NULL) { if (transport == BT_TRANSPORT_BR_EDR) *p_sec_flags = (uint8_t)p_dev_rec->sec_rec.sec_flags; else *p_sec_flags = (uint8_t)(p_dev_rec->sec_rec.sec_flags >> 8); return (true); } LOG_ERROR("BTM_GetSecurityFlags false"); return (false); } /******************************************************************************* * * Function BTM_SetPinType Loading
system/stack/btm/btm_sec.h +0 −13 Original line number Diff line number Diff line Loading @@ -79,19 +79,6 @@ bool BTM_SecAddRmtNameNotifyCallback(tBTM_RMT_NAME_CALLBACK* p_callback); ******************************************************************************/ bool BTM_SecDeleteRmtNameNotifyCallback(tBTM_RMT_NAME_CALLBACK* p_callback); /******************************************************************************* * * Function BTM_GetSecurityFlagsByTransport * * Description Get security flags for the device on a particular transport * * Returns bool true or false is device found * ******************************************************************************/ bool BTM_GetSecurityFlagsByTransport(const RawAddress& bd_addr, uint8_t* p_sec_flags, tBT_TRANSPORT transport); bool BTM_IsEncrypted(const RawAddress& bd_addr, tBT_TRANSPORT transport); bool BTM_IsLinkKeyAuthed(const RawAddress& bd_addr, tBT_TRANSPORT transport); bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport); Loading
system/stack/btm/btm_sec_cb.cc +81 −1 Original line number Diff line number Diff line Loading @@ -15,14 +15,18 @@ * */ #define LOG_TAG "SEC_CB" #include "stack/btm/btm_sec_cb.h" #include <cstdint> #include "internal_include/stack_config.h" #include "os/log.h" #include "osi/include/allocator.h" #include "osi/include/fixed_queue.h" #include "osi/include/list.h" #include "stack/btm/btm_dev.h" #include "stack/btm/security_device_record.h" #include "types/raw_address.h" Loading Loading @@ -107,3 +111,79 @@ tBTM_SEC_SERV_REC* tBTM_SEC_CB::find_first_serv_rec(bool is_originator, } return (NULL); } tBTM_SEC_REC* tBTM_SEC_CB::getSecRec(const RawAddress bd_addr) { tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(bd_addr); if (p_dev_rec) { return &p_dev_rec->sec_rec; } return nullptr; } bool tBTM_SEC_CB::IsDeviceEncrypted(const RawAddress bd_addr, tBT_TRANSPORT transport) { tBTM_SEC_REC* sec_rec = getSecRec(bd_addr); if (sec_rec) { if (transport == BT_TRANSPORT_BR_EDR) { return sec_rec->is_device_encrypted(); } else if (transport == BT_TRANSPORT_LE) { return sec_rec->is_le_device_encrypted(); } LOG_ERROR("unknown transport:%s", bt_transport_text(transport).c_str()); return false; } LOG_ERROR("unknown device:%s", ADDRESS_TO_LOGGABLE_CSTR(bd_addr)); return false; } bool tBTM_SEC_CB::IsLinkKeyAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT transport) { tBTM_SEC_REC* sec_rec = getSecRec(bd_addr); if (sec_rec) { if (transport == BT_TRANSPORT_BR_EDR) { return sec_rec->is_link_key_authenticated(); } else if (transport == BT_TRANSPORT_LE) { return sec_rec->is_le_link_key_authenticated(); } LOG_ERROR("unknown transport:%s", bt_transport_text(transport).c_str()); return false; } LOG_ERROR("unknown device:%s", ADDRESS_TO_LOGGABLE_CSTR(bd_addr)); return false; } bool tBTM_SEC_CB::IsDeviceAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT transport) { tBTM_SEC_REC* sec_rec = getSecRec(bd_addr); if (sec_rec) { if (transport == BT_TRANSPORT_BR_EDR) { return sec_rec->is_device_authenticated(); } else if (transport == BT_TRANSPORT_LE) { return sec_rec->is_le_device_authenticated(); } LOG_ERROR("unknown transport:%s", bt_transport_text(transport).c_str()); return false; } LOG_ERROR("unknown device:%s", ADDRESS_TO_LOGGABLE_CSTR(bd_addr)); return false; } bool tBTM_SEC_CB::IsLinkKeyKnown(const RawAddress bd_addr, tBT_TRANSPORT transport) { tBTM_SEC_REC* sec_rec = getSecRec(bd_addr); if (sec_rec) { if (transport == BT_TRANSPORT_BR_EDR) { return sec_rec->is_link_key_known(); } else if (transport == BT_TRANSPORT_LE) { return sec_rec->is_le_link_key_known(); } LOG_ERROR("unknown transport:%s", bt_transport_text(transport).c_str()); return false; } LOG_ERROR("unknown device:%s", ADDRESS_TO_LOGGABLE_CSTR(bd_addr)); return false; }
system/stack/btm/btm_sec_cb.h +8 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,14 @@ class tBTM_SEC_CB { void Free(); tBTM_SEC_SERV_REC* find_first_serv_rec(bool is_originator, uint16_t psm); bool IsDeviceEncrypted(const RawAddress bd_addr, tBT_TRANSPORT transport); bool IsDeviceAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT transport); bool IsLinkKeyAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT transport); bool IsLinkKeyKnown(const RawAddress bd_addr, tBT_TRANSPORT transport); tBTM_SEC_REC* getSecRec(const RawAddress bd_addr); }; extern tBTM_SEC_CB btm_sec_cb; Loading