nimble/sm: Move PDU parsing functions to tests Those are now only used by tests to verify PDUs formats.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/a7ddc25c Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/a7ddc25c Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/a7ddc25c Branch: refs/heads/develop Commit: a7ddc25c2c4f5787d90f62f9e9b1d2c4d431c3c2 Parents: a8fb9ff Author: Szymon Janc <[email protected]> Authored: Wed Jan 25 15:13:14 2017 +0100 Committer: Szymon Janc <[email protected]> Committed: Wed Jan 25 15:44:15 2017 +0100 ---------------------------------------------------------------------- net/nimble/host/src/ble_sm_cmd.c | 294 ----------------------- net/nimble/host/src/ble_sm_priv.h | 44 ---- net/nimble/host/test/src/ble_sm_test_util.c | 289 ++++++++++++++++++++++ 3 files changed, 289 insertions(+), 338 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/a7ddc25c/net/nimble/host/src/ble_sm_cmd.c ---------------------------------------------------------------------- diff --git a/net/nimble/host/src/ble_sm_cmd.c b/net/nimble/host/src/ble_sm_cmd.c index 92fc3b4..1503652 100644 --- a/net/nimble/host/src/ble_sm_cmd.c +++ b/net/nimble/host/src/ble_sm_cmd.c @@ -65,40 +65,6 @@ ble_sm_tx(uint16_t conn_handle, struct os_mbuf *txom) #if NIMBLE_BLE_SM void -ble_sm_pair_cmd_parse(void *payload, int len, struct ble_sm_pair_cmd *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_pair_cmd)); - - u8ptr = payload; - cmd->io_cap = u8ptr[0]; - cmd->oob_data_flag = u8ptr[1]; - cmd->authreq = u8ptr[2]; - cmd->max_enc_key_size = u8ptr[3]; - cmd->init_key_dist = u8ptr[4]; - cmd->resp_key_dist = u8ptr[5]; -} - -void -ble_sm_pair_cmd_write(void *payload, int len, int is_req, - struct ble_sm_pair_cmd *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_pair_cmd)); - - u8ptr = payload; - u8ptr[0] = is_req ? BLE_SM_OP_PAIR_REQ : BLE_SM_OP_PAIR_RSP; - u8ptr[1] = cmd->io_cap; - u8ptr[2] = cmd->oob_data_flag; - u8ptr[3] = cmd->authreq; - u8ptr[4] = cmd->max_enc_key_size; - u8ptr[5] = cmd->init_key_dist; - u8ptr[6] = cmd->resp_key_dist; -} - -void ble_sm_pair_cmd_log(struct ble_sm_pair_cmd *cmd) { BLE_HS_LOG(DEBUG, "io_cap=%d oob_data_flag=%d authreq=0x%02x " @@ -110,28 +76,6 @@ ble_sm_pair_cmd_log(struct ble_sm_pair_cmd *cmd) } void -ble_sm_pair_confirm_parse(void *payload, int len, - struct ble_sm_pair_confirm *cmd) -{ - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_pair_confirm)); - memcpy(cmd->value, payload, sizeof cmd->value); -} - -void -ble_sm_pair_confirm_write(void *payload, int len, - struct ble_sm_pair_confirm *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_pair_confirm)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_PAIR_CONFIRM; - memcpy(u8ptr + sizeof(struct ble_sm_hdr), cmd->value, sizeof cmd->value); -} - -void ble_sm_pair_confirm_log(struct ble_sm_pair_confirm *cmd) { BLE_HS_LOG(DEBUG, "value="); @@ -139,29 +83,6 @@ ble_sm_pair_confirm_log(struct ble_sm_pair_confirm *cmd) } void -ble_sm_pair_random_parse(void *payload, int len, - struct ble_sm_pair_random *cmd) -{ - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_pair_random)); - memcpy(cmd->value, payload, sizeof cmd->value); -} - -void -ble_sm_pair_random_write(void *payload, int len, - struct ble_sm_pair_random *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= - sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_pair_random)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_PAIR_RANDOM; - memcpy(u8ptr + sizeof(struct ble_sm_hdr), cmd->value, sizeof cmd->value); -} - -void ble_sm_pair_random_log(struct ble_sm_pair_random *cmd) { BLE_HS_LOG(DEBUG, "value="); @@ -169,55 +90,12 @@ ble_sm_pair_random_log(struct ble_sm_pair_random *cmd) } void -ble_sm_pair_fail_parse(void *payload, int len, struct ble_sm_pair_fail *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_pair_fail)); - - u8ptr = payload; - cmd->reason = u8ptr[0]; -} - -void -ble_sm_pair_fail_write(void *payload, int len, struct ble_sm_pair_fail *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_pair_fail)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_PAIR_FAIL; - u8ptr[1] = cmd->reason; -} - -void ble_sm_pair_fail_log(struct ble_sm_pair_fail *cmd) { BLE_HS_LOG(DEBUG, "reason=%d", cmd->reason); } void -ble_sm_enc_info_parse(void *payload, int len, struct ble_sm_enc_info *cmd) -{ - memcpy(cmd->ltk, payload, sizeof cmd->ltk); -} - -void -ble_sm_enc_info_write(void *payload, int len, struct ble_sm_enc_info *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_enc_info)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_ENC_INFO; - memcpy(u8ptr + 1, cmd->ltk, sizeof cmd->ltk); -} - -void ble_sm_enc_info_log(struct ble_sm_enc_info *cmd) { BLE_HS_LOG(DEBUG, "ltk="); @@ -225,31 +103,6 @@ ble_sm_enc_info_log(struct ble_sm_enc_info *cmd) } void -ble_sm_master_id_parse(void *payload, int len, struct ble_sm_master_id *cmd) -{ - uint8_t *u8ptr; - - u8ptr = payload; - - cmd->ediv = get_le16(u8ptr); - cmd->rand_val = get_le64(u8ptr + 2); -} - -void -ble_sm_master_id_write(void *payload, int len, struct ble_sm_master_id *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_master_id)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_MASTER_ID; - put_le16(u8ptr + 1, cmd->ediv); - put_le64(u8ptr + 3, cmd->rand_val); -} - -void ble_sm_master_id_log(struct ble_sm_master_id *cmd) { /* These get logged separately to accommodate a bug in the va_args @@ -260,25 +113,6 @@ ble_sm_master_id_log(struct ble_sm_master_id *cmd) } void -ble_sm_id_info_parse(void *payload, int len, struct ble_sm_id_info *cmd) -{ - memcpy(cmd->irk, payload, 16); -} - -void -ble_sm_id_info_write(void *payload, int len, struct ble_sm_id_info *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_id_info)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_IDENTITY_INFO; - memcpy(u8ptr + sizeof(struct ble_sm_hdr), cmd->irk, sizeof cmd->irk); -} - -void ble_sm_id_info_log(struct ble_sm_id_info *cmd) { BLE_HS_LOG(DEBUG, "irk="); @@ -286,30 +120,6 @@ ble_sm_id_info_log(struct ble_sm_id_info *cmd) } void -ble_sm_id_addr_info_parse(void *payload, int len, - struct ble_sm_id_addr_info *cmd) -{ - uint8_t *u8ptr = payload; - cmd->addr_type = *u8ptr; - memcpy(cmd->bd_addr, u8ptr + 1, 6); -} - -void -ble_sm_id_addr_info_write(void *payload, int len, - struct ble_sm_id_addr_info *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_id_addr_info)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_IDENTITY_ADDR_INFO; - u8ptr[1] = cmd->addr_type; - memcpy(u8ptr + 2, cmd->bd_addr, sizeof cmd->bd_addr); -} - -void ble_sm_id_addr_info_log(struct ble_sm_id_addr_info *cmd) { BLE_HS_LOG(DEBUG, "addr_type=%d addr=", cmd->addr_type); @@ -317,25 +127,6 @@ ble_sm_id_addr_info_log(struct ble_sm_id_addr_info *cmd) } void -ble_sm_sign_info_parse(void *payload, int len, struct ble_sm_sign_info *cmd) -{ - memcpy(cmd->sig_key, payload, 16); -} - -void -ble_sm_sign_info_write(void *payload, int len, struct ble_sm_sign_info *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_sign_info)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_SIGN_INFO; - memcpy(u8ptr + sizeof(struct ble_sm_hdr), cmd->sig_key, sizeof cmd->sig_key); -} - -void ble_sm_sign_info_log(struct ble_sm_sign_info *cmd) { BLE_HS_LOG(DEBUG, "sig_key="); @@ -343,70 +134,12 @@ ble_sm_sign_info_log(struct ble_sm_sign_info *cmd) } void -ble_sm_sec_req_parse(void *payload, int len, struct ble_sm_sec_req *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_sec_req)); - - u8ptr = payload; - cmd->authreq = *u8ptr; -} - -void -ble_sm_sec_req_write(void *payload, int len, struct ble_sm_sec_req *cmd) -{ - uint8_t *u8ptr; - - BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_sec_req)); - - u8ptr = payload; - - u8ptr[0] = BLE_SM_OP_SEC_REQ; - u8ptr[1] = cmd->authreq; -} - -void ble_sm_sec_req_log(struct ble_sm_sec_req *cmd) { BLE_HS_LOG(DEBUG, "authreq=0x%02x", cmd->authreq); } void -ble_sm_public_key_parse(void *payload, int len, struct ble_sm_public_key *cmd) -{ - uint8_t *u8ptr; - - u8ptr = payload; - - memcpy(cmd->x, u8ptr, sizeof cmd->x); - u8ptr += sizeof cmd->x; - - memcpy(cmd->y, u8ptr, sizeof cmd->y); - u8ptr += sizeof cmd->y; -} - -int -ble_sm_public_key_write(void *payload, int len, struct ble_sm_public_key *cmd) -{ - uint8_t *u8ptr; - - if (len < sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_public_key)) { - return BLE_HS_EMSGSIZE; - } - - u8ptr = payload; - - *u8ptr = BLE_SM_OP_PAIR_PUBLIC_KEY; - u8ptr++; - - memcpy(u8ptr, cmd->x, sizeof cmd->x); - memcpy(u8ptr + 32, cmd->y, sizeof cmd->y); - - return 0; -} - -void ble_sm_public_key_log(struct ble_sm_public_key *cmd) { BLE_HS_LOG(DEBUG, "x="); @@ -416,33 +149,6 @@ ble_sm_public_key_log(struct ble_sm_public_key *cmd) } void -ble_sm_dhkey_check_parse(void *payload, int len, - struct ble_sm_dhkey_check *cmd) -{ - memcpy(cmd->value, payload, sizeof cmd->value); -} - -int -ble_sm_dhkey_check_write(void *payload, int len, - struct ble_sm_dhkey_check *cmd) -{ - uint8_t *u8ptr; - - if (len < sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_dhkey_check)) { - return BLE_HS_EMSGSIZE; - } - - u8ptr = payload; - - *u8ptr = BLE_SM_OP_PAIR_DHKEY_CHECK; - u8ptr++; - - memcpy(u8ptr, cmd->value, sizeof cmd->value); - - return 0; -} - -void ble_sm_dhkey_check_log(struct ble_sm_dhkey_check *cmd) { BLE_HS_LOG(DEBUG, "value="); http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/a7ddc25c/net/nimble/host/src/ble_sm_priv.h ---------------------------------------------------------------------- diff --git a/net/nimble/host/src/ble_sm_priv.h b/net/nimble/host/src/ble_sm_priv.h index 03feaad..8a55d09 100644 --- a/net/nimble/host/src/ble_sm_priv.h +++ b/net/nimble/host/src/ble_sm_priv.h @@ -295,61 +295,17 @@ int ble_sm_dbg_num_procs(void); uint8_t ble_sm_build_authreq(void); -void ble_sm_pair_cmd_parse(void *payload, int len, - struct ble_sm_pair_cmd *cmd); -void ble_sm_pair_cmd_write(void *payload, int len, int is_req, - struct ble_sm_pair_cmd *cmd); void ble_sm_pair_cmd_log(struct ble_sm_pair_cmd *cmd); -void ble_sm_pair_confirm_parse(void *payload, int len, - struct ble_sm_pair_confirm *cmd); -void ble_sm_pair_confirm_write(void *payload, int len, - struct ble_sm_pair_confirm *cmd); void ble_sm_pair_confirm_log(struct ble_sm_pair_confirm *cmd); -void ble_sm_pair_random_parse(void *payload, int len, - struct ble_sm_pair_random *cmd); -void ble_sm_pair_random_write(void *payload, int len, - struct ble_sm_pair_random *cmd); void ble_sm_pair_random_log(struct ble_sm_pair_random *cmd); -void ble_sm_pair_fail_parse(void *payload, int len, - struct ble_sm_pair_fail *cmd); -void ble_sm_pair_fail_write(void *payload, int len, - struct ble_sm_pair_fail *cmd); void ble_sm_pair_fail_log(struct ble_sm_pair_fail *cmd); -void ble_sm_enc_info_parse(void *payload, int len, - struct ble_sm_enc_info *cmd); -void ble_sm_enc_info_write(void *payload, int len, - struct ble_sm_enc_info *cmd); void ble_sm_enc_info_log(struct ble_sm_enc_info *cmd); -void ble_sm_master_id_parse(void *payload, int len, - struct ble_sm_master_id *cmd); -void ble_sm_master_id_write(void *payload, int len, - struct ble_sm_master_id *cmd); void ble_sm_master_id_log(struct ble_sm_master_id *cmd); -void ble_sm_id_info_parse(void *payload, int len, struct ble_sm_id_info *cmd); -void ble_sm_id_info_write(void *payload, int len, struct ble_sm_id_info *cmd); void ble_sm_id_info_log(struct ble_sm_id_info *cmd); -void ble_sm_id_addr_info_parse(void *payload, int len, - struct ble_sm_id_addr_info *cmd); -void ble_sm_id_addr_info_write(void *payload, int len, - struct ble_sm_id_addr_info *cmd); void ble_sm_id_addr_info_log(struct ble_sm_id_addr_info *cmd); -void ble_sm_sign_info_parse(void *payload, int len, - struct ble_sm_sign_info *cmd); -void ble_sm_sign_info_write(void *payload, int len, - struct ble_sm_sign_info *cmd); void ble_sm_sign_info_log(struct ble_sm_sign_info *cmd); -void ble_sm_sec_req_parse(void *payload, int len, struct ble_sm_sec_req *cmd); -void ble_sm_sec_req_write(void *payload, int len, struct ble_sm_sec_req *cmd); void ble_sm_sec_req_log(struct ble_sm_sec_req *cmd); -void ble_sm_public_key_parse(void *payload, int len, - struct ble_sm_public_key *cmd); -int ble_sm_public_key_write(void *payload, int len, - struct ble_sm_public_key *cmd); void ble_sm_public_key_log(struct ble_sm_public_key *cmd); -void ble_sm_dhkey_check_parse(void *payload, int len, - struct ble_sm_dhkey_check *cmd); -int ble_sm_dhkey_check_write(void *payload, int len, - struct ble_sm_dhkey_check *cmd); void ble_sm_dhkey_check_log(struct ble_sm_dhkey_check *cmd); int ble_sm_alg_s1(uint8_t *k, uint8_t *r1, uint8_t *r2, uint8_t *out); http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/a7ddc25c/net/nimble/host/test/src/ble_sm_test_util.c ---------------------------------------------------------------------- diff --git a/net/nimble/host/test/src/ble_sm_test_util.c b/net/nimble/host/test/src/ble_sm_test_util.c index 8b1c427..682de2b 100644 --- a/net/nimble/host/test/src/ble_sm_test_util.c +++ b/net/nimble/host/test/src/ble_sm_test_util.c @@ -69,6 +69,295 @@ struct ble_sm_test_util_entity { .hdh_len = (len) \ }) +static void +ble_sm_pair_cmd_parse(void *payload, int len, struct ble_sm_pair_cmd *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_pair_cmd)); + + u8ptr = payload; + cmd->io_cap = u8ptr[0]; + cmd->oob_data_flag = u8ptr[1]; + cmd->authreq = u8ptr[2]; + cmd->max_enc_key_size = u8ptr[3]; + cmd->init_key_dist = u8ptr[4]; + cmd->resp_key_dist = u8ptr[5]; +} + +static void +ble_sm_pair_cmd_write(void *payload, int len, int is_req, + struct ble_sm_pair_cmd *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_pair_cmd)); + + u8ptr = payload; + u8ptr[0] = is_req ? BLE_SM_OP_PAIR_REQ : BLE_SM_OP_PAIR_RSP; + u8ptr[1] = cmd->io_cap; + u8ptr[2] = cmd->oob_data_flag; + u8ptr[3] = cmd->authreq; + u8ptr[4] = cmd->max_enc_key_size; + u8ptr[5] = cmd->init_key_dist; + u8ptr[6] = cmd->resp_key_dist; +} + +static void +ble_sm_pair_confirm_parse(void *payload, int len, + struct ble_sm_pair_confirm *cmd) +{ + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_pair_confirm)); + memcpy(cmd->value, payload, sizeof cmd->value); +} + +static void +ble_sm_pair_confirm_write(void *payload, int len, + struct ble_sm_pair_confirm *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_pair_confirm)); + + u8ptr = payload; + + u8ptr[0] = BLE_SM_OP_PAIR_CONFIRM; + memcpy(u8ptr + sizeof(struct ble_sm_hdr), cmd->value, sizeof cmd->value); +} + +static void +ble_sm_pair_random_parse(void *payload, int len, + struct ble_sm_pair_random *cmd) +{ + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_pair_random)); + memcpy(cmd->value, payload, sizeof cmd->value); +} + +static void +ble_sm_pair_random_write(void *payload, int len, + struct ble_sm_pair_random *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_pair_random)); + + u8ptr = payload; + + u8ptr[0] = BLE_SM_OP_PAIR_RANDOM; + memcpy(u8ptr + sizeof(struct ble_sm_hdr), cmd->value, sizeof cmd->value); +} + +static void +ble_sm_pair_fail_parse(void *payload, int len, struct ble_sm_pair_fail *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_pair_fail)); + + u8ptr = payload; + cmd->reason = u8ptr[0]; +} + +static void +ble_sm_enc_info_parse(void *payload, int len, struct ble_sm_enc_info *cmd) +{ + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_enc_info)); + + memcpy(cmd->ltk, payload, sizeof cmd->ltk); +} + +static void +ble_sm_enc_info_write(void *payload, int len, struct ble_sm_enc_info *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_enc_info)); + + u8ptr = payload; + + u8ptr[0] = BLE_SM_OP_ENC_INFO; + memcpy(u8ptr + 1, cmd->ltk, sizeof cmd->ltk); +} + +static void +ble_sm_master_id_parse(void *payload, int len, struct ble_sm_master_id *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_master_id)); + + u8ptr = payload; + + cmd->ediv = get_le16(u8ptr); + cmd->rand_val = get_le64(u8ptr + 2); +} + +static void +ble_sm_master_id_write(void *payload, int len, struct ble_sm_master_id *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_master_id)); + + u8ptr = payload; + + u8ptr[0] = BLE_SM_OP_MASTER_ID; + put_le16(u8ptr + 1, cmd->ediv); + put_le64(u8ptr + 3, cmd->rand_val); +} + +static void +ble_sm_id_info_parse(void *payload, int len, struct ble_sm_id_info *cmd) +{ + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_id_info)); + + memcpy(cmd->irk, payload, 16); +} + +static void +ble_sm_id_info_write(void *payload, int len, struct ble_sm_id_info *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_id_info)); + + u8ptr = payload; + + u8ptr[0] = BLE_SM_OP_IDENTITY_INFO; + memcpy(u8ptr + sizeof(struct ble_sm_hdr), cmd->irk, sizeof cmd->irk); +} + +static void +ble_sm_id_addr_info_parse(void *payload, int len, + struct ble_sm_id_addr_info *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_id_addr_info)); + + u8ptr = payload; + + cmd->addr_type = *u8ptr; + memcpy(cmd->bd_addr, u8ptr + 1, 6); +} + +static void +ble_sm_id_addr_info_write(void *payload, int len, + struct ble_sm_id_addr_info *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_id_addr_info)); + + u8ptr = payload; + + u8ptr[0] = BLE_SM_OP_IDENTITY_ADDR_INFO; + u8ptr[1] = cmd->addr_type; + memcpy(u8ptr + 2, cmd->bd_addr, sizeof cmd->bd_addr); +} + +static void +ble_sm_sign_info_parse(void *payload, int len, struct ble_sm_sign_info *cmd) +{ + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_sign_info)); + + memcpy(cmd->sig_key, payload, 16); +} + +static void +ble_sm_sign_info_write(void *payload, int len, struct ble_sm_sign_info *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_sign_info)); + + u8ptr = payload; + + u8ptr[0] = BLE_SM_OP_SIGN_INFO; + memcpy(u8ptr + sizeof(struct ble_sm_hdr), cmd->sig_key, sizeof cmd->sig_key); +} + +static void +ble_sm_sec_req_parse(void *payload, int len, struct ble_sm_sec_req *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_sec_req)); + + u8ptr = payload; + cmd->authreq = *u8ptr; +} + +static void +ble_sm_sec_req_write(void *payload, int len, struct ble_sm_sec_req *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_sec_req)); + + u8ptr = payload; + + u8ptr[0] = BLE_SM_OP_SEC_REQ; + u8ptr[1] = cmd->authreq; +} + +static void +ble_sm_public_key_parse(void *payload, int len, struct ble_sm_public_key *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_public_key)); + + u8ptr = payload; + + memcpy(cmd->x, u8ptr, sizeof cmd->x); + u8ptr += sizeof cmd->x; + + memcpy(cmd->y, u8ptr, sizeof cmd->y); + u8ptr += sizeof cmd->y; +} + +static void +ble_sm_public_key_write(void *payload, int len, struct ble_sm_public_key *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_public_key)); + + u8ptr = payload; + + *u8ptr = BLE_SM_OP_PAIR_PUBLIC_KEY; + u8ptr++; + + memcpy(u8ptr, cmd->x, sizeof cmd->x); + memcpy(u8ptr + 32, cmd->y, sizeof cmd->y); +} + +static void +ble_sm_dhkey_check_parse(void *payload, int len, + struct ble_sm_dhkey_check *cmd) +{ + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_dhkey_check)); + + memcpy(cmd->value, payload, sizeof cmd->value); +} + +static void +ble_sm_dhkey_check_write(void *payload, int len, + struct ble_sm_dhkey_check *cmd) +{ + uint8_t *u8ptr; + + BLE_HS_DBG_ASSERT(len >= sizeof(struct ble_sm_hdr) + sizeof(struct ble_sm_dhkey_check)); + + u8ptr = payload; + + *u8ptr = BLE_SM_OP_PAIR_DHKEY_CHECK; + u8ptr++; + + memcpy(u8ptr, cmd->value, sizeof cmd->value); +} + void ble_sm_test_util_init(void) {
