[PATCH] Fix test vector issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



- Commit b20991da6936a1baae9f2239ee127610a6f5335d introduced errors in
  the order of arguments to the calls of ccmp_decrypt() and
  ccmp_256_decrypt().  Corrected the order of arguments.

. Includeed the PTID in the PV1 nonce construction.

- Made minor formatting changes.

Signed-off-by: Henry Ptasinski <henry@xxxxxxxxxx>
---
 wlantest/ccmp.c         | 13 +++++++++----
 wlantest/test_vectors.c | 12 ++++++------
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/wlantest/ccmp.c b/wlantest/ccmp.c
index 894aa743b..d6594b9ca 100644
--- a/wlantest/ccmp.c
+++ b/wlantest/ccmp.c
@@ -91,7 +91,7 @@ static void ccmp_aad_nonce_pv1(const u8 *hdr, const u8 *a1, const u8 *a2,
 			       const u8 *a3, const u8 *pn,
 			       u8 *aad, size_t *aad_len, u8 *nonce)
 {
-	u16 fc, type;
+	u16 fc, type, ptid;
 	u8 *pos;
nonce[0] = BIT(5); /* PV1 */
@@ -102,6 +102,11 @@ static void ccmp_aad_nonce_pv1(const u8 *hdr, const u8 *a1, const u8 *a2,
if (type == 1)
 		nonce[0] |= 0x10; /* Management */
+	else if ((type == 0) || (type == 3)) {
+		/* QoS Data */
+		ptid = (fc & (BIT(5) | BIT(6) | BIT(7))) >> 5;
+		nonce[0] |= ptid;
+	}
fc &= ~(BIT(10) | BIT(11) | BIT(13) | BIT(14) | BIT(15));
 	fc |= BIT(12);
@@ -167,7 +172,7 @@ u8 * ccmp_decrypt(const u8 *tk, const struct ieee80211_hdr *hdr,
 	os_memset(aad, 0, sizeof(aad));
 	ccmp_aad_nonce(hdr, data, a1, a2, a3, aad, &aad_len, nonce);
 	wpa_hexdump(MSG_EXCESSIVE, "CCMP AAD", aad, aad_len);
-	wpa_hexdump(MSG_EXCESSIVE, "CCMP nonce", nonce, 13);
+	wpa_hexdump(MSG_EXCESSIVE, "CCM Nonce", nonce, 13);
if (aes_ccm_ad(tk, 16, nonce, 8, data + 8, mlen, aad, aad_len,
 		       data + 8 + mlen, plain) < 0) {
@@ -232,7 +237,7 @@ u8 * ccmp_encrypt(const u8 *tk, u8 *frame, size_t len, size_t hdrlen,
 	os_memset(aad, 0, sizeof(aad));
 	ccmp_aad_nonce(hdr, crypt + hdrlen, a1, a2, a3, aad, &aad_len, nonce);
 	wpa_hexdump(MSG_EXCESSIVE, "CCMP AAD", aad, aad_len);
-	wpa_hexdump(MSG_EXCESSIVE, "CCMP nonce", nonce, 13);
+	wpa_hexdump(MSG_EXCESSIVE, "CCM Nonce", nonce, 13);
if (aes_ccm_ae(tk, 16, nonce, 8, frame + hdrlen, plen, aad, aad_len,
 		       pos, pos + plen) < 0) {
@@ -274,7 +279,7 @@ u8 * ccmp_encrypt_pv1(const u8 *tk, const u8 *a1, const u8 *a2, const u8 *a3,
 	os_memset(aad, 0, sizeof(aad));
 	ccmp_aad_nonce_pv1(crypt, a1, a2, a3, pn, aad, &aad_len, nonce);
 	wpa_hexdump(MSG_EXCESSIVE, "CCMP AAD", aad, aad_len);
-	wpa_hexdump(MSG_EXCESSIVE, "CCMP nonce", nonce, sizeof(nonce));
+	wpa_hexdump(MSG_EXCESSIVE, "CCM Nonce", nonce, sizeof(nonce));
if (aes_ccm_ae(tk, 16, nonce, 8, frame + hdrlen, plen, aad, aad_len,
 		       pos, pos + plen) < 0) {
diff --git a/wlantest/test_vectors.c b/wlantest/test_vectors.c
index 3638f67b6..f2517cb8c 100644
--- a/wlantest/test_vectors.c
+++ b/wlantest/test_vectors.c
@@ -120,7 +120,7 @@ static void test_vector_ccmp(void)
wpa_debug_level = MSG_INFO;
 	plain = ccmp_decrypt(tk, (const struct ieee80211_hdr *) enc,
-			     enc + 24, NULL, NULL, NULL, enc_len - 24,
+			     NULL, NULL, NULL, enc + 24, enc_len - 24,
 			     &plain_len);
 	wpa_debug_level = MSG_EXCESSIVE;
 	os_free(enc);
@@ -200,7 +200,7 @@ static void test_vector_ccmp_pv1(void)
 	wpa_hexdump(MSG_INFO, "PN (PN0..PN5)", pn, sizeof(pn));
wpa_printf(MSG_INFO,
-		   "\nPV1 test vector #1:\nHeader compression used and A3 was previously stored at the receiver\n");
+		   "\nPV1 test vector #1:\nHeader compression used and A3 was previously stored at the receiver");
 	fc = WPA_GET_LE16(frame1);
 	wpa_printf(MSG_INFO,
 		   "FC=0x%04x (PV=%u Type=%u PTID/Subtype=%u From_DS=%u More_Fragments=%u Power_Management=%u More_Data=%u Protected_Frame=%u End_of_SP=%u Relayed_Frame=%u Ack_Policy=%u)",
@@ -249,7 +249,7 @@ static void test_vector_ccmp_pv1(void)
 	wpa_hexdump(MSG_INFO, "Encrypted Frame FCS", fcs, sizeof(fcs));
wpa_printf(MSG_INFO,
-		   "\nPV1 test vector #2:\nHeader compression used and A3 was not previously stored at the receiver\n");
+		   "\nPV1 test vector #2:\nHeader compression used and A3 was not previously stored at the receiver");
 	fc = WPA_GET_LE16(frame2);
 	wpa_printf(MSG_INFO,
 		   "FC=0x%04x (PV=%u Type=%u PTID/Subtype=%u From_DS=%u More_Fragments=%u Power_Management=%u More_Data=%u Protected_Frame=%u End_of_SP=%u Relayed_Frame=%u Ack_Policy=%u)",
@@ -299,7 +299,7 @@ static void test_vector_ccmp_pv1(void)
 	wpa_hexdump(MSG_INFO, "Encrypted Frame FCS", fcs, sizeof(fcs));
wpa_printf(MSG_INFO,
-		   "\nPV1 test vector #3:\nType 3 frame from SA to DA(=BSSID) (i.e., no separate DA in this example)\n");
+		   "\nPV1 test vector #3:\nType 3 frame from SA to DA(=BSSID) (i.e., no separate DA in this example)");
 	fc = WPA_GET_LE16(frame3);
 	wpa_printf(MSG_INFO,
 		   "FC=0x%04x (PV=%u Type=%u PTID/Subtype=%u From_DS=%u More_Fragments=%u Power_Management=%u More_Data=%u Protected_Frame=%u End_of_SP=%u Relayed_Frame=%u Ack_Policy=%u)",
@@ -414,7 +414,7 @@ static void test_vector_ccmp_mgmt(void)
wpa_debug_level = MSG_INFO;
 	plain = ccmp_decrypt(tk, (const struct ieee80211_hdr *) enc,
-			     enc + 24, NULL, NULL, NULL, enc_len - 24,
+			     NULL, NULL, NULL, enc + 24, enc_len - 24,
 			     &plain_len);
 	wpa_debug_level = MSG_EXCESSIVE;
 	os_free(enc);
@@ -789,7 +789,7 @@ static int test_vector_ccmp_256(void)
wpa_debug_level = MSG_INFO;
 	plain = ccmp_256_decrypt(tk, (const struct ieee80211_hdr *) enc,
-				 enc + 24, NULL, NULL, NULL, enc_len - 24,
+				 NULL, NULL, NULL, enc + 24, enc_len - 24,
 				 &plain_len);
 	wpa_debug_level = MSG_EXCESSIVE;
 	os_free(enc);
--
2.39.2


_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux