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];
 };