DH: Clear memory explicitly on private key deinit
Remove any DH private key from heap memory after use. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
77c45e2b35
commit
a15a7fcf69
1 changed files with 4 additions and 4 deletions
|
@ -1198,14 +1198,14 @@ struct wpabuf * dh_init(const struct dh_group *dh, struct wpabuf **priv)
|
||||||
if (dh == NULL)
|
if (dh == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
wpabuf_free(*priv);
|
wpabuf_clear_free(*priv);
|
||||||
*priv = wpabuf_alloc(dh->prime_len);
|
*priv = wpabuf_alloc(dh->prime_len);
|
||||||
if (*priv == NULL)
|
if (*priv == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (random_get_bytes(wpabuf_put(*priv, dh->prime_len), dh->prime_len))
|
if (random_get_bytes(wpabuf_put(*priv, dh->prime_len), dh->prime_len))
|
||||||
{
|
{
|
||||||
wpabuf_free(*priv);
|
wpabuf_clear_free(*priv);
|
||||||
*priv = NULL;
|
*priv = NULL;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1224,7 +1224,7 @@ struct wpabuf * dh_init(const struct dh_group *dh, struct wpabuf **priv)
|
||||||
wpabuf_head(*priv), wpabuf_len(*priv),
|
wpabuf_head(*priv), wpabuf_len(*priv),
|
||||||
dh->prime, dh->prime_len, wpabuf_mhead(pv),
|
dh->prime, dh->prime_len, wpabuf_mhead(pv),
|
||||||
&pv_len) < 0) {
|
&pv_len) < 0) {
|
||||||
wpabuf_free(pv);
|
wpabuf_clear_free(pv);
|
||||||
wpa_printf(MSG_INFO, "DH: crypto_mod_exp failed");
|
wpa_printf(MSG_INFO, "DH: crypto_mod_exp failed");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1260,7 +1260,7 @@ struct wpabuf * dh_derive_shared(const struct wpabuf *peer_public,
|
||||||
wpabuf_head(own_private), wpabuf_len(own_private),
|
wpabuf_head(own_private), wpabuf_len(own_private),
|
||||||
dh->prime, dh->prime_len,
|
dh->prime, dh->prime_len,
|
||||||
wpabuf_mhead(shared), &shared_len) < 0) {
|
wpabuf_mhead(shared), &shared_len) < 0) {
|
||||||
wpabuf_free(shared);
|
wpabuf_clear_free(shared);
|
||||||
wpa_printf(MSG_INFO, "DH: crypto_mod_exp failed");
|
wpa_printf(MSG_INFO, "DH: crypto_mod_exp failed");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue