#ifdef CONFIG_PASN
if (peer->p2p2 && peer->pasn)
wpa_pasn_reset(peer->pasn);
+ os_memset(p2p->peer_sae_password, 0, sizeof(p2p->peer_sae_password));
#endif /* CONFIG_PASN */
os_memset(&res, 0, sizeof(res));
"Received peer DevIK of length %zu octets and lifetime %u",
p2p->peer_dik_len, p2p->peer_dik_lifetime);
break;
+ case P2P_ATTR_PASSWORD:
+ if (attr_len < 1 ||
+ attr_len > sizeof(p2p->peer_sae_password) - 1) {
+ p2p_dbg(p2p,
+ "P2P: Invalid password length %d",
+ attr_len);
+ return -1;
+ }
+ os_memset(p2p->peer_sae_password, 0,
+ sizeof(p2p->peer_sae_password));
+ os_memcpy(p2p->peer_sae_password, pos, attr_len);
+ break;
default:
p2p_dbg(p2p,
"Unsupported Attribute ID %u in P2P2 IE in PASN Encrypted Data element",
/* Drop keying material from a failed pairing attempt */
os_memset(p2p->peer_dik_data, 0,
sizeof(p2p->peer_dik_data));
+ os_memset(p2p->peer_sae_password, 0,
+ sizeof(p2p->peer_sae_password));
return -1;
}
forced_memzero(pasn_get_ptk(pasn), sizeof(pasn->ptk));
u8 peer_dik_data[DEVICE_IDENTITY_KEY_MAX_LEN];
size_t peer_dik_len;
unsigned int peer_dik_lifetime;
+
+ /* Password used during an ongoing group formation after opportunistic
+ * PASN authentication or while joining an existing group. This will be
+ * moved to a more permanent location from struct p2p_data at the
+ * conclusion of a successful pairing. */
+ char peer_sae_password[100];
};
/**