if (!ssl_cipher_get_evp(s->session->cipher,&c,&hash))
if (!ssl_cipher_get_evp(s->session,&c,&hash,&comp))
int tls1_setup_key_block(s)SSL *s;	{	unsigned char *p1,*p2;	EVP_CIPHER *c;	EVP_MD *hash;	int num,exp;	if (s->s3->tmp.key_block_length != 0)		return(1);	if (!ssl_cipher_get_evp(s->session->cipher,&c,&hash))		{		SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,SSL_R_CIPHER_OR_HASH_UNAVAILABLE);		return(0);		}	s->s3->tmp.new_sym_enc=c;	s->s3->tmp.new_hash=hash;	exp=(s->session->cipher->algorithms & SSL_EXPORT)?1:0;	num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c);	num*=2;	ssl3_cleanup_key_block(s);	if ((p1=(unsigned char *)Malloc(num)) == NULL)		goto err;	if ((p2=(unsigned char *)Malloc(num)) == NULL)		goto err;	s->s3->tmp.key_block_length=num;	s->s3->tmp.key_block=p1;#ifdef TLS_DEBUGprintf("client random\n");{ int z; for (z=0; z<SSL3_RANDOM_SIZE; z++) printf("%02X%c",s->s3->client_random[z],((z+1)%16)?' ':'\n'); }printf("server random\n");{ int z; for (z=0; z<SSL3_RANDOM_SIZE; z++) printf("%02X%c",s->s3->server_random[z],((z+1)%16)?' ':'\n'); }printf("pre-master\n");{ int z; for (z=0; z<s->session->master_key_length; z++) printf("%02X%c",s->session->master_key[z],((z+1)%16)?' ':'\n'); }#endif	tls1_generate_key_block(s,p1,p2,num);	memset(p2,0,num);	Free(p2);#ifdef TLS_DEBUGprintf("\nkey block\n");{ int z; for (z=0; z<num; z++) printf("%02X%c",p1[z],((z+1)%16)?' ':'\n'); }#endif	return(1);err:	SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,ERR_R_MALLOC_FAILURE);	return(0);	}