You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
7.4 KiB
195 lines
7.4 KiB
4 months ago
|
/*
|
||
|
* 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 "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/hcimsgs.h"
|
||
|
#include "types/raw_address.h"
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* Function BTM_SecAddDevice
|
||
|
*
|
||
|
* Description Add/modify device. This function will be normally called
|
||
|
* during host startup to restore all required information
|
||
|
* stored in the NVRAM.
|
||
|
*
|
||
|
* Parameters: bd_addr - BD address of the peer
|
||
|
* dev_class - Device Class
|
||
|
* bd_name - Name of the peer device. NULL if unknown.
|
||
|
* features - Remote device's features (up to 3 pages).
|
||
|
* NULL if not known
|
||
|
* link_key - Connection link key. NULL if unknown.
|
||
|
*
|
||
|
* Returns true if added OK, else false
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
bool BTM_SecAddDevice(const RawAddress& bd_addr, DEV_CLASS dev_class,
|
||
|
BD_NAME bd_name, uint8_t* features, LinkKey* p_link_key,
|
||
|
uint8_t key_type, uint8_t pin_length);
|
||
|
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_consolidate_dev
|
||
|
5**
|
||
|
* Description combine security records if identified as same peer
|
||
|
*
|
||
|
* Returns none
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
void btm_consolidate_dev(tBTM_SEC_DEV_REC* p_target_rec);
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* 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);
|