I'll be using this to make an option for randomizing the time.
for (i=0;p[i]=='\0' && i<sizeof(s->s3->client_random);i++) ;
if (i==sizeof(s->s3->client_random))
{
- RAND_pseudo_bytes(p,sizeof(s->s3->client_random));
+ ssl_fill_hello_random(s,0,p,sizeof(s->s3->client_random));
}
/* Do the message type and length last */
{
buf=(unsigned char *)s->init_buf->data;
p=s->s3->server_random;
- RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE);
+ ssl_fill_hello_random(s, 1, p, SSL3_RANDOM_SIZE);
/* Do the message type and length last */
d=p= &(buf[DTLS1_HM_HEADER_LENGTH]);
return 1;
}
+/* Fill a ClientRandom or ServerRandom field of length len. Returns <= 0
+ * on failure, 1 on success. */
+int ssl_fill_hello_random(SSL *s, int server, unsigned char *result, int len)
+ {
+ return RAND_pseudo_bytes(result, len);
+ }
+
static int ssl23_client_hello(SSL *s)
{
unsigned char *buf;
#endif
p=s->s3->client_random;
- if (RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE) <= 0)
+ if (ssl_fill_hello_random(s, 0, p, SSL3_RANDOM_SIZE) <= 0)
return -1;
if (version == TLS1_2_VERSION)
/* else use the pre-loaded session */
p=s->s3->client_random;
- if (RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE) <= 0)
+
+ if (ssl_fill_hello_random(s, 0, p, SSL3_RANDOM_SIZE) <= 0)
goto err;
/* Do the message type and length last */
* SessionTicket processing to use it in key derivation. */
{
unsigned char *pos;
- pos=s->s3->server_random;
- if (RAND_pseudo_bytes(pos,SSL3_RANDOM_SIZE) <= 0)
+ pos=s->s3->server_random;
+ if (ssl_fill_hello_random(s,1,pos,SSL3_RANDOM_SIZE) <= 0)
{
al=SSL_AD_INTERNAL_ERROR;
goto f_err;
STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s);
int ssl_verify_alarm_type(long type);
void ssl_load_ciphers(void);
+int ssl_fill_hello_random(SSL *s, int server, unsigned char *field, int len);
int ssl2_enc_init(SSL *s, int client);
int ssl2_generate_key_material(SSL *s);