Cryptography Reference
In-Depth Information
renegotiation_extension_length = htons( renegotiation_extension_length );
write_ptr = append_buffer( write_ptr,
( void *) &renegotiation_extension_length,
sizeof( unsigned short ) );
write_ptr = append_buffer( write_ptr, renegotiation_extension,
ntohs( renegotiation_extension_length ) );
free( renegotiation_extension );
}
return extensions_length;
}
static int send_client_hello( int connection,
TLSParameters *parameters,
int renegotiating )
{
unsigned char *extensions;
unsigned short extensions_length;
extensions_length = add_client_hello_extensions( &extensions,
parameters, renegotiating );
send_buffer_size = sizeof( ProtocolVersion ) +
sizeof( Random ) +
sizeof( unsigned char ) +
( sizeof( unsigned char ) * package.session_id_length ) +
sizeof( unsigned short ) +
( sizeof( unsigned short ) * 1 ) +
sizeof( unsigned char ) +
sizeof( unsigned char ) +
extensions_length + sizeof( unsigned short ); // extensions support
extensions_length = htons( extensions_length );
write_buffer = append_buffer( write_buffer, ( void * ) &extensions_length,
2 );
write_buffer = append_buffer( write_buffer, ( void * ) extensions,
ntohs( extensions_length ) );
free( extensions );
assert( ( ( char * ) write_buffer - send_buffer ) == send_buffer_size );
status = send_handshake_message( connection, client_hello, send_buffer,
send_buffer_size, parameters );
This logic is the inverse of the logic that was discussed in Listing 8-2.
5. Add the secure renegotiation extension to every client hello request as
shown in Listing 8-42.
Search WWH ::




Custom Search