summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2015-09-12 15:03:39 +0000
committerjsing <>2015-09-12 15:03:39 +0000
commit55878a118f9914f78e196c906ef6d76b6f2e269c (patch)
treef43b2c4f0a83343ac09872bb9dd4075c5d209246 /src/lib
parentbb3dc274c59720dc1e231a536edf176cf9687b2e (diff)
downloadopenbsd-55878a118f9914f78e196c906ef6d76b6f2e269c.tar.gz
openbsd-55878a118f9914f78e196c906ef6d76b6f2e269c.tar.bz2
openbsd-55878a118f9914f78e196c906ef6d76b6f2e269c.zip
Move handshake message header length determination into a separate
ssl3_handshake_msg_hdr_len() function. Use this to correct several places that have magic numbers with header lengths hardcoded as '4'. ok beck@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libssl/s3_both.c13
-rw-r--r--src/lib/libssl/s3_lib.c21
-rw-r--r--src/lib/libssl/s3_srvr.c13
-rw-r--r--src/lib/libssl/src/ssl/s3_both.c13
-rw-r--r--src/lib/libssl/src/ssl/s3_lib.c21
-rw-r--r--src/lib/libssl/src/ssl/s3_srvr.c13
-rw-r--r--src/lib/libssl/src/ssl/ssl_locl.h3
-rw-r--r--src/lib/libssl/ssl_locl.h3
8 files changed, 54 insertions, 46 deletions
diff --git a/src/lib/libssl/s3_both.c b/src/lib/libssl/s3_both.c
index 49b1e50659..cfd0fb9b4b 100644
--- a/src/lib/libssl/s3_both.c
+++ b/src/lib/libssl/s3_both.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_both.c,v 1.47 2015/09/11 18:08:21 jsing Exp $ */ 1/* $OpenBSD: s3_both.c,v 1.48 2015/09/12 15:03:39 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -326,6 +326,7 @@ ssl3_add_cert_to_buf(BUF_MEM *buf, unsigned long *l, X509 *x)
326 SSLerr(SSL_F_SSL3_ADD_CERT_TO_BUF, ERR_R_BUF_LIB); 326 SSLerr(SSL_F_SSL3_ADD_CERT_TO_BUF, ERR_R_BUF_LIB);
327 return (-1); 327 return (-1);
328 } 328 }
329 /* XXX */
329 p = (unsigned char *)&(buf->data[*l]); 330 p = (unsigned char *)&(buf->data[*l]);
330 l2n3(n, p); 331 l2n3(n, p);
331 i2d_X509(x, &p); 332 i2d_X509(x, &p);
@@ -338,10 +339,10 @@ unsigned long
338ssl3_output_cert_chain(SSL *s, X509 *x) 339ssl3_output_cert_chain(SSL *s, X509 *x)
339{ 340{
340 unsigned char *p; 341 unsigned char *p;
341 int i; 342 unsigned long l = ssl3_handshake_msg_hdr_len(s) + 3;
342 unsigned long l = 7;
343 BUF_MEM *buf; 343 BUF_MEM *buf;
344 int no_chain; 344 int no_chain;
345 int i;
345 346
346 if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || s->ctx->extra_certs) 347 if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || s->ctx->extra_certs)
347 no_chain = 1; 348 no_chain = 1;
@@ -350,7 +351,7 @@ ssl3_output_cert_chain(SSL *s, X509 *x)
350 351
351 /* TLSv1 sends a chain with nothing in it, instead of an alert */ 352 /* TLSv1 sends a chain with nothing in it, instead of an alert */
352 buf = s->init_buf; 353 buf = s->init_buf;
353 if (!BUF_MEM_grow_clean(buf, 10)) { 354 if (!BUF_MEM_grow_clean(buf, ssl3_handshake_msg_hdr_len(s) + 6)) {
354 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN, ERR_R_BUF_LIB); 355 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN, ERR_R_BUF_LIB);
355 return (0); 356 return (0);
356 } 357 }
@@ -388,14 +389,14 @@ ssl3_output_cert_chain(SSL *s, X509 *x)
388 return (0); 389 return (0);
389 } 390 }
390 391
391 l -= 7; 392 l -= ssl3_handshake_msg_hdr_len(s) + 3;
392 p = (unsigned char *)&(buf->data[4]); 393 p = (unsigned char *)&(buf->data[4]);
393 l2n3(l, p); 394 l2n3(l, p);
394 l += 3; 395 l += 3;
395 p = (unsigned char *)&(buf->data[0]); 396 p = (unsigned char *)&(buf->data[0]);
396 *(p++) = SSL3_MT_CERTIFICATE; 397 *(p++) = SSL3_MT_CERTIFICATE;
397 l2n3(l, p); 398 l2n3(l, p);
398 l += 4; 399 l += 4; /* XXX */
399 return (l); 400 return (l);
400} 401}
401 402
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
index 1a619e3d30..912ac8dbdb 100644
--- a/src/lib/libssl/s3_lib.c
+++ b/src/lib/libssl/s3_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_lib.c,v 1.104 2015/09/11 18:08:21 jsing Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.105 2015/09/12 15:03:39 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1947,22 +1947,25 @@ ssl3_pending(const SSL *s)
1947 s->s3->rrec.length : 0; 1947 s->s3->rrec.length : 0;
1948} 1948}
1949 1949
1950int
1951ssl3_handshake_msg_hdr_len(SSL *s)
1952{
1953 return (SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH :
1954 SSL3_HM_HEADER_LENGTH);
1955}
1956
1950unsigned char * 1957unsigned char *
1951ssl3_handshake_msg_start(SSL *s, uint8_t msg_type) 1958ssl3_handshake_msg_start(SSL *s, uint8_t msg_type)
1952{ 1959{
1953 unsigned char *d, *p; 1960 unsigned char *d, *p;
1954 int hdr_len;
1955 1961
1956 d = p = (unsigned char *)s->init_buf->data; 1962 d = p = (unsigned char *)s->init_buf->data;
1957 1963
1958 hdr_len = SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH :
1959 SSL3_HM_HEADER_LENGTH;
1960
1961 /* Handshake message type and length. */ 1964 /* Handshake message type and length. */
1962 *(p++) = msg_type; 1965 *(p++) = msg_type;
1963 l2n3(0, p); 1966 l2n3(0, p);
1964 1967
1965 return (d + hdr_len); 1968 return (d + ssl3_handshake_msg_hdr_len(s));
1966} 1969}
1967 1970
1968void 1971void
@@ -1970,18 +1973,14 @@ ssl3_handshake_msg_finish(SSL *s, unsigned int len)
1970{ 1973{
1971 unsigned char *d, *p; 1974 unsigned char *d, *p;
1972 uint8_t msg_type; 1975 uint8_t msg_type;
1973 int hdr_len;
1974 1976
1975 d = p = (unsigned char *)s->init_buf->data; 1977 d = p = (unsigned char *)s->init_buf->data;
1976 1978
1977 hdr_len = SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH :
1978 SSL3_HM_HEADER_LENGTH;
1979
1980 /* Handshake message length. */ 1979 /* Handshake message length. */
1981 msg_type = *(p++); 1980 msg_type = *(p++);
1982 l2n3(len, p); 1981 l2n3(len, p);
1983 1982
1984 s->init_num = hdr_len + (int)len; 1983 s->init_num = ssl3_handshake_msg_hdr_len(s) + (int)len;
1985 s->init_off = 0; 1984 s->init_off = 0;
1986 1985
1987 if (SSL_IS_DTLS(s)) { 1986 if (SSL_IS_DTLS(s)) {
diff --git a/src/lib/libssl/s3_srvr.c b/src/lib/libssl/s3_srvr.c
index e9496f9b9d..dbcbc9b709 100644
--- a/src/lib/libssl/s3_srvr.c
+++ b/src/lib/libssl/s3_srvr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_srvr.c,v 1.119 2015/09/12 13:03:06 jsing Exp $ */ 1/* $OpenBSD: s3_srvr.c,v 1.120 2015/09/12 15:03:39 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1398,7 +1398,8 @@ ssl3_send_server_key_exchange(SSL *s)
1398 kn = 0; 1398 kn = 0;
1399 } 1399 }
1400 1400
1401 if (!BUF_MEM_grow_clean(buf, n + 4 + kn)) { 1401 if (!BUF_MEM_grow_clean(buf, ssl3_handshake_msg_hdr_len(s) +
1402 n + kn)) {
1402 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, 1403 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,
1403 ERR_LIB_BUF); 1404 ERR_LIB_BUF);
1404 goto err; 1405 goto err;
@@ -1570,7 +1571,9 @@ ssl3_send_certificate_request(SSL *s)
1570 for (i = 0; i < sk_X509_NAME_num(sk); i++) { 1571 for (i = 0; i < sk_X509_NAME_num(sk); i++) {
1571 name = sk_X509_NAME_value(sk, i); 1572 name = sk_X509_NAME_value(sk, i);
1572 j = i2d_X509_NAME(name, NULL); 1573 j = i2d_X509_NAME(name, NULL);
1573 if (!BUF_MEM_grow_clean(buf, 4 + n + j + 2)) { 1574 if (!BUF_MEM_grow_clean(buf,
1575 ssl3_handshake_msg_hdr_len(s) + n + j
1576 + 2)) {
1574 SSLerr( 1577 SSLerr(
1575 SSL_F_SSL3_SEND_CERTIFICATE_REQUEST, 1578 SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,
1576 ERR_R_BUF_LIB); 1579 ERR_R_BUF_LIB);
@@ -2523,8 +2526,8 @@ ssl3_send_newsession_ticket(SSL *s)
2523 * session_length + max_enc_block_size (max encrypted session 2526 * session_length + max_enc_block_size (max encrypted session
2524 * length) + max_md_size (HMAC). 2527 * length) + max_md_size (HMAC).
2525 */ 2528 */
2526 if (!BUF_MEM_grow(s->init_buf, 2529 if (!BUF_MEM_grow(s->init_buf, ssl3_handshake_msg_hdr_len(s) +
2527 26 + EVP_MAX_IV_LENGTH + EVP_MAX_BLOCK_LENGTH + 2530 22 + EVP_MAX_IV_LENGTH + EVP_MAX_BLOCK_LENGTH +
2528 EVP_MAX_MD_SIZE + slen)) { 2531 EVP_MAX_MD_SIZE + slen)) {
2529 free(senc); 2532 free(senc);
2530 return (-1); 2533 return (-1);
diff --git a/src/lib/libssl/src/ssl/s3_both.c b/src/lib/libssl/src/ssl/s3_both.c
index 49b1e50659..cfd0fb9b4b 100644
--- a/src/lib/libssl/src/ssl/s3_both.c
+++ b/src/lib/libssl/src/ssl/s3_both.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_both.c,v 1.47 2015/09/11 18:08:21 jsing Exp $ */ 1/* $OpenBSD: s3_both.c,v 1.48 2015/09/12 15:03:39 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -326,6 +326,7 @@ ssl3_add_cert_to_buf(BUF_MEM *buf, unsigned long *l, X509 *x)
326 SSLerr(SSL_F_SSL3_ADD_CERT_TO_BUF, ERR_R_BUF_LIB); 326 SSLerr(SSL_F_SSL3_ADD_CERT_TO_BUF, ERR_R_BUF_LIB);
327 return (-1); 327 return (-1);
328 } 328 }
329 /* XXX */
329 p = (unsigned char *)&(buf->data[*l]); 330 p = (unsigned char *)&(buf->data[*l]);
330 l2n3(n, p); 331 l2n3(n, p);
331 i2d_X509(x, &p); 332 i2d_X509(x, &p);
@@ -338,10 +339,10 @@ unsigned long
338ssl3_output_cert_chain(SSL *s, X509 *x) 339ssl3_output_cert_chain(SSL *s, X509 *x)
339{ 340{
340 unsigned char *p; 341 unsigned char *p;
341 int i; 342 unsigned long l = ssl3_handshake_msg_hdr_len(s) + 3;
342 unsigned long l = 7;
343 BUF_MEM *buf; 343 BUF_MEM *buf;
344 int no_chain; 344 int no_chain;
345 int i;
345 346
346 if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || s->ctx->extra_certs) 347 if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || s->ctx->extra_certs)
347 no_chain = 1; 348 no_chain = 1;
@@ -350,7 +351,7 @@ ssl3_output_cert_chain(SSL *s, X509 *x)
350 351
351 /* TLSv1 sends a chain with nothing in it, instead of an alert */ 352 /* TLSv1 sends a chain with nothing in it, instead of an alert */
352 buf = s->init_buf; 353 buf = s->init_buf;
353 if (!BUF_MEM_grow_clean(buf, 10)) { 354 if (!BUF_MEM_grow_clean(buf, ssl3_handshake_msg_hdr_len(s) + 6)) {
354 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN, ERR_R_BUF_LIB); 355 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN, ERR_R_BUF_LIB);
355 return (0); 356 return (0);
356 } 357 }
@@ -388,14 +389,14 @@ ssl3_output_cert_chain(SSL *s, X509 *x)
388 return (0); 389 return (0);
389 } 390 }
390 391
391 l -= 7; 392 l -= ssl3_handshake_msg_hdr_len(s) + 3;
392 p = (unsigned char *)&(buf->data[4]); 393 p = (unsigned char *)&(buf->data[4]);
393 l2n3(l, p); 394 l2n3(l, p);
394 l += 3; 395 l += 3;
395 p = (unsigned char *)&(buf->data[0]); 396 p = (unsigned char *)&(buf->data[0]);
396 *(p++) = SSL3_MT_CERTIFICATE; 397 *(p++) = SSL3_MT_CERTIFICATE;
397 l2n3(l, p); 398 l2n3(l, p);
398 l += 4; 399 l += 4; /* XXX */
399 return (l); 400 return (l);
400} 401}
401 402
diff --git a/src/lib/libssl/src/ssl/s3_lib.c b/src/lib/libssl/src/ssl/s3_lib.c
index 1a619e3d30..912ac8dbdb 100644
--- a/src/lib/libssl/src/ssl/s3_lib.c
+++ b/src/lib/libssl/src/ssl/s3_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_lib.c,v 1.104 2015/09/11 18:08:21 jsing Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.105 2015/09/12 15:03:39 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1947,22 +1947,25 @@ ssl3_pending(const SSL *s)
1947 s->s3->rrec.length : 0; 1947 s->s3->rrec.length : 0;
1948} 1948}
1949 1949
1950int
1951ssl3_handshake_msg_hdr_len(SSL *s)
1952{
1953 return (SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH :
1954 SSL3_HM_HEADER_LENGTH);
1955}
1956
1950unsigned char * 1957unsigned char *
1951ssl3_handshake_msg_start(SSL *s, uint8_t msg_type) 1958ssl3_handshake_msg_start(SSL *s, uint8_t msg_type)
1952{ 1959{
1953 unsigned char *d, *p; 1960 unsigned char *d, *p;
1954 int hdr_len;
1955 1961
1956 d = p = (unsigned char *)s->init_buf->data; 1962 d = p = (unsigned char *)s->init_buf->data;
1957 1963
1958 hdr_len = SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH :
1959 SSL3_HM_HEADER_LENGTH;
1960
1961 /* Handshake message type and length. */ 1964 /* Handshake message type and length. */
1962 *(p++) = msg_type; 1965 *(p++) = msg_type;
1963 l2n3(0, p); 1966 l2n3(0, p);
1964 1967
1965 return (d + hdr_len); 1968 return (d + ssl3_handshake_msg_hdr_len(s));
1966} 1969}
1967 1970
1968void 1971void
@@ -1970,18 +1973,14 @@ ssl3_handshake_msg_finish(SSL *s, unsigned int len)
1970{ 1973{
1971 unsigned char *d, *p; 1974 unsigned char *d, *p;
1972 uint8_t msg_type; 1975 uint8_t msg_type;
1973 int hdr_len;
1974 1976
1975 d = p = (unsigned char *)s->init_buf->data; 1977 d = p = (unsigned char *)s->init_buf->data;
1976 1978
1977 hdr_len = SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH :
1978 SSL3_HM_HEADER_LENGTH;
1979
1980 /* Handshake message length. */ 1979 /* Handshake message length. */
1981 msg_type = *(p++); 1980 msg_type = *(p++);
1982 l2n3(len, p); 1981 l2n3(len, p);
1983 1982
1984 s->init_num = hdr_len + (int)len; 1983 s->init_num = ssl3_handshake_msg_hdr_len(s) + (int)len;
1985 s->init_off = 0; 1984 s->init_off = 0;
1986 1985
1987 if (SSL_IS_DTLS(s)) { 1986 if (SSL_IS_DTLS(s)) {
diff --git a/src/lib/libssl/src/ssl/s3_srvr.c b/src/lib/libssl/src/ssl/s3_srvr.c
index e9496f9b9d..dbcbc9b709 100644
--- a/src/lib/libssl/src/ssl/s3_srvr.c
+++ b/src/lib/libssl/src/ssl/s3_srvr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_srvr.c,v 1.119 2015/09/12 13:03:06 jsing Exp $ */ 1/* $OpenBSD: s3_srvr.c,v 1.120 2015/09/12 15:03:39 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1398,7 +1398,8 @@ ssl3_send_server_key_exchange(SSL *s)
1398 kn = 0; 1398 kn = 0;
1399 } 1399 }
1400 1400
1401 if (!BUF_MEM_grow_clean(buf, n + 4 + kn)) { 1401 if (!BUF_MEM_grow_clean(buf, ssl3_handshake_msg_hdr_len(s) +
1402 n + kn)) {
1402 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, 1403 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,
1403 ERR_LIB_BUF); 1404 ERR_LIB_BUF);
1404 goto err; 1405 goto err;
@@ -1570,7 +1571,9 @@ ssl3_send_certificate_request(SSL *s)
1570 for (i = 0; i < sk_X509_NAME_num(sk); i++) { 1571 for (i = 0; i < sk_X509_NAME_num(sk); i++) {
1571 name = sk_X509_NAME_value(sk, i); 1572 name = sk_X509_NAME_value(sk, i);
1572 j = i2d_X509_NAME(name, NULL); 1573 j = i2d_X509_NAME(name, NULL);
1573 if (!BUF_MEM_grow_clean(buf, 4 + n + j + 2)) { 1574 if (!BUF_MEM_grow_clean(buf,
1575 ssl3_handshake_msg_hdr_len(s) + n + j
1576 + 2)) {
1574 SSLerr( 1577 SSLerr(
1575 SSL_F_SSL3_SEND_CERTIFICATE_REQUEST, 1578 SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,
1576 ERR_R_BUF_LIB); 1579 ERR_R_BUF_LIB);
@@ -2523,8 +2526,8 @@ ssl3_send_newsession_ticket(SSL *s)
2523 * session_length + max_enc_block_size (max encrypted session 2526 * session_length + max_enc_block_size (max encrypted session
2524 * length) + max_md_size (HMAC). 2527 * length) + max_md_size (HMAC).
2525 */ 2528 */
2526 if (!BUF_MEM_grow(s->init_buf, 2529 if (!BUF_MEM_grow(s->init_buf, ssl3_handshake_msg_hdr_len(s) +
2527 26 + EVP_MAX_IV_LENGTH + EVP_MAX_BLOCK_LENGTH + 2530 22 + EVP_MAX_IV_LENGTH + EVP_MAX_BLOCK_LENGTH +
2528 EVP_MAX_MD_SIZE + slen)) { 2531 EVP_MAX_MD_SIZE + slen)) {
2529 free(senc); 2532 free(senc);
2530 return (-1); 2533 return (-1);
diff --git a/src/lib/libssl/src/ssl/ssl_locl.h b/src/lib/libssl/src/ssl/ssl_locl.h
index 130482dbba..cb7889ffb7 100644
--- a/src/lib/libssl/src/ssl/ssl_locl.h
+++ b/src/lib/libssl/src/ssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.126 2015/09/12 14:32:24 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.127 2015/09/12 15:03:39 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -641,6 +641,7 @@ long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void));
641long ssl3_ctx_callback_ctrl(SSL_CTX *s, int cmd, void (*fp)(void)); 641long ssl3_ctx_callback_ctrl(SSL_CTX *s, int cmd, void (*fp)(void));
642int ssl3_pending(const SSL *s); 642int ssl3_pending(const SSL *s);
643 643
644int ssl3_handshake_msg_hdr_len(SSL *s);
644unsigned char *ssl3_handshake_msg_start(SSL *s, uint8_t htype); 645unsigned char *ssl3_handshake_msg_start(SSL *s, uint8_t htype);
645void ssl3_handshake_msg_finish(SSL *s, unsigned int len); 646void ssl3_handshake_msg_finish(SSL *s, unsigned int len);
646int ssl3_handshake_write(SSL *s); 647int ssl3_handshake_write(SSL *s);
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index 130482dbba..cb7889ffb7 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.126 2015/09/12 14:32:24 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.127 2015/09/12 15:03:39 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -641,6 +641,7 @@ long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void));
641long ssl3_ctx_callback_ctrl(SSL_CTX *s, int cmd, void (*fp)(void)); 641long ssl3_ctx_callback_ctrl(SSL_CTX *s, int cmd, void (*fp)(void));
642int ssl3_pending(const SSL *s); 642int ssl3_pending(const SSL *s);
643 643
644int ssl3_handshake_msg_hdr_len(SSL *s);
644unsigned char *ssl3_handshake_msg_start(SSL *s, uint8_t htype); 645unsigned char *ssl3_handshake_msg_start(SSL *s, uint8_t htype);
645void ssl3_handshake_msg_finish(SSL *s, unsigned int len); 646void ssl3_handshake_msg_finish(SSL *s, unsigned int len);
646int ssl3_handshake_write(SSL *s); 647int ssl3_handshake_write(SSL *s);