Lines Matching defs:pfs
8270 struct dpp_pfs *pfs;
8272 pfs = os_zalloc(sizeof(*pfs));
8273 if (!pfs)
8276 own_key = dpp_set_keypair(&pfs->curve, net_access_key,
8284 pfs->ecdh = crypto_ecdh_init(pfs->curve->ike_group);
8285 if (!pfs->ecdh)
8288 pub = crypto_ecdh_get_pubkey(pfs->ecdh, 0);
8289 pub = wpabuf_zeropad(pub, pfs->curve->prime_len);
8293 pfs->ie = wpabuf_alloc(5 + wpabuf_len(pub));
8294 if (!pfs->ie)
8296 wpabuf_put_u8(pfs->ie, WLAN_EID_EXTENSION);
8297 wpabuf_put_u8(pfs->ie, 1 + 2 + wpabuf_len(pub));
8298 wpabuf_put_u8(pfs->ie, WLAN_EID_EXT_OWE_DH_PARAM);
8299 wpabuf_put_le16(pfs->ie, pfs->curve->ike_group);
8300 wpabuf_put_buf(pfs->ie, pub);
8303 pfs->ie);
8305 return pfs;
8308 dpp_pfs_free(pfs);
8313 int dpp_pfs_process(struct dpp_pfs *pfs, const u8 *peer_ie, size_t peer_ie_len)
8317 if (WPA_GET_LE16(peer_ie) != pfs->curve->ike_group) {
8322 pfs->secret = crypto_ecdh_set_peerkey(pfs->ecdh, 0, peer_ie + 2,
8324 pfs->secret = wpabuf_zeropad(pfs->secret, pfs->curve->prime_len);
8325 if (!pfs->secret) {
8329 wpa_hexdump_buf_key(MSG_DEBUG, "DPP: DH shared secret", pfs->secret);
8334 void dpp_pfs_free(struct dpp_pfs *pfs)
8336 if (!pfs)
8338 crypto_ecdh_deinit(pfs->ecdh);
8339 wpabuf_free(pfs->ie);
8340 wpabuf_clear_free(pfs->secret);
8341 os_free(pfs);