/** * gnutls_deinit: * @session: is a #gnutls_session_t structure. * * This function clears all buffers associated with the @session. * This function will also remove session data from the session * database if the session was terminated abnormally. **/ void gnutls_deinit (gnutls_session_t session) { unsigned int i; if (session == NULL) return; _gnutls_rnd_refresh(); /* remove auth info firstly */ _gnutls_free_auth_info (session); _gnutls_handshake_internal_state_clear (session); _gnutls_handshake_io_buffer_clear (session); _gnutls_ext_free_session_data (session); for (i = 0; i < MAX_EPOCH_INDEX; i++) if (session->record_parameters[i] != NULL) { _gnutls_epoch_free (session, session->record_parameters[i]); session->record_parameters[i] = NULL; } _gnutls_buffer_clear (&session->internals.handshake_hash_buffer); _gnutls_buffer_clear (&session->internals.hb_remote_data); _gnutls_buffer_clear (&session->internals.hb_local_data); _gnutls_buffer_clear (&session->internals.record_presend_buffer); _mbuffer_head_clear (&session->internals.record_buffer); _mbuffer_head_clear (&session->internals.record_recv_buffer); _mbuffer_head_clear (&session->internals.record_send_buffer); gnutls_credentials_clear (session); _gnutls_selected_certs_deinit (session); gnutls_pk_params_release(&session->key.ecdh_params); _gnutls_mpi_release (&session->key.ecdh_x); _gnutls_mpi_release (&session->key.ecdh_y); _gnutls_mpi_release (&session->key.KEY); _gnutls_mpi_release (&session->key.client_Y); _gnutls_mpi_release (&session->key.client_p); _gnutls_mpi_release (&session->key.client_g); _gnutls_mpi_release (&session->key.u); _gnutls_mpi_release (&session->key.a); _gnutls_mpi_release (&session->key.x); _gnutls_mpi_release (&session->key.A); _gnutls_mpi_release (&session->key.B); _gnutls_mpi_release (&session->key.b); /* RSA */ _gnutls_mpi_release (&session->key.rsa[0]); _gnutls_mpi_release (&session->key.rsa[1]); _gnutls_mpi_release (&session->key.dh_secret); gnutls_free (session); }
/** * gnutls_rnd_refresh: * * This function refreshes the random generator state. * That is the current precise time, CPU usage, and * other values are input into its state. * * On a slower rate input from /dev/urandom is mixed too. * * Since: 3.1.7 **/ void gnutls_rnd_refresh() { _gnutls_rnd_refresh(); }