213 lines
7.8 KiB
C++
213 lines
7.8 KiB
C++
/*
|
|
* Copyright 2020 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include <functional>
|
|
|
|
#include "osi/include/log.h"
|
|
#include "stack/btm/btm_ble_int.h"
|
|
#include "stack/btm/security_device_record.h"
|
|
#include "stack/include/acl_api.h"
|
|
#include "stack/include/bt_octets.h"
|
|
#include "types/raw_address.h"
|
|
|
|
void wipe_secrets_and_remove(tBTM_SEC_DEV_REC* p_dev_rec);
|
|
|
|
/** Free resources associated with the device associated with |bd_addr| address.
|
|
*
|
|
* *** WARNING ***
|
|
* tBTM_SEC_DEV_REC associated with bd_addr becomes invalid after this function
|
|
* is called, also any of it's fields. i.e. if you use p_dev_rec->bd_addr, it is
|
|
* no longer valid!
|
|
* *** WARNING ***
|
|
*
|
|
* Returns true if removed OK, false if not found or ACL link is active.
|
|
*/
|
|
bool BTM_SecDeleteDevice(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SecClearSecurityFlags
|
|
*
|
|
* Description Reset the security flags (mark as not-paired) for a given
|
|
* remove device.
|
|
*
|
|
******************************************************************************/
|
|
void BTM_SecClearSecurityFlags(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SecReadDevName
|
|
*
|
|
* Description Looks for the device name in the security database for the
|
|
* specified BD address.
|
|
*
|
|
* Returns Pointer to the name or NULL
|
|
*
|
|
******************************************************************************/
|
|
char* BTM_SecReadDevName(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_sec_alloc_dev
|
|
*
|
|
* Description Look for the record in the device database for the record
|
|
* with specified address
|
|
*
|
|
* Returns Pointer to the record or NULL
|
|
*
|
|
******************************************************************************/
|
|
tBTM_SEC_DEV_REC* btm_sec_alloc_dev(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_dev_support_role_switch
|
|
*
|
|
* Description This function is called by the L2CAP to check if remote
|
|
* device supports role switch
|
|
*
|
|
* Parameters: bd_addr - Address of the peer device
|
|
*
|
|
* Returns true if device is known and role switch is supported
|
|
*
|
|
******************************************************************************/
|
|
bool btm_dev_support_role_switch(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_find_dev_by_handle
|
|
*
|
|
* Description Look for the record in the device database for the record
|
|
* with specified handle
|
|
*
|
|
* Returns Pointer to the record or NULL
|
|
*
|
|
******************************************************************************/
|
|
tBTM_SEC_DEV_REC* btm_find_dev_by_handle(uint16_t handle);
|
|
|
|
bool is_address_equal(void* data, void* context);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_find_dev
|
|
*
|
|
* Description Look for the record in the device database for the record
|
|
* with specified BD address
|
|
*
|
|
* Returns Pointer to the record or NULL
|
|
*
|
|
******************************************************************************/
|
|
tBTM_SEC_DEV_REC* btm_find_dev(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_find_dev_with_lenc
|
|
*
|
|
* Description Look for the record in the device database with LTK and
|
|
* specified BD address
|
|
*
|
|
* Returns Pointer to the record or NULL
|
|
*
|
|
******************************************************************************/
|
|
tBTM_SEC_DEV_REC* btm_find_dev_with_lenc(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_consolidate_dev
|
|
*
|
|
* Description combine security records if identified as same peer
|
|
*
|
|
* Returns none
|
|
*
|
|
******************************************************************************/
|
|
void btm_consolidate_dev(tBTM_SEC_DEV_REC* p_target_rec);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_consolidate_dev
|
|
*
|
|
* Description When pairing is finished (i.e. on BR/EDR), this function
|
|
* checks if there are existing LE connections to same device
|
|
* that can now be encrypted and used for profiles requiring
|
|
* encryption.
|
|
*
|
|
* Returns none
|
|
*
|
|
******************************************************************************/
|
|
void btm_dev_consolidate_existing_connections(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_find_or_alloc_dev
|
|
*
|
|
* Description Look for the record in the device database for the record
|
|
* with specified BD address
|
|
*
|
|
* Returns Pointer to the record or NULL
|
|
*
|
|
******************************************************************************/
|
|
tBTM_SEC_DEV_REC* btm_find_or_alloc_dev(const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_sec_allocate_dev_rec
|
|
*
|
|
* Description Attempts to allocate a new device record. If we have
|
|
* exceeded the maximum number of allowable records to
|
|
* allocate, the oldest record will be deleted to make room
|
|
* for the new record.
|
|
*
|
|
* Returns Pointer to the newly allocated record
|
|
*
|
|
******************************************************************************/
|
|
tBTM_SEC_DEV_REC* btm_sec_allocate_dev_rec(void);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_get_bond_type_dev
|
|
*
|
|
* Description Get the bond type for a device in the device database
|
|
* with specified BD address
|
|
*
|
|
* Returns The device bond type if known, otherwise BOND_TYPE_UNKNOWN
|
|
*
|
|
******************************************************************************/
|
|
tBTM_SEC_DEV_REC::tBTM_BOND_TYPE btm_get_bond_type_dev(
|
|
const RawAddress& bd_addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_set_bond_type_dev
|
|
*
|
|
* Description Set the bond type for a device in the device database
|
|
* with specified BD address
|
|
*
|
|
* Returns true on success, otherwise false
|
|
*
|
|
******************************************************************************/
|
|
bool btm_set_bond_type_dev(const RawAddress& bd_addr,
|
|
tBTM_SEC_DEV_REC::tBTM_BOND_TYPE bond_type);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function btm_get_sec_dev_rec
|
|
*
|
|
* Description Get security device records satisfying given filter
|
|
*
|
|
* Returns A vector containing pointers of security device records
|
|
*
|
|
******************************************************************************/
|
|
std::vector<tBTM_SEC_DEV_REC*> btm_get_sec_dev_rec();
|