Cryptography Reference
In-Depth Information
while ( !parameters->got_server_verify )
{
if ( receive_ssl_message( connection, NULL, 0, parameters ) == -1 )
{
return -1;
}
}
while ( !parameters->got_server_finished )
{
if ( receive_ssl_message( connection, NULL, 0, parameters ) == -1 )
{
return -1;
}
}
parameters->handshake_finished = 1;
return 0;
}
The fi rst call is to init_parameters in Listing C-9, which just resets all of the
SSLParameters values.
Listing C-9: “ssl.c” init_parameters
static void init_parameters( SSLParameters *parameters )
{
int i;
parameters->active_cipher_spec = NULL;
parameters->proposed_cipher_spec = NULL;
parameters->write_key = NULL;
parameters->read_key = NULL;
parameters->read_state = NULL;
parameters->write_state = NULL;
parameters->write_iv = NULL;
parameters->read_iv = NULL;
parameters->write_sequence_number = 0;
parameters->read_sequence_number = 0;
parameters->got_server_hello = 0;
parameters->got_server_verify = 0;
parameters->handshake_finished = 0;
for ( i = 0; i < CHALLENGE_LEN; i++ )
{
// XXX this should be random
parameters->challenge[ i ] = i;
}
parameters->master_key = NULL;
(Continued)
 
Search WWH ::




Custom Search