properly handle length-zero opaque PRF input values
[openssl.git] / ssl / d1_srvr.c
index 450524a5e91ee95ee8b9b961e3bdb7529b4aa841..d299ba618fea23ed3e9c326abf79be36f484188b 100644 (file)
@@ -145,7 +145,7 @@ IMPLEMENT_dtls1_meth_func(DTLSv1_server_method,
 int dtls1_accept(SSL *s)
        {
        BUF_MEM *buf;
-       unsigned long l,Time=(unsigned long)time(NULL);
+       unsigned long Time=(unsigned long)time(NULL);
        void (*cb)(const SSL *ssl,int type,int val)=NULL;
        long num1;
        unsigned long alg_k;
@@ -446,10 +446,10 @@ int dtls1_accept(SSL *s)
                        /* We need to get hashes here so if there is
                         * a client cert, it can be verified */ 
                        s->method->ssl3_enc->cert_verify_mac(s,
-                               &(s->s3->finish_dgst1),
+                               NID_md5,
                                &(s->s3->tmp.cert_verify_md[0]));
                        s->method->ssl3_enc->cert_verify_mac(s,
-                               &(s->s3->finish_dgst2),
+                               NID_sha1,
                                &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]));
 
                        break;
@@ -1011,6 +1011,7 @@ int dtls1_send_certificate_request(SSL *s)
        STACK_OF(X509_NAME) *sk=NULL;
        X509_NAME *name;
        BUF_MEM *buf;
+       unsigned int msg_len;
 
        if (s->state == SSL3_ST_SW_CERT_REQ_A)
                {
@@ -1088,6 +1089,10 @@ int dtls1_send_certificate_request(SSL *s)
 #endif
 
                /* XDTLS:  set message header ? */
+               msg_len = s->init_num - DTLS1_HM_HEADER_LENGTH;
+               dtls1_set_message_header(s, (void *)s->init_buf->data,
+                       SSL3_MT_CERTIFICATE_REQUEST, msg_len, 0, msg_len);
+
                /* buffer the message to handle re-xmits */
                dtls1_buffer_message(s, 0);