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

Commit c91873ed authored by Martin Brabham's avatar Martin Brabham
Browse files

Fall back to local AuthenticationRequirements to set values

Bug: 162984360
Tag: #gd-refactor
Test: cert/run --host SecurityTest
Change-Id: I396b79593653279cdfdbcdcb97a0392d0e465bf4
parent 46af7f60
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -164,15 +164,22 @@ void ClassicPairingHandler::OnReceive(hci::IoCapabilityResponseView packet) {
  remote_oob_present_ = packet.GetOobDataPresent();
  switch (remote_authentication_requirements_) {
    case hci::AuthenticationRequirements::NO_BONDING:
      GetRecord()->SetIsEncryptionRequired(false);
      GetRecord()->SetRequiresMitmProtection(false);
      // TODO(optedoblivion): check for HID device and if HID don't make temporary
      GetRecord()->SetIsEncryptionRequired(
          local_authentication_requirements_ != hci::AuthenticationRequirements::NO_BONDING ||
          local_authentication_requirements_ != hci::AuthenticationRequirements::NO_BONDING_MITM_PROTECTION);
      GetRecord()->SetRequiresMitmProtection(
          local_authentication_requirements_ == hci::AuthenticationRequirements::DEDICATED_BONDING_MITM_PROTECTION ||
          local_authentication_requirements_ == hci::AuthenticationRequirements::GENERAL_BONDING_MITM_PROTECTION ||
          local_authentication_requirements_ == hci::AuthenticationRequirements::NO_BONDING_MITM_PROTECTION);
      // TODO(optedoblivion): check for HID device (CoD) and if HID don't make temporary
      GetRecord()->SetIsTemporary(
          local_authentication_requirements_ == hci::AuthenticationRequirements::NO_BONDING ||
          local_authentication_requirements_ == hci::AuthenticationRequirements::NO_BONDING_MITM_PROTECTION);
      break;
    case hci::AuthenticationRequirements::NO_BONDING_MITM_PROTECTION:
      GetRecord()->SetIsEncryptionRequired(false);
      GetRecord()->SetIsEncryptionRequired(
          local_authentication_requirements_ != hci::AuthenticationRequirements::NO_BONDING ||
          local_authentication_requirements_ != hci::AuthenticationRequirements::NO_BONDING_MITM_PROTECTION);
      GetRecord()->SetRequiresMitmProtection(true);
      GetRecord()->SetIsTemporary(
          local_authentication_requirements_ == hci::AuthenticationRequirements::NO_BONDING ||
@@ -180,7 +187,10 @@ void ClassicPairingHandler::OnReceive(hci::IoCapabilityResponseView packet) {
      break;
    case hci::AuthenticationRequirements::DEDICATED_BONDING:
      GetRecord()->SetIsEncryptionRequired(true);
      GetRecord()->SetRequiresMitmProtection(false);
      GetRecord()->SetRequiresMitmProtection(
          local_authentication_requirements_ == hci::AuthenticationRequirements::DEDICATED_BONDING_MITM_PROTECTION ||
          local_authentication_requirements_ == hci::AuthenticationRequirements::GENERAL_BONDING_MITM_PROTECTION ||
          local_authentication_requirements_ == hci::AuthenticationRequirements::NO_BONDING_MITM_PROTECTION);
      break;
    case hci::AuthenticationRequirements::DEDICATED_BONDING_MITM_PROTECTION:
      GetRecord()->SetIsEncryptionRequired(true);
@@ -188,14 +198,18 @@ void ClassicPairingHandler::OnReceive(hci::IoCapabilityResponseView packet) {
      break;
    case hci::AuthenticationRequirements::GENERAL_BONDING:
      GetRecord()->SetIsEncryptionRequired(true);
      GetRecord()->SetRequiresMitmProtection(false);
      GetRecord()->SetRequiresMitmProtection(
          local_authentication_requirements_ == hci::AuthenticationRequirements::DEDICATED_BONDING_MITM_PROTECTION ||
          local_authentication_requirements_ == hci::AuthenticationRequirements::GENERAL_BONDING_MITM_PROTECTION ||
          local_authentication_requirements_ == hci::AuthenticationRequirements::NO_BONDING_MITM_PROTECTION);
      break;
    case hci::AuthenticationRequirements::GENERAL_BONDING_MITM_PROTECTION:
      GetRecord()->SetIsEncryptionRequired(true);
      GetRecord()->SetRequiresMitmProtection(true);
      break;
    default:
      GetRecord()->SetRequiresMitmProtection(false);
      GetRecord()->SetIsEncryptionRequired(true);
      GetRecord()->SetRequiresMitmProtection(true);
      break;
  }
  has_gotten_io_cap_response_ = true;