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

Commit ff3c7388 authored by Łukasz Rymanowski's avatar Łukasz Rymanowski
Browse files

eatt: Establish EATT after encryption is done.

As per specification EATT channel shall be encrypted and this patch
makes this happen.

However for some PTS test cases, we still would like to create L2CAP
channels without encryption and this patch also allows to do that with
flag PTS_ConnectEattUnencrypted

Bug: 236944522
Test: PTS L2CAP/ECFC/BV-32-C
Test: atest BluetoothInstrumentationTests
Test: atest net_test_eatt
Tag: #feature
Merged-In: I98d7721f3733756e2c47bc7acd6f36d571b0eac0
Change-Id: I98d7721f3733756e2c47bc7acd6f36d571b0eac0
(cherry picked from commit 1cb0d917)
parent a0eea2f7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -50,6 +50,9 @@ TRC_HID_DEV=2
# Start EATT without validation Server Supported Features
#PTS_ConnectEattUncondictionally=true

# Start EATT on unecrypted link
#PTS_ConnectEattUnencrypted=true

# Disable BR/EDR discovery after LE pairing to avoid cross key derivation errors
#PTS_DisableSDPOnLEPair=true

+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ typedef struct {
  int (*get_pts_smp_failure_case)(void);
  bool (*get_pts_force_eatt_for_notifications)(void);
  bool (*get_pts_connect_eatt_unconditionally)(void);
  bool (*get_pts_connect_eatt_before_encryption)(void);
  config_t* (*get_all)(void);
} stack_config_t;

+7 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ const char* PTS_SMP_FAILURE_CASE_KEY = "PTS_SmpFailureCase";
const char* PTS_FORCE_EATT_FOR_NOTIFICATIONS = "PTS_ForceEattForNotifications";
const char* PTS_CONNECT_EATT_UNCONDITIONALLY =
    "PTS_ConnectEattUncondictionally";
const char* PTS_CONNECT_EATT_UNENCRYPTED = "PTS_ConnectEattUnencrypted";

static std::unique_ptr<config_t> config;
}  // namespace
@@ -123,6 +124,11 @@ static bool get_pts_connect_eatt_unconditionally(void) {
                         PTS_CONNECT_EATT_UNCONDITIONALLY, false);
}

static bool get_pts_connect_eatt_before_encryption(void) {
  return config_get_bool(*config, CONFIG_DEFAULT_SECTION,
                         PTS_CONNECT_EATT_UNENCRYPTED, false);
}

static config_t* get_all(void) { return config.get(); }

const stack_config_t interface = {get_trace_config_enabled,
@@ -134,6 +140,7 @@ const stack_config_t interface = {get_trace_config_enabled,
                                  get_pts_smp_failure_case,
                                  get_pts_force_eatt_for_notifications,
                                  get_pts_connect_eatt_unconditionally,
                                  get_pts_connect_eatt_before_encryption,
                                  get_all};

const stack_config_t* stack_config_get_interface(void) { return &interface; }
+2 −1
Original line number Diff line number Diff line
@@ -58,7 +58,8 @@ const stack_config_t interface = {nullptr, get_pts_avrcp_test,
                                  nullptr, nullptr,
                                  nullptr, nullptr,
                                  nullptr, nullptr,
                                  nullptr, nullptr};
                                  nullptr, nullptr,
                                  nullptr};

void Callback(uint8_t, bool, std::unique_ptr<::bluetooth::PacketBuilder>) {}

+2 −1
Original line number Diff line number Diff line
@@ -54,7 +54,8 @@ const stack_config_t interface = {nullptr, get_pts_avrcp_test,
                                  nullptr, nullptr,
                                  nullptr, nullptr,
                                  nullptr, nullptr,
                                  nullptr, nullptr};
                                  nullptr, nullptr,
                                  nullptr};

// TODO (apanicke): All the tests below are just basic positive unit tests.
// Add more tests to increase code coverage.
Loading