From f5de1303d2fec5d4ddd41f59ced8c06846196818 Mon Sep 17 00:00:00 2001 From: Zach Johnson Date: Tue, 25 Aug 2020 14:34:13 -0700 Subject: [PATCH] Add connect request variants that do security also use them in avct Bug: 159815595 Tag: #refactor Test: compile & verify basic functions working Change-Id: I1d9223b94b90ddd8db4dc94190cd1896a41b52ef --- stack/avct/avct_api.cc | 8 -------- stack/avct/avct_bcb_act.cc | 7 +++---- stack/avct/avct_lcb_act.cc | 6 +++--- stack/include/l2c_api.h | 6 ++++++ stack/l2cap/l2c_api.cc | 13 +++++++++++++ 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/stack/avct/avct_api.cc b/stack/avct/avct_api.cc index 06c2ff0f0..4b38e4b74 100644 --- a/stack/avct/avct_api.cc +++ b/stack/avct/avct_api.cc @@ -68,9 +68,6 @@ void AVCT_Register(uint16_t mtu, UNUSED_ATTR uint16_t mtu_br) { true /* enable_snoop */, nullptr, avct_cb.mtu, BTA_SEC_AUTHENTICATE); - BTM_SimpleSetSecurityLevel(BTM_SEC_SERVICE_AVCTP, BTA_SEC_AUTHENTICATE, - AVCT_PSM); - /* Include the browsing channel which uses eFCR */ tL2CAP_ERTM_INFO ertm_info; ertm_info.preferred_mode = avct_l2c_br_fcr_opts_def.mode; @@ -87,11 +84,6 @@ void AVCT_Register(uint16_t mtu, UNUSED_ATTR uint16_t mtu_br) { true /*enable_snoop*/, &ertm_info, avct_cb.mtu_br, BTA_SEC_AUTHENTICATE); - /* AVCTP browsing channel uses the same security service as AVCTP control - * channel */ - BTM_SimpleSetSecurityLevel(BTM_SEC_SERVICE_AVCTP, BTA_SEC_AUTHENTICATE, - AVCT_BR_PSM); - #if defined(AVCT_INITIAL_TRACE_LEVEL) avct_cb.trace_level = AVCT_INITIAL_TRACE_LEVEL; #else diff --git a/stack/avct/avct_bcb_act.cc b/stack/avct/avct_bcb_act.cc index 645b6e2d9..f208a525a 100644 --- a/stack/avct/avct_bcb_act.cc +++ b/stack/avct/avct_bcb_act.cc @@ -31,6 +31,7 @@ #include "avct_int.h" #include "bt_target.h" #include "bt_utils.h" +#include "bta/include/bta_api.h" #include "btm_api.h" #include "osi/include/osi.h" #include "stack/btm/btm_sec.h" @@ -104,8 +105,6 @@ void avct_bcb_chnl_open(tAVCT_BCB* p_bcb, UNUSED_ATTR tAVCT_LCB_EVT* p_data) { tAVCT_LCB* p_lcb = avct_lcb_by_bcb(p_bcb); tL2CAP_ERTM_INFO ertm_info; - BTM_SetOutService(p_lcb->peer_addr, BTM_SEC_SERVICE_AVCTP_BROWSE, 0); - /* Set the FCR options: Browsing channel mandates ERTM */ ertm_info.preferred_mode = L2CAP_FCR_ERTM_MODE; ertm_info.allowed_modes = L2CAP_FCR_CHAN_OPT_ERTM; @@ -116,8 +115,8 @@ void avct_bcb_chnl_open(tAVCT_BCB* p_bcb, UNUSED_ATTR tAVCT_LCB_EVT* p_data) { /* call l2cap connect req */ p_bcb->ch_state = AVCT_CH_CONN; - p_bcb->ch_lcid = - L2CA_ErtmConnectReq(AVCT_BR_PSM, p_lcb->peer_addr, &ertm_info); + p_bcb->ch_lcid = L2CA_ErtmConnectReq2(AVCT_BR_PSM, p_lcb->peer_addr, + &ertm_info, BTA_SEC_AUTHENTICATE); if (p_bcb->ch_lcid == 0) { /* if connect req failed, send ourselves close event */ tAVCT_LCB_EVT avct_lcb_evt; diff --git a/stack/avct/avct_lcb_act.cc b/stack/avct/avct_lcb_act.cc index 56ec82405..6e4dd4ba9 100644 --- a/stack/avct/avct_lcb_act.cc +++ b/stack/avct/avct_lcb_act.cc @@ -29,6 +29,7 @@ #include "bt_target.h" #include "bt_types.h" #include "bt_utils.h" +#include "bta/include/bta_api.h" #include "btm_api.h" #include "osi/include/osi.h" #include "stack/btm/btm_sec.h" @@ -174,10 +175,9 @@ static BT_HDR* avct_lcb_msg_asmbl(tAVCT_LCB* p_lcb, BT_HDR* p_buf) { void avct_lcb_chnl_open(tAVCT_LCB* p_lcb, UNUSED_ATTR tAVCT_LCB_EVT* p_data) { uint16_t result = AVCT_RESULT_FAIL; - BTM_SetOutService(p_lcb->peer_addr, BTM_SEC_SERVICE_AVCTP, 0); - /* call l2cap connect req */ p_lcb->ch_state = AVCT_CH_CONN; - p_lcb->ch_lcid = L2CA_ConnectReq(AVCT_PSM, p_lcb->peer_addr); + p_lcb->ch_lcid = + L2CA_ConnectReq2(AVCT_PSM, p_lcb->peer_addr, BTA_SEC_AUTHENTICATE); if (p_lcb->ch_lcid == 0) { /* if connect req failed, send ourselves close event */ tAVCT_LCB_EVT avct_lcb_evt; diff --git a/stack/include/l2c_api.h b/stack/include/l2c_api.h index 78c6f81e0..d1088042a 100644 --- a/stack/include/l2c_api.h +++ b/stack/include/l2c_api.h @@ -366,6 +366,8 @@ extern uint16_t L2CA_AllocateLePSM(void); ******************************************************************************/ extern void L2CA_FreeLePSM(uint16_t psm); +extern uint16_t L2CA_ConnectReq2(uint16_t psm, const RawAddress& p_bd_addr, + uint16_t sec_level); /******************************************************************************* * * Function L2CA_ConnectReq @@ -395,6 +397,10 @@ extern uint16_t L2CA_ConnectReq(uint16_t psm, const RawAddress& p_bd_addr); extern bool L2CA_ConnectRsp(const RawAddress& p_bd_addr, uint8_t id, uint16_t lcid, uint16_t result, uint16_t status); +uint16_t L2CA_ErtmConnectReq2(uint16_t psm, const RawAddress& p_bd_addr, + tL2CAP_ERTM_INFO* p_ertm_info, + uint16_t sec_level); + /******************************************************************************* * * Function L2CA_ErtmConnectReq diff --git a/stack/l2cap/l2c_api.cc b/stack/l2cap/l2c_api.cc index 573c332e4..f4beec4ae 100644 --- a/stack/l2cap/l2c_api.cc +++ b/stack/l2cap/l2c_api.cc @@ -292,6 +292,12 @@ void L2CA_FreeLePSM(uint16_t psm) { l2cb.le_dyn_psm_assigned[psm - LE_DYNAMIC_PSM_START] = false; } +uint16_t L2CA_ConnectReq2(uint16_t psm, const RawAddress& p_bd_addr, + uint16_t sec_level) { + BTM_SetSecurityLevel(true, "", 0, sec_level, psm, 0, 0); + return L2CA_ConnectReq(psm, p_bd_addr); +} + /******************************************************************************* * * Function L2CA_ConnectReq @@ -313,6 +319,13 @@ uint16_t L2CA_ConnectReq(uint16_t psm, const RawAddress& p_bd_addr) { return L2CA_ErtmConnectReq(psm, p_bd_addr, nullptr); } +uint16_t L2CA_ErtmConnectReq2(uint16_t psm, const RawAddress& p_bd_addr, + tL2CAP_ERTM_INFO* p_ertm_info, + uint16_t sec_level) { + BTM_SetSecurityLevel(true, "", 0, sec_level, psm, 0, 0); + return L2CA_ErtmConnectReq(psm, p_bd_addr, p_ertm_info); +} + /******************************************************************************* * * Function L2CA_ErtmConnectReq -- 2.11.0