diff options
30 files changed, 63 insertions, 75 deletions
diff --git a/system/bta/csis/csis_client.cc b/system/bta/csis/csis_client.cc index 1abf97356e..aaf20ddeca 100644 --- a/system/bta/csis/csis_client.cc +++ b/system/bta/csis/csis_client.cc @@ -271,7 +271,7 @@ public: auto device = FindDeviceByAddress(address); if (device == nullptr) { - if (!BTM_IsLinkKeyKnown(address, BT_TRANSPORT_LE)) { + if (!BTM_IsBonded(address, BT_TRANSPORT_LE)) { log::error("Connecting {} when not bonded", address); callbacks_->OnConnectionState(address, ConnectionState::DISCONNECTED); return; diff --git a/system/bta/csis/csis_client_test.cc b/system/bta/csis/csis_client_test.cc index a9a2480849..85f0fd64ea 100644 --- a/system/bta/csis/csis_client_test.cc +++ b/system/bta/csis/csis_client_test.cc @@ -369,7 +369,7 @@ protected: SetMockCsisLockCallback(&csis_lock_cb); callbacks.reset(new MockCsisCallbacks()); - ON_CALL(btm_interface, IsLinkKeyKnown(_, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(btm_interface, IsDeviceBonded(_, _)).WillByDefault(DoAll(Return(true))); ON_CALL(btm_interface, BTM_IsEncrypted(_, _)).WillByDefault(DoAll(Return(true))); @@ -724,7 +724,7 @@ TEST_F(CsisClientTest, test_connect_after_remove) { CsisClient::Get()->RemoveDevice(test_address); EXPECT_CALL(*callbacks, OnConnectionState(test_address, ConnectionState::DISCONNECTED)); - ON_CALL(btm_interface, IsLinkKeyKnown(_, _)).WillByDefault(Return(false)); + ON_CALL(btm_interface, IsDeviceBonded(_, _)).WillByDefault(Return(false)); CsisClient::Get()->Connect(test_address); Mock::VerifyAndClearExpectations(callbacks.get()); diff --git a/system/bta/has/has_client.cc b/system/bta/has/has_client.cc index 15bdfc5bfc..cb99045b41 100644 --- a/system/bta/has/has_client.cc +++ b/system/bta/has/has_client.cc @@ -164,7 +164,7 @@ public: void Connect(const RawAddress& address) override { log::info("{}", address); - if (!BTM_IsLinkKeyKnown(address, BT_TRANSPORT_LE)) { + if (!BTM_IsBonded(address, BT_TRANSPORT_LE)) { log::error("Connecting {} when not bonded", address); callbacks_->OnConnectionState(ConnectionState::DISCONNECTED, address); return; diff --git a/system/bta/has/has_client_test.cc b/system/bta/has/has_client_test.cc index 527ab2ef93..9b02f00027 100644 --- a/system/bta/has/has_client_test.cc +++ b/system/bta/has/has_client_test.cc @@ -633,7 +633,7 @@ protected: encryption_result = true; - ON_CALL(btm_interface, IsLinkKeyKnown(_, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(btm_interface, IsDeviceBonded(_, _)).WillByDefault(DoAll(Return(true))); ON_CALL(btm_interface, SetEncryption(_, _, _, _, _)) .WillByDefault(Invoke([this](const RawAddress& bd_addr, tBT_TRANSPORT /*transport*/, @@ -861,7 +861,7 @@ protected: ON_CALL(btm_interface, BTM_IsEncrypted(address, _)) .WillByDefault(DoAll(Return(encryption_result))); - ON_CALL(btm_interface, IsLinkKeyKnown(address, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(btm_interface, IsDeviceBonded(address, _)).WillByDefault(DoAll(Return(true))); } void InjectNotifyReadPresetResponse(uint16_t conn_id, RawAddress const& address, uint16_t handle, @@ -1189,7 +1189,7 @@ TEST_F(HasClientTest, test_connect_after_remove) { EXPECT_CALL(*callbacks, OnConnectionState(ConnectionState::DISCONNECTED, test_address)); // Device has no Link Key - ON_CALL(btm_interface, IsLinkKeyKnown(test_address, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(btm_interface, IsDeviceBonded(test_address, _)).WillByDefault(DoAll(Return(true))); HasClient::Get()->Connect(test_address); Mock::VerifyAndClearExpectations(&callbacks); } diff --git a/system/bta/hearing_aid/hearing_aid.cc b/system/bta/hearing_aid/hearing_aid.cc index 58a4313638..d19ac8070c 100644 --- a/system/bta/hearing_aid/hearing_aid.cc +++ b/system/bta/hearing_aid/hearing_aid.cc @@ -572,7 +572,7 @@ public: return; } - if (BTM_IsLinkKeyKnown(address, BT_TRANSPORT_LE)) { + if (BTM_IsBonded(address, BT_TRANSPORT_LE)) { /* if bonded and link not encrypted */ BTM_SetEncryption(address, BT_TRANSPORT_LE, encryption_callback, nullptr, BTM_BLE_SEC_ENCRYPT); diff --git a/system/bta/hh/bta_hh_le.cc b/system/bta/hh/bta_hh_le.cc index 5a5c261f98..031462aedc 100644 --- a/system/bta/hh/bta_hh_le.cc +++ b/system/bta/hh/bta_hh_le.cc @@ -280,7 +280,7 @@ void bta_hh_le_open_conn(tBTA_HH_DEV_CB* p_cb, bool direct) { bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = p_cb->index; // Update index map if (!direct) { // don't reconnect unbonded device - if (!BTM_IsLinkKeyKnown(p_cb->link_spec.addrt.bda, BT_TRANSPORT_LE)) { + if (!BTM_IsBonded(p_cb->link_spec.addrt.bda, BT_TRANSPORT_LE)) { return; } log::debug("Add {} to background connection list", p_cb->link_spec); @@ -1108,7 +1108,7 @@ void bta_hh_start_security(tBTA_HH_DEV_CB* p_cb, const tBTA_HH_DATA* /* p_buf */ log::debug("addr:{} already encrypted", p_cb->link_spec.addrt.bda); p_cb->status = BTA_HH_OK; bta_hh_sm_execute(p_cb, BTA_HH_ENC_CMPL_EVT, NULL); - } else if (BTM_IsLinkKeyKnown(p_cb->link_spec.addrt.bda, BT_TRANSPORT_LE)) { + } else if (BTM_IsBonded(p_cb->link_spec.addrt.bda, BT_TRANSPORT_LE)) { /* if bonded and link not encrypted */ log::debug("addr:{} bonded, not encrypted", p_cb->link_spec.addrt.bda); p_cb->status = BTA_HH_ERR_AUTH_FAILED; diff --git a/system/bta/le_audio/client.cc b/system/bta/le_audio/client.cc index 18f5f501da..16114df846 100644 --- a/system/bta/le_audio/client.cc +++ b/system/bta/le_audio/client.cc @@ -1882,7 +1882,7 @@ public: LeAudioDevice* leAudioDevice = leAudioDevices_.FindByAddress(address); if (!leAudioDevice) { - if (!BTM_IsLinkKeyKnown(address, BT_TRANSPORT_LE)) { + if (!BTM_IsBonded(address, BT_TRANSPORT_LE)) { log::error("Connecting {} when not bonded", address); callbacks_->OnConnectionState(ConnectionState::DISCONNECTED, address); return; diff --git a/system/bta/le_audio/le_audio_client_test.cc b/system/bta/le_audio/le_audio_client_test.cc index 2e518e4ae5..42c7f9d634 100644 --- a/system/bta/le_audio/le_audio_client_test.cc +++ b/system/bta/le_audio/le_audio_client_test.cc @@ -1535,7 +1535,7 @@ protected: mock_iso_manager_ = MockIsoManager::GetInstance(); ON_CALL(*mock_iso_manager_, RegisterCigCallbacks(_)).WillByDefault(SaveArg<0>(&cig_callbacks_)); - ON_CALL(mock_btm_interface_, IsLinkKeyKnown(_, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(mock_btm_interface_, IsDeviceBonded(_, _)).WillByDefault(DoAll(Return(true))); // Required since we call OnAudioDataReady() const auto codec_location = ::bluetooth::le_audio::types::CodecLocation::HOST; @@ -1779,7 +1779,7 @@ protected: ON_CALL(mock_btm_interface_, BTM_IsEncrypted(address, _)) .WillByDefault(DoAll(Return(isEncrypted))); - ON_CALL(mock_btm_interface_, IsLinkKeyKnown(address, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(mock_btm_interface_, IsDeviceBonded(address, _)).WillByDefault(DoAll(Return(true))); EXPECT_CALL(mock_gatt_interface_, Open(gatt_if, address, BTM_BLE_DIRECT_CONNECTION, _)) .Times(1); @@ -5797,7 +5797,7 @@ TEST_F(UnicastTest, ConnectAfterRemove) { LeAudioClient::Get(), test_address0)); SyncOnMainLoop(); - ON_CALL(mock_btm_interface_, IsLinkKeyKnown(_, _)).WillByDefault(DoAll(Return(false))); + ON_CALL(mock_btm_interface_, IsDeviceBonded(_, _)).WillByDefault(DoAll(Return(false))); do_in_main_thread(base::BindOnce(&LeAudioClient::Connect, base::Unretained(LeAudioClient::Get()), test_address0)); diff --git a/system/bta/test/common/btm_api_mock.cc b/system/bta/test/common/btm_api_mock.cc index 87907f80f8..7f3f228dfe 100644 --- a/system/bta/test/common/btm_api_mock.cc +++ b/system/bta/test/common/btm_api_mock.cc @@ -61,9 +61,9 @@ void bluetooth::manager::SetMockBtmInterface(MockBtmInterface* mock_btm_interfac }; } -bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) { +bool BTM_IsBonded(const RawAddress& bd_addr, tBT_TRANSPORT transport) { log::assert_that(btm_interface != nullptr, "Mock btm interface not set!"); - return btm_interface->IsLinkKeyKnown(bd_addr, transport); + return btm_interface->IsDeviceBonded(bd_addr, transport); } bool BTM_IsEncrypted(const RawAddress& bd_addr, tBT_TRANSPORT transport) { diff --git a/system/bta/test/common/btm_api_mock.h b/system/bta/test/common/btm_api_mock.h index 6f746a66ac..a293985a80 100644 --- a/system/bta/test/common/btm_api_mock.h +++ b/system/bta/test/common/btm_api_mock.h @@ -35,7 +35,7 @@ class BtmInterface { public: virtual bool GetSecurityFlagsByTransport(const RawAddress& bd_addr, uint8_t* p_sec_flags, tBT_TRANSPORT transport) = 0; - virtual bool IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) = 0; + virtual bool IsDeviceBonded(const RawAddress& bd_addr, tBT_TRANSPORT transport) = 0; virtual bool BTM_IsEncrypted(const RawAddress& bd_addr, tBT_TRANSPORT transport) = 0; virtual tBTM_STATUS SetEncryption(const RawAddress& bd_addr, tBT_TRANSPORT transport, tBTM_SEC_CALLBACK* p_callback, void* p_ref_data, @@ -66,7 +66,7 @@ public: MOCK_METHOD((bool), GetSecurityFlagsByTransport, (const RawAddress& bd_addr, uint8_t* p_sec_flags, tBT_TRANSPORT transport), (override)); - MOCK_METHOD((bool), IsLinkKeyKnown, (const RawAddress& bd_addr, tBT_TRANSPORT transport), + MOCK_METHOD((bool), IsDeviceBonded, (const RawAddress& bd_addr, tBT_TRANSPORT transport), (override)); MOCK_METHOD((bool), BTM_IsEncrypted, (const RawAddress& bd_addr, tBT_TRANSPORT transport), (override)); diff --git a/system/bta/vc/vc.cc b/system/bta/vc/vc.cc index 0313b3962c..df8e6a00e7 100644 --- a/system/bta/vc/vc.cc +++ b/system/bta/vc/vc.cc @@ -144,7 +144,7 @@ public: auto device = volume_control_devices_.FindByAddress(address); if (!device) { - if (!BTM_IsLinkKeyKnown(address, BT_TRANSPORT_LE)) { + if (!BTM_IsBonded(address, BT_TRANSPORT_LE)) { bluetooth::log::error("Connecting {} when not bonded", address); callbacks_->OnConnectionState(ConnectionState::DISCONNECTED, address); return; diff --git a/system/bta/vc/vc_test.cc b/system/bta/vc/vc_test.cc index 4961a32399..c52dc9f2a6 100644 --- a/system/bta/vc/vc_test.cc +++ b/system/bta/vc/vc_test.cc @@ -444,7 +444,7 @@ protected: gatt::SetMockBtaGattQueue(&gatt_queue); reset_mock_function_count_map(); - ON_CALL(btm_interface, IsLinkKeyKnown(_, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(btm_interface, IsDeviceBonded(_, _)).WillByDefault(DoAll(Return(true))); // default action for GetCharacteristic function call ON_CALL(gatt_interface, GetCharacteristic(_, _)) @@ -695,7 +695,7 @@ protected: void SetEncryptionResult(const RawAddress& address, bool success) { ON_CALL(btm_interface, BTM_IsEncrypted(address, _)).WillByDefault(DoAll(Return(false))); - ON_CALL(btm_interface, IsLinkKeyKnown(address, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(btm_interface, IsDeviceBonded(address, _)).WillByDefault(DoAll(Return(true))); ON_CALL(btm_interface, SetEncryption(address, _, _, _, BTM_BLE_SEC_ENCRYPT)) .WillByDefault( Invoke([&success, this](const RawAddress& bd_addr, tBT_TRANSPORT transport, @@ -820,7 +820,7 @@ TEST_F(VolumeControlTest, test_connect_after_remove) { Mock::VerifyAndClearExpectations(&callbacks); EXPECT_CALL(callbacks, OnConnectionState(ConnectionState::DISCONNECTED, test_address)).Times(1); - ON_CALL(btm_interface, IsLinkKeyKnown(_, _)).WillByDefault(DoAll(Return(false))); + ON_CALL(btm_interface, IsDeviceBonded(_, _)).WillByDefault(DoAll(Return(false))); VolumeControl::Get()->Connect(test_address); Mock::VerifyAndClearExpectations(&callbacks); @@ -1033,7 +1033,7 @@ TEST_F(VolumeControlTest, test_service_discovery_completed_before_encryption) { TestConnect(test_address); ON_CALL(btm_interface, BTM_IsEncrypted(test_address, _)).WillByDefault(DoAll(Return(false))); - ON_CALL(btm_interface, IsLinkKeyKnown(test_address, _)).WillByDefault(DoAll(Return(true))); + ON_CALL(btm_interface, IsDeviceBonded(test_address, _)).WillByDefault(DoAll(Return(true))); ON_CALL(btm_interface, SetEncryption(test_address, _, _, _, _)) .WillByDefault(Return(tBTM_STATUS::BTM_SUCCESS)); diff --git a/system/stack/btm/btm_ble_sec.cc b/system/stack/btm/btm_ble_sec.cc index 29d48e6033..8ac6f25bac 100644 --- a/system/stack/btm/btm_ble_sec.cc +++ b/system/stack/btm/btm_ble_sec.cc @@ -2110,8 +2110,7 @@ std::optional<Octet16> BTM_BleGetPeerIRK(const RawAddress address) { } bool BTM_BleIsLinkKeyKnown(const RawAddress address) { - tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(address); - return p_dev_rec != nullptr && p_dev_rec->sec_rec.is_le_link_key_known(); + return btm_sec_cb.IsDeviceBonded(address, BT_TRANSPORT_LE); } std::optional<tBLE_BD_ADDR> BTM_BleGetIdentityAddress(const RawAddress address) { diff --git a/system/stack/btm/btm_sec.cc b/system/stack/btm/btm_sec.cc index e181349129..3f82fc5ac1 100644 --- a/system/stack/btm/btm_sec.cc +++ b/system/stack/btm/btm_sec.cc @@ -407,8 +407,8 @@ bool BTM_IsLinkKeyAuthed(const RawAddress& bd_addr, tBT_TRANSPORT transport) { return btm_sec_cb.IsLinkKeyAuthenticated(bd_addr, transport); } -bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) { - return btm_sec_cb.IsLinkKeyKnown(bd_addr, transport); +bool BTM_IsBonded(const RawAddress& bd_addr, tBT_TRANSPORT transport) { + return btm_sec_cb.IsDeviceBonded(bd_addr, transport); } bool BTM_IsAuthenticated(const RawAddress& bd_addr, tBT_TRANSPORT transport) { diff --git a/system/stack/btm/btm_sec.h b/system/stack/btm/btm_sec.h index ade49b883e..05bafc40d5 100644 --- a/system/stack/btm/btm_sec.h +++ b/system/stack/btm/btm_sec.h @@ -57,7 +57,7 @@ bool BTM_SecRegister(const tBTM_APPL_INFO* p_cb_info); 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); +bool BTM_IsBonded(const RawAddress& bd_addr, tBT_TRANSPORT transport = BT_TRANSPORT_AUTO); bool BTM_IsAuthenticated(const RawAddress& bd_addr, tBT_TRANSPORT transport); bool BTM_CanReadDiscoverableCharacteristics(const RawAddress& bd_addr); void BTM_update_version_info(const RawAddress& bd_addr, diff --git a/system/stack/btm/btm_sec_cb.cc b/system/stack/btm/btm_sec_cb.cc index c40d8fe416..3f253059c2 100644 --- a/system/stack/btm/btm_sec_cb.cc +++ b/system/stack/btm/btm_sec_cb.cc @@ -117,7 +117,7 @@ tBTM_SEC_SERV_REC* tBTM_SEC_CB::find_first_serv_rec(bool is_originator, uint16_t 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) { + if (p_dev_rec != nullptr) { return &p_dev_rec->sec_rec; } return nullptr; @@ -171,33 +171,25 @@ bool tBTM_SEC_CB::IsDeviceAuthenticated(const RawAddress bd_addr, tBT_TRANSPORT return false; } -bool tBTM_SEC_CB::IsLinkKeyKnown(const RawAddress bd_addr, tBT_TRANSPORT transport) { +bool tBTM_SEC_CB::IsDeviceBonded(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:{}", bt_transport_text(transport)); + if (sec_rec == nullptr) { return false; } - log::error("unknown device:{}", bd_addr); - return false; -} + bool bonded = false; -bool tBTM_SEC_CB::IsDeviceBonded(const RawAddress bd_addr) { - tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(bd_addr); - bool is_bonded = false; + // Check BR/EDR bond status if requested transport is BT_TRANSPORT_BR_EDR or BT_TRANSPORT_AUTO + if (transport != BT_TRANSPORT_LE) { + bonded = sec_rec->is_link_key_known(); + } - if (p_dev_rec && - ((p_dev_rec->sec_rec.ble_keys.key_type && p_dev_rec->sec_rec.is_le_link_key_known()) || - p_dev_rec->sec_rec.is_link_key_known())) { - is_bonded = true; + // Check LE bond status if requested transport is BT_TRANSPORT_LE or BT_TRANSPORT_AUTO + if (transport != BT_TRANSPORT_BR_EDR) { + bonded |= (sec_rec->ble_keys.key_type != BTM_LE_KEY_NONE && sec_rec->is_le_link_key_known()); } - log::debug("Device record bonded check peer:{} is_bonded:{}", bd_addr, is_bonded); - return is_bonded; + + return bonded; } #define BTM_NO_AVAIL_SEC_SERVICES ((uint16_t)0xffff) diff --git a/system/stack/btm/btm_sec_cb.h b/system/stack/btm/btm_sec_cb.h index b851aa32cb..1e3ae3b258 100644 --- a/system/stack/btm/btm_sec_cb.h +++ b/system/stack/btm/btm_sec_cb.h @@ -84,13 +84,11 @@ public: tBTM_SEC_SERV_REC* find_first_serv_rec(bool is_originator, uint16_t psm); - bool IsDeviceBonded(const RawAddress bd_addr); + bool IsDeviceBonded(const RawAddress bd_addr, tBT_TRANSPORT transport = BT_TRANSPORT_AUTO); 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); bool AddService(bool is_originator, const char* p_name, uint8_t service_id, uint16_t sec_level, diff --git a/system/stack/btm/btm_security_client_interface.cc b/system/stack/btm/btm_security_client_interface.cc index 3adda4d0f8..ae3161b6e0 100644 --- a/system/stack/btm/btm_security_client_interface.cc +++ b/system/stack/btm/btm_security_client_interface.cc @@ -55,7 +55,7 @@ static SecurityClientInterface security = { .BTM_SetEncryption = BTM_SetEncryption, .BTM_IsEncrypted = BTM_IsEncrypted, .BTM_SecIsLeSecurityPending = BTM_SecIsLeSecurityPending, - .BTM_IsLinkKeyKnown = BTM_IsLinkKeyKnown, + .BTM_IsBonded = BTM_IsBonded, .BTM_SetSecurityLevel = BTM_SetSecurityLevel, .BTM_SecClrService = BTM_SecClrService, diff --git a/system/stack/btm/security_device_record.h b/system/stack/btm/security_device_record.h index 61a6d182a6..c7074ec253 100644 --- a/system/stack/btm/security_device_record.h +++ b/system/stack/btm/security_device_record.h @@ -221,12 +221,11 @@ struct tBTM_SEC_REC { LinkKey link_key; /* Device link key */ uint8_t link_key_type; /* Type of key used in pairing */ uint8_t enc_key_size; /* current link encryption key size */ + tBTM_BOND_TYPE bond_type; /* Whether the BR/EDR pairing was persistent or temporary */ // LE Link Key Info tBTM_SEC_BLE_KEYS ble_keys; - tBTM_BOND_TYPE bond_type; /* bond type */ - public: bool is_device_authenticated() const { return sec_flags & BTM_SEC_AUTHENTICATED; } void set_device_authenticated() { sec_flags |= BTM_SEC_AUTHENTICATED; } diff --git a/system/stack/eatt/eatt_impl.h b/system/stack/eatt/eatt_impl.h index c746695cb7..0d27726af4 100644 --- a/system/stack/eatt/eatt_impl.h +++ b/system/stack/eatt/eatt_impl.h @@ -308,7 +308,7 @@ struct eatt_impl { std::vector<uint16_t> empty; tL2CAP_LE_RESULT_CODE result = tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION; - if (BTM_IsLinkKeyKnown(bda, BT_TRANSPORT_LE)) { + if (BTM_IsBonded(bda, BT_TRANSPORT_LE)) { result = tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP; } log::error("ACL to device {} is unencrypted.", bda); diff --git a/system/stack/gatt/gatt_auth.cc b/system/stack/gatt/gatt_auth.cc index 4323c8ed13..7c4b935389 100644 --- a/system/stack/gatt/gatt_auth.cc +++ b/system/stack/gatt/gatt_auth.cc @@ -299,7 +299,7 @@ static tGATT_SEC_ACTION gatt_determine_sec_act(tGATT_CLCB* p_clcb) { return GATT_SEC_ENC_PENDING; } - is_link_key_known = BTM_IsLinkKeyKnown(p_tcb->peer_bda, p_clcb->p_tcb->transport); + is_link_key_known = BTM_IsBonded(p_tcb->peer_bda, p_clcb->p_tcb->transport); is_link_encrypted = BTM_IsEncrypted(p_tcb->peer_bda, p_clcb->p_tcb->transport); is_key_mitm = BTM_IsLinkKeyAuthed(p_tcb->peer_bda, p_clcb->p_tcb->transport); @@ -363,7 +363,7 @@ tGATT_STATUS gatt_get_link_encrypt_status(tGATT_TCB& tcb) { tGATT_STATUS encrypt_status = GATT_NOT_ENCRYPTED; bool encrypted = BTM_IsEncrypted(tcb.peer_bda, tcb.transport); - bool link_key_known = BTM_IsLinkKeyKnown(tcb.peer_bda, tcb.transport); + bool link_key_known = BTM_IsBonded(tcb.peer_bda, tcb.transport); bool link_key_authed = BTM_IsLinkKeyAuthed(tcb.peer_bda, tcb.transport); if (encrypted && link_key_known) { diff --git a/system/stack/gatt/gatt_utils.cc b/system/stack/gatt/gatt_utils.cc index b0d18f892e..f401be9285 100644 --- a/system/stack/gatt/gatt_utils.cc +++ b/system/stack/gatt/gatt_utils.cc @@ -867,7 +867,7 @@ std::list<tGATT_SRV_LIST_ELEM>::iterator gatt_sr_find_i_rcb_by_handle(uint16_t h void gatt_sr_get_sec_info(const RawAddress& rem_bda, tBT_TRANSPORT transport, tGATT_SEC_FLAG* p_sec_flag, uint8_t* p_key_size) { tGATT_SEC_FLAG flags = {}; - flags.is_link_key_known = BTM_IsLinkKeyKnown(rem_bda, transport); + flags.is_link_key_known = BTM_IsBonded(rem_bda, transport); flags.is_link_key_authed = BTM_IsLinkKeyAuthed(rem_bda, transport); flags.is_encrypted = BTM_IsEncrypted(rem_bda, transport); flags.can_read_discoverable_characteristics = BTM_CanReadDiscoverableCharacteristics(rem_bda); diff --git a/system/stack/include/security_client_callbacks.h b/system/stack/include/security_client_callbacks.h index d9d19f33f6..f8a29e7bc3 100644 --- a/system/stack/include/security_client_callbacks.h +++ b/system/stack/include/security_client_callbacks.h @@ -111,7 +111,7 @@ typedef struct { tBTM_BLE_SEC_ACT sec_act); bool (*BTM_IsEncrypted)(const RawAddress& bd_addr, tBT_TRANSPORT transport); bool (*BTM_SecIsLeSecurityPending)(const RawAddress& bd_addr); - bool (*BTM_IsLinkKeyKnown)(const RawAddress& bd_addr, tBT_TRANSPORT transport); + bool (*BTM_IsBonded)(const RawAddress& bd_addr, tBT_TRANSPORT transport); // Secure service management bool (*BTM_SetSecurityLevel)(bool is_originator, const char* p_name, uint8_t service_id, diff --git a/system/stack/test/common/mock_btm_api_layer.cc b/system/stack/test/common/mock_btm_api_layer.cc index 83d969dc72..763309abea 100644 --- a/system/stack/test/common/mock_btm_api_layer.cc +++ b/system/stack/test/common/mock_btm_api_layer.cc @@ -37,8 +37,8 @@ bool BTM_IsEncrypted(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport) return btm_api_interface->IsEncrypted(remote_bd_addr, transport); } -bool BTM_IsLinkKeyKnown(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport) { - return btm_api_interface->IsLinkKeyKnown(remote_bd_addr, transport); +bool BTM_IsBonded(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport) { + return btm_api_interface->IsDeviceBonded(remote_bd_addr, transport); } uint8_t btm_ble_read_sec_key_size(const RawAddress& bd_addr) { diff --git a/system/stack/test/common/mock_btm_api_layer.h b/system/stack/test/common/mock_btm_api_layer.h index b9a748d36c..e852053661 100644 --- a/system/stack/test/common/mock_btm_api_layer.h +++ b/system/stack/test/common/mock_btm_api_layer.h @@ -31,7 +31,7 @@ public: uint32_t mx_chan_id) = 0; virtual uint8_t acl_link_role(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport) = 0; virtual bool IsEncrypted(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport) = 0; - virtual bool IsLinkKeyKnown(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport) = 0; + virtual bool IsDeviceBonded(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport) = 0; virtual uint8_t ReadSecKeySize(const RawAddress& remote_bd_addr) = 0; virtual ~BtmApiInterface() = default; }; @@ -43,7 +43,7 @@ public: uint16_t psm, uint32_t mx_proto_id, uint32_t mx_chan_id)); MOCK_METHOD2(acl_link_role, uint8_t(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport)); MOCK_METHOD2(IsEncrypted, bool(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport)); - MOCK_METHOD2(IsLinkKeyKnown, bool(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport)); + MOCK_METHOD2(IsDeviceBonded, bool(const RawAddress& remote_bd_addr, tBT_TRANSPORT transport)); MOCK_METHOD1(ReadSecKeySize, uint8_t(const RawAddress& remote_bd_addr)); }; diff --git a/system/stack/test/eatt/eatt_test.cc b/system/stack/test/eatt/eatt_test.cc index 31ceba5060..130893a0a5 100644 --- a/system/stack/test/eatt/eatt_test.cc +++ b/system/stack/test/eatt/eatt_test.cc @@ -336,7 +336,7 @@ TEST_F(EattTest, IncomingEattConnectionByKnownDeviceEncryptionOff) { ON_CALL(btm_api_interface_, IsEncrypted) .WillByDefault( [](const RawAddress& /*addr*/, tBT_TRANSPORT /*transport*/) { return false; }); - ON_CALL(btm_api_interface_, IsLinkKeyKnown) + ON_CALL(btm_api_interface_, IsDeviceBonded) .WillByDefault( [](const RawAddress& /*addr*/, tBT_TRANSPORT /*transport*/) { return true; }); ON_CALL(gatt_interface_, ClientReadSupportedFeatures) @@ -370,7 +370,7 @@ TEST_F(EattTest, IncomingEattConnectionByUnknownDeviceEncryptionOff) { ON_CALL(btm_api_interface_, IsEncrypted) .WillByDefault( [](const RawAddress& /*addr*/, tBT_TRANSPORT /*transport*/) { return false; }); - ON_CALL(btm_api_interface_, IsLinkKeyKnown) + ON_CALL(btm_api_interface_, IsDeviceBonded) .WillByDefault( [](const RawAddress& /*addr*/, tBT_TRANSPORT /*transport*/) { return false; }); EXPECT_CALL(mock_stack_l2cap_interface_, diff --git a/system/test/mock/mock_stack_btm_interface.cc b/system/test/mock/mock_stack_btm_interface.cc index 44c542081d..20a8f7a586 100644 --- a/system/test/mock/mock_stack_btm_interface.cc +++ b/system/test/mock/mock_stack_btm_interface.cc @@ -140,7 +140,7 @@ struct btm_client_interface_t default_btm_client_interface = { .BTM_SecIsLeSecurityPending = [](const RawAddress& /* bd_addr */) -> bool { return false; }, - .BTM_IsLinkKeyKnown = [](const RawAddress& /* bd_addr */, + .BTM_IsBonded = [](const RawAddress& /* bd_addr */, tBT_TRANSPORT /* transport */) -> bool { return false; }, .BTM_SetSecurityLevel = [](bool /* is_originator */, const char* /*p_name */, uint8_t /* service_id */, uint16_t /* sec_level */, diff --git a/system/test/mock/mock_stack_btm_sec.cc b/system/test/mock/mock_stack_btm_sec.cc index ca943498fe..532404c409 100644 --- a/system/test/mock/mock_stack_btm_sec.cc +++ b/system/test/mock/mock_stack_btm_sec.cc @@ -46,7 +46,7 @@ struct BTM_ConfirmReqReply BTM_ConfirmReqReply; struct BTM_IsAuthenticated BTM_IsAuthenticated; struct BTM_IsEncrypted BTM_IsEncrypted; struct BTM_IsLinkKeyAuthed BTM_IsLinkKeyAuthed; -struct BTM_IsLinkKeyKnown BTM_IsLinkKeyKnown; +struct BTM_IsBonded BTM_IsBonded; struct BTM_PINCodeReply BTM_PINCodeReply; struct BTM_PasskeyReqReply BTM_PasskeyReqReply; struct BTM_PeerSupportsSecureConnections BTM_PeerSupportsSecureConnections; @@ -111,7 +111,7 @@ bool BTM_CanReadDiscoverableCharacteristics::return_value = false; bool BTM_IsAuthenticated::return_value = false; bool BTM_IsEncrypted::return_value = false; bool BTM_IsLinkKeyAuthed::return_value = false; -bool BTM_IsLinkKeyKnown::return_value = false; +bool BTM_IsBonded::return_value = false; bool BTM_PeerSupportsSecureConnections::return_value = false; tBTM_STATUS BTM_SecBond::return_value = tBTM_STATUS::BTM_SUCCESS; tBTM_STATUS BTM_SecBondCancel::return_value = tBTM_STATUS::BTM_SUCCESS; @@ -155,9 +155,9 @@ bool BTM_IsLinkKeyAuthed(const RawAddress& bd_addr, tBT_TRANSPORT transport) { inc_func_call_count(__func__); return test::mock::stack_btm_sec::BTM_IsLinkKeyAuthed(bd_addr, transport); } -bool BTM_IsLinkKeyKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport) { +bool BTM_IsBonded(const RawAddress& bd_addr, tBT_TRANSPORT transport) { inc_func_call_count(__func__); - return test::mock::stack_btm_sec::BTM_IsLinkKeyKnown(bd_addr, transport); + return test::mock::stack_btm_sec::BTM_IsBonded(bd_addr, transport); } void BTM_PINCodeReply(const RawAddress& bd_addr, tBTM_STATUS res, uint8_t pin_len, uint8_t* p_pin) { inc_func_call_count(__func__); diff --git a/system/test/mock/mock_stack_btm_sec.h b/system/test/mock/mock_stack_btm_sec.h index a54782c9fb..3ae397be41 100644 --- a/system/test/mock/mock_stack_btm_sec.h +++ b/system/test/mock/mock_stack_btm_sec.h @@ -111,10 +111,10 @@ struct BTM_IsLinkKeyAuthed { }; extern struct BTM_IsLinkKeyAuthed BTM_IsLinkKeyAuthed; -// Name: BTM_IsLinkKeyKnown +// Name: BTM_IsBonded // Params: const RawAddress& bd_addr, tBT_TRANSPORT transport // Return: bool -struct BTM_IsLinkKeyKnown { +struct BTM_IsBonded { static bool return_value; std::function<bool(const RawAddress& bd_addr, tBT_TRANSPORT transport)> body{ [](const RawAddress& /* bd_addr */, tBT_TRANSPORT /* transport */) { @@ -124,7 +124,7 @@ struct BTM_IsLinkKeyKnown { return body(bd_addr, transport); } }; -extern struct BTM_IsLinkKeyKnown BTM_IsLinkKeyKnown; +extern struct BTM_IsBonded BTM_IsBonded; // Name: BTM_PINCodeReply // Params: const RawAddress& bd_addr, tBTM_STATUS res, uint8_t pin_len, uint8_t* diff --git a/system/test/mock/mock_stack_security_client_interface.h b/system/test/mock/mock_stack_security_client_interface.h index 224d880905..1487326ac5 100644 --- a/system/test/mock/mock_stack_security_client_interface.h +++ b/system/test/mock/mock_stack_security_client_interface.h @@ -44,7 +44,7 @@ struct MockSecurityClientInterface : public SecurityClientInterface { MOCK_METHOD((bool), BTM_IsEncrypted, (const RawAddress& /* bd_addr */, tBT_TRANSPORT /* transport */)); MOCK_METHOD((bool), BTM_SecIsLeSecurityPending, (const RawAddress& /* bd_addr */)); - MOCK_METHOD((bool), BTM_IsLinkKeyKnown, + MOCK_METHOD((bool), BTM_IsDeviceBonded, (const RawAddress& /* bd_addr */, tBT_TRANSPORT /* transport */)); MOCK_METHOD((bool), BTM_SetSecurityLevel, (bool /* is_originator */, const char* /* p_name */, uint8_t /* service_id */, |