构造Server Hello消息
int tls_construct_server_hello(SSL *s)
{
unsigned char *buf;
unsigned char *p, *d;
int i, sl;
int al = 0;
unsigned long l;
/*我们知道数据包包含了头部和数据两个部分,在构造的时候是分别构造的,一般的头部部分构造比较复杂,数据部分通常就是一个拷贝操作。这里的 ssl_handshake_start就是一个区分头部和数据部分的指针。# define ssl_handshake_start(s) (((unsigned char *)s->init_buf->data) + s->method->ssl3_enc->hhlen)*/
buf = (unsigned char *)s->init_buf->data;
d = p = ssl_handshake_start(s);
//拿到了头部的指针之后,就可以开始往里顺序的填充头部了。首先填充的是版本号
*(p++) = s->version >> 8;
*(p++) = s->version & 0xff;
/*
* 填充服务端产生的随机数
*/
memcpy(p, s