(void) ngx_quic_compat_set_encryption_secret(c, &com->keys, level,
cipher, secret, n);
}
+
+ ngx_explicit_memzero(secret, n);
}
return NGX_ERROR;
}
- if (sizeof(peer_secret->secret.data) < secret_len) {
- ngx_log_error(NGX_LOG_ALERT, c->log, 0,
- "unexpected secret len: %uz", secret_len);
- return NGX_ERROR;
- }
-
- peer_secret->secret.len = secret_len;
- ngx_memcpy(peer_secret->secret.data, secret, secret_len);
-
key.len = key_len;
peer_secret->iv.len = NGX_QUIC_IV_LEN;
return NGX_ERROR;
}
+ ngx_explicit_memzero(key.data, key.len);
+
return NGX_OK;
}
return NGX_ERROR;
}
+ ngx_explicit_memzero(key.data, key.len);
+
return NGX_OK;
}
ngx_quic_crypto_hp_cleanup(client);
ngx_quic_crypto_hp_cleanup(server);
+
+ ngx_explicit_memzero(client->secret.data, client->secret.len);
+ ngx_explicit_memzero(server->secret.data, server->secret.len);
}
goto failed;
}
+ ngx_explicit_memzero(current->client.secret.data,
+ current->client.secret.len);
+ ngx_explicit_memzero(current->server.secret.data,
+ current->server.secret.len);
+
+ ngx_explicit_memzero(client_key.data, client_key.len);
+ ngx_explicit_memzero(server_key.data, server_key.len);
+
return;
failed:
ngx_quic_crypto_cleanup(&next->client);
ngx_quic_crypto_cleanup(&next->server);
+
+ ngx_explicit_memzero(next->client.secret.data,
+ next->client.secret.len);
+ ngx_explicit_memzero(next->server.secret.data,
+ next->server.secret.len);
}