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

Commit d8af8cb0 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

gd: Add security policy check and plumb in shim am: 69a5f3c5

Change-Id: If0ae878d4f6a83783aba0fc1eb07e3bd43402898
parents 927b483c 69a5f3c5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -26,6 +26,10 @@ class SecurityPolicy {
    LEVEL_3,  // Encryption required and authenticated link key required.
  };
  Level security_level_ = Level::LEVEL_0;

  bool RequiresAuthentication() const {
    return security_level_ != SecurityPolicy::Level::LEVEL_0;
  }
};

}  // namespace l2cap
+12 −2
Original line number Diff line number Diff line
@@ -472,6 +472,7 @@ struct L2cap::impl {
  void PendingConnectionFail(PendingConnectionId id, std::unique_ptr<PendingConnection> connection,
                             l2cap::classic::DynamicChannelManager::ConnectionResult result);
  void ServiceUnregistered(l2cap::Psm psm, std::unique_ptr<ServiceInterface> service);
  const l2cap::SecurityPolicy GetSecurityPolicy(l2cap::Psm psm) const;
};

const ModuleFactory L2cap::Factory = ModuleFactory([]() { return new L2cap(); });
@@ -510,12 +511,21 @@ void L2cap::impl::ServiceUnregistered(l2cap::Psm psm, std::unique_ptr<ServiceInt
  service->NotifyUnregistered();
}

const l2cap::SecurityPolicy L2cap::impl::GetSecurityPolicy(l2cap::Psm psm) const {
  l2cap::SecurityPolicy security_policy;
  if (psm == 1) {
    security_policy.security_level_ = l2cap::SecurityPolicy::Level::LEVEL_0;
  } else {
    security_policy.security_level_ = l2cap::SecurityPolicy::Level::LEVEL_3;
  }
  return security_policy;
}

void L2cap::impl::RegisterService(l2cap::Psm psm, l2cap::classic::DynamicChannelConfigurationOption option,
                                  ConnectionCompleteCallback on_complete, RegisterServicePromise register_promise) {
  ASSERT(psm_to_service_interface_map_.find(psm) == psm_to_service_interface_map_.end());

  // TODO(cmanton) Understand how security policy affects service
  const l2cap::SecurityPolicy security_policy;
  const l2cap::SecurityPolicy security_policy = GetSecurityPolicy(psm);

  psm_to_service_interface_map_.emplace(
      psm,