| /* | |
| * 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); |