NAN: Store PMK from sta_preset_testparameters
This is needed for following NAN operations.
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
diff --git a/nan.c b/nan.c
index 5ce3937..6249580 100644
--- a/nan.c
+++ b/nan.c
@@ -191,6 +191,7 @@
struct sigma_cmd *cmd)
{
const char *oper_chan = get_param(cmd, "oper_chn");
+ const char *pmk = get_param(cmd, "PMK");
if (oper_chan) {
sigma_dut_print(dut, DUT_MSG_INFO, "Operating Channel: %s",
@@ -198,6 +199,22 @@
dut->sta_channel = atoi(oper_chan);
}
+ if (pmk) {
+ int pmk_len;
+
+ sigma_dut_print(dut, DUT_MSG_INFO, "%s given string pmk: %s",
+ __func__, pmk);
+ memset(dut->nan_pmk, 0, NAN_PMK_INFO_LEN);
+ dut->nan_pmk_len = 0;
+ pmk_len = NAN_PMK_INFO_LEN;
+ nan_parse_hex_string(dut, &pmk[2], &dut->nan_pmk[0], &pmk_len);
+ dut->nan_pmk_len = pmk_len;
+ sigma_dut_print(dut, DUT_MSG_INFO, "%s: pmk len = %d",
+ __func__, dut->nan_pmk_len);
+ sigma_dut_print(dut, DUT_MSG_INFO, "%s:hex pmk", __func__);
+ nan_hex_dump(dut, &dut->nan_pmk[0], dut->nan_pmk_len);
+ }
+
send_resp(dut, conn, SIGMA_COMPLETE, NULL);
return 0;
}
@@ -1174,6 +1191,8 @@
is_fam = 0;
event_anyresponse = 0;
global_dut = dut;
+ memset(&dut->nan_pmk[0], 0, NAN_PMK_INFO_LEN);
+ dut->nan_pmk_len = 0;
dut->sta_channel = 0;
memset(global_event_resp_buf, 0, sizeof(global_event_resp_buf));
diff --git a/sigma_dut.h b/sigma_dut.h
index 71d795b..9cac61d 100644
--- a/sigma_dut.h
+++ b/sigma_dut.h
@@ -576,6 +576,15 @@
const char *vendor_name; /* device_get_info vendor override */
const char *model_name; /* device_get_info model override */
const char *version_name; /* device_get_info version override */
+
+ /* Length of nan_pmk in octets */
+ u8 nan_pmk_len;
+
+ /*
+ * PMK: Info is optional in Discovery phase. PMK info can
+ * be passed during the NDP session.
+ */
+ u8 nan_pmk[32];
};