From cab96eec12422a7371229c317d7f13e988b9e9a3 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Tue, 7 Dec 2021 12:03:43 +0100 Subject: [PATCH] test/pts: update GAP tests + sequences --- test/pts/gap_central_test.c | 42 ++++--- test/pts/gap_central_test.md | 212 +++++++++++++++++++++----------- test/pts/gap_peripheral_test.c | 29 ++--- test/pts/gap_peripheral_test.md | 100 +++++++++++---- 4 files changed, 247 insertions(+), 136 deletions(-) diff --git a/test/pts/gap_central_test.c b/test/pts/gap_central_test.c index cbe79dd9f..0677a9656 100644 --- a/test/pts/gap_central_test.c +++ b/test/pts/gap_central_test.c @@ -183,9 +183,9 @@ static uint8_t ui_presentation_format[7]; static uint16_t ui_aggregate_handle; static uint16_t handle = 0; -static bd_addr_t public_pts_address = {0x00, 0x1B, 0xDC, 0x07, 0x32, 0xef}; +//static bd_addr_t public_pts_address = {0x00, 0x1B, 0xDC, 0x07, 0x32, 0xef}; //static bd_addr_t public_pts_address = {0x00, 0x1B, 0xDC, 0x08, 0xe2, 0x72}; -//static bd_addr_t public_pts_address = {0x00, 0x1B, 0xDC, 0x08, 0xe2, 0x5C}; +static bd_addr_t public_pts_address = {0x00, 0x1B, 0xDC, 0x08, 0xe2, 0x5C}; static int public_pts_address_type = 0; static bd_addr_t current_pts_address; @@ -973,6 +973,7 @@ static void show_usage(void){ printf_row("4 - Set Security Level 4"); printf_row("9 - create HCI Classic connection to addr %s", bd_addr_to_str(public_pts_address)); printf_row("N - Create L2CAP Connection to PSM 0x1001"); + printf_row("l - dedicated bonding, MITM %u", sm_mitm_protection); printf_row("s/S - passive/active scanning"); printf_row("a - enable Advertisements"); printf_row("b - start bonding"); @@ -1454,7 +1455,6 @@ static void ui_process_command(char buffer){ gap_random_address_set_mode(GAP_RANDOM_ADDRESS_NON_RESOLVABLE); gap_privacy = 1; update_advertisement_params(); - show_usage(); break; case '0': update_security_level(LEVEL_0); @@ -1471,22 +1471,22 @@ static void ui_process_command(char buffer){ case '5': sm_io_capabilities = "IO_CAPABILITY_DISPLAY_YES_NO"; sm_set_io_capabilities(IO_CAPABILITY_DISPLAY_YES_NO); - show_usage(); + printf("IO Capabilities: %s\n", sm_io_capabilities); break; case '6': sm_io_capabilities = "IO_CAPABILITY_NO_INPUT_NO_OUTPUT"; sm_set_io_capabilities(IO_CAPABILITY_NO_INPUT_NO_OUTPUT); - show_usage(); + printf("IO Capabilities: %s\n", sm_io_capabilities); break; case '7': sm_io_capabilities = "IO_CAPABILITY_KEYBOARD_ONLY"; sm_set_io_capabilities(IO_CAPABILITY_KEYBOARD_ONLY); - show_usage(); + printf("IO Capabilities: %s\n", sm_io_capabilities); break; case '8': sm_io_capabilities = "IO_CAPABILITY_KEYBOARD_DISPLAY"; sm_set_io_capabilities(IO_CAPABILITY_KEYBOARD_DISPLAY); - show_usage(); + printf("IO Capabilities: %s\n", sm_io_capabilities); break; case '9': printf("Creating HCI Classic Connection to %s\n", bd_addr_to_str(public_pts_address)); @@ -1498,34 +1498,35 @@ static void ui_process_command(char buffer){ break; case 'a': gap_advertisements_enable(1); - show_usage(); + printf("Advertisement enabled\n"); break; case 'b': + printf("Request pairing\n"); sm_request_pairing(handle); break; case 'c': + printf("Non-Connectable\n"); gap_connectable = 0; update_advertisement_params(); gap_connectable_control(gap_connectable); - show_usage(); break; case 'C': + printf("Connectable\n"); gap_connectable = 1; update_advertisement_params(); gap_connectable_control(gap_connectable); - show_usage(); break; case 'd': + printf("Non-Bondable\n"); gap_bondable = 0; gap_set_bondable_mode(gap_bondable); update_auth_req(); - show_usage(); break; case 'D': + printf("Bondable\n"); gap_bondable = 1; gap_set_bondable_mode(gap_bondable); update_auth_req(); - show_usage(); break; case 'f': printf("PTS Address: "); @@ -1552,33 +1553,34 @@ static void ui_process_command(char buffer){ printf("MITM protection off\n"); sm_mitm_protection = 0; update_auth_req(); - show_usage(); break; case 'M': printf("MITM protection on\n"); sm_mitm_protection = 1; update_auth_req(); - show_usage(); break; case 'j': + printf("Secure connections OFF\n"); sm_sc = 0; update_auth_req(); - show_usage(); break; case 'J': + printf("Secure connections ON\n"); sm_sc = 1; update_auth_req(); - show_usage(); break; case 'k': + printf("Secure connections Only Mode: OFF\n"); sm_sc_only_mode = 0; update_auth_req(); - show_usage(); break; case 'K': + printf("Secure connections Only Mode: ON\n"); sm_sc_only_mode = 1; update_auth_req(); - show_usage(); + break; + case 'l': + gap_dedicated_bonding(current_pts_address, sm_mitm_protection); break; case 'g': central_state = CENTRAL_W4_READ_CHARACTERISTIC_VALUE_BY_HANDLE; @@ -1662,16 +1664,16 @@ static void ui_process_command(char buffer){ show_usage(); break; case 'y': + printf("Drop OOB data\n"); sm_have_oob_data = 0; - show_usage(); break; case 'Y': + printf("Simulate OOB data\n"); if (sm_have_oob_data){ sm_have_oob_data = 3 - sm_have_oob_data; } else { sm_have_oob_data = 1; } - show_usage(); break; case 'z': printf("Updating connection parameters via L2CAP\n"); diff --git a/test/pts/gap_central_test.md b/test/pts/gap_central_test.md index 2898ad313..f8c3f1859 100644 --- a/test/pts/gap_central_test.md +++ b/test/pts/gap_central_test.md @@ -1,25 +1,39 @@ # GAP Central/Observer Test ## IXIT -- Set TSPX_advertising_data to 02010008094254737461636B (Flags = 0, Name "BTstack") +- Set TSPX_advertising_data to 02010008094254737461636B (Flags = 0, Name "BTstack")- - Set TSPX_gap_iut_role to Central - Set TSPX_psm_2 to 1001 +## IUT +- Set PTS address + ## Notes Two tests requires old BR-only dongle: - GAP/DM/LEP/BV-02-C: - GAP/DM/LEP/BV-02-C: With the white dongle, test hangs: [CASE0071230](https://bluetooth.service-now.com/ess/case_detail.do?sysparm_document_key=x_bsig_case_manage_case,331db3171bb7a810bb65db1dcd4bcbc0) +1 tests require BR/EDR dongle without SC: +- GAP/SEC/SEM/BV-16-C + +Some tests require IUT dongle with support for SC/EDR + Some tests require: GAP/SEC/SEM/BI-05-C ## Sequences +- GAP/BROB/BCST/*: -> Peripheral + - GAP/BROB/OBSV/BV-01-C: s - GAP/BROB/OBSV/BV-02-C: s - GAP/BROB/OBSV/BV-03-C: S - GAP/BROB/OBSV/BV-03-C: p, b, s +- GAP/DISC/NONM/* -> Peripheral +- GAP/DISC/LIMM/* -> Peripheral +- GAP/DISC/GENM/* -> Peripheral + - GAP/DISC/LIMP/BV-01-C: s, "OK" if "LE Limited Discoverable Mode" is shown - GAP/DISC/LIMP/BV-02-C: s, "OK" if "LE Limited Discoverable Mode" is NOT shown (General discoverable) - GAP/DISC/LIMP/BV-03-C: s, "OK" if "LE Limited Discoverable Mode" is NOT shown (Non-connectable) @@ -42,6 +56,12 @@ GAP/SEC/SEM/BI-05-C - GAP/IDLE/DED/BV-02-C: i +- GAP/IDLE/BON/BV-02-C: N +- GAP/IDLE/BON/BV-03-C: l +- GAP/IDLE/BON/BV-04-C: M, l +- GAP/IDLE/BON/BV-05-C: N, N +- GAP/IDLE/BON/BV-06-C: 3, N + - GAP/CONN/NCON/BV-01-C -> GAP Peripheral - GAP/CONN/NCON/BV-02-C -> GAP Peripheral - GAP/CONN/NCON/BV-03-C -> GAP Peripheral @@ -54,38 +74,131 @@ GAP/SEC/SEM/BI-05-C - GAP/CONN/UCON/BV-04-C -> GAP Peripheral - GAP/CONN/ACEP/BV-01-C: p, t +- GAP/CONN/ACEP/BV-03-C: TODO - PTS "Selected device doesn't support EXTENDED features (EXT ADV, EXT SCAN). Selected test case can not execute with selected device" +- GAP/CONN/ACEP/BV-04-C: TODO - PTS "Selected device doesn't support EXTENDED features (EXT ADV, EXT SCAN). Selected test case can not execute with selected device" -- GAP/CONN/GCEP/BV-01-C: P, t -- GAP/CONN/GCEP/BV-02-C: P, t +- GAP/CONN/GCEP/BV-01-C: p, t +- GAP/CONN/GCEP/BV-02-C: p, t +- GAP/CONN/GCEP/BV-05-C: TODO - PTS "Selected device doesn't support EXTENDED features (EXT ADV, EXT SCAN). Selected test case can not execute with selected device" +- GAP/CONN/GCEP/BV-06-C: TODO - PTS "Selected device doesn't support EXTENDED features (EXT ADV, EXT SCAN). Selected test case can not execute with selected device" - GAP/CONN/SCEP/BV-01-C: p, t +- GAP/CONN/SCEP/BV-03-C: TODO - PTS "Selected device doesn't support EXTENDED features (EXT ADV, EXT SCAN). Selected test case can not execute with selected device" -- GAP/CONN/DCEP/BV-01-C: P, t (if it fails, retry) -- GAP/CONN/DCEP/BV-03-C: P, t (if it fails, retry) +- GAP/CONN/DCEP/BV-01-C: p, t (if it fails, retry) +- GAP/CONN/DCEP/BV-03-C: p, t (if it fails, retry) +- GAP/CONN/DCEP/BV-05-C: TODO - PTS "Selected device doesn't support EXTENDED features (EXT ADV, EXT SCAN). Selected test case can not execute with selected device" +- GAP/CONN/DCEP/BV-06-C: TODO - PTS "Selected device doesn't support EXTENDED features (EXT ADV, EXT SCAN). Selected test case can not execute with selected device" +# BV-1 to BV-3 are NOT 21_9 - Connection Parameter Update Procedure - GAP/CONN/CPUP/BV-01-C: C, a, z - GAP/CONN/CPUP/BV-02-C: C, a, z - wait for timeout - GAP/CONN/CPUP/BV-03-C: C, a - GAP/CONN/CPUP/BV-04-C: p, t (restart if connect fails when adv are still on) - GAP/CONN/CPUP/BV-05-C: p, t + +# The selected test case requires to have LE only device to turn off the Connection Parameters Request Procedure LL feature bit to 0 - GAP/CONN/CPUP/BV-06-C: p, Z, t +- - GAP/CONN/CPUP/BV-08-C: C, a +- GAP/CONN/CPUP/BV-10-C: C, a - GAP/CONN/TERM/BV-01-C: p, t - GAP/CONN/PRDA/BV-01-C: C, a, t, t, t +# Requires TSPX_security_enabled = true for resolvable address - GAP/CONN/PRDA/BV-02-C: f, BD_ADDR, p, b, P, b, P, b -- GAP/BOND/NBON/BV-01-C: p, d, p, p +- GAP/EST/LIE/BV-02-C: 9 + +- GAP/BOND/NBON/BV-01-C: p, d, b, p, b - GAP/BOND/NBON/BV-02-C: p, d, b, p, b -- GAP/BOND/NBON/BV-03-C: C, a +- GAP/BOND/NBON/BV-03-C: C, a, d - GAP/BOND/BON/BV-01-C: C, D, a, b - GAP/BOND/BON/BV-02-C: C, D, p, b, p, - GAP/BOND/BON/BV-03-C: C, a, -- GAP/BOND/BON/BV-04-C: C, p, p, b (to start encryption) +# TODO LE +- GAP/BOND/BON/BV-04-C: C, p, t, p, b (to start encryption) -- GAP/SEC/AUT/BV-01-C -> GAP Peripheral +- GAP/SEC/SEM/BV-02-C -> GAP Peripheral +- GAP/SEC/SEM/BV-04-C -> GAP Peripheral +- GAP/SEC/SEM/BV-05-C: 2, d, N, t +- GAP/SEC/SEM/BV-50-C: 2, C, N, t, N, t +- GAP/SEC/SEM/BV-06-C: 2, N, t +- GAP/SEC/SEM/BV-51-C: 2, C, N, t, N, t +- GAP/SEC/SEM/BV-07-C: 3, C, N, +- GAP/SEC/SEM/BV-52-C: 3, N, t, N, t +- GAP/SEC/SEM/BV-08-C: Fragile PTS test! OK, N, YES, now PTS waits but just continue, t, OK, N, YES +- GAP/SEC/SEM/BV-09-C: F - restart tester - 2, N, 3, N, t +- GAP/SEC/SEM/BV-53-C: F - restart tester - 2, C, N, t, N, 3, N +- GAP/SEC/SEM/BV-10-C -> GAP Peripheral +- GAP/SEC/SEM/BI-24-C -> GAP Peripheral +- GAP/SEC/SEM/BV-46-C -> GAP Peripheral +- GAP/SEC/SEM/BV-11-C -> GAP Peripheral +- GAP/SEC/SEM/BV-12-C -> GAP Peripheral +- GAP/SEC/SEM/BV-13-C -> GAP Peripheral +- GAP/SEC/SEM/BV-47-C -> GAP Peripheral +- GAP/SEC/SEM/BV-14-C -> GAP Peripheral +- GAP/SEC/SEM/BV-48-C -> GAP Peripheral +- GAP/SEC/SEM/BV-15-C -> GAP Peripheral +- GAP/SEC/SEM/BV-49-C -> GAP Peripheral +- GAP/SEC/SEM/BV-16-C: K, N, wait, confirm reject - requires dongle without support for SC +- GAP/SEC/SEM/BV-17-C: F - restart tester - K, N, wait, confirm reject +- GAP/SEC/SEM/BV-18-C: F - restart tester - K, N - requires dongle with support for SC +- GAP/SEC/SEM/BV-54-C F - restart tester - K, N, N - requires dongle with support for SC +- GAP/SEC/SEM/BV-19-C: F - restart tester - k, N - requires dongle with support for SC +- GAP/SEC/SEM/BV-55-C k, N, N +- GAP/SEC/SEM/BV-20-C: F - restart tester - 4, N, wait, confirm reject +- GAP/SEC/SEM/BV-21-C: 5, M, J, C, a, g0009, b (5,M,J - Level 4) +- GAP/SEC/SEM/BV-37-C: m, j, C, a, g0009, b (m,J - Level 2) +- GAP/SEC/SEM/BV-38-C: 5, M, J, C, a, g0009, b (5,M,J - Level 4) +- GAP/SEC/SEM/BV-22-C: 5, M, J, C, a, 000F, Confirm Passkey (5,M,J - Level 4) +- GAP/SEC/SEM/BV-39-C: m, J, C, a, 0011 (5,J,M - Level 2) +- GAP/SEC/SEM/BV-40-C: m, J, C, a, 0011 (5,J,M - Level 2) +- GAP/SEC/SEM/BV-23-C: M, J, K, C, a, G0009, 00, b +- GAP/SEC/SEM/BV-24-C: C, a, 000f +- GAP/SEC/SEM/BV-25-C: J, K, M, C, a, G0009, 00, b, (PTS waits for Write request, ignore Read request), t, confirm +- GAP/SEC/SEM/BV-26-C: F, 5, M, J, p, g0009, b +- GAP/SEC/SEM/BV-41-C: F, 5, m, J, p, g0009, b +- GAP/SEC/SEM/BV-42-C: F, 5, M, J, p, g0009, b +- GAP/SEC/SEM/BV-27-C: F, 5, M, J, p, 000f +- GAP/SEC/SEM/BV-43-C: F, 5, m, J, p, 0011 +- GAP/SEC/SEM/BV-44-C: F, 5, M, J, p, 000f +- GAP/SEC/SEM/BV-28-C: K, p, G0009, b +- GAP/SEC/SEM/BV-29-C: K, p, 000f +- GAP/SEC/SEM/BV-30-C: p, G0009, 00, b, N +- GAP/SEC/SEM/BV-31-C: not supported yet - LE Security Mode 3 +- GAP/SEC/SEM/BV-32-C: not supported yet - LE Security Mode 3 +- GAP/SEC/SEM/BV-34-C: not supported yet - LE Security Mode 3 +- GAP/SEC/SEM/BV-35-C: not supported yet - LE Security Mode 3 +- GAP/SEC/SEM/BI-01-C -> GAP Peripheral +- GAP/SEC/SEM/BI-02-C -> GAP Peripheral +- GAP/SEC/SEM/BI-03-C -> GAP Peripheral +- GAP/SEC/SEM/BI-04-C -> GAP Peripheral +- GAP/SEC/SEM/BI-05-C: delete link keys, 0, N, N, N, N, N, N +- GAP/SEC/SEM/BI-06-C: delete link keys, N, N, N, N, N, N +- GAP/SEC/SEM/BI-07-C: delete link keys, N, N, N, N, N, N +- GAP/SEC/SEM/BI-08-C: delete link keys, N, N, N, N, N, N, ... N - requires LEVEL_4 +- GAP/SEC/SEM/BI-09-C: C, K, a +- GAP/SEC/SEM/BI-10-C: C, K, { p, b, t } + GAP/SEC/SEM/BI-11-C -> GAP Peripheral +- GAP/SEC/SEM/BI-12-C: delete link keys, N, N, N, N, N, N +- GAP/SEC/SEM/BI-13-C: not supported yet - LE Security Mode 3 +- GAP/SEC/SEM/BV-45-C: NEW LE +- GAP/SEC/SEM/BI-14-C -> GAP Peripheral +- GAP/SEC/SEM/BI-14-C -> GAP Peripheral +- GAP/SEC/SEM/BI-15-C -> GAP Peripheral +- GAP/SEC/SEM/BI-16-C -> GAP Peripheral +- GAP/SEC/SEM/BI-17-C: delete link keys, N, N, N, N, N, N, ... N - requires LEVEL_4 +- GAP/SEC/SEM/BI-18-C: delete link keys, N, N, N, N, N, N, ... N - requires LEVEL_4 +- GAP/SEC/SEM/BI-19-C: delete link keys, N, N, N, N, N, N, ... N - requires LEVEL_4 +- GAP/SEC/SEM/BI-20-C: C, K, a +- GAP/SEC/SEM/BI-21-C: C, K, a +- GAP/SEC/SEM/BI-22-C: C, K, { p, b, t } +- GAP/SEC/SEM/BI-23-C: C, K, { p, b, t } + +- GAP/SEC/AUT/BV-02-C -> GAP Peripheral - GAP/SEC/AUT/BV-11-C -> GAP Peripheral - GAP/SEC/AUT/BV-12-C: M, 5, p, 000b, "enter secure id" - GAP/SEC/AUT/BV-13-C: M, 5, p, 000b, "enter secure id" @@ -106,65 +219,6 @@ GAP/SEC/SEM/BI-05-C - GAP/SEC/CSIGN/BI-03-C: p, b, F, p, 1, t (bonding info deleted -> CSRK not available) - GAP/SEC/CSIGN/BI-04-C: H, p, b, p,1, t (characteristic requires authentication write permissions) -- GAP/SEC/SEM/BV-02-C -> GAP Peripheral -- GAP/SEC/SEM/BV-04-C -> GAP Peripheral -- GAP/SEC/SEM/BV-11-C -> GAP Peripheral -- GAP/SEC/SEM/BV-12-C -> GAP Peripheral -- GAP/SEC/SEM/BV-13-C -> GAP Peripheral -- GAP/SEC/SEM/BV-14-C -> GAP Peripheral -- GAP/SEC/SEM/BV-15-C -> GAP Peripheral -- GAP/SEC/SEM/BV-21-C: 5, M, J, C, a, g0009, b (5,M,J - Level 4) -- GAP/SEC/SEM/BV-37-C: m, j, C, a, g0009, b (m,J - Level 2) -- GAP/SEC/SEM/BV-38-C: 5, M, J, C, a, g0009, b (5,M,J - Level 4) -- GAP/SEC/SEM/BV-22-C: 5, M, J, C, a, 000F, Confirm Passkey (5,M,J - Level 4) -- GAP/SEC/SEM/BV-39-C: m, J, C, a, 0011 (5,J,M - Level 2) -- GAP/SEC/SEM/BV-40-C: m, J, C, a, 0011 (5,J,M - Level 2) -- GAP/SEC/SEM/BV-23-C: M, J, K, C, a, G0009, 00, b -- GAP/SEC/SEM/BV-24-C: C, a, 000f -- GAP/SEC/SEM/BV-25-C: J, K, M, C, a, G0009, 00, b, (PTS waits for Write request, ignore Read request), t -- GAP/SEC/SEM/BI-01-C -> GAP Peripheral - GAP/SEC/SEM/BI-11-C -> GAP Peripheral -- GAP/SEC/SEM/BI-02-C -> GAP Peripheral -- GAP/SEC/SEM/BI-03-C -> GAP Peripheral -- GAP/SEC/SEM/BI-04-C -> GAP Peripheral -- GAP/SEC/SEM/BI-14-C -> GAP Peripheral -- GAP/SEC/SEM/BI-15-C -> GAP Peripheral -- GAP/SEC/SEM/BI-16-C -> GAP Peripheral -- GAP/SEC/SEM/BI-05-C: 0, N, N, N, N, N, N -- GAP/SEC/SEM/BI-12-C: delete link keys, N, N, N, N, N, N -- GAP/SEC/SEM/BI-06-C: delete link keys, N, N, N, N, N, N -- GAP/SEC/SEM/BI-07-C: delete link keys, N, N, N, N, N, N -- GAP/SEC/SEM/BI-08-C: delete link keys, N, N, N, N, N, N, ... N - requires LEVEL_4 -- GAP/SEC/SEM/BI-17-C: delete link keys, N, N, N, N, N, N, ... N - requires LEVEL_4 -- GAP/SEC/SEM/BI-18-C: delete link keys, N, N, N, N, N, N, ... N - requires LEVEL_4 -- GAP/SEC/SEM/BI-19-C: delete link keys, N, N, N, N, N, N, ... N - requires LEVEL_4 -- GAP/SEC/SEM/BI-09-C: C, K, a -- GAP/SEC/SEM/BI-20-C: C, K, a -- GAP/SEC/SEM/BI-21-C: C, K, a -- GAP/SEC/SEM/BI-10-C: C, K, { p, b, t } -- GAP/SEC/SEM/BI-22-C: C, K, { p, b, t } -- GAP/SEC/SEM/BI-23-C: C, K, { p, b, t } -- GAP/SEC/SEM/BV-05-C: 2, d, N, t -- GAP/SEC/SEM/BV-06-C: 2, d, N, t -- GAP/SEC/SEM/BV-07-C: 2, d, M, N, t -- GAP/SEC/SEM/BV-08-C: F, N, t, N, "ok" -- GAP/SEC/SEM/BV-09-C: F, 2, N, 3, N, t -- GAP/SEC/SEM/BV-10-C -> GAP Peripheral -- GAP/SEC/SEM/BV-16-C: REQUIRE - PTS v4.0 Dongle without BR/EDR SC. 4, N -- GAP/SEC/SEM/BV-17-C: F, K, N -- GAP/SEC/SEM/BV-18-C: 3, F, N -- GAP/SEC/SEM/BV-19-C: 3, F, N -- GAP/SEC/SEM/BV-20-C: 4, F, N -- GAP/SEC/SEM/BV-26-C: F, 5, M, J, p, g0009, b -- GAP/SEC/SEM/BV-41-C: F, 5, m, J, p, g0009, b -- GAP/SEC/SEM/BV-42-C: F, 5, M, J, p, g0009, b -- GAP/SEC/SEM/BV-27-C: F, 5, M, J, p, 000f -- GAP/SEC/SEM/BV-43-C: F, 5, m, J, p, 0011 -- GAP/SEC/SEM/BV-44-C: F, 5, M, J, p, 000f -- GAP/SEC/SEM/BV-28-C: K, p, G0009, b -- GAP/SEC/SEM/BV-29-C: K, p, 000f -- GAP/SEC/SEM/BV-30-C: K, p, G009, b, N - - GAP/PRIV/CONN/BV-10-C -> GAP Peripheral - GAP/PRIV/CONN/BV-11-C: p, b, P @@ -176,8 +230,8 @@ GAP/SEC/SEM/BI-05-C - GAP/DM/NCON/BV-01-C: c, a (we need to enable non-connectable advertisements) - GAP/DM/CON/BV-01-C: C, a -- GAP/DM/NBON/BV-01-C: C, d, p, p, p -- GAP/DM/BON/BV-01-C: C, D, t, p, b, p, b +- GAP/DM/NBON/BV-01-C: F - restart tester - C, d, p, p, p +- GAP/DM/BON/BV-01-C: C, D, N, t, p, b, p, b - GAP/DM/GIN/BV-01-C: i, s - GAP/DM/LIN/BV-01-C: I, wait for PTS to show up, s, "OK" if "LE Limited Discoverable Mode" - GAP/DM/NAD/BV-01-C: i @@ -186,10 +240,26 @@ GAP/SEC/SEM/BI-05-C - GAP/DM/LEP/BV-02-C: C (Test requires an old dongle, but it passes with 5.0 dongle) - GAP/DM/LEP/BV-04-C: 9, t - GAP/DM/LEP/BV-05-C: 9, t (Test requires an old dongle, but it passes with 5.0 dongle) -- GAP/DM/LEP/BV-06-C: p +- GAP/DM/LEP/BV-06-C: p - Test requires LE-only dongle on PTS side - GAP/DM/LEP/BV-07-C: C, a, - GAP/DM/LEP/BV-08-C: C, a, - GAP/DM/LEP/BV-11:C: C, wait quite a while, p, t +- GAP/DM/LEP/BV-12:C: NEW CTKD LE -> BR/EDR +- GAP/DM/LEP/BV-13:C: NEW CTKD Upgrade +- GAP/DM/LEP/BV-14:C: NEW CTKD LE -> BR/EDR +- GAP/DM/LEP/BV-15:C: NEW CTKD LE -> BR/EDR +- GAP/DM/LEP/BV-16:C: NEW CTKD LE -> BR/EDR +- GAP/DM/LEP/BV-17:C: NEW CTKD BR/EDR -> LE +- GAP/DM/LEP/BV-18:C: NEW CTKD BR/EDR -> LE +- GAP/DM/LEP/BV-19:C: NEW CTKD BR/EDR -> LE +- GAP/DM/LEP/BV-20:C: NEW CTKD BR/EDR -> LE - don't overwrite stronger key +- GAP/DM/LEP/BV-21:C: NEW CTKD BR/EDR -> LE - don't overwrite stronger key +- GAP/DM/LEP/BV-22:C: NEW CTKD LE -> BR/EDR - don't overwrite stronger key +- GAP/DM/LEP/BV-23:C: NEW CTKD LE -> BR/EDR - don't overwrite stronger key +- GAP/DM/LEP/BI-01:C: NEW CTKD BR/EDR -> LE - P192 not sufficient +- GAP/DM/LEP/BI-02:C: NEW CTKD BR/EDR -> LE - P192 not sufficient + +- GAP/MOD/* -> GAP Peripheral ## TODO diff --git a/test/pts/gap_peripheral_test.c b/test/pts/gap_peripheral_test.c index dea5ad2a7..b69d77ce5 100644 --- a/test/pts/gap_peripheral_test.c +++ b/test/pts/gap_peripheral_test.c @@ -133,9 +133,9 @@ static void show_usage(void); static void update_advertisements(void); -static bd_addr_t tester_address = {0x00, 0x1B, 0xDC, 0x07, 0x32, 0xef}; +// static bd_addr_t tester_address = {0x00, 0x1B, 0xDC, 0x07, 0x32, 0xef}; // static bd_addr_t tester_address = {0x00, 0x1B, 0xDC, 0x06, 0x07, 0x5F}; -// static bd_addr_t tester_address = {0x00, 0x1B, 0xDC, 0x08, 0xe2, 0x72}; +static bd_addr_t tester_address = {0x00, 0x1B, 0xDC, 0x08, 0xe2, 0x72}; static int tester_address_type = 0; // general discoverable flags @@ -742,7 +742,7 @@ void show_usage(void){ printf("6 - AD Services | - - AD Appearance\n"); printf("---\n"); printf("p/P - privacy flag off\n"); - printf("F - delete bonding information"); + printf("F - delete bonding information\n"); printf("s - send security request\n"); printf("z - send Connection Parameter Update Request\n"); printf("Z - terminate connection\n"); @@ -754,6 +754,7 @@ void show_usage(void){ printf("g - IO_CAPABILITY_NO_INPUT_NO_OUTPUT\n"); printf("h - IO_CAPABILITY_KEYBOARD_ONLY\n"); printf("i - IO_CAPABILITY_KEYBOARD_DISPLAY\n"); + printf("E - Reject SSP bonding\n"); printf("o/O - OOB data off/on ('%s')\n", sm_oob_data); printf("m/M - MITM protection off\n"); printf("k/k - encryption key range [7..16]/[16..16]\n"); @@ -1028,27 +1029,26 @@ static void stdin_process(char c){ case 'e': sm_io_capabilities = "IO_CAPABILITY_DISPLAY_ONLY"; sm_set_io_capabilities(IO_CAPABILITY_DISPLAY_ONLY); - // show_usage(); break; case 'f': sm_io_capabilities = "IO_CAPABILITY_DISPLAY_YES_NO"; sm_set_io_capabilities(IO_CAPABILITY_DISPLAY_YES_NO); - // show_usage(); break; case 'g': sm_io_capabilities = "IO_CAPABILITY_NO_INPUT_NO_OUTPUT"; sm_set_io_capabilities(IO_CAPABILITY_NO_INPUT_NO_OUTPUT); - // show_usage(); break; case 'h': sm_io_capabilities = "IO_CAPABILITY_KEYBOARD_ONLY"; sm_set_io_capabilities(IO_CAPABILITY_KEYBOARD_ONLY); - // show_usage(); break; case 'i': sm_io_capabilities = "IO_CAPABILITY_KEYBOARD_DISPLAY"; sm_set_io_capabilities(IO_CAPABILITY_KEYBOARD_DISPLAY); - // show_usage(); + break; + case 'E': + printf("Reject SSP bonding\n"); + gap_ssp_set_io_capability(SSP_IO_CAPABILITY_UNKNOWN); break; case 'Z': printf("Terminating connection\n"); @@ -1070,39 +1070,31 @@ static void stdin_process(char c){ break; case 'p': gap_privacy = 0; - // show_usage(); break; case 'P': gap_privacy = 1; - // show_usage(); break; case 'o': sm_have_oob_data = 0; - // show_usage(); break; case 'O': sm_have_oob_data = 1; - // show_usage(); break; case 'k': sm_min_key_size = 7; sm_set_encryption_key_size_range(7, 16); - // show_usage(); break; case 'K': sm_min_key_size = 16; sm_set_encryption_key_size_range(16, 16); - // show_usage(); break; case 'm': sm_mitm_protection = 0; update_auth_req(); - // show_usage(); break; case 'M': sm_mitm_protection = 1; update_auth_req(); - // show_usage(); break; case 'j': printf("Create L2CAP Connection to %s\n", bd_addr_to_str(tester_address)); @@ -1188,8 +1180,9 @@ int btstack_main(int argc, const char * argv[]){ hci_disable_l2cap_timeout_check(); // provide L2CAP Service - gap_set_security_level(LEVEL_3); - l2cap_register_service(l2cap_packet_handler, 0x1001, 100, LEVEL_3); + gap_security_level_t security_level = LEVEL_2; + gap_set_security_level(security_level); + l2cap_register_service(l2cap_packet_handler, 0x1001, 100, security_level); // register for HCI Events hci_event_callback_registration.callback = &app_packet_handler; diff --git a/test/pts/gap_peripheral_test.md b/test/pts/gap_peripheral_test.md index 39e68338e..92f174798 100644 --- a/test/pts/gap_peripheral_test.md +++ b/test/pts/gap_peripheral_test.md @@ -20,7 +20,7 @@ Set TSPX_iut_private_address_interval to 60000 (default 5 seconds, but GAP/BROB/ - GAP/DISC/NONM/BV-02-C: d, C, A - GAP/DISC/LIMM/BV-01-C: T, A, a (wait 30 sec) -- GAP/DISC/LIMM/BV-01-C: T, C, A, a (wait 30 sec) +- GAP/DISC/LIMM/BV-02-C: T, C, A, a (wait 30 sec) - GAP/DISC/GENM/BV-01-C: D, a, d - GAP/DISC/GENM/BV-02-C: D, A, C @@ -43,8 +43,14 @@ Set TSPX_iut_private_address_interval to 60000 (default 5 seconds, but GAP/BROB/ - GAP/IDLE/NAMP/BV-02-C: C, A - GAP/IDLE/GIN/BV-01-C -> GAP Central + +- GAP/IDLE/DNDIS/BV-01-C: D + +- GAP/IDLE/LIN/BV-01-C: -> GAP Central - GAP/IDLE/DED/BV-02-C -> GAP Central +- +- GAP/IDLE/BON/* -> GAP Central - GAP/CONN/NCON/BV-01-C: c, A - GAP/CONN/NCON/BV-02-C: c, D, A @@ -80,36 +86,39 @@ Set TSPX_iut_private_address_interval to 60000 (default 5 seconds, but GAP/BROB/ - GAP/CONN/PRDA/BV-01-C -> GAP Central - GAP/CONN/PRDA/BV-02-C -> GAP Central +- GAP/EST/LIE/BV-02-C -> GAP Central + - BOND -> GAP Central -- GAP/SEC/AUT/BV-02-C: delete link keys, u, C -- GAP/SEC/AUT/BV-11-C: C, M, e, A, 18 -- GAP/SEC/AUT/BV-12-C -> GAP Central -- GAP/SEC/AUT/BV-13-C -> GAP Central -- GAP/SEC/AUT/BV-14-C: C, M, e, A, 18 -- GAP/SEC/AUT/BV-17-C -> GAP Central -- GAP/SEC/AUT/BV-18-C -> GAP Central -- GAP/SEC/AUT/BV-19-C -> GAP Central -- GAP/SEC/AUT/BV-20-C -> GAP Central -- GAP/SEC/AUT/BV-21-C -> GAP Central -- GAP/SEC/AUT/BV-22-C -> GAP Central -- GAP/SEC/AUT/BV-23-C: C, M, e, B, A, 18, -- GAP/SEC/AUT/BV-24-C -> GAP Central - -- GAP/SEC/CSIGN/BV-01-C -> GAP Central -- GAP/SEC/CSIGN/BV-02-C -> GAP Central -- GAP/SEC/CSIGN/BI-01-C -> GAP Central -- GAP/SEC/CSIGN/BI-02-C -> GAP Central -- GAP/SEC/CSIGN/BI-03-C -> GAP Central -- GAP/SEC/CSIGN/BI-04-C -> GAP Central - - GAP/SEC/SEM/BV-02-C: u, (wait) - GAP/SEC/SEM/BV-04-C: (wait) +- GAP/SEC/SEM/BV-05-C -> GAP Central +- GAP/SEC/SEM/BV-50-C -> GAP Central +- GAP/SEC/SEM/BV-06-C -> GAP Central +- GAP/SEC/SEM/BV-51-C -> GAP Central +- GAP/SEC/SEM/BV-07-C -> GAP Central +- GAP/SEC/SEM/BV-52-C -> GAP Central +- GAP/SEC/SEM/BV-08-C -> GAP Central +- GAP/SEC/SEM/BV-09-C -> GAP Central +- GAP/SEC/SEM/BV-53-C -> GAP Central +- GAP/SEC/SEM/BV-10-C: F, C, D +- GAP/SEC/SEM/BI-24-C: F, C, D, ??? +- GAP/SEC/SEM/BV-46-C: NEW LE CBM - GAP/SEC/SEM/BV-11-C: REQUIRE - PTS v4.0 Dongle without BR/EDR SC. C, D, J - GAP/SEC/SEM/BV-12-C: F, C, D, J - GAP/SEC/SEM/BV-13-C: F, C, D, M, B +- GAP/SEC/SEM/BV-47-C: C, D - GAP/SEC/SEM/BV-14-C: F, C, D -- GAP/SEC/SEM/BV-15-C: Set L2CAP Service Level to 4, F, C, D +- GAP/SEC/SEM/BV-48-C: C, D +- GAP/SEC/SEM/BV-15-C: Set L2CAP Service Level to 4 in gap_peripheral_test.c, F, C, D +- GAP/SEC/SEM/BV-49-C: Set L2CAP Service Level to 4 in gap_peripheral_test.c, F, C, D +- GAP/SEC/SEM/BV-16-C -> GAP Central +- GAP/SEC/SEM/BV-17-C -> GAP Central +- GAP/SEC/SEM/BV-18-C -> GAP Central +- GAP/SEC/SEM/BV-54-C -> GAP Central +- GAP/SEC/SEM/BV-19-C -> GAP Central +- GAP/SEC/SEM/BV-55-C -> GAP Central +- GAP/SEC/SEM/BV-20-C -> GAP Central - GAP/SEC/SEM/BV-21-C -> GAP Central - GAP/SEC/SEM/BV-37-C -> GAP Central - GAP/SEC/SEM/BV-38-C -> GAP Central @@ -119,7 +128,20 @@ Set TSPX_iut_private_address_interval to 60000 (default 5 seconds, but GAP/BROB/ - GAP/SEC/SEM/BV-23-C -> GAP Central - GAP/SEC/SEM/BV-24-C -> GAP Central - GAP/SEC/SEM/BV-25-C -> GAP Central -- GAP/SEC/SEM/BI-01-C: u, C, D (PTS says "send Connection Response" although we did, just wait), ca 3 minnutes +- GAP/SEC/SEM/BV-26-C -> GAP Central +- GAP/SEC/SEM/BV-41-C -> GAP Central +- GAP/SEC/SEM/BV-42-C -> GAP Central +- GAP/SEC/SEM/BV-27-C -> GAP Central +- GAP/SEC/SEM/BV-43-C -> GAP Central +- GAP/SEC/SEM/BV-44-C -> GAP Central +- GAP/SEC/SEM/BV-28-C -> GAP Central +- GAP/SEC/SEM/BV-29-C -> GAP Central +- GAP/SEC/SEM/BV-30-C -> GAP Central +- GAP/SEC/SEM/BV-31-C: not supported yet - LE Security Mode 3` +- GAP/SEC/SEM/BV-32-C: not supported yet - LE Security Mode 3 +- GAP/SEC/SEM/BV-34-C: not supported yet - LE Security Mode 3 +- GAP/SEC/SEM/BV-35-C: not supported yet - LE Security Mode 3 +- GAP/SEC/SEM/BI-01-C: u, C, D (PTS says "send Connection Response" although we did), wait ca. 3 minutes - GAP/SEC/SEM/BI-11-C: Set L2CAP Service Level to 1 - C, D - GAP/SEC/SEM/BI-02-C: Set L2CAP Service Level to 2 - C, D - GAP/SEC/SEM/BI-03-C: Set L2CAP Service Level to 2 - C, D @@ -146,7 +168,6 @@ Set TSPX_iut_private_address_interval to 60000 (default 5 seconds, but GAP/BROB/ - GAP/SEC/SEM/BV-07-C -> GAP Central - GAP/SEC/SEM/BV-08-C -> GAP Central - GAP/SEC/SEM/BV-09-C -> GAP Central -- GAP/SEC/SEM/BV-10-C: F, C, D - GAP/SEC/SEM/BV-16-C -> GAP Central - GAP/SEC/SEM/BV-17-C -> GAP Central - GAP/SEC/SEM/BV-18-C -> GAP Central @@ -161,6 +182,27 @@ Set TSPX_iut_private_address_interval to 60000 (default 5 seconds, but GAP/BROB/ - GAP/SEC/SEM/BV-28-C -> GAP Central - GAP/SEC/SEM/BV-29-C -> GAP Central - GAP/SEC/SEM/BV-30-C -> GAP Central +- +- GAP/SEC/AUT/BV-02-C: delete link keys, u, C +- GAP/SEC/AUT/BV-11-C: C, M, e, A, 18 +- GAP/SEC/AUT/BV-12-C -> GAP Central +- GAP/SEC/AUT/BV-13-C -> GAP Central +- GAP/SEC/AUT/BV-14-C: C, M, e, A, 18 +- GAP/SEC/AUT/BV-17-C -> GAP Central +- GAP/SEC/AUT/BV-18-C -> GAP Central +- GAP/SEC/AUT/BV-19-C -> GAP Central +- GAP/SEC/AUT/BV-20-C -> GAP Central +- GAP/SEC/AUT/BV-21-C -> GAP Central +- GAP/SEC/AUT/BV-22-C -> GAP Central +- GAP/SEC/AUT/BV-23-C: C, M, e, B, A, 18, +- GAP/SEC/AUT/BV-24-C -> GAP Central + +- GAP/SEC/CSIGN/BV-01-C -> GAP Central +- GAP/SEC/CSIGN/BV-02-C -> GAP Central +- GAP/SEC/CSIGN/BI-01-C -> GAP Central +- GAP/SEC/CSIGN/BI-02-C -> GAP Central +- GAP/SEC/CSIGN/BI-03-C -> GAP Central +- GAP/SEC/CSIGN/BI-04-C -> GAP Central - GAP/PRIV/CONN/BV-10-C: C, A, Z, R, C, A, Z - GAP/PRIV/CONN/BV-11-C -> GAP Central @@ -191,9 +233,13 @@ Set TSPX_iut_private_address_interval to 60000 (default 5 seconds, but GAP/BROB/ - GAP/MOD/LDIS/BV-02-C: T, D - GAP/MOD/LDIS/BV-03-C: T, D, t, d -- GAP/MOD/LDIS/BV-01-C: D, A -- GAP/MOD/LDIS/BV-02-C: D, A +- GAP/MOD/GDIS/BV-01-C: D, A +- GAP/MOD/GDIS/BV-02-C: t, D, A - GAP/MOD/NCON/BV-01-C: c - GAP/MOD/CON/BV-01-C: C + +- GAP/MOD/NBON/BV-02-C: E, C +- GAP/MOD/NBON/BV-03-C: Set L2CAP Service Level to 2, b, C +