summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Carré2013-02-26 10:12:15 +0100
committerThierry Carré2013-02-27 13:58:00 +0100
commitdf1058fe18100b6bc24587bd4a897629dca5551a (patch)
tree1e78f6e77f918681b31bf2a9b1e5484660a20e04
parent35b2d302828ff6b1c88443e1a852a517453bcf39 (diff)
cesar/cp/av/sta/action/test: add utest on cm_set_key expected, closes #542
-rw-r--r--cesar/cp/av/sta/action/test/utest/inc/scenario_defs.h2
-rw-r--r--cesar/cp/av/sta/action/test/utest/src/assoc.c78
-rw-r--r--cesar/cp/av/sta/action/test/utest/src/scenario_actions.c2
3 files changed, 82 insertions, 0 deletions
diff --git a/cesar/cp/av/sta/action/test/utest/inc/scenario_defs.h b/cesar/cp/av/sta/action/test/utest/inc/scenario_defs.h
index c08770019e..9253e17650 100644
--- a/cesar/cp/av/sta/action/test/utest/inc/scenario_defs.h
+++ b/cesar/cp/av/sta/action/test/utest/inc/scenario_defs.h
@@ -152,6 +152,7 @@
assoc__sc_associated__cm_get_key_req_pid_3, \
assoc__sc_tek_exchanged__cm_set_key_req_pid_3, \
assoc__sc_nmk_exchanged__cm_get_key_cnf_pid_0, \
+ assoc__started__cm_set_key_req_pid_2, \
\
handover__start, \
handover__handover_info_ind_receive, \
@@ -348,6 +349,7 @@ __m (assoc__sc_wait_assoc_cnf__cc_assoc_cnf)
__m (assoc__sc_associated__cm_get_key_req_pid_3)
__m (assoc__sc_tek_exchanged__cm_set_key_req_pid_3)
__m (assoc__sc_nmk_exchanged__cm_get_key_cnf_pid_0)
+__m (assoc__started__cm_set_key_req_pid_2)
__m (handover__start)
__m (handover__handover_info_ind_receive)
diff --git a/cesar/cp/av/sta/action/test/utest/src/assoc.c b/cesar/cp/av/sta/action/test/utest/src/assoc.c
index bb0aa3ecf0..887d96d1ed 100644
--- a/cesar/cp/av/sta/action/test/utest/src/assoc.c
+++ b/cesar/cp/av/sta/action/test/utest/src/assoc.c
@@ -521,6 +521,84 @@ assoc_basic_test_cases (test_t t)
};
scenario_run (t, entries, &globals);
} test_end;
+ /* Add test for #542 ticket, cm_set_key with pid=2. */
+ test_begin (t, "Change NMK and/or NID")
+ {
+ assoc_create_cco (t, &ctx, snid, nid, cco_tei, cco_mac, &cco_net,
+ &cco, associate_entries);
+ cp_key_t current_nmk = cp_sta_own_data_get_nmk (&ctx.cp);
+
+ scenario_entry_t entries[] = {
+ /* Associate and authenticate. */
+ SCENARIO_SUB (auth_entries),
+ /* MME received without encryption should be dropped. */
+ SCENARIO_ACTION (assoc__started__cm_set_key_req_pid_2,
+ .peer = cco_peer),
+ SCENARIO_EVENT (cp_msg_cm_set_key_req_receive, .ok = true,
+ .peks = CP_MME_PEKS_NONE, .pid = 2, .pmn = 1,
+ .new_prn = false, .new_your_nonce = false,
+ .key_type = CP_MSG_KEY_NMK,
+ .cco_cap = 0,
+ .nid = nid, .new_eks = 0, .new_key = current_nmk),
+ SCENARIO_EVENT (cp_msg_cm_set_key_cnf_send, .peer = cco_peer,
+ .peks = CP_MME_PEKS_NONE, .pid = 2, .pmn = 255,
+ .result = CP_MSG_CM_SET_KEY_CNF_RESULT_FAILURE,
+ .cco_cap = CP_CCO_LEVEL),
+ /* MME received with encryption,same NMK and same NID. */
+ SCENARIO_ACTION (assoc__started__cm_set_key_req_pid_2,
+ .peer = cco_peer),
+ SCENARIO_EVENT (cp_msg_cm_set_key_req_receive, .ok = true,
+ .peks = CP_MME_PEKS_DAK, .pid = 2, .pmn = 1,
+ .new_prn = false, .new_your_nonce = false,
+ .key_type = CP_MSG_KEY_NMK,
+ .cco_cap = 0,
+ .nid = nid, .new_eks = 0, .new_key = current_nmk),
+ SCENARIO_EVENT (cp_msg_cm_set_key_cnf_send, .peer = cco_peer,
+ .peks = CP_MME_PEKS_DAK, .pid = 2, .pmn = 255,
+ .result = CP_MSG_CM_SET_KEY_CNF_RESULT_SUCCESS,
+ .cco_cap = CP_CCO_LEVEL),
+ /* MME received with encryption, and a leave request. */
+ SCENARIO_ACTION (assoc__started__cm_set_key_req_pid_2,
+ .peer = cco_peer),
+ SCENARIO_EVENT (cp_msg_cm_set_key_req_receive, .ok = true,
+ .peks = CP_MME_PEKS_DAK, .pid = 2, .pmn = 1,
+ .new_prn = false, .new_your_nonce = false,
+ .key_type = CP_MSG_KEY_NMK,
+ .cco_cap = 0,
+ .nid = nid + 1, .new_eks = 0, .new_key = current_nmk),
+ SCENARIO_EVENT (cp_msg_cm_set_key_cnf_send, .peer = cco_peer,
+ .peks = CP_MME_PEKS_DAK, .pid = 2, .pmn = 255,
+ .result = CP_MSG_CM_SET_KEY_CNF_RESULT_SUCCESS,
+ .cco_cap = CP_CCO_LEVEL),
+ SCENARIO_EVENT (cp_msg_drv_sta_set_key_ind_send,
+ .peer = CP_MME_PEER (
+ cp_sta_own_data_get_mac_address (&ctx.cp),
+ MAC_TEI_FOREIGN),
+ .nmk = current_nmk,
+ .type = CP_MSG_DRV_STA_SET_KEY_TYPE_CHANGE_NID,
+ .nid = nid + 1,
+ .sl = CP_CCO_LEVEL,
+ ),
+ SCENARIO_EVENT (cp_fsm_event_bare_new,
+ .type = CP_FSM_EVENT_TYPE_to_leave),
+ /* MME received with encryption, but with key_type. */
+ SCENARIO_ACTION (assoc__started__cm_set_key_req_pid_2,
+ .peer = cco_peer),
+ SCENARIO_EVENT (cp_msg_cm_set_key_req_receive, .ok = true,
+ .peks = CP_MME_PEKS_DAK, .pid = 2, .pmn = 1,
+ .new_prn = false, .new_your_nonce = false,
+ .key_type = CP_MSG_KEY_DAK,
+ .cco_cap = 0,
+ .nid = nid + 2, .new_eks = 0, .new_key = current_nmk),
+ SCENARIO_EVENT (cp_msg_cm_set_key_cnf_send, .peer = cco_peer,
+ .peks = CP_MME_PEKS_DAK, .pid = 2, .pmn = 255,
+ .result = CP_MSG_CM_SET_KEY_CNF_RESULT_FAILURE,
+ .cco_cap = CP_CCO_LEVEL),
+ SCENARIO_END
+ };
+ scenario_run (t, entries, &globals);
+
+ } test_end;
test_begin (t, "avln failure")
{
assoc_create_cco (t, &ctx, snid, nid, cco_tei, cco_mac, &cco_net,
diff --git a/cesar/cp/av/sta/action/test/utest/src/scenario_actions.c b/cesar/cp/av/sta/action/test/utest/src/scenario_actions.c
index c25dbabd56..56eb47677d 100644
--- a/cesar/cp/av/sta/action/test/utest/src/scenario_actions.c
+++ b/cesar/cp/av/sta/action/test/utest/src/scenario_actions.c
@@ -250,6 +250,8 @@ __m_av (assoc__sc_associated__cm_get_key_req_pid_3)
__m_av (assoc__sc_tek_exchanged__cm_set_key_req_pid_3)
__m_av (assoc__sc_nmk_exchanged__cm_get_key_cnf_pid_0)
+__m_av (assoc__started__cm_set_key_req_pid_2)
+
__m_av (handover__start)
__m_av (handover__handover_info_ind_receive)
__0_av (handover__handover_ended)