Use appropriate versions of SSL3_ENC_METHOD
[oweals/openssl.git] / ssl / s3_lib.c
index c6ecd8ff00b65f5e9403f20f6aaa67a868198eb7..2fe30d77a63c823a270a44d2def4ee4dacf98fa2 100644 (file)
@@ -2918,6 +2918,10 @@ SSL3_ENC_METHOD SSLv3_enc_data={
        (int (*)(SSL *, unsigned char *, size_t, const char *,
                 size_t, const unsigned char *, size_t,
                 int use_context))ssl_undefined_function,
+       0,
+       SSL3_HM_HEADER_LENGTH,
+       ssl3_set_handshake_header,
+       ssl3_handshake_write
        };
 
 long ssl3_default_timeout(void)
@@ -2948,6 +2952,20 @@ int ssl3_pending(const SSL *s)
        return (s->s3->rrec.type == SSL3_RT_APPLICATION_DATA) ? s->s3->rrec.length : 0;
        }
 
+void ssl3_set_handshake_header(SSL *s, int htype, unsigned long len)
+       {
+       unsigned char *p = (unsigned char *)s->init_buf->data;
+       *(p++) = htype;
+       l2n3(len, p);
+       s->init_num = (int)len + SSL3_HM_HEADER_LENGTH;
+       s->init_off = 0;
+       }
+
+int ssl3_handshake_write(SSL *s)
+       {
+       return ssl3_do_write(s, SSL3_RT_HANDSHAKE);
+       }
+
 int ssl3_new(SSL *s)
        {
        SSL3_STATE *s3;
@@ -3531,17 +3549,14 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
                        }
 
        case SSL_CTRL_GET_EC_POINT_FORMATS:
-               if (!s->server)
+               {
+               SSL_SESSION *sess = s->session;
+               const unsigned char **pformat = parg;
+               if (!sess || !sess->tlsext_ecpointformatlist)
                        return 0;
-               else
-                       {
-                       SSL_SESSION *sess = s->session;
-                       const unsigned char **pformat = parg;
-                       if (!sess || !sess->tlsext_ecpointformatlist)
-                               return 0;
-                       *pformat = sess->tlsext_ecpointformatlist;
-                       return (int)sess->tlsext_ecpointformatlist_length;
-                       }
+               *pformat = sess->tlsext_ecpointformatlist;
+               return (int)sess->tlsext_ecpointformatlist_length;
+               }
 
        default:
                break;
@@ -4454,4 +4469,4 @@ long ssl_get_algorithm2(SSL *s)
                return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256;
        return alg2;
        }
-               
+