diff --git a/src/core/cntlr_tlv_generator.c b/src/core/cntlr_tlv_generator.c
index 08ba53158ce06681d5ecc09c3907f55c3c37e381..e2b6117ccca729bad6ef55d0639d95baa9c5d4b1 100644
--- a/src/core/cntlr_tlv_generator.c
+++ b/src/core/cntlr_tlv_generator.c
@@ -67,7 +67,11 @@ uint16_t wifi_sec_to_auth_types(enum wifi_security sec)
 			auth_type |= WPS_AUTH_WPA2;
 		}
 	} else if (sec >= WIFI_SECURITY_WPAPSK) {
-		if (sec == WIFI_SECURITY_WPA2PSK) {
+		if (sec == WIFI_SECURITY_WPA3PSK) {
+			auth_type = WPS_AUTH_SAE;
+		} else if (sec == WIFI_SECURITY_WPA3PSK_T) {
+			auth_type = WPS_AUTH_WPA3_T;
+		} else if (sec == WIFI_SECURITY_WPA2PSK) {
 			auth_type = WPS_AUTH_WPA2PSK;
 		} else if (sec == WIFI_SECURITY_WPAPSK) {
 			auth_type = WPS_AUTH_WPAPSK;
diff --git a/src/core/config.c b/src/core/config.c
index 5e77d78f310037c7e16985c5cf41f0467bfca556..0eb9012faa74885eea78d40e026ab33e7b6e4a29 100644
--- a/src/core/config.c
+++ b/src/core/config.c
@@ -489,7 +489,12 @@ static int cntlr_config_get_credentials(struct controller_config *c,
 	if (tb[CRED_SEC]) {
 		const char *sec = tb[CRED_SEC]->v.string;
 
-		if (!strncmp(sec, "psk-mixed", 9)) {
+		if (!strncmp(sec, "sae-mixed", 9)) {
+			cred->sec |= WIFI_SECURITY_WPA3PSK;
+			cred->sec |= WIFI_SECURITY_WPA3PSK_T;
+		} else if (!strncmp(sec, "sae", 3)) {
+			cred->sec |= WIFI_SECURITY_WPA3PSK;
+		} else if (!strncmp(sec, "psk-mixed", 9)) {
 			cred->sec |= WIFI_SECURITY_WPAPSK;
 			cred->sec |= WIFI_SECURITY_WPA2PSK;
 		} else if (!strncmp(sec, "psk2", 4)) {