diff --git a/tools/smp-tester.c b/tools/smp-tester.c
index 85ceed7..ba47109 100644
--- a/tools/smp-tester.c
+++ b/tools/smp-tester.c
const void *expect_hci_param;
uint8_t expect_hci_len;
const void * (*expect_hci_func)(uint8_t *len);
+ bool sc;
};
static void mgmt_debug(const char *str, void *user_data)
0x05, /* Init. key dist. */
0x05, /* Rsp. key dist. */
};
+
static const struct smp_req_rsp cli_basic_req_2[] = {
{ NULL, 0, smp_basic_req_2, sizeof(smp_basic_req_2) },
{ smp_basic_req_1_rsp, sizeof(smp_basic_req_1_rsp),
data->mgmt_index, sizeof(cp), &cp, NULL, NULL, NULL);
}
+static const uint8_t smp_sc_req_1[] = { 0x01, /* Pairing Request */
+ 0x03, /* NoInputNoOutput */
+ 0x00, /* OOB Flag */
+ 0x09, /* Bonding - no MITM, SC */
+ 0x10, /* Max key size */
+ 0x0d, /* Init. key dist. */
+ 0x0d, /* Rsp. key dist. */
+};
+
+static const struct smp_req_rsp cli_sc_req_1[] = {
+ { NULL, 0, smp_sc_req_1, sizeof(smp_sc_req_1) },
+ { smp_basic_req_1_rsp, sizeof(smp_basic_req_1_rsp),
+ smp_confirm_req_1, sizeof(smp_confirm_req_1) },
+ { smp_confirm_req_1, sizeof(smp_confirm_req_1),
+ smp_random_req_1, sizeof(smp_random_req_1) },
+ { smp_random_req_1, sizeof(smp_random_req_1), NULL, 0 },
+};
+
+static const struct smp_data smp_client_sc_req_1_test = {
+ .req = cli_sc_req_1,
+ .req_count = G_N_ELEMENTS(cli_sc_req_1),
+ .sc = true,
+};
+
static void client_connectable_complete(uint16_t opcode, uint8_t status,
const void *param, uint8_t len,
void *user_data)
static void setup_powered_client(const void *test_data)
{
struct test_data *data = tester_get_data();
+ const struct smp_data *smp = data->test_data;
unsigned char param[] = { 0x01 };
tester_print("Powering on controller");
sizeof(param), param, NULL, NULL, NULL);
mgmt_send(data->mgmt, MGMT_OP_SET_BONDABLE, data->mgmt_index,
sizeof(param), param, NULL, NULL, NULL);
+ if (smp->sc)
+ mgmt_send(data->mgmt, MGMT_OP_SET_SECURE_CONN,
+ data->mgmt_index, sizeof(param), param, NULL,
+ NULL, NULL);
mgmt_send(data->mgmt, MGMT_OP_SET_POWERED, data->mgmt_index,
sizeof(param), param, setup_powered_client_callback,
NULL, NULL);
static void setup_powered_server(const void *test_data)
{
struct test_data *data = tester_get_data();
+ const struct smp_data *smp = data->test_data;
unsigned char param[] = { 0x01 };
mgmt_register(data->mgmt, MGMT_EV_USER_CONFIRM_REQUEST,
sizeof(param), param, NULL, NULL, NULL);
mgmt_send(data->mgmt, MGMT_OP_SET_ADVERTISING, data->mgmt_index,
sizeof(param), param, NULL, NULL, NULL);
+ if (smp->sc)
+ mgmt_send(data->mgmt, MGMT_OP_SET_SECURE_CONN,
+ data->mgmt_index, sizeof(param), param, NULL,
+ NULL, NULL);
+
mgmt_send(data->mgmt, MGMT_OP_SET_POWERED, data->mgmt_index,
sizeof(param), param, setup_powered_server_callback,
NULL, NULL);
&smp_client_basic_req_2_test,
setup_powered_client, test_client);
+ test_smp("SMP Client - SC Request 1",
+ &smp_client_sc_req_1_test,
+ setup_powered_client, test_client);
+
return tester_run();
}