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

Commit 20bf9605 authored by Hansong Zhang's avatar Hansong Zhang
Browse files

Let ACL Manager load IRK for now

Instead of letting users of ACL manager loading IRK, we can let ACL
manager load it, until GD security is ready.

Tag: #gd-refactor
Bug: 141555841
Test: cert/run
Change-Id: I9dc66a9787b0117261ee7bcd61ff74b873be0482
parent ecff4335
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