Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e2b41b9 authored by Hui Peng's avatar Hui Peng
Browse files

[Invisalign2] Encapsulate the following methods

- tBTM_SEC_CB::IsDeviceEncrypted
- tBTM_SEC_CB::IsLinkKeyAuthenticated
- tBTM_SEC_CB::IsDeviceAuthenticated
- tBTM_SEC_CB::IsLinkKeyKnown

Bug: 301661850
Test: m com.android.btservices
Flag: EXEMPT, mechanical refactor
Change-Id: Ie8b50ef566c40a80afa7b0b968dd9ced2df81213
parent 2372e9d6
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -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);
+4 −39
Original line number Diff line number Diff line
@@ -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) {
@@ -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
+0 −13
Original line number Diff line number Diff line
@@ -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);
+81 −1
Original line number Diff line number Diff line
@@ -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"

@@ -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;
}
+8 −0
Original line number Diff line number Diff line
@@ -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