diff mbox series

[v2,2/4] owe: allow OWE to force group 19

Message ID 20220808182259.19402-2-prestwoj@gmail.com (mailing list archive)
State Accepted, archived
Headers show
Series [v2,1/4] handshake: add force_default_owe_group flag | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
prestwoj/iwd-ci-gitlint success GitLint

Commit Message

James Prestwood Aug. 8, 2022, 6:22 p.m. UTC
Similarly with SAE, some AP's either don't do group negotiations
right, or specifically with OWE, incorrectly derive the PTK unless
group 19 is used.
---
 src/owe.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

v2:
 * Remove extra flag from owe_sm since this is already in handshake_state
diff mbox series

Patch

diff --git a/src/owe.c b/src/owe.c
index eed3e266..faa4e17d 100644
--- a/src/owe.c
+++ b/src/owe.c
@@ -45,6 +45,20 @@  struct owe_sm {
 
 static bool owe_reset(struct owe_sm *owe)
 {
+	if (owe->hs->force_default_owe_group) {
+		if (owe->retry != 0) {
+			l_warn("Forced default OWE group but was rejected!");
+			return false;
+		}
+
+		l_debug("Forcing default OWE group 19");
+
+		owe->retry++;
+		owe->group = 19;
+
+		goto get_curve;
+	}
+
 	/*
 	 * Reset OWE with a different curve group and generate a new key pair
 	 */
@@ -52,6 +66,8 @@  static bool owe_reset(struct owe_sm *owe)
 		return false;
 
 	owe->group = owe->ecc_groups[owe->retry];
+
+get_curve:
 	owe->curve = l_ecc_curve_from_ike_group(owe->group);
 
 	if (owe->private)