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.
242 lines
9.7 KiB
242 lines
9.7 KiB
/****************************************************************************** |
|
* |
|
* Copyright (C) 1999-2012 Broadcom Corporation |
|
* |
|
* 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. |
|
* |
|
******************************************************************************/ |
|
|
|
/****************************************************************************** |
|
* |
|
* This file contains the SMP API function external definitions. |
|
* |
|
******************************************************************************/ |
|
#ifndef SMP_API_H |
|
#define SMP_API_H |
|
|
|
#include "bt_target.h" |
|
#include "smp_api_types.h" |
|
|
|
/***************************************************************************** |
|
* External Function Declarations |
|
****************************************************************************/ |
|
/* API of SMP */ |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_Init |
|
* |
|
* Description This function initializes the SMP unit. |
|
* |
|
* Returns void |
|
* |
|
******************************************************************************/ |
|
extern void SMP_Init(void); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_SetTraceLevel |
|
* |
|
* Description This function sets the trace level for SMP. If called with |
|
* a value of 0xFF, it simply returns the current trace level. |
|
* |
|
* Returns The new or current trace level |
|
* |
|
******************************************************************************/ |
|
extern uint8_t SMP_SetTraceLevel(uint8_t new_level); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_Register |
|
* |
|
* Description This function register for the SMP service callback. |
|
* |
|
* Returns void |
|
* |
|
******************************************************************************/ |
|
extern bool SMP_Register(tSMP_CALLBACK* p_cback); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_Pair |
|
* |
|
* Description This function is called to start a SMP pairing. |
|
* |
|
* Returns SMP_STARTED if bond started, else otherwise exception. |
|
* |
|
******************************************************************************/ |
|
extern tSMP_STATUS SMP_Pair(const RawAddress& bd_addr); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_BR_PairWith |
|
* |
|
* Description This function is called to start a SMP pairing over BR/EDR. |
|
* |
|
* Returns SMP_STARTED if pairing started, otherwise the reason for the |
|
* failure. |
|
* |
|
******************************************************************************/ |
|
extern tSMP_STATUS SMP_BR_PairWith(const RawAddress& bd_addr); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_PairCancel |
|
* |
|
* Description This function is called to cancel a SMP pairing. |
|
* |
|
* Returns true - pairing cancelled |
|
* |
|
******************************************************************************/ |
|
extern bool SMP_PairCancel(const RawAddress& bd_addr); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_SecurityGrant |
|
* |
|
* Description This function is called to grant security process. |
|
* |
|
* Parameters bd_addr - peer device bd address. |
|
* res - result of the operation SMP_SUCCESS if success. |
|
* Otherwise, SMP_REPEATED_ATTEMPTS is too many |
|
* attempts. |
|
* |
|
* Returns None |
|
* |
|
******************************************************************************/ |
|
extern void SMP_SecurityGrant(const RawAddress& bd_addr, uint8_t res); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_PasskeyReply |
|
* |
|
* Description This function is called after Security Manager submitted |
|
* Passkey request to the application. |
|
* |
|
* Parameters: bd_addr - Address of the device for which PIN was requested |
|
* res - result of the operation SMP_SUCCESS if success |
|
* passkey - numeric value in the range of |
|
* BTM_MIN_PASSKEY_VAL(0) - |
|
* BTM_MAX_PASSKEY_VAL(999999(0xF423F)). |
|
* |
|
******************************************************************************/ |
|
extern void SMP_PasskeyReply(const RawAddress& bd_addr, uint8_t res, |
|
uint32_t passkey); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_ConfirmReply |
|
* |
|
* Description This function is called after Security Manager submitted |
|
* numeric comparison request to the application. |
|
* |
|
* Parameters: bd_addr - Address of the device with which numeric |
|
* comparison was requested |
|
* res - comparison result SMP_SUCCESS if success |
|
* |
|
******************************************************************************/ |
|
extern void SMP_ConfirmReply(const RawAddress& bd_addr, uint8_t res); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_OobDataReply |
|
* |
|
* Description This function is called to provide the OOB data for |
|
* SMP in response to SMP_OOB_REQ_EVT |
|
* |
|
* Parameters: bd_addr - Address of the peer device |
|
* res - result of the operation SMP_SUCCESS if success |
|
* p_data - SM Randomizer C. |
|
* |
|
******************************************************************************/ |
|
extern void SMP_OobDataReply(const RawAddress& bd_addr, tSMP_STATUS res, |
|
uint8_t len, uint8_t* p_data); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_SecureConnectionOobDataReply |
|
* |
|
* Description This function is called to provide the SC OOB data for |
|
* SMP in response to SMP_SC_OOB_REQ_EVT |
|
* |
|
* Parameters: p_data - pointer to the data |
|
* |
|
******************************************************************************/ |
|
extern void SMP_SecureConnectionOobDataReply(uint8_t* p_data); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_Encrypt |
|
* |
|
* Description Encrypt the data with the specified key. |
|
* |
|
* Parameters: key - Pointer to key key[0] conatins the MSB |
|
* key_len - key length |
|
* plain_text - Pointer to data to be encrypted |
|
* plain_text[0] conatins the MSB |
|
* pt_len - plain text length |
|
* p_out - pointer to the encrypted outputs |
|
* |
|
* Returns Boolean - true: encryption is successful |
|
******************************************************************************/ |
|
extern bool SMP_Encrypt(uint8_t* key, uint8_t key_len, uint8_t* plain_text, |
|
uint8_t pt_len, tSMP_ENC* p_out); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_KeypressNotification |
|
* |
|
* Description Notify SM about Keypress Notification. |
|
* |
|
* Parameters: bd_addr - Address of the device to send keypress |
|
* notification to |
|
* value - keypress notification parameter value |
|
* |
|
******************************************************************************/ |
|
extern void SMP_KeypressNotification(const RawAddress& bd_addr, uint8_t value); |
|
|
|
/******************************************************************************* |
|
* |
|
* Function SMP_CreateLocalSecureConnectionsOobData |
|
* |
|
* Description This function is called to start creation of local SC OOB |
|
* data set (tSMP_LOC_OOB_DATA). |
|
* |
|
* Parameters: bd_addr - Address of the device to send OOB data block |
|
* to. |
|
* |
|
* Returns Boolean - true: creation of local SC OOB data set started. |
|
******************************************************************************/ |
|
extern bool SMP_CreateLocalSecureConnectionsOobData( |
|
tBLE_BD_ADDR* addr_to_send_to); |
|
|
|
// Called when LTK request is received from controller. |
|
extern bool smp_proc_ltk_request(const RawAddress& bda); |
|
|
|
// Called when link is encrypted and notified to slave device. |
|
// Proceed to send LTK, DIV and ER to master if bonding the devices. |
|
extern void smp_link_encrypted(const RawAddress& bda, uint8_t encr_enable); |
|
|
|
// |
|
// The AES-CMAC Generation Function with tlen implemented. |
|
// |key| - CMAC key in little endian order, expect SRK when used by SMP. |
|
// |input| - text to be signed in little endian byte order. |
|
// |length| - length of the input in byte. |
|
// |tlen| - lenth of mac desired |
|
// |p_signature| - data pointer to where signed data to be stored, tlen long. |
|
// Returns false if out of resources, true in other cases. |
|
// |
|
bool aes_cipher_msg_auth_code(BT_OCTET16 key, uint8_t* input, uint16_t length, |
|
uint16_t tlen, uint8_t* p_signature); |
|
|
|
#endif /* SMP_API_H */
|
|
|