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

Commit 34670ba7 authored by Hansong Zhang's avatar Hansong Zhang Committed by Automerger Merge Worker
Browse files

Let ACL Manager load IRK for now am: 20bf9605 am: 3320015a am: 0822d72a

Original change: https://android-review.googlesource.com/c/platform/system/bt/+/1564253

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0a55850d71d508114866f99a6657e4d3d37010e9
parents f77bc13f 0822d72a
Loading
Loading
Loading
Loading
+7 −1
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@
#include "hci/hci_layer.h"
#include "hci/hci_layer.h"
#include "hci_acl_manager_generated.h"
#include "hci_acl_manager_generated.h"
#include "security/security_module.h"
#include "security/security_module.h"
#include "storage/storage_module.h"


namespace bluetooth {
namespace bluetooth {
namespace hci {
namespace hci {
@@ -154,9 +155,13 @@ void AclManager::SetLeSuggestedDefaultDataParameters(uint16_t octets, uint16_t t
void AclManager::SetPrivacyPolicyForInitiatorAddress(
void AclManager::SetPrivacyPolicyForInitiatorAddress(
    LeAddressManager::AddressPolicy address_policy,
    LeAddressManager::AddressPolicy address_policy,
    AddressWithType fixed_address,
    AddressWithType fixed_address,
    crypto_toolbox::Octet16 rotation_irk,
    std::chrono::milliseconds minimum_rotation_time,
    std::chrono::milliseconds minimum_rotation_time,
    std::chrono::milliseconds maximum_rotation_time) {
    std::chrono::milliseconds maximum_rotation_time) {
  crypto_toolbox::Octet16 rotation_irk{};
  auto irk = GetDependency<storage::StorageModule>()->GetAdapterConfig().GetLeIdentityResolvingKey();
  if (irk.has_value()) {
    rotation_irk = irk->bytes;
  }
  CallOn(
  CallOn(
      pimpl_->le_impl_,
      pimpl_->le_impl_,
      &le_impl::set_privacy_policy_for_initiator_address,
      &le_impl::set_privacy_policy_for_initiator_address,
@@ -262,6 +267,7 @@ void AclManager::HACK_SetAclTxPriority(uint8_t handle, bool high_priority) {
void AclManager::ListDependencies(ModuleList* list) {
void AclManager::ListDependencies(ModuleList* list) {
  list->add<HciLayer>();
  list->add<HciLayer>();
  list->add<Controller>();
  list->add<Controller>();
  list->add<storage::StorageModule>();
}
}


void AclManager::Start() {
void AclManager::Start() {
+0 −1
Original line number Original line Diff line number Diff line
@@ -76,7 +76,6 @@ public:
 virtual void SetPrivacyPolicyForInitiatorAddress(
 virtual void SetPrivacyPolicyForInitiatorAddress(
     LeAddressManager::AddressPolicy address_policy,
     LeAddressManager::AddressPolicy address_policy,
     AddressWithType fixed_address,
     AddressWithType fixed_address,
     crypto_toolbox::Octet16 rotation_irk,
     std::chrono::milliseconds minimum_rotation_time,
     std::chrono::milliseconds minimum_rotation_time,
     std::chrono::milliseconds maximum_rotation_time);
     std::chrono::milliseconds maximum_rotation_time);


+0 −1
Original line number Original line Diff line number Diff line
@@ -79,7 +79,6 @@ class MockAclManager : public AclManager {
      SetPrivacyPolicyForInitiatorAddress,
      SetPrivacyPolicyForInitiatorAddress,
      (LeAddressManager::AddressPolicy address_policy,
      (LeAddressManager::AddressPolicy address_policy,
       AddressWithType fixed_address,
       AddressWithType fixed_address,
       crypto_toolbox::Octet16 rotation_irk,
       std::chrono::milliseconds minimum_rotation_time,
       std::chrono::milliseconds minimum_rotation_time,
       std::chrono::milliseconds maximum_rotation_time),
       std::chrono::milliseconds maximum_rotation_time),
      (override));
      (override));
+0 −4
Original line number Original line Diff line number Diff line
@@ -324,13 +324,11 @@ class AclManagerNoCallbacksTest : public ::testing::Test {
    hci::Address address;
    hci::Address address;
    Address::FromString("D0:05:04:03:02:01", address);
    Address::FromString("D0:05:04:03:02:01", address);
    hci::AddressWithType address_with_type(address, hci::AddressType::RANDOM_DEVICE_ADDRESS);
    hci::AddressWithType address_with_type(address, hci::AddressType::RANDOM_DEVICE_ADDRESS);
    crypto_toolbox::Octet16 irk = {};
    auto minimum_rotation_time = std::chrono::milliseconds(7 * 60 * 1000);
    auto minimum_rotation_time = std::chrono::milliseconds(7 * 60 * 1000);
    auto maximum_rotation_time = std::chrono::milliseconds(15 * 60 * 1000);
    auto maximum_rotation_time = std::chrono::milliseconds(15 * 60 * 1000);
    acl_manager_->SetPrivacyPolicyForInitiatorAddress(
    acl_manager_->SetPrivacyPolicyForInitiatorAddress(
        LeAddressManager::AddressPolicy::USE_STATIC_ADDRESS,
        LeAddressManager::AddressPolicy::USE_STATIC_ADDRESS,
        address_with_type,
        address_with_type,
        irk,
        minimum_rotation_time,
        minimum_rotation_time,
        maximum_rotation_time);
        maximum_rotation_time);


@@ -1247,7 +1245,6 @@ class AclManagerWithResolvableAddressTest : public AclManagerNoCallbacksTest {
    hci::Address address;
    hci::Address address;
    Address::FromString("D0:05:04:03:02:01", address);
    Address::FromString("D0:05:04:03:02:01", address);
    hci::AddressWithType address_with_type(address, hci::AddressType::RANDOM_DEVICE_ADDRESS);
    hci::AddressWithType address_with_type(address, hci::AddressType::RANDOM_DEVICE_ADDRESS);
    crypto_toolbox::Octet16 irk = {};
    acl_manager_->RegisterCallbacks(&mock_connection_callback_, client_handler_);
    acl_manager_->RegisterCallbacks(&mock_connection_callback_, client_handler_);
    acl_manager_->RegisterLeCallbacks(&mock_le_connection_callbacks_, client_handler_);
    acl_manager_->RegisterLeCallbacks(&mock_le_connection_callbacks_, client_handler_);
    auto minimum_rotation_time = std::chrono::milliseconds(7 * 60 * 1000);
    auto minimum_rotation_time = std::chrono::milliseconds(7 * 60 * 1000);
@@ -1255,7 +1252,6 @@ class AclManagerWithResolvableAddressTest : public AclManagerNoCallbacksTest {
    acl_manager_->SetPrivacyPolicyForInitiatorAddress(
    acl_manager_->SetPrivacyPolicyForInitiatorAddress(
        LeAddressManager::AddressPolicy::USE_RESOLVABLE_ADDRESS,
        LeAddressManager::AddressPolicy::USE_RESOLVABLE_ADDRESS,
        address_with_type,
        address_with_type,
        irk,
        minimum_rotation_time,
        minimum_rotation_time,
        maximum_rotation_time);
        maximum_rotation_time);


+1 −1
Original line number Original line Diff line number Diff line
@@ -67,7 +67,7 @@ class LeInitiatorAddressFacadeService : public LeInitiatorAddressFacade::Service
    auto minimum_rotation_time = std::chrono::milliseconds(request->minimum_rotation_time());
    auto minimum_rotation_time = std::chrono::milliseconds(request->minimum_rotation_time());
    auto maximum_rotation_time = std::chrono::milliseconds(request->maximum_rotation_time());
    auto maximum_rotation_time = std::chrono::milliseconds(request->maximum_rotation_time());
    acl_manager_->SetPrivacyPolicyForInitiatorAddress(
    acl_manager_->SetPrivacyPolicyForInitiatorAddress(
        address_policy, address_with_type, irk, minimum_rotation_time, maximum_rotation_time);
        address_policy, address_with_type, minimum_rotation_time, maximum_rotation_time);
    return ::grpc::Status::OK;
    return ::grpc::Status::OK;
  }
  }


Loading