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)
 {

Reply via email to