]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
DPP: Protocol testing for invalid Config Resp attribute values
authorJouni Malinen <jouni@qca.qualcomm.com>
Fri, 3 Nov 2017 19:11:00 +0000 (21:11 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 3 Nov 2017 19:14:08 +0000 (21:14 +0200)
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/common/dpp.c
src/common/dpp.h

index 634010eb71b2123c2b9099995636c82ccf170ef1..12a154be95b4e6865be77c1a640c47f04a647ba4 100644 (file)
@@ -3801,6 +3801,14 @@ dpp_build_conf_resp(struct dpp_authentication *auth, const u8 *e_nonce,
                wpa_printf(MSG_INFO, "DPP: TESTING - no E-nonce");
                goto skip_e_nonce;
        }
+       if (dpp_test == DPP_TEST_E_NONCE_MISMATCH_CONF_RESP) {
+               wpa_printf(MSG_INFO, "DPP: TESTING - E-nonce mismatch");
+               wpabuf_put_le16(clear, DPP_ATTR_ENROLLEE_NONCE);
+               wpabuf_put_le16(clear, e_nonce_len);
+               wpabuf_put_data(clear, e_nonce, e_nonce_len - 1);
+               wpabuf_put_u8(clear, e_nonce[e_nonce_len - 1] ^ 0x01);
+               goto skip_e_nonce;
+       }
        if (dpp_test == DPP_TEST_NO_WRAPPED_DATA_CONF_RESP) {
                wpa_printf(MSG_INFO, "DPP: TESTING - no Wrapped Data");
                goto skip_wrapped_data;
@@ -3832,6 +3840,10 @@ skip_config_obj:
                wpa_printf(MSG_INFO, "DPP: TESTING - Status");
                goto skip_status;
        }
+       if (dpp_test == DPP_TEST_INVALID_STATUS_CONF_RESP) {
+               wpa_printf(MSG_INFO, "DPP: TESTING - invalid Status");
+               status = 255;
+       }
 #endif /* CONFIG_TESTING_OPTIONS */
 
        /* DPP Status */
index d26feb3e350273ec5c8598e40f096a8d7872fc40..a17404537e28f4bc1d55c876760b3274d97512ef 100644 (file)
@@ -276,6 +276,8 @@ enum dpp_test_behavior {
        DPP_TEST_NO_CONFIG_OBJ_CONF_RESP = 55,
        DPP_TEST_NO_STATUS_CONF_RESP = 56,
        DPP_TEST_NO_WRAPPED_DATA_CONF_RESP = 57,
+       DPP_TEST_INVALID_STATUS_CONF_RESP = 58,
+       DPP_TEST_E_NONCE_MISMATCH_CONF_RESP = 59,
 };
 
 extern enum dpp_test_behavior dpp_test;