#include "hci/hci_layer.h"
#include "hci_acl_manager_generated.h"
#include "security/security_module.h"
+#include "storage/storage_module.h"
namespace bluetooth {
namespace hci {
void AclManager::SetPrivacyPolicyForInitiatorAddress(
LeAddressManager::AddressPolicy address_policy,
AddressWithType fixed_address,
- crypto_toolbox::Octet16 rotation_irk,
std::chrono::milliseconds minimum_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(
pimpl_->le_impl_,
&le_impl::set_privacy_policy_for_initiator_address,
void AclManager::ListDependencies(ModuleList* list) {
list->add<HciLayer>();
list->add<Controller>();
+ list->add<storage::StorageModule>();
}
void AclManager::Start() {
virtual void SetPrivacyPolicyForInitiatorAddress(
LeAddressManager::AddressPolicy address_policy,
AddressWithType fixed_address,
- crypto_toolbox::Octet16 rotation_irk,
std::chrono::milliseconds minimum_rotation_time,
std::chrono::milliseconds maximum_rotation_time);
SetPrivacyPolicyForInitiatorAddress,
(LeAddressManager::AddressPolicy address_policy,
AddressWithType fixed_address,
- crypto_toolbox::Octet16 rotation_irk,
std::chrono::milliseconds minimum_rotation_time,
std::chrono::milliseconds maximum_rotation_time),
(override));
hci::Address address;
Address::FromString("D0:05:04:03:02:01", 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 maximum_rotation_time = std::chrono::milliseconds(15 * 60 * 1000);
acl_manager_->SetPrivacyPolicyForInitiatorAddress(
LeAddressManager::AddressPolicy::USE_STATIC_ADDRESS,
address_with_type,
- irk,
minimum_rotation_time,
maximum_rotation_time);
hci::Address address;
Address::FromString("D0:05:04:03:02:01", 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_->RegisterLeCallbacks(&mock_le_connection_callbacks_, client_handler_);
auto minimum_rotation_time = std::chrono::milliseconds(7 * 60 * 1000);
acl_manager_->SetPrivacyPolicyForInitiatorAddress(
LeAddressManager::AddressPolicy::USE_RESOLVABLE_ADDRESS,
address_with_type,
- irk,
minimum_rotation_time,
maximum_rotation_time);
auto minimum_rotation_time = std::chrono::milliseconds(request->minimum_rotation_time());
auto maximum_rotation_time = std::chrono::milliseconds(request->maximum_rotation_time());
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;
}
auto maximum_rotation_time = std::chrono::minutes(15);
acl_manager_->SetPrivacyPolicyForInitiatorAddress(
- address_policy, address_with_type, local_identity_resolving_key_, minimum_rotation_time, maximum_rotation_time);
+ address_policy, address_with_type, minimum_rotation_time, maximum_rotation_time);
}
void SecurityManagerImpl::CreateBond(hci::AddressWithType device) {
hci::LeAddressManager::AddressPolicy::USE_RESOLVABLE_ADDRESS;
hci::AddressWithType empty_address_with_type(
hci::Address{}, hci::AddressType::RANDOM_DEVICE_ADDRESS);
- crypto_toolbox::Octet16 rotation_irk = {0x44, 0xfb, 0x4b, 0x8d, 0x6c, 0x58,
- 0x21, 0x0c, 0xf9, 0x3d, 0xda, 0xf1,
- 0x64, 0xa3, 0xbb, 0x7f};
/* 7 minutes minimum, 15 minutes maximum for random address refreshing */
auto minimum_rotation_time = std::chrono::minutes(7);
auto maximum_rotation_time = std::chrono::minutes(15);
GetAclManager()->SetPrivacyPolicyForInitiatorAddress(
- address_policy, empty_address_with_type, rotation_irk,
- minimum_rotation_time, maximum_rotation_time);
+ address_policy, empty_address_with_type, minimum_rotation_time,
+ maximum_rotation_time);
}
void bluetooth::shim::legacy::Acl::DisconnectClassic(uint16_t handle,