| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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. |
| */ |
| |
| #ifndef H_BLE_SM_TEST_UTIL_ |
| #define H_BLE_SM_TEST_UTIL_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| struct ble_sm_test_passkey_info { |
| struct ble_sm_io passkey; |
| uint32_t exp_numcmp; |
| unsigned io_before_rx:1; |
| }; |
| |
| struct ble_sm_test_params { |
| uint8_t init_addr_type; |
| uint8_t init_id_addr[6]; |
| uint8_t init_rpa[6]; |
| uint8_t resp_addr_type; |
| uint8_t resp_id_addr[6]; |
| uint8_t resp_rpa[6]; |
| struct ble_sm_test_passkey_info passkey_info; |
| |
| struct ble_sm_sec_req sec_req; |
| struct ble_sm_pair_cmd pair_req; |
| struct ble_sm_pair_cmd pair_rsp; |
| struct ble_sm_pair_confirm confirm_req[20]; |
| struct ble_sm_pair_confirm confirm_rsp[20]; |
| struct ble_sm_pair_random random_req[20]; |
| struct ble_sm_pair_random random_rsp[20]; |
| struct ble_sm_id_info id_info_req; |
| struct ble_sm_id_info id_info_rsp; |
| struct ble_sm_id_addr_info id_addr_info_req; |
| struct ble_sm_id_addr_info id_addr_info_rsp; |
| struct ble_sm_sign_info sign_info_req; |
| struct ble_sm_sign_info sign_info_rsp; |
| struct ble_sm_pair_fail pair_fail; |
| |
| int pair_alg; |
| unsigned authenticated:1; |
| |
| /*** Secure connections fields. */ |
| uint8_t ltk[16]; |
| uint8_t our_priv_key[32]; |
| struct ble_sm_public_key public_key_req; |
| struct ble_sm_public_key public_key_rsp; |
| struct ble_sm_dhkey_check dhkey_check_req; |
| struct ble_sm_dhkey_check dhkey_check_rsp; |
| |
| /*** Legacy fields. */ |
| uint8_t stk[16]; |
| struct ble_sm_enc_info enc_info_req; |
| struct ble_sm_enc_info enc_info_rsp; |
| struct ble_sm_master_id master_id_req; |
| struct ble_sm_master_id master_id_rsp; |
| }; |
| |
| extern int ble_sm_test_gap_event; |
| extern int ble_sm_test_gap_status; |
| extern struct ble_gap_sec_state ble_sm_test_sec_state; |
| |
| extern int ble_sm_test_store_obj_type; |
| extern union ble_store_key ble_sm_test_store_key; |
| extern union ble_store_value ble_sm_test_store_value; |
| |
| void ble_sm_test_util_init(void); |
| int ble_sm_test_util_conn_cb(struct ble_gap_event *ctxt, void *arg); |
| void ble_sm_test_util_io_inject(struct ble_sm_test_passkey_info *passkey_info, |
| uint8_t cur_sm_state); |
| void ble_sm_test_util_io_inject_bad(uint16_t conn_handle, |
| uint8_t correct_io_act); |
| void ble_sm_test_util_io_check_pre( |
| struct ble_sm_test_passkey_info *passkey_info, |
| uint8_t cur_sm_state); |
| void ble_sm_test_util_io_check_post( |
| struct ble_sm_test_passkey_info *passkey_info, |
| uint8_t cur_sm_state); |
| void ble_sm_test_util_rx_sec_req(uint16_t conn_handle, |
| struct ble_sm_sec_req *cmd, |
| int exp_status); |
| void ble_sm_test_util_verify_tx_pair_fail(struct ble_sm_pair_fail *exp_cmd); |
| void ble_sm_test_util_us_lgcy_good(struct ble_sm_test_params *params); |
| void ble_sm_test_util_peer_fail_inval(int we_are_master, |
| uint8_t *init_addr, |
| uint8_t *resp_addr, |
| struct ble_sm_pair_cmd *pair_req, |
| struct ble_sm_pair_fail *pair_fail); |
| void ble_sm_test_util_peer_lgcy_fail_confirm( |
| uint8_t *init_addr, |
| uint8_t *resp_addr, |
| struct ble_sm_pair_cmd *pair_req, |
| struct ble_sm_pair_cmd *pair_rsp, |
| struct ble_sm_pair_confirm *confirm_req, |
| struct ble_sm_pair_confirm *confirm_rsp, |
| struct ble_sm_pair_random *random_req, |
| struct ble_sm_pair_random *random_rsp, |
| struct ble_sm_pair_fail *fail_rsp); |
| |
| void ble_sm_test_util_peer_lgcy_good_once(struct ble_sm_test_params *params); |
| void ble_sm_test_util_peer_lgcy_good(struct ble_sm_test_params *params); |
| void ble_sm_test_util_peer_bonding_bad(uint16_t ediv, uint64_t rand_num); |
| void ble_sm_test_util_peer_sc_good(struct ble_sm_test_params *params); |
| void ble_sm_test_util_us_sc_good(struct ble_sm_test_params *params); |
| void ble_sm_test_util_us_fail_inval(struct ble_sm_test_params *params); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |