diff options
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
-rw-r--r-- | src/lib/libssl/s3_lib.c | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index e60f004e57..f372b6523c 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.89 2014/12/14 15:30:50 jsing Exp $ */ | 1 | /* $OpenBSD: s3_lib.c,v 1.90 2014/12/14 16:07:26 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 | * |
@@ -1837,6 +1837,58 @@ ssl3_pending(const SSL *s) | |||
1837 | s->s3->rrec.length : 0; | 1837 | s->s3->rrec.length : 0; |
1838 | } | 1838 | } |
1839 | 1839 | ||
1840 | unsigned char * | ||
1841 | ssl3_handshake_msg_start(SSL *s, uint8_t msg_type) | ||
1842 | { | ||
1843 | unsigned char *d, *p; | ||
1844 | int hdr_len; | ||
1845 | |||
1846 | d = p = (unsigned char *)s->init_buf->data; | ||
1847 | |||
1848 | hdr_len = SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH : | ||
1849 | SSL3_HM_HEADER_LENGTH; | ||
1850 | |||
1851 | /* Handshake message type and length. */ | ||
1852 | *(p++) = msg_type; | ||
1853 | l2n3(0, p); | ||
1854 | |||
1855 | return (d + hdr_len); | ||
1856 | } | ||
1857 | |||
1858 | void | ||
1859 | ssl3_handshake_msg_finish(SSL *s, unsigned int len) | ||
1860 | { | ||
1861 | unsigned char *d, *p; | ||
1862 | uint8_t msg_type; | ||
1863 | int hdr_len; | ||
1864 | |||
1865 | d = p = (unsigned char *)s->init_buf->data; | ||
1866 | |||
1867 | hdr_len = SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH : | ||
1868 | SSL3_HM_HEADER_LENGTH; | ||
1869 | |||
1870 | /* Handshake message length. */ | ||
1871 | msg_type = *(p++); | ||
1872 | l2n3(len, p); | ||
1873 | |||
1874 | s->init_num = hdr_len + (int)len; | ||
1875 | s->init_off = 0; | ||
1876 | |||
1877 | if (SSL_IS_DTLS(s)) { | ||
1878 | dtls1_set_message_header(s, d, msg_type, len, 0, len); | ||
1879 | dtls1_buffer_message(s, 0); | ||
1880 | } | ||
1881 | } | ||
1882 | |||
1883 | int | ||
1884 | ssl3_handshake_write(SSL *s) | ||
1885 | { | ||
1886 | if (SSL_IS_DTLS(s)) | ||
1887 | return dtls1_do_write(s, SSL3_RT_HANDSHAKE); | ||
1888 | |||
1889 | return ssl3_do_write(s, SSL3_RT_HANDSHAKE); | ||
1890 | } | ||
1891 | |||
1840 | int | 1892 | int |
1841 | ssl3_new(SSL *s) | 1893 | ssl3_new(SSL *s) |
1842 | { | 1894 | { |