summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2014-05-24 12:44:48 +0000
committerjsing <>2014-05-24 12:44:48 +0000
commit52c89a2661760a5549aeb55a62ea9957c3379e64 (patch)
treed69c2da4faf1b7f2a4d061a5b3cf3601197a246a
parent423deaf23c5a306d0f9bc96d6e1e9584d85f7c16 (diff)
downloadopenbsd-52c89a2661760a5549aeb55a62ea9957c3379e64.tar.gz
openbsd-52c89a2661760a5549aeb55a62ea9957c3379e64.tar.bz2
openbsd-52c89a2661760a5549aeb55a62ea9957c3379e64.zip
DeIMPLEMENT libssl. Expand the IMPLEMENT_* macros since it is far more
readable and one less layer of abstraction. Use C99 initialisers for clarity, grepability and to protect from future field reordering/removal. ok miod@ (tedu@ also thought it was a wonderful idea, beck@ also agreed, but ran away squealing since it reminded him of the VOP layer...)
-rw-r--r--src/lib/libssl/d1_clnt.c41
-rw-r--r--src/lib/libssl/d1_meth.c42
-rw-r--r--src/lib/libssl/d1_srvr.c41
-rw-r--r--src/lib/libssl/s23_clnt.c42
-rw-r--r--src/lib/libssl/s23_srvr.c42
-rw-r--r--src/lib/libssl/s3_clnt.c41
-rw-r--r--src/lib/libssl/s3_srvr.c42
-rw-r--r--src/lib/libssl/src/ssl/d1_clnt.c41
-rw-r--r--src/lib/libssl/src/ssl/d1_meth.c42
-rw-r--r--src/lib/libssl/src/ssl/d1_srvr.c41
-rw-r--r--src/lib/libssl/src/ssl/s23_clnt.c42
-rw-r--r--src/lib/libssl/src/ssl/s23_meth.c43
-rw-r--r--src/lib/libssl/src/ssl/s23_srvr.c42
-rw-r--r--src/lib/libssl/src/ssl/s3_clnt.c41
-rw-r--r--src/lib/libssl/src/ssl/s3_meth.c43
-rw-r--r--src/lib/libssl/src/ssl/s3_srvr.c42
-rw-r--r--src/lib/libssl/src/ssl/ssl_locl.h155
-rw-r--r--src/lib/libssl/src/ssl/t1_clnt.c123
-rw-r--r--src/lib/libssl/src/ssl/t1_meth.c125
-rw-r--r--src/lib/libssl/src/ssl/t1_srvr.c123
-rw-r--r--src/lib/libssl/ssl_locl.h155
-rw-r--r--src/lib/libssl/t1_clnt.c123
-rw-r--r--src/lib/libssl/t1_meth.c125
-rw-r--r--src/lib/libssl/t1_srvr.c123
24 files changed, 1308 insertions, 412 deletions
diff --git a/src/lib/libssl/d1_clnt.c b/src/lib/libssl/d1_clnt.c
index 8967879f70..8f304a75ff 100644
--- a/src/lib/libssl/d1_clnt.c
+++ b/src/lib/libssl/d1_clnt.c
@@ -128,6 +128,44 @@
128static const SSL_METHOD *dtls1_get_client_method(int ver); 128static const SSL_METHOD *dtls1_get_client_method(int ver);
129static int dtls1_get_hello_verify(SSL *s); 129static int dtls1_get_hello_verify(SSL *s);
130 130
131const SSL_METHOD DTLSv1_client_method_data = {
132 .version = DTLS1_VERSION,
133 .ssl_new = dtls1_new,
134 .ssl_clear = dtls1_clear,
135 .ssl_free = dtls1_free,
136 .ssl_accept = ssl_undefined_function,
137 .ssl_connect = dtls1_connect,
138 .ssl_read = ssl3_read,
139 .ssl_peek = ssl3_peek,
140 .ssl_write = ssl3_write,
141 .ssl_shutdown = dtls1_shutdown,
142 .ssl_renegotiate = ssl3_renegotiate,
143 .ssl_renegotiate_check = ssl3_renegotiate_check,
144 .ssl_get_message = dtls1_get_message,
145 .ssl_read_bytes = dtls1_read_bytes,
146 .ssl_write_bytes = dtls1_write_app_data_bytes,
147 .ssl_dispatch_alert = dtls1_dispatch_alert,
148 .ssl_ctrl = dtls1_ctrl,
149 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
150 .get_cipher_by_char = ssl3_get_cipher_by_char,
151 .put_cipher_by_char = ssl3_put_cipher_by_char,
152 .ssl_pending = ssl3_pending,
153 .num_ciphers = ssl3_num_ciphers,
154 .get_cipher = dtls1_get_cipher,
155 .get_ssl_method = dtls1_get_client_method,
156 .get_timeout = dtls1_default_timeout,
157 .ssl3_enc = &DTLSv1_enc_data,
158 .ssl_version = ssl_undefined_void_function,
159 .ssl_callback_ctrl = ssl3_callback_ctrl,
160 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
161};
162
163const SSL_METHOD *
164DTLSv1_client_method(void)
165{
166 return &DTLSv1_client_method_data;
167}
168
131static const SSL_METHOD * 169static const SSL_METHOD *
132dtls1_get_client_method(int ver) 170dtls1_get_client_method(int ver)
133{ 171{
@@ -136,9 +174,6 @@ dtls1_get_client_method(int ver)
136 return (NULL); 174 return (NULL);
137} 175}
138 176
139IMPLEMENT_dtls1_meth_func(DTLSv1_client_method,
140 ssl_undefined_function, dtls1_connect, dtls1_get_client_method)
141
142int 177int
143dtls1_connect(SSL *s) 178dtls1_connect(SSL *s)
144{ 179{
diff --git a/src/lib/libssl/d1_meth.c b/src/lib/libssl/d1_meth.c
index 1140da6825..5e4bf0230c 100644
--- a/src/lib/libssl/d1_meth.c
+++ b/src/lib/libssl/d1_meth.c
@@ -62,6 +62,45 @@
62#include "ssl_locl.h" 62#include "ssl_locl.h"
63 63
64static const SSL_METHOD *dtls1_get_method(int ver); 64static const SSL_METHOD *dtls1_get_method(int ver);
65
66const SSL_METHOD DTLSv1_method_data = {
67 .version = DTLS1_VERSION,
68 .ssl_new = dtls1_new,
69 .ssl_clear = dtls1_clear,
70 .ssl_free = dtls1_free,
71 .ssl_accept = dtls1_accept,
72 .ssl_connect = dtls1_connect,
73 .ssl_read = ssl3_read,
74 .ssl_peek = ssl3_peek,
75 .ssl_write = ssl3_write,
76 .ssl_shutdown = dtls1_shutdown,
77 .ssl_renegotiate = ssl3_renegotiate,
78 .ssl_renegotiate_check = ssl3_renegotiate_check,
79 .ssl_get_message = dtls1_get_message,
80 .ssl_read_bytes = dtls1_read_bytes,
81 .ssl_write_bytes = dtls1_write_app_data_bytes,
82 .ssl_dispatch_alert = dtls1_dispatch_alert,
83 .ssl_ctrl = dtls1_ctrl,
84 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
85 .get_cipher_by_char = ssl3_get_cipher_by_char,
86 .put_cipher_by_char = ssl3_put_cipher_by_char,
87 .ssl_pending = ssl3_pending,
88 .num_ciphers = ssl3_num_ciphers,
89 .get_cipher = dtls1_get_cipher,
90 .get_ssl_method = dtls1_get_method,
91 .get_timeout = dtls1_default_timeout,
92 .ssl3_enc = &DTLSv1_enc_data,
93 .ssl_version = ssl_undefined_void_function,
94 .ssl_callback_ctrl = ssl3_callback_ctrl,
95 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
96};
97
98const SSL_METHOD *
99DTLSv1_method(void)
100{
101 return &DTLSv1_method_data;
102}
103
65static const SSL_METHOD * 104static const SSL_METHOD *
66dtls1_get_method(int ver) 105dtls1_get_method(int ver)
67{ 106{
@@ -69,6 +108,3 @@ dtls1_get_method(int ver)
69 return (DTLSv1_method()); 108 return (DTLSv1_method());
70 return (NULL); 109 return (NULL);
71} 110}
72
73IMPLEMENT_dtls1_meth_func(DTLSv1_method,
74 dtls1_accept, dtls1_connect, dtls1_get_method)
diff --git a/src/lib/libssl/d1_srvr.c b/src/lib/libssl/d1_srvr.c
index 6183815a6d..2c22a25bce 100644
--- a/src/lib/libssl/d1_srvr.c
+++ b/src/lib/libssl/d1_srvr.c
@@ -129,6 +129,44 @@
129static const SSL_METHOD *dtls1_get_server_method(int ver); 129static const SSL_METHOD *dtls1_get_server_method(int ver);
130static int dtls1_send_hello_verify_request(SSL *s); 130static int dtls1_send_hello_verify_request(SSL *s);
131 131
132const SSL_METHOD DTLSv1_server_method_data = {
133 .version = DTLS1_VERSION,
134 .ssl_new = dtls1_new,
135 .ssl_clear = dtls1_clear,
136 .ssl_free = dtls1_free,
137 .ssl_accept = dtls1_accept,
138 .ssl_connect = ssl_undefined_function,
139 .ssl_read = ssl3_read,
140 .ssl_peek = ssl3_peek,
141 .ssl_write = ssl3_write,
142 .ssl_shutdown = dtls1_shutdown,
143 .ssl_renegotiate = ssl3_renegotiate,
144 .ssl_renegotiate_check = ssl3_renegotiate_check,
145 .ssl_get_message = dtls1_get_message,
146 .ssl_read_bytes = dtls1_read_bytes,
147 .ssl_write_bytes = dtls1_write_app_data_bytes,
148 .ssl_dispatch_alert = dtls1_dispatch_alert,
149 .ssl_ctrl = dtls1_ctrl,
150 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
151 .get_cipher_by_char = ssl3_get_cipher_by_char,
152 .put_cipher_by_char = ssl3_put_cipher_by_char,
153 .ssl_pending = ssl3_pending,
154 .num_ciphers = ssl3_num_ciphers,
155 .get_cipher = dtls1_get_cipher,
156 .get_ssl_method = dtls1_get_server_method,
157 .get_timeout = dtls1_default_timeout,
158 .ssl3_enc = &DTLSv1_enc_data,
159 .ssl_version = ssl_undefined_void_function,
160 .ssl_callback_ctrl = ssl3_callback_ctrl,
161 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
162};
163
164const SSL_METHOD *
165DTLSv1_server_method(void)
166{
167 return &DTLSv1_server_method_data;
168}
169
132static const SSL_METHOD * 170static const SSL_METHOD *
133dtls1_get_server_method(int ver) 171dtls1_get_server_method(int ver)
134{ 172{
@@ -137,9 +175,6 @@ dtls1_get_server_method(int ver)
137 return (NULL); 175 return (NULL);
138} 176}
139 177
140IMPLEMENT_dtls1_meth_func(DTLSv1_server_method,
141 dtls1_accept, ssl_undefined_function, dtls1_get_server_method)
142
143int 178int
144dtls1_accept(SSL *s) 179dtls1_accept(SSL *s)
145{ 180{
diff --git a/src/lib/libssl/s23_clnt.c b/src/lib/libssl/s23_clnt.c
index 293b1e5da2..897ac7efe3 100644
--- a/src/lib/libssl/s23_clnt.c
+++ b/src/lib/libssl/s23_clnt.c
@@ -119,6 +119,45 @@
119static const SSL_METHOD *ssl23_get_client_method(int ver); 119static const SSL_METHOD *ssl23_get_client_method(int ver);
120static int ssl23_client_hello(SSL *s); 120static int ssl23_client_hello(SSL *s);
121static int ssl23_get_server_hello(SSL *s); 121static int ssl23_get_server_hello(SSL *s);
122
123const SSL_METHOD SSLv23_client_method_data = {
124 .version = TLS1_2_VERSION,
125 .ssl_new = tls1_new,
126 .ssl_clear = tls1_clear,
127 .ssl_free = tls1_free,
128 .ssl_accept = ssl_undefined_function,
129 .ssl_connect = ssl23_connect,
130 .ssl_read = ssl23_read,
131 .ssl_peek = ssl23_peek,
132 .ssl_write = ssl23_write,
133 .ssl_shutdown = ssl_undefined_function,
134 .ssl_renegotiate = ssl_undefined_function,
135 .ssl_renegotiate_check = ssl_ok,
136 .ssl_get_message = ssl3_get_message,
137 .ssl_read_bytes = ssl3_read_bytes,
138 .ssl_write_bytes = ssl3_write_bytes,
139 .ssl_dispatch_alert = ssl3_dispatch_alert,
140 .ssl_ctrl = ssl3_ctrl,
141 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
142 .get_cipher_by_char = ssl23_get_cipher_by_char,
143 .put_cipher_by_char = ssl23_put_cipher_by_char,
144 .ssl_pending = ssl_undefined_const_function,
145 .num_ciphers = ssl23_num_ciphers,
146 .get_cipher = ssl23_get_cipher,
147 .get_ssl_method = ssl23_get_client_method,
148 .get_timeout = ssl23_default_timeout,
149 .ssl3_enc = &ssl3_undef_enc_method,
150 .ssl_version = ssl_undefined_void_function,
151 .ssl_callback_ctrl = ssl3_callback_ctrl,
152 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
153};
154
155const SSL_METHOD *
156SSLv23_client_method(void)
157{
158 return &SSLv23_client_method_data;
159}
160
122static const SSL_METHOD * 161static const SSL_METHOD *
123ssl23_get_client_method(int ver) 162ssl23_get_client_method(int ver)
124{ 163{
@@ -133,9 +172,6 @@ ssl23_get_client_method(int ver)
133 return (NULL); 172 return (NULL);
134} 173}
135 174
136IMPLEMENT_ssl23_meth_func(SSLv23_client_method,
137 ssl_undefined_function, ssl23_connect, ssl23_get_client_method)
138
139int 175int
140ssl23_connect(SSL *s) 176ssl23_connect(SSL *s)
141{ 177{
diff --git a/src/lib/libssl/s23_srvr.c b/src/lib/libssl/s23_srvr.c
index 1f17c19c06..94e669ae14 100644
--- a/src/lib/libssl/s23_srvr.c
+++ b/src/lib/libssl/s23_srvr.c
@@ -118,6 +118,45 @@
118 118
119static const SSL_METHOD *ssl23_get_server_method(int ver); 119static const SSL_METHOD *ssl23_get_server_method(int ver);
120int ssl23_get_client_hello(SSL *s); 120int ssl23_get_client_hello(SSL *s);
121
122const SSL_METHOD SSLv23_server_method_data = {
123 .version = TLS1_2_VERSION,
124 .ssl_new = tls1_new,
125 .ssl_clear = tls1_clear,
126 .ssl_free = tls1_free,
127 .ssl_accept = ssl23_accept,
128 .ssl_connect = ssl_undefined_function,
129 .ssl_read = ssl23_read,
130 .ssl_peek = ssl23_peek,
131 .ssl_write = ssl23_write,
132 .ssl_shutdown = ssl_undefined_function,
133 .ssl_renegotiate = ssl_undefined_function,
134 .ssl_renegotiate_check = ssl_ok,
135 .ssl_get_message = ssl3_get_message,
136 .ssl_read_bytes = ssl3_read_bytes,
137 .ssl_write_bytes = ssl3_write_bytes,
138 .ssl_dispatch_alert = ssl3_dispatch_alert,
139 .ssl_ctrl = ssl3_ctrl,
140 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
141 .get_cipher_by_char = ssl23_get_cipher_by_char,
142 .put_cipher_by_char = ssl23_put_cipher_by_char,
143 .ssl_pending = ssl_undefined_const_function,
144 .num_ciphers = ssl23_num_ciphers,
145 .get_cipher = ssl23_get_cipher,
146 .get_ssl_method = ssl23_get_server_method,
147 .get_timeout = ssl23_default_timeout,
148 .ssl3_enc = &ssl3_undef_enc_method,
149 .ssl_version = ssl_undefined_void_function,
150 .ssl_callback_ctrl = ssl3_callback_ctrl,
151 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
152};
153
154const SSL_METHOD *
155SSLv23_server_method(void)
156{
157 return &SSLv23_server_method_data;
158}
159
121static const SSL_METHOD * 160static const SSL_METHOD *
122ssl23_get_server_method(int ver) 161ssl23_get_server_method(int ver)
123{ 162{
@@ -132,9 +171,6 @@ ssl23_get_server_method(int ver)
132 return (NULL); 171 return (NULL);
133} 172}
134 173
135IMPLEMENT_ssl23_meth_func(SSLv23_server_method,
136 ssl23_accept, ssl_undefined_function, ssl23_get_server_method)
137
138int 174int
139ssl23_accept(SSL *s) 175ssl23_accept(SSL *s)
140{ 176{
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c
index 010f9e4e12..16d5dacfc4 100644
--- a/src/lib/libssl/s3_clnt.c
+++ b/src/lib/libssl/s3_clnt.c
@@ -166,6 +166,44 @@
166static const SSL_METHOD *ssl3_get_client_method(int ver); 166static const SSL_METHOD *ssl3_get_client_method(int ver);
167static int ca_dn_cmp(const X509_NAME * const *a, const X509_NAME * const *b); 167static int ca_dn_cmp(const X509_NAME * const *a, const X509_NAME * const *b);
168 168
169const SSL_METHOD SSLv3_client_method_data = {
170 .version = SSL3_VERSION,
171 .ssl_new = ssl3_new,
172 .ssl_clear = ssl3_clear,
173 .ssl_free = ssl3_free,
174 .ssl_accept = ssl_undefined_function,
175 .ssl_connect = ssl3_connect,
176 .ssl_read = ssl3_read,
177 .ssl_peek = ssl3_peek,
178 .ssl_write = ssl3_write,
179 .ssl_shutdown = ssl3_shutdown,
180 .ssl_renegotiate = ssl3_renegotiate,
181 .ssl_renegotiate_check = ssl3_renegotiate_check,
182 .ssl_get_message = ssl3_get_message,
183 .ssl_read_bytes = ssl3_read_bytes,
184 .ssl_write_bytes = ssl3_write_bytes,
185 .ssl_dispatch_alert = ssl3_dispatch_alert,
186 .ssl_ctrl = ssl3_ctrl,
187 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
188 .get_cipher_by_char = ssl3_get_cipher_by_char,
189 .put_cipher_by_char = ssl3_put_cipher_by_char,
190 .ssl_pending = ssl3_pending,
191 .num_ciphers = ssl3_num_ciphers,
192 .get_cipher = ssl3_get_cipher,
193 .get_ssl_method = ssl3_get_client_method,
194 .get_timeout = ssl3_default_timeout,
195 .ssl3_enc = &SSLv3_enc_data,
196 .ssl_version = ssl_undefined_void_function,
197 .ssl_callback_ctrl = ssl3_callback_ctrl,
198 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
199};
200
201const SSL_METHOD *
202SSLv3_client_method(void)
203{
204 return &SSLv3_client_method_data;
205}
206
169static const SSL_METHOD * 207static const SSL_METHOD *
170ssl3_get_client_method(int ver) 208ssl3_get_client_method(int ver)
171{ 209{
@@ -174,9 +212,6 @@ ssl3_get_client_method(int ver)
174 return (NULL); 212 return (NULL);
175} 213}
176 214
177IMPLEMENT_ssl3_meth_func(SSLv3_client_method,
178 ssl_undefined_function, ssl3_connect, ssl3_get_client_method)
179
180int 215int
181ssl3_connect(SSL *s) 216ssl3_connect(SSL *s)
182{ 217{
diff --git a/src/lib/libssl/s3_srvr.c b/src/lib/libssl/s3_srvr.c
index ff86ec3f1a..6f788cd080 100644
--- a/src/lib/libssl/s3_srvr.c
+++ b/src/lib/libssl/s3_srvr.c
@@ -167,6 +167,44 @@
167 167
168static const SSL_METHOD *ssl3_get_server_method(int ver); 168static const SSL_METHOD *ssl3_get_server_method(int ver);
169 169
170const SSL_METHOD SSLv3_server_method_data = {
171 .version = SSL3_VERSION,
172 .ssl_new = ssl3_new,
173 .ssl_clear = ssl3_clear,
174 .ssl_free = ssl3_free,
175 .ssl_accept = ssl3_accept,
176 .ssl_connect = ssl_undefined_function,
177 .ssl_read = ssl3_read,
178 .ssl_peek = ssl3_peek,
179 .ssl_write = ssl3_write,
180 .ssl_shutdown = ssl3_shutdown,
181 .ssl_renegotiate = ssl3_renegotiate,
182 .ssl_renegotiate_check = ssl3_renegotiate_check,
183 .ssl_get_message = ssl3_get_message,
184 .ssl_read_bytes = ssl3_read_bytes,
185 .ssl_write_bytes = ssl3_write_bytes,
186 .ssl_dispatch_alert = ssl3_dispatch_alert,
187 .ssl_ctrl = ssl3_ctrl,
188 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
189 .get_cipher_by_char = ssl3_get_cipher_by_char,
190 .put_cipher_by_char = ssl3_put_cipher_by_char,
191 .ssl_pending = ssl3_pending,
192 .num_ciphers = ssl3_num_ciphers,
193 .get_cipher = ssl3_get_cipher,
194 .get_ssl_method = ssl3_get_server_method,
195 .get_timeout = ssl3_default_timeout,
196 .ssl3_enc = &SSLv3_enc_data,
197 .ssl_version = ssl_undefined_void_function,
198 .ssl_callback_ctrl = ssl3_callback_ctrl,
199 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
200};
201
202const SSL_METHOD *
203SSLv3_server_method(void)
204{
205 return &SSLv3_server_method_data;
206}
207
170static const SSL_METHOD * 208static const SSL_METHOD *
171ssl3_get_server_method(int ver) 209ssl3_get_server_method(int ver)
172{ 210{
@@ -175,10 +213,6 @@ ssl3_get_server_method(int ver)
175 return (NULL); 213 return (NULL);
176} 214}
177 215
178
179IMPLEMENT_ssl3_meth_func(SSLv3_server_method,
180 ssl3_accept, ssl_undefined_function, ssl3_get_server_method)
181
182int 216int
183ssl3_accept(SSL *s) 217ssl3_accept(SSL *s)
184{ 218{
diff --git a/src/lib/libssl/src/ssl/d1_clnt.c b/src/lib/libssl/src/ssl/d1_clnt.c
index 8967879f70..8f304a75ff 100644
--- a/src/lib/libssl/src/ssl/d1_clnt.c
+++ b/src/lib/libssl/src/ssl/d1_clnt.c
@@ -128,6 +128,44 @@
128static const SSL_METHOD *dtls1_get_client_method(int ver); 128static const SSL_METHOD *dtls1_get_client_method(int ver);
129static int dtls1_get_hello_verify(SSL *s); 129static int dtls1_get_hello_verify(SSL *s);
130 130
131const SSL_METHOD DTLSv1_client_method_data = {
132 .version = DTLS1_VERSION,
133 .ssl_new = dtls1_new,
134 .ssl_clear = dtls1_clear,
135 .ssl_free = dtls1_free,
136 .ssl_accept = ssl_undefined_function,
137 .ssl_connect = dtls1_connect,
138 .ssl_read = ssl3_read,
139 .ssl_peek = ssl3_peek,
140 .ssl_write = ssl3_write,
141 .ssl_shutdown = dtls1_shutdown,
142 .ssl_renegotiate = ssl3_renegotiate,
143 .ssl_renegotiate_check = ssl3_renegotiate_check,
144 .ssl_get_message = dtls1_get_message,
145 .ssl_read_bytes = dtls1_read_bytes,
146 .ssl_write_bytes = dtls1_write_app_data_bytes,
147 .ssl_dispatch_alert = dtls1_dispatch_alert,
148 .ssl_ctrl = dtls1_ctrl,
149 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
150 .get_cipher_by_char = ssl3_get_cipher_by_char,
151 .put_cipher_by_char = ssl3_put_cipher_by_char,
152 .ssl_pending = ssl3_pending,
153 .num_ciphers = ssl3_num_ciphers,
154 .get_cipher = dtls1_get_cipher,
155 .get_ssl_method = dtls1_get_client_method,
156 .get_timeout = dtls1_default_timeout,
157 .ssl3_enc = &DTLSv1_enc_data,
158 .ssl_version = ssl_undefined_void_function,
159 .ssl_callback_ctrl = ssl3_callback_ctrl,
160 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
161};
162
163const SSL_METHOD *
164DTLSv1_client_method(void)
165{
166 return &DTLSv1_client_method_data;
167}
168
131static const SSL_METHOD * 169static const SSL_METHOD *
132dtls1_get_client_method(int ver) 170dtls1_get_client_method(int ver)
133{ 171{
@@ -136,9 +174,6 @@ dtls1_get_client_method(int ver)
136 return (NULL); 174 return (NULL);
137} 175}
138 176
139IMPLEMENT_dtls1_meth_func(DTLSv1_client_method,
140 ssl_undefined_function, dtls1_connect, dtls1_get_client_method)
141
142int 177int
143dtls1_connect(SSL *s) 178dtls1_connect(SSL *s)
144{ 179{
diff --git a/src/lib/libssl/src/ssl/d1_meth.c b/src/lib/libssl/src/ssl/d1_meth.c
index 1140da6825..5e4bf0230c 100644
--- a/src/lib/libssl/src/ssl/d1_meth.c
+++ b/src/lib/libssl/src/ssl/d1_meth.c
@@ -62,6 +62,45 @@
62#include "ssl_locl.h" 62#include "ssl_locl.h"
63 63
64static const SSL_METHOD *dtls1_get_method(int ver); 64static const SSL_METHOD *dtls1_get_method(int ver);
65
66const SSL_METHOD DTLSv1_method_data = {
67 .version = DTLS1_VERSION,
68 .ssl_new = dtls1_new,
69 .ssl_clear = dtls1_clear,
70 .ssl_free = dtls1_free,
71 .ssl_accept = dtls1_accept,
72 .ssl_connect = dtls1_connect,
73 .ssl_read = ssl3_read,
74 .ssl_peek = ssl3_peek,
75 .ssl_write = ssl3_write,
76 .ssl_shutdown = dtls1_shutdown,
77 .ssl_renegotiate = ssl3_renegotiate,
78 .ssl_renegotiate_check = ssl3_renegotiate_check,
79 .ssl_get_message = dtls1_get_message,
80 .ssl_read_bytes = dtls1_read_bytes,
81 .ssl_write_bytes = dtls1_write_app_data_bytes,
82 .ssl_dispatch_alert = dtls1_dispatch_alert,
83 .ssl_ctrl = dtls1_ctrl,
84 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
85 .get_cipher_by_char = ssl3_get_cipher_by_char,
86 .put_cipher_by_char = ssl3_put_cipher_by_char,
87 .ssl_pending = ssl3_pending,
88 .num_ciphers = ssl3_num_ciphers,
89 .get_cipher = dtls1_get_cipher,
90 .get_ssl_method = dtls1_get_method,
91 .get_timeout = dtls1_default_timeout,
92 .ssl3_enc = &DTLSv1_enc_data,
93 .ssl_version = ssl_undefined_void_function,
94 .ssl_callback_ctrl = ssl3_callback_ctrl,
95 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
96};
97
98const SSL_METHOD *
99DTLSv1_method(void)
100{
101 return &DTLSv1_method_data;
102}
103
65static const SSL_METHOD * 104static const SSL_METHOD *
66dtls1_get_method(int ver) 105dtls1_get_method(int ver)
67{ 106{
@@ -69,6 +108,3 @@ dtls1_get_method(int ver)
69 return (DTLSv1_method()); 108 return (DTLSv1_method());
70 return (NULL); 109 return (NULL);
71} 110}
72
73IMPLEMENT_dtls1_meth_func(DTLSv1_method,
74 dtls1_accept, dtls1_connect, dtls1_get_method)
diff --git a/src/lib/libssl/src/ssl/d1_srvr.c b/src/lib/libssl/src/ssl/d1_srvr.c
index 6183815a6d..2c22a25bce 100644
--- a/src/lib/libssl/src/ssl/d1_srvr.c
+++ b/src/lib/libssl/src/ssl/d1_srvr.c
@@ -129,6 +129,44 @@
129static const SSL_METHOD *dtls1_get_server_method(int ver); 129static const SSL_METHOD *dtls1_get_server_method(int ver);
130static int dtls1_send_hello_verify_request(SSL *s); 130static int dtls1_send_hello_verify_request(SSL *s);
131 131
132const SSL_METHOD DTLSv1_server_method_data = {
133 .version = DTLS1_VERSION,
134 .ssl_new = dtls1_new,
135 .ssl_clear = dtls1_clear,
136 .ssl_free = dtls1_free,
137 .ssl_accept = dtls1_accept,
138 .ssl_connect = ssl_undefined_function,
139 .ssl_read = ssl3_read,
140 .ssl_peek = ssl3_peek,
141 .ssl_write = ssl3_write,
142 .ssl_shutdown = dtls1_shutdown,
143 .ssl_renegotiate = ssl3_renegotiate,
144 .ssl_renegotiate_check = ssl3_renegotiate_check,
145 .ssl_get_message = dtls1_get_message,
146 .ssl_read_bytes = dtls1_read_bytes,
147 .ssl_write_bytes = dtls1_write_app_data_bytes,
148 .ssl_dispatch_alert = dtls1_dispatch_alert,
149 .ssl_ctrl = dtls1_ctrl,
150 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
151 .get_cipher_by_char = ssl3_get_cipher_by_char,
152 .put_cipher_by_char = ssl3_put_cipher_by_char,
153 .ssl_pending = ssl3_pending,
154 .num_ciphers = ssl3_num_ciphers,
155 .get_cipher = dtls1_get_cipher,
156 .get_ssl_method = dtls1_get_server_method,
157 .get_timeout = dtls1_default_timeout,
158 .ssl3_enc = &DTLSv1_enc_data,
159 .ssl_version = ssl_undefined_void_function,
160 .ssl_callback_ctrl = ssl3_callback_ctrl,
161 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
162};
163
164const SSL_METHOD *
165DTLSv1_server_method(void)
166{
167 return &DTLSv1_server_method_data;
168}
169
132static const SSL_METHOD * 170static const SSL_METHOD *
133dtls1_get_server_method(int ver) 171dtls1_get_server_method(int ver)
134{ 172{
@@ -137,9 +175,6 @@ dtls1_get_server_method(int ver)
137 return (NULL); 175 return (NULL);
138} 176}
139 177
140IMPLEMENT_dtls1_meth_func(DTLSv1_server_method,
141 dtls1_accept, ssl_undefined_function, dtls1_get_server_method)
142
143int 178int
144dtls1_accept(SSL *s) 179dtls1_accept(SSL *s)
145{ 180{
diff --git a/src/lib/libssl/src/ssl/s23_clnt.c b/src/lib/libssl/src/ssl/s23_clnt.c
index 293b1e5da2..897ac7efe3 100644
--- a/src/lib/libssl/src/ssl/s23_clnt.c
+++ b/src/lib/libssl/src/ssl/s23_clnt.c
@@ -119,6 +119,45 @@
119static const SSL_METHOD *ssl23_get_client_method(int ver); 119static const SSL_METHOD *ssl23_get_client_method(int ver);
120static int ssl23_client_hello(SSL *s); 120static int ssl23_client_hello(SSL *s);
121static int ssl23_get_server_hello(SSL *s); 121static int ssl23_get_server_hello(SSL *s);
122
123const SSL_METHOD SSLv23_client_method_data = {
124 .version = TLS1_2_VERSION,
125 .ssl_new = tls1_new,
126 .ssl_clear = tls1_clear,
127 .ssl_free = tls1_free,
128 .ssl_accept = ssl_undefined_function,
129 .ssl_connect = ssl23_connect,
130 .ssl_read = ssl23_read,
131 .ssl_peek = ssl23_peek,
132 .ssl_write = ssl23_write,
133 .ssl_shutdown = ssl_undefined_function,
134 .ssl_renegotiate = ssl_undefined_function,
135 .ssl_renegotiate_check = ssl_ok,
136 .ssl_get_message = ssl3_get_message,
137 .ssl_read_bytes = ssl3_read_bytes,
138 .ssl_write_bytes = ssl3_write_bytes,
139 .ssl_dispatch_alert = ssl3_dispatch_alert,
140 .ssl_ctrl = ssl3_ctrl,
141 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
142 .get_cipher_by_char = ssl23_get_cipher_by_char,
143 .put_cipher_by_char = ssl23_put_cipher_by_char,
144 .ssl_pending = ssl_undefined_const_function,
145 .num_ciphers = ssl23_num_ciphers,
146 .get_cipher = ssl23_get_cipher,
147 .get_ssl_method = ssl23_get_client_method,
148 .get_timeout = ssl23_default_timeout,
149 .ssl3_enc = &ssl3_undef_enc_method,
150 .ssl_version = ssl_undefined_void_function,
151 .ssl_callback_ctrl = ssl3_callback_ctrl,
152 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
153};
154
155const SSL_METHOD *
156SSLv23_client_method(void)
157{
158 return &SSLv23_client_method_data;
159}
160
122static const SSL_METHOD * 161static const SSL_METHOD *
123ssl23_get_client_method(int ver) 162ssl23_get_client_method(int ver)
124{ 163{
@@ -133,9 +172,6 @@ ssl23_get_client_method(int ver)
133 return (NULL); 172 return (NULL);
134} 173}
135 174
136IMPLEMENT_ssl23_meth_func(SSLv23_client_method,
137 ssl_undefined_function, ssl23_connect, ssl23_get_client_method)
138
139int 175int
140ssl23_connect(SSL *s) 176ssl23_connect(SSL *s)
141{ 177{
diff --git a/src/lib/libssl/src/ssl/s23_meth.c b/src/lib/libssl/src/ssl/s23_meth.c
index d19d96a9b7..f26faf296e 100644
--- a/src/lib/libssl/src/ssl/s23_meth.c
+++ b/src/lib/libssl/src/ssl/s23_meth.c
@@ -61,6 +61,45 @@
61#include "ssl_locl.h" 61#include "ssl_locl.h"
62 62
63static const SSL_METHOD *ssl23_get_method(int ver); 63static const SSL_METHOD *ssl23_get_method(int ver);
64
65const SSL_METHOD SSLv23_method_data = {
66 .version = TLS1_2_VERSION,
67 .ssl_new = tls1_new,
68 .ssl_clear = tls1_clear,
69 .ssl_free = tls1_free,
70 .ssl_accept = ssl23_accept,
71 .ssl_connect = ssl23_connect,
72 .ssl_read = ssl23_read,
73 .ssl_peek = ssl23_peek,
74 .ssl_write = ssl23_write,
75 .ssl_shutdown = ssl_undefined_function,
76 .ssl_renegotiate = ssl_undefined_function,
77 .ssl_renegotiate_check = ssl_ok,
78 .ssl_get_message = ssl3_get_message,
79 .ssl_read_bytes = ssl3_read_bytes,
80 .ssl_write_bytes = ssl3_write_bytes,
81 .ssl_dispatch_alert = ssl3_dispatch_alert,
82 .ssl_ctrl = ssl3_ctrl,
83 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
84 .get_cipher_by_char = ssl23_get_cipher_by_char,
85 .put_cipher_by_char = ssl23_put_cipher_by_char,
86 .ssl_pending = ssl_undefined_const_function,
87 .num_ciphers = ssl23_num_ciphers,
88 .get_cipher = ssl23_get_cipher,
89 .get_ssl_method = ssl23_get_method,
90 .get_timeout = ssl23_default_timeout,
91 .ssl3_enc = &ssl3_undef_enc_method,
92 .ssl_version = ssl_undefined_void_function,
93 .ssl_callback_ctrl = ssl3_callback_ctrl,
94 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
95};
96
97const SSL_METHOD *
98SSLv23_method(void)
99{
100 return &SSLv23_method_data;
101}
102
64static const SSL_METHOD * 103static const SSL_METHOD *
65ssl23_get_method(int ver) 104ssl23_get_method(int ver)
66{ 105{
@@ -74,7 +113,3 @@ ssl23_get_method(int ver)
74 return (TLSv1_2_method()); 113 return (TLSv1_2_method());
75 return (NULL); 114 return (NULL);
76} 115}
77
78IMPLEMENT_ssl23_meth_func(SSLv23_method,
79 ssl23_accept, ssl23_connect, ssl23_get_method)
80
diff --git a/src/lib/libssl/src/ssl/s23_srvr.c b/src/lib/libssl/src/ssl/s23_srvr.c
index 1f17c19c06..94e669ae14 100644
--- a/src/lib/libssl/src/ssl/s23_srvr.c
+++ b/src/lib/libssl/src/ssl/s23_srvr.c
@@ -118,6 +118,45 @@
118 118
119static const SSL_METHOD *ssl23_get_server_method(int ver); 119static const SSL_METHOD *ssl23_get_server_method(int ver);
120int ssl23_get_client_hello(SSL *s); 120int ssl23_get_client_hello(SSL *s);
121
122const SSL_METHOD SSLv23_server_method_data = {
123 .version = TLS1_2_VERSION,
124 .ssl_new = tls1_new,
125 .ssl_clear = tls1_clear,
126 .ssl_free = tls1_free,
127 .ssl_accept = ssl23_accept,
128 .ssl_connect = ssl_undefined_function,
129 .ssl_read = ssl23_read,
130 .ssl_peek = ssl23_peek,
131 .ssl_write = ssl23_write,
132 .ssl_shutdown = ssl_undefined_function,
133 .ssl_renegotiate = ssl_undefined_function,
134 .ssl_renegotiate_check = ssl_ok,
135 .ssl_get_message = ssl3_get_message,
136 .ssl_read_bytes = ssl3_read_bytes,
137 .ssl_write_bytes = ssl3_write_bytes,
138 .ssl_dispatch_alert = ssl3_dispatch_alert,
139 .ssl_ctrl = ssl3_ctrl,
140 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
141 .get_cipher_by_char = ssl23_get_cipher_by_char,
142 .put_cipher_by_char = ssl23_put_cipher_by_char,
143 .ssl_pending = ssl_undefined_const_function,
144 .num_ciphers = ssl23_num_ciphers,
145 .get_cipher = ssl23_get_cipher,
146 .get_ssl_method = ssl23_get_server_method,
147 .get_timeout = ssl23_default_timeout,
148 .ssl3_enc = &ssl3_undef_enc_method,
149 .ssl_version = ssl_undefined_void_function,
150 .ssl_callback_ctrl = ssl3_callback_ctrl,
151 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
152};
153
154const SSL_METHOD *
155SSLv23_server_method(void)
156{
157 return &SSLv23_server_method_data;
158}
159
121static const SSL_METHOD * 160static const SSL_METHOD *
122ssl23_get_server_method(int ver) 161ssl23_get_server_method(int ver)
123{ 162{
@@ -132,9 +171,6 @@ ssl23_get_server_method(int ver)
132 return (NULL); 171 return (NULL);
133} 172}
134 173
135IMPLEMENT_ssl23_meth_func(SSLv23_server_method,
136 ssl23_accept, ssl_undefined_function, ssl23_get_server_method)
137
138int 174int
139ssl23_accept(SSL *s) 175ssl23_accept(SSL *s)
140{ 176{
diff --git a/src/lib/libssl/src/ssl/s3_clnt.c b/src/lib/libssl/src/ssl/s3_clnt.c
index 010f9e4e12..16d5dacfc4 100644
--- a/src/lib/libssl/src/ssl/s3_clnt.c
+++ b/src/lib/libssl/src/ssl/s3_clnt.c
@@ -166,6 +166,44 @@
166static const SSL_METHOD *ssl3_get_client_method(int ver); 166static const SSL_METHOD *ssl3_get_client_method(int ver);
167static int ca_dn_cmp(const X509_NAME * const *a, const X509_NAME * const *b); 167static int ca_dn_cmp(const X509_NAME * const *a, const X509_NAME * const *b);
168 168
169const SSL_METHOD SSLv3_client_method_data = {
170 .version = SSL3_VERSION,
171 .ssl_new = ssl3_new,
172 .ssl_clear = ssl3_clear,
173 .ssl_free = ssl3_free,
174 .ssl_accept = ssl_undefined_function,
175 .ssl_connect = ssl3_connect,
176 .ssl_read = ssl3_read,
177 .ssl_peek = ssl3_peek,
178 .ssl_write = ssl3_write,
179 .ssl_shutdown = ssl3_shutdown,
180 .ssl_renegotiate = ssl3_renegotiate,
181 .ssl_renegotiate_check = ssl3_renegotiate_check,
182 .ssl_get_message = ssl3_get_message,
183 .ssl_read_bytes = ssl3_read_bytes,
184 .ssl_write_bytes = ssl3_write_bytes,
185 .ssl_dispatch_alert = ssl3_dispatch_alert,
186 .ssl_ctrl = ssl3_ctrl,
187 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
188 .get_cipher_by_char = ssl3_get_cipher_by_char,
189 .put_cipher_by_char = ssl3_put_cipher_by_char,
190 .ssl_pending = ssl3_pending,
191 .num_ciphers = ssl3_num_ciphers,
192 .get_cipher = ssl3_get_cipher,
193 .get_ssl_method = ssl3_get_client_method,
194 .get_timeout = ssl3_default_timeout,
195 .ssl3_enc = &SSLv3_enc_data,
196 .ssl_version = ssl_undefined_void_function,
197 .ssl_callback_ctrl = ssl3_callback_ctrl,
198 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
199};
200
201const SSL_METHOD *
202SSLv3_client_method(void)
203{
204 return &SSLv3_client_method_data;
205}
206
169static const SSL_METHOD * 207static const SSL_METHOD *
170ssl3_get_client_method(int ver) 208ssl3_get_client_method(int ver)
171{ 209{
@@ -174,9 +212,6 @@ ssl3_get_client_method(int ver)
174 return (NULL); 212 return (NULL);
175} 213}
176 214
177IMPLEMENT_ssl3_meth_func(SSLv3_client_method,
178 ssl_undefined_function, ssl3_connect, ssl3_get_client_method)
179
180int 215int
181ssl3_connect(SSL *s) 216ssl3_connect(SSL *s)
182{ 217{
diff --git a/src/lib/libssl/src/ssl/s3_meth.c b/src/lib/libssl/src/ssl/s3_meth.c
index b6d6771a21..04a72d99d3 100644
--- a/src/lib/libssl/src/ssl/s3_meth.c
+++ b/src/lib/libssl/src/ssl/s3_meth.c
@@ -61,6 +61,45 @@
61#include "ssl_locl.h" 61#include "ssl_locl.h"
62 62
63static const SSL_METHOD *ssl3_get_method(int ver); 63static const SSL_METHOD *ssl3_get_method(int ver);
64
65const SSL_METHOD SSLv3_method_data = {
66 .version = SSL3_VERSION,
67 .ssl_new = ssl3_new,
68 .ssl_clear = ssl3_clear,
69 .ssl_free = ssl3_free,
70 .ssl_accept = ssl3_accept,
71 .ssl_connect = ssl3_connect,
72 .ssl_read = ssl3_read,
73 .ssl_peek = ssl3_peek,
74 .ssl_write = ssl3_write,
75 .ssl_shutdown = ssl3_shutdown,
76 .ssl_renegotiate = ssl3_renegotiate,
77 .ssl_renegotiate_check = ssl3_renegotiate_check,
78 .ssl_get_message = ssl3_get_message,
79 .ssl_read_bytes = ssl3_read_bytes,
80 .ssl_write_bytes = ssl3_write_bytes,
81 .ssl_dispatch_alert = ssl3_dispatch_alert,
82 .ssl_ctrl = ssl3_ctrl,
83 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
84 .get_cipher_by_char = ssl3_get_cipher_by_char,
85 .put_cipher_by_char = ssl3_put_cipher_by_char,
86 .ssl_pending = ssl3_pending,
87 .num_ciphers = ssl3_num_ciphers,
88 .get_cipher = ssl3_get_cipher,
89 .get_ssl_method = ssl3_get_method,
90 .get_timeout = ssl3_default_timeout,
91 .ssl3_enc = &SSLv3_enc_data,
92 .ssl_version = ssl_undefined_void_function,
93 .ssl_callback_ctrl = ssl3_callback_ctrl,
94 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
95};
96
97const SSL_METHOD *
98SSLv3_method(void)
99{
100 return &SSLv3_method_data;
101}
102
64static const SSL_METHOD * 103static const SSL_METHOD *
65ssl3_get_method(int ver) 104ssl3_get_method(int ver)
66{ 105{
@@ -68,7 +107,3 @@ ssl3_get_method(int ver)
68 return (SSLv3_method()); 107 return (SSLv3_method());
69 return (NULL); 108 return (NULL);
70} 109}
71
72IMPLEMENT_ssl3_meth_func(SSLv3_method,
73 ssl3_accept, ssl3_connect, ssl3_get_method)
74
diff --git a/src/lib/libssl/src/ssl/s3_srvr.c b/src/lib/libssl/src/ssl/s3_srvr.c
index ff86ec3f1a..6f788cd080 100644
--- a/src/lib/libssl/src/ssl/s3_srvr.c
+++ b/src/lib/libssl/src/ssl/s3_srvr.c
@@ -167,6 +167,44 @@
167 167
168static const SSL_METHOD *ssl3_get_server_method(int ver); 168static const SSL_METHOD *ssl3_get_server_method(int ver);
169 169
170const SSL_METHOD SSLv3_server_method_data = {
171 .version = SSL3_VERSION,
172 .ssl_new = ssl3_new,
173 .ssl_clear = ssl3_clear,
174 .ssl_free = ssl3_free,
175 .ssl_accept = ssl3_accept,
176 .ssl_connect = ssl_undefined_function,
177 .ssl_read = ssl3_read,
178 .ssl_peek = ssl3_peek,
179 .ssl_write = ssl3_write,
180 .ssl_shutdown = ssl3_shutdown,
181 .ssl_renegotiate = ssl3_renegotiate,
182 .ssl_renegotiate_check = ssl3_renegotiate_check,
183 .ssl_get_message = ssl3_get_message,
184 .ssl_read_bytes = ssl3_read_bytes,
185 .ssl_write_bytes = ssl3_write_bytes,
186 .ssl_dispatch_alert = ssl3_dispatch_alert,
187 .ssl_ctrl = ssl3_ctrl,
188 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
189 .get_cipher_by_char = ssl3_get_cipher_by_char,
190 .put_cipher_by_char = ssl3_put_cipher_by_char,
191 .ssl_pending = ssl3_pending,
192 .num_ciphers = ssl3_num_ciphers,
193 .get_cipher = ssl3_get_cipher,
194 .get_ssl_method = ssl3_get_server_method,
195 .get_timeout = ssl3_default_timeout,
196 .ssl3_enc = &SSLv3_enc_data,
197 .ssl_version = ssl_undefined_void_function,
198 .ssl_callback_ctrl = ssl3_callback_ctrl,
199 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
200};
201
202const SSL_METHOD *
203SSLv3_server_method(void)
204{
205 return &SSLv3_server_method_data;
206}
207
170static const SSL_METHOD * 208static const SSL_METHOD *
171ssl3_get_server_method(int ver) 209ssl3_get_server_method(int ver)
172{ 210{
@@ -175,10 +213,6 @@ ssl3_get_server_method(int ver)
175 return (NULL); 213 return (NULL);
176} 214}
177 215
178
179IMPLEMENT_ssl3_meth_func(SSLv3_server_method,
180 ssl3_accept, ssl_undefined_function, ssl3_get_server_method)
181
182int 216int
183ssl3_accept(SSL *s) 217ssl3_accept(SSL *s)
184{ 218{
diff --git a/src/lib/libssl/src/ssl/ssl_locl.h b/src/lib/libssl/src/ssl/ssl_locl.h
index fc9d6a1027..3a4656ef62 100644
--- a/src/lib/libssl/src/ssl/ssl_locl.h
+++ b/src/lib/libssl/src/ssl/ssl_locl.h
@@ -575,155 +575,6 @@ extern SSL3_ENC_METHOD DTLSv1_enc_data;
575 575
576#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION) 576#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION)
577 577
578#define IMPLEMENT_tls_meth_func(version, func_name, s_accept, s_connect, \
579 s_get_meth) \
580const SSL_METHOD *func_name(void) \
581 { \
582 static const SSL_METHOD func_name##_data= { \
583 version, \
584 tls1_new, \
585 tls1_clear, \
586 tls1_free, \
587 s_accept, \
588 s_connect, \
589 ssl3_read, \
590 ssl3_peek, \
591 ssl3_write, \
592 ssl3_shutdown, \
593 ssl3_renegotiate, \
594 ssl3_renegotiate_check, \
595 ssl3_get_message, \
596 ssl3_read_bytes, \
597 ssl3_write_bytes, \
598 ssl3_dispatch_alert, \
599 ssl3_ctrl, \
600 ssl3_ctx_ctrl, \
601 ssl3_get_cipher_by_char, \
602 ssl3_put_cipher_by_char, \
603 ssl3_pending, \
604 ssl3_num_ciphers, \
605 ssl3_get_cipher, \
606 s_get_meth, \
607 tls1_default_timeout, \
608 &TLSv1_enc_data, \
609 ssl_undefined_void_function, \
610 ssl3_callback_ctrl, \
611 ssl3_ctx_callback_ctrl, \
612 }; \
613 return &func_name##_data; \
614 }
615
616#define IMPLEMENT_ssl3_meth_func(func_name, s_accept, s_connect, s_get_meth) \
617const SSL_METHOD *func_name(void) \
618 { \
619 static const SSL_METHOD func_name##_data= { \
620 SSL3_VERSION, \
621 ssl3_new, \
622 ssl3_clear, \
623 ssl3_free, \
624 s_accept, \
625 s_connect, \
626 ssl3_read, \
627 ssl3_peek, \
628 ssl3_write, \
629 ssl3_shutdown, \
630 ssl3_renegotiate, \
631 ssl3_renegotiate_check, \
632 ssl3_get_message, \
633 ssl3_read_bytes, \
634 ssl3_write_bytes, \
635 ssl3_dispatch_alert, \
636 ssl3_ctrl, \
637 ssl3_ctx_ctrl, \
638 ssl3_get_cipher_by_char, \
639 ssl3_put_cipher_by_char, \
640 ssl3_pending, \
641 ssl3_num_ciphers, \
642 ssl3_get_cipher, \
643 s_get_meth, \
644 ssl3_default_timeout, \
645 &SSLv3_enc_data, \
646 ssl_undefined_void_function, \
647 ssl3_callback_ctrl, \
648 ssl3_ctx_callback_ctrl, \
649 }; \
650 return &func_name##_data; \
651 }
652
653#define IMPLEMENT_ssl23_meth_func(func_name, s_accept, s_connect, s_get_meth) \
654const SSL_METHOD *func_name(void) \
655 { \
656 static const SSL_METHOD func_name##_data= { \
657 TLS1_2_VERSION, \
658 tls1_new, \
659 tls1_clear, \
660 tls1_free, \
661 s_accept, \
662 s_connect, \
663 ssl23_read, \
664 ssl23_peek, \
665 ssl23_write, \
666 ssl_undefined_function, \
667 ssl_undefined_function, \
668 ssl_ok, \
669 ssl3_get_message, \
670 ssl3_read_bytes, \
671 ssl3_write_bytes, \
672 ssl3_dispatch_alert, \
673 ssl3_ctrl, \
674 ssl3_ctx_ctrl, \
675 ssl23_get_cipher_by_char, \
676 ssl23_put_cipher_by_char, \
677 ssl_undefined_const_function, \
678 ssl23_num_ciphers, \
679 ssl23_get_cipher, \
680 s_get_meth, \
681 ssl23_default_timeout, \
682 &ssl3_undef_enc_method, \
683 ssl_undefined_void_function, \
684 ssl3_callback_ctrl, \
685 ssl3_ctx_callback_ctrl, \
686 }; \
687 return &func_name##_data; \
688 }
689
690#define IMPLEMENT_dtls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \
691const SSL_METHOD *func_name(void) \
692 { \
693 static const SSL_METHOD func_name##_data= { \
694 DTLS1_VERSION, \
695 dtls1_new, \
696 dtls1_clear, \
697 dtls1_free, \
698 s_accept, \
699 s_connect, \
700 ssl3_read, \
701 ssl3_peek, \
702 ssl3_write, \
703 dtls1_shutdown, \
704 ssl3_renegotiate, \
705 ssl3_renegotiate_check, \
706 dtls1_get_message, \
707 dtls1_read_bytes, \
708 dtls1_write_app_data_bytes, \
709 dtls1_dispatch_alert, \
710 dtls1_ctrl, \
711 ssl3_ctx_ctrl, \
712 ssl3_get_cipher_by_char, \
713 ssl3_put_cipher_by_char, \
714 ssl3_pending, \
715 ssl3_num_ciphers, \
716 dtls1_get_cipher, \
717 s_get_meth, \
718 dtls1_default_timeout, \
719 &DTLSv1_enc_data, \
720 ssl_undefined_void_function, \
721 ssl3_callback_ctrl, \
722 ssl3_ctx_callback_ctrl, \
723 }; \
724 return &func_name##_data; \
725 }
726
727void ssl_clear_cipher_ctx(SSL *s); 578void ssl_clear_cipher_ctx(SSL *s);
728int ssl_clear_bad_session(SSL *s); 579int ssl_clear_bad_session(SSL *s);
729CERT *ssl_cert_new(void); 580CERT *ssl_cert_new(void);
@@ -926,8 +777,6 @@ int dtls1_send_server_key_exchange(SSL *s);
926int dtls1_send_certificate_request(SSL *s); 777int dtls1_send_certificate_request(SSL *s);
927int dtls1_send_server_done(SSL *s); 778int dtls1_send_server_done(SSL *s);
928 779
929
930
931int ssl23_accept(SSL *s); 780int ssl23_accept(SSL *s);
932int ssl23_connect(SSL *s); 781int ssl23_connect(SSL *s);
933int ssl23_read_bytes(SSL *s, int n); 782int ssl23_read_bytes(SSL *s, int n);
@@ -940,8 +789,8 @@ long tls1_ctrl(SSL *s, int cmd, long larg, void *parg);
940long tls1_callback_ctrl(SSL *s, int cmd, void (*fp)(void)); 789long tls1_callback_ctrl(SSL *s, int cmd, void (*fp)(void));
941 790
942int dtls1_new(SSL *s); 791int dtls1_new(SSL *s);
943int dtls1_accept(SSL *s); 792int dtls1_accept(SSL *s);
944int dtls1_connect(SSL *s); 793int dtls1_connect(SSL *s);
945void dtls1_free(SSL *s); 794void dtls1_free(SSL *s);
946void dtls1_clear(SSL *s); 795void dtls1_clear(SSL *s);
947long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg); 796long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg);
diff --git a/src/lib/libssl/src/ssl/t1_clnt.c b/src/lib/libssl/src/ssl/t1_clnt.c
index 180843c1f5..2223422d93 100644
--- a/src/lib/libssl/src/ssl/t1_clnt.c
+++ b/src/lib/libssl/src/ssl/t1_clnt.c
@@ -65,6 +65,120 @@
65 65
66static const SSL_METHOD *tls1_get_client_method(int ver); 66static const SSL_METHOD *tls1_get_client_method(int ver);
67 67
68const SSL_METHOD TLSv1_client_method_data = {
69 .version = TLS1_VERSION,
70 .ssl_new = tls1_new,
71 .ssl_clear = tls1_clear,
72 .ssl_free = tls1_free,
73 .ssl_accept = ssl_undefined_function,
74 .ssl_connect = ssl3_connect,
75 .ssl_read = ssl3_read,
76 .ssl_peek = ssl3_peek,
77 .ssl_write = ssl3_write,
78 .ssl_shutdown = ssl3_shutdown,
79 .ssl_renegotiate = ssl3_renegotiate,
80 .ssl_renegotiate_check = ssl3_renegotiate_check,
81 .ssl_get_message = ssl3_get_message,
82 .ssl_read_bytes = ssl3_read_bytes,
83 .ssl_write_bytes = ssl3_write_bytes,
84 .ssl_dispatch_alert = ssl3_dispatch_alert,
85 .ssl_ctrl = ssl3_ctrl,
86 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
87 .get_cipher_by_char = ssl3_get_cipher_by_char,
88 .put_cipher_by_char = ssl3_put_cipher_by_char,
89 .ssl_pending = ssl3_pending,
90 .num_ciphers = ssl3_num_ciphers,
91 .get_cipher = ssl3_get_cipher,
92 .get_ssl_method = tls1_get_client_method,
93 .get_timeout = tls1_default_timeout,
94 .ssl3_enc = &TLSv1_enc_data,
95 .ssl_version = ssl_undefined_void_function,
96 .ssl_callback_ctrl = ssl3_callback_ctrl,
97 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
98};
99
100const SSL_METHOD TLSv1_1_client_method_data = {
101 .version = TLS1_1_VERSION,
102 .ssl_new = tls1_new,
103 .ssl_clear = tls1_clear,
104 .ssl_free = tls1_free,
105 .ssl_accept = ssl_undefined_function,
106 .ssl_connect = ssl3_connect,
107 .ssl_read = ssl3_read,
108 .ssl_peek = ssl3_peek,
109 .ssl_write = ssl3_write,
110 .ssl_shutdown = ssl3_shutdown,
111 .ssl_renegotiate = ssl3_renegotiate,
112 .ssl_renegotiate_check = ssl3_renegotiate_check,
113 .ssl_get_message = ssl3_get_message,
114 .ssl_read_bytes = ssl3_read_bytes,
115 .ssl_write_bytes = ssl3_write_bytes,
116 .ssl_dispatch_alert = ssl3_dispatch_alert,
117 .ssl_ctrl = ssl3_ctrl,
118 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
119 .get_cipher_by_char = ssl3_get_cipher_by_char,
120 .put_cipher_by_char = ssl3_put_cipher_by_char,
121 .ssl_pending = ssl3_pending,
122 .num_ciphers = ssl3_num_ciphers,
123 .get_cipher = ssl3_get_cipher,
124 .get_ssl_method = tls1_get_client_method,
125 .get_timeout = tls1_default_timeout,
126 .ssl3_enc = &TLSv1_enc_data,
127 .ssl_version = ssl_undefined_void_function,
128 .ssl_callback_ctrl = ssl3_callback_ctrl,
129 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
130};
131
132const SSL_METHOD TLSv1_2_client_method_data = {
133 .version = TLS1_2_VERSION,
134 .ssl_new = tls1_new,
135 .ssl_clear = tls1_clear,
136 .ssl_free = tls1_free,
137 .ssl_accept = ssl_undefined_function,
138 .ssl_connect = ssl3_connect,
139 .ssl_read = ssl3_read,
140 .ssl_peek = ssl3_peek,
141 .ssl_write = ssl3_write,
142 .ssl_shutdown = ssl3_shutdown,
143 .ssl_renegotiate = ssl3_renegotiate,
144 .ssl_renegotiate_check = ssl3_renegotiate_check,
145 .ssl_get_message = ssl3_get_message,
146 .ssl_read_bytes = ssl3_read_bytes,
147 .ssl_write_bytes = ssl3_write_bytes,
148 .ssl_dispatch_alert = ssl3_dispatch_alert,
149 .ssl_ctrl = ssl3_ctrl,
150 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
151 .get_cipher_by_char = ssl3_get_cipher_by_char,
152 .put_cipher_by_char = ssl3_put_cipher_by_char,
153 .ssl_pending = ssl3_pending,
154 .num_ciphers = ssl3_num_ciphers,
155 .get_cipher = ssl3_get_cipher,
156 .get_ssl_method = tls1_get_client_method,
157 .get_timeout = tls1_default_timeout,
158 .ssl3_enc = &TLSv1_enc_data,
159 .ssl_version = ssl_undefined_void_function,
160 .ssl_callback_ctrl = ssl3_callback_ctrl,
161 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
162};
163
164const SSL_METHOD *
165TLSv1_client_method(void)
166{
167 return &TLSv1_client_method_data;
168}
169
170const SSL_METHOD *
171TLSv1_1_client_method(void)
172{
173 return &TLSv1_1_client_method_data;
174}
175
176const SSL_METHOD *
177TLSv1_2_client_method(void)
178{
179 return &TLSv1_2_client_method_data;
180}
181
68static const SSL_METHOD * 182static const SSL_METHOD *
69tls1_get_client_method(int ver) 183tls1_get_client_method(int ver)
70{ 184{
@@ -76,12 +190,3 @@ tls1_get_client_method(int ver)
76 return (TLSv1_client_method()); 190 return (TLSv1_client_method());
77 return (NULL); 191 return (NULL);
78} 192}
79
80IMPLEMENT_tls_meth_func(TLS1_2_VERSION, TLSv1_2_client_method,
81 ssl_undefined_function, ssl3_connect, tls1_get_client_method)
82
83IMPLEMENT_tls_meth_func(TLS1_1_VERSION, TLSv1_1_client_method,
84 ssl_undefined_function, ssl3_connect, tls1_get_client_method)
85
86IMPLEMENT_tls_meth_func(TLS1_VERSION, TLSv1_client_method,
87 ssl_undefined_function, ssl3_connect, tls1_get_client_method)
diff --git a/src/lib/libssl/src/ssl/t1_meth.c b/src/lib/libssl/src/ssl/t1_meth.c
index 49fe9624a2..b39303b369 100644
--- a/src/lib/libssl/src/ssl/t1_meth.c
+++ b/src/lib/libssl/src/ssl/t1_meth.c
@@ -60,6 +60,122 @@
60#include <openssl/objects.h> 60#include <openssl/objects.h>
61#include "ssl_locl.h" 61#include "ssl_locl.h"
62 62
63static const SSL_METHOD *tls1_get_method(int ver);
64
65const SSL_METHOD TLSv1_method_data = {
66 .version = TLS1_VERSION,
67 .ssl_new = tls1_new,
68 .ssl_clear = tls1_clear,
69 .ssl_free = tls1_free,
70 .ssl_accept = ssl3_accept,
71 .ssl_connect = ssl3_connect,
72 .ssl_read = ssl3_read,
73 .ssl_peek = ssl3_peek,
74 .ssl_write = ssl3_write,
75 .ssl_shutdown = ssl3_shutdown,
76 .ssl_renegotiate = ssl3_renegotiate,
77 .ssl_renegotiate_check = ssl3_renegotiate_check,
78 .ssl_get_message = ssl3_get_message,
79 .ssl_read_bytes = ssl3_read_bytes,
80 .ssl_write_bytes = ssl3_write_bytes,
81 .ssl_dispatch_alert = ssl3_dispatch_alert,
82 .ssl_ctrl = ssl3_ctrl,
83 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
84 .get_cipher_by_char = ssl3_get_cipher_by_char,
85 .put_cipher_by_char = ssl3_put_cipher_by_char,
86 .ssl_pending = ssl3_pending,
87 .num_ciphers = ssl3_num_ciphers,
88 .get_cipher = ssl3_get_cipher,
89 .get_ssl_method = tls1_get_method,
90 .get_timeout = tls1_default_timeout,
91 .ssl3_enc = &TLSv1_enc_data,
92 .ssl_version = ssl_undefined_void_function,
93 .ssl_callback_ctrl = ssl3_callback_ctrl,
94 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
95};
96
97const SSL_METHOD TLSv1_1_method_data = {
98 .version = TLS1_1_VERSION,
99 .ssl_new = tls1_new,
100 .ssl_clear = tls1_clear,
101 .ssl_free = tls1_free,
102 .ssl_accept = ssl3_accept,
103 .ssl_connect = ssl3_connect,
104 .ssl_read = ssl3_read,
105 .ssl_peek = ssl3_peek,
106 .ssl_write = ssl3_write,
107 .ssl_shutdown = ssl3_shutdown,
108 .ssl_renegotiate = ssl3_renegotiate,
109 .ssl_renegotiate_check = ssl3_renegotiate_check,
110 .ssl_get_message = ssl3_get_message,
111 .ssl_read_bytes = ssl3_read_bytes,
112 .ssl_write_bytes = ssl3_write_bytes,
113 .ssl_dispatch_alert = ssl3_dispatch_alert,
114 .ssl_ctrl = ssl3_ctrl,
115 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
116 .get_cipher_by_char = ssl3_get_cipher_by_char,
117 .put_cipher_by_char = ssl3_put_cipher_by_char,
118 .ssl_pending = ssl3_pending,
119 .num_ciphers = ssl3_num_ciphers,
120 .get_cipher = ssl3_get_cipher,
121 .get_ssl_method = tls1_get_method,
122 .get_timeout = tls1_default_timeout,
123 .ssl3_enc = &TLSv1_enc_data,
124 .ssl_version = ssl_undefined_void_function,
125 .ssl_callback_ctrl = ssl3_callback_ctrl,
126 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
127};
128
129const SSL_METHOD TLSv1_2_method_data = {
130 .version = TLS1_2_VERSION,
131 .ssl_new = tls1_new,
132 .ssl_clear = tls1_clear,
133 .ssl_free = tls1_free,
134 .ssl_accept = ssl3_accept,
135 .ssl_connect = ssl3_connect,
136 .ssl_read = ssl3_read,
137 .ssl_peek = ssl3_peek,
138 .ssl_write = ssl3_write,
139 .ssl_shutdown = ssl3_shutdown,
140 .ssl_renegotiate = ssl3_renegotiate,
141 .ssl_renegotiate_check = ssl3_renegotiate_check,
142 .ssl_get_message = ssl3_get_message,
143 .ssl_read_bytes = ssl3_read_bytes,
144 .ssl_write_bytes = ssl3_write_bytes,
145 .ssl_dispatch_alert = ssl3_dispatch_alert,
146 .ssl_ctrl = ssl3_ctrl,
147 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
148 .get_cipher_by_char = ssl3_get_cipher_by_char,
149 .put_cipher_by_char = ssl3_put_cipher_by_char,
150 .ssl_pending = ssl3_pending,
151 .num_ciphers = ssl3_num_ciphers,
152 .get_cipher = ssl3_get_cipher,
153 .get_ssl_method = tls1_get_method,
154 .get_timeout = tls1_default_timeout,
155 .ssl3_enc = &TLSv1_enc_data,
156 .ssl_version = ssl_undefined_void_function,
157 .ssl_callback_ctrl = ssl3_callback_ctrl,
158 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
159};
160
161const SSL_METHOD *
162TLSv1_method(void)
163{
164 return &TLSv1_method_data;
165}
166
167const SSL_METHOD *
168TLSv1_1_method(void)
169{
170 return &TLSv1_1_method_data;
171}
172
173const SSL_METHOD *
174TLSv1_2_method(void)
175{
176 return &TLSv1_2_method_data;
177}
178
63static const SSL_METHOD * 179static const SSL_METHOD *
64tls1_get_method(int ver) 180tls1_get_method(int ver)
65{ 181{
@@ -71,12 +187,3 @@ tls1_get_method(int ver)
71 return (TLSv1_method()); 187 return (TLSv1_method());
72 return (NULL); 188 return (NULL);
73} 189}
74
75IMPLEMENT_tls_meth_func(TLS1_2_VERSION, TLSv1_2_method,
76 ssl3_accept, ssl3_connect, tls1_get_method)
77
78IMPLEMENT_tls_meth_func(TLS1_1_VERSION, TLSv1_1_method,
79 ssl3_accept, ssl3_connect, tls1_get_method)
80
81IMPLEMENT_tls_meth_func(TLS1_VERSION, TLSv1_method,
82 ssl3_accept, ssl3_connect, tls1_get_method)
diff --git a/src/lib/libssl/src/ssl/t1_srvr.c b/src/lib/libssl/src/ssl/t1_srvr.c
index 01220072f1..d38afc5a21 100644
--- a/src/lib/libssl/src/ssl/t1_srvr.c
+++ b/src/lib/libssl/src/ssl/t1_srvr.c
@@ -66,6 +66,120 @@
66 66
67static const SSL_METHOD *tls1_get_server_method(int ver); 67static const SSL_METHOD *tls1_get_server_method(int ver);
68 68
69const SSL_METHOD TLSv1_server_method_data = {
70 .version = TLS1_VERSION,
71 .ssl_new = tls1_new,
72 .ssl_clear = tls1_clear,
73 .ssl_free = tls1_free,
74 .ssl_accept = ssl3_accept,
75 .ssl_connect = ssl_undefined_function,
76 .ssl_read = ssl3_read,
77 .ssl_peek = ssl3_peek,
78 .ssl_write = ssl3_write,
79 .ssl_shutdown = ssl3_shutdown,
80 .ssl_renegotiate = ssl3_renegotiate,
81 .ssl_renegotiate_check = ssl3_renegotiate_check,
82 .ssl_get_message = ssl3_get_message,
83 .ssl_read_bytes = ssl3_read_bytes,
84 .ssl_write_bytes = ssl3_write_bytes,
85 .ssl_dispatch_alert = ssl3_dispatch_alert,
86 .ssl_ctrl = ssl3_ctrl,
87 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
88 .get_cipher_by_char = ssl3_get_cipher_by_char,
89 .put_cipher_by_char = ssl3_put_cipher_by_char,
90 .ssl_pending = ssl3_pending,
91 .num_ciphers = ssl3_num_ciphers,
92 .get_cipher = ssl3_get_cipher,
93 .get_ssl_method = tls1_get_server_method,
94 .get_timeout = tls1_default_timeout,
95 .ssl3_enc = &TLSv1_enc_data,
96 .ssl_version = ssl_undefined_void_function,
97 .ssl_callback_ctrl = ssl3_callback_ctrl,
98 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
99};
100
101const SSL_METHOD TLSv1_1_server_method_data = {
102 .version = TLS1_1_VERSION,
103 .ssl_new = tls1_new,
104 .ssl_clear = tls1_clear,
105 .ssl_free = tls1_free,
106 .ssl_accept = ssl3_accept,
107 .ssl_connect = ssl_undefined_function,
108 .ssl_read = ssl3_read,
109 .ssl_peek = ssl3_peek,
110 .ssl_write = ssl3_write,
111 .ssl_shutdown = ssl3_shutdown,
112 .ssl_renegotiate = ssl3_renegotiate,
113 .ssl_renegotiate_check = ssl3_renegotiate_check,
114 .ssl_get_message = ssl3_get_message,
115 .ssl_read_bytes = ssl3_read_bytes,
116 .ssl_write_bytes = ssl3_write_bytes,
117 .ssl_dispatch_alert = ssl3_dispatch_alert,
118 .ssl_ctrl = ssl3_ctrl,
119 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
120 .get_cipher_by_char = ssl3_get_cipher_by_char,
121 .put_cipher_by_char = ssl3_put_cipher_by_char,
122 .ssl_pending = ssl3_pending,
123 .num_ciphers = ssl3_num_ciphers,
124 .get_cipher = ssl3_get_cipher,
125 .get_ssl_method = tls1_get_server_method,
126 .get_timeout = tls1_default_timeout,
127 .ssl3_enc = &TLSv1_enc_data,
128 .ssl_version = ssl_undefined_void_function,
129 .ssl_callback_ctrl = ssl3_callback_ctrl,
130 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
131};
132
133const SSL_METHOD TLSv1_2_server_method_data = {
134 .version = TLS1_2_VERSION,
135 .ssl_new = tls1_new,
136 .ssl_clear = tls1_clear,
137 .ssl_free = tls1_free,
138 .ssl_accept = ssl3_accept,
139 .ssl_connect = ssl_undefined_function,
140 .ssl_read = ssl3_read,
141 .ssl_peek = ssl3_peek,
142 .ssl_write = ssl3_write,
143 .ssl_shutdown = ssl3_shutdown,
144 .ssl_renegotiate = ssl3_renegotiate,
145 .ssl_renegotiate_check = ssl3_renegotiate_check,
146 .ssl_get_message = ssl3_get_message,
147 .ssl_read_bytes = ssl3_read_bytes,
148 .ssl_write_bytes = ssl3_write_bytes,
149 .ssl_dispatch_alert = ssl3_dispatch_alert,
150 .ssl_ctrl = ssl3_ctrl,
151 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
152 .get_cipher_by_char = ssl3_get_cipher_by_char,
153 .put_cipher_by_char = ssl3_put_cipher_by_char,
154 .ssl_pending = ssl3_pending,
155 .num_ciphers = ssl3_num_ciphers,
156 .get_cipher = ssl3_get_cipher,
157 .get_ssl_method = tls1_get_server_method,
158 .get_timeout = tls1_default_timeout,
159 .ssl3_enc = &TLSv1_enc_data,
160 .ssl_version = ssl_undefined_void_function,
161 .ssl_callback_ctrl = ssl3_callback_ctrl,
162 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
163};
164
165const SSL_METHOD *
166TLSv1_server_method(void)
167{
168 return &TLSv1_server_method_data;
169}
170
171const SSL_METHOD *
172TLSv1_1_server_method(void)
173{
174 return &TLSv1_1_server_method_data;
175}
176
177const SSL_METHOD *
178TLSv1_2_server_method(void)
179{
180 return &TLSv1_2_server_method_data;
181}
182
69static const SSL_METHOD * 183static const SSL_METHOD *
70tls1_get_server_method(int ver) 184tls1_get_server_method(int ver)
71{ 185{
@@ -77,12 +191,3 @@ tls1_get_server_method(int ver)
77 return (TLSv1_server_method()); 191 return (TLSv1_server_method());
78 return (NULL); 192 return (NULL);
79} 193}
80
81IMPLEMENT_tls_meth_func(TLS1_2_VERSION, TLSv1_2_server_method,
82 ssl3_accept, ssl_undefined_function, tls1_get_server_method)
83
84IMPLEMENT_tls_meth_func(TLS1_1_VERSION, TLSv1_1_server_method,
85 ssl3_accept, ssl_undefined_function, tls1_get_server_method)
86
87IMPLEMENT_tls_meth_func(TLS1_VERSION, TLSv1_server_method,
88 ssl3_accept, ssl_undefined_function, tls1_get_server_method)
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index fc9d6a1027..3a4656ef62 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -575,155 +575,6 @@ extern SSL3_ENC_METHOD DTLSv1_enc_data;
575 575
576#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION) 576#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION)
577 577
578#define IMPLEMENT_tls_meth_func(version, func_name, s_accept, s_connect, \
579 s_get_meth) \
580const SSL_METHOD *func_name(void) \
581 { \
582 static const SSL_METHOD func_name##_data= { \
583 version, \
584 tls1_new, \
585 tls1_clear, \
586 tls1_free, \
587 s_accept, \
588 s_connect, \
589 ssl3_read, \
590 ssl3_peek, \
591 ssl3_write, \
592 ssl3_shutdown, \
593 ssl3_renegotiate, \
594 ssl3_renegotiate_check, \
595 ssl3_get_message, \
596 ssl3_read_bytes, \
597 ssl3_write_bytes, \
598 ssl3_dispatch_alert, \
599 ssl3_ctrl, \
600 ssl3_ctx_ctrl, \
601 ssl3_get_cipher_by_char, \
602 ssl3_put_cipher_by_char, \
603 ssl3_pending, \
604 ssl3_num_ciphers, \
605 ssl3_get_cipher, \
606 s_get_meth, \
607 tls1_default_timeout, \
608 &TLSv1_enc_data, \
609 ssl_undefined_void_function, \
610 ssl3_callback_ctrl, \
611 ssl3_ctx_callback_ctrl, \
612 }; \
613 return &func_name##_data; \
614 }
615
616#define IMPLEMENT_ssl3_meth_func(func_name, s_accept, s_connect, s_get_meth) \
617const SSL_METHOD *func_name(void) \
618 { \
619 static const SSL_METHOD func_name##_data= { \
620 SSL3_VERSION, \
621 ssl3_new, \
622 ssl3_clear, \
623 ssl3_free, \
624 s_accept, \
625 s_connect, \
626 ssl3_read, \
627 ssl3_peek, \
628 ssl3_write, \
629 ssl3_shutdown, \
630 ssl3_renegotiate, \
631 ssl3_renegotiate_check, \
632 ssl3_get_message, \
633 ssl3_read_bytes, \
634 ssl3_write_bytes, \
635 ssl3_dispatch_alert, \
636 ssl3_ctrl, \
637 ssl3_ctx_ctrl, \
638 ssl3_get_cipher_by_char, \
639 ssl3_put_cipher_by_char, \
640 ssl3_pending, \
641 ssl3_num_ciphers, \
642 ssl3_get_cipher, \
643 s_get_meth, \
644 ssl3_default_timeout, \
645 &SSLv3_enc_data, \
646 ssl_undefined_void_function, \
647 ssl3_callback_ctrl, \
648 ssl3_ctx_callback_ctrl, \
649 }; \
650 return &func_name##_data; \
651 }
652
653#define IMPLEMENT_ssl23_meth_func(func_name, s_accept, s_connect, s_get_meth) \
654const SSL_METHOD *func_name(void) \
655 { \
656 static const SSL_METHOD func_name##_data= { \
657 TLS1_2_VERSION, \
658 tls1_new, \
659 tls1_clear, \
660 tls1_free, \
661 s_accept, \
662 s_connect, \
663 ssl23_read, \
664 ssl23_peek, \
665 ssl23_write, \
666 ssl_undefined_function, \
667 ssl_undefined_function, \
668 ssl_ok, \
669 ssl3_get_message, \
670 ssl3_read_bytes, \
671 ssl3_write_bytes, \
672 ssl3_dispatch_alert, \
673 ssl3_ctrl, \
674 ssl3_ctx_ctrl, \
675 ssl23_get_cipher_by_char, \
676 ssl23_put_cipher_by_char, \
677 ssl_undefined_const_function, \
678 ssl23_num_ciphers, \
679 ssl23_get_cipher, \
680 s_get_meth, \
681 ssl23_default_timeout, \
682 &ssl3_undef_enc_method, \
683 ssl_undefined_void_function, \
684 ssl3_callback_ctrl, \
685 ssl3_ctx_callback_ctrl, \
686 }; \
687 return &func_name##_data; \
688 }
689
690#define IMPLEMENT_dtls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \
691const SSL_METHOD *func_name(void) \
692 { \
693 static const SSL_METHOD func_name##_data= { \
694 DTLS1_VERSION, \
695 dtls1_new, \
696 dtls1_clear, \
697 dtls1_free, \
698 s_accept, \
699 s_connect, \
700 ssl3_read, \
701 ssl3_peek, \
702 ssl3_write, \
703 dtls1_shutdown, \
704 ssl3_renegotiate, \
705 ssl3_renegotiate_check, \
706 dtls1_get_message, \
707 dtls1_read_bytes, \
708 dtls1_write_app_data_bytes, \
709 dtls1_dispatch_alert, \
710 dtls1_ctrl, \
711 ssl3_ctx_ctrl, \
712 ssl3_get_cipher_by_char, \
713 ssl3_put_cipher_by_char, \
714 ssl3_pending, \
715 ssl3_num_ciphers, \
716 dtls1_get_cipher, \
717 s_get_meth, \
718 dtls1_default_timeout, \
719 &DTLSv1_enc_data, \
720 ssl_undefined_void_function, \
721 ssl3_callback_ctrl, \
722 ssl3_ctx_callback_ctrl, \
723 }; \
724 return &func_name##_data; \
725 }
726
727void ssl_clear_cipher_ctx(SSL *s); 578void ssl_clear_cipher_ctx(SSL *s);
728int ssl_clear_bad_session(SSL *s); 579int ssl_clear_bad_session(SSL *s);
729CERT *ssl_cert_new(void); 580CERT *ssl_cert_new(void);
@@ -926,8 +777,6 @@ int dtls1_send_server_key_exchange(SSL *s);
926int dtls1_send_certificate_request(SSL *s); 777int dtls1_send_certificate_request(SSL *s);
927int dtls1_send_server_done(SSL *s); 778int dtls1_send_server_done(SSL *s);
928 779
929
930
931int ssl23_accept(SSL *s); 780int ssl23_accept(SSL *s);
932int ssl23_connect(SSL *s); 781int ssl23_connect(SSL *s);
933int ssl23_read_bytes(SSL *s, int n); 782int ssl23_read_bytes(SSL *s, int n);
@@ -940,8 +789,8 @@ long tls1_ctrl(SSL *s, int cmd, long larg, void *parg);
940long tls1_callback_ctrl(SSL *s, int cmd, void (*fp)(void)); 789long tls1_callback_ctrl(SSL *s, int cmd, void (*fp)(void));
941 790
942int dtls1_new(SSL *s); 791int dtls1_new(SSL *s);
943int dtls1_accept(SSL *s); 792int dtls1_accept(SSL *s);
944int dtls1_connect(SSL *s); 793int dtls1_connect(SSL *s);
945void dtls1_free(SSL *s); 794void dtls1_free(SSL *s);
946void dtls1_clear(SSL *s); 795void dtls1_clear(SSL *s);
947long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg); 796long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg);
diff --git a/src/lib/libssl/t1_clnt.c b/src/lib/libssl/t1_clnt.c
index 180843c1f5..2223422d93 100644
--- a/src/lib/libssl/t1_clnt.c
+++ b/src/lib/libssl/t1_clnt.c
@@ -65,6 +65,120 @@
65 65
66static const SSL_METHOD *tls1_get_client_method(int ver); 66static const SSL_METHOD *tls1_get_client_method(int ver);
67 67
68const SSL_METHOD TLSv1_client_method_data = {
69 .version = TLS1_VERSION,
70 .ssl_new = tls1_new,
71 .ssl_clear = tls1_clear,
72 .ssl_free = tls1_free,
73 .ssl_accept = ssl_undefined_function,
74 .ssl_connect = ssl3_connect,
75 .ssl_read = ssl3_read,
76 .ssl_peek = ssl3_peek,
77 .ssl_write = ssl3_write,
78 .ssl_shutdown = ssl3_shutdown,
79 .ssl_renegotiate = ssl3_renegotiate,
80 .ssl_renegotiate_check = ssl3_renegotiate_check,
81 .ssl_get_message = ssl3_get_message,
82 .ssl_read_bytes = ssl3_read_bytes,
83 .ssl_write_bytes = ssl3_write_bytes,
84 .ssl_dispatch_alert = ssl3_dispatch_alert,
85 .ssl_ctrl = ssl3_ctrl,
86 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
87 .get_cipher_by_char = ssl3_get_cipher_by_char,
88 .put_cipher_by_char = ssl3_put_cipher_by_char,
89 .ssl_pending = ssl3_pending,
90 .num_ciphers = ssl3_num_ciphers,
91 .get_cipher = ssl3_get_cipher,
92 .get_ssl_method = tls1_get_client_method,
93 .get_timeout = tls1_default_timeout,
94 .ssl3_enc = &TLSv1_enc_data,
95 .ssl_version = ssl_undefined_void_function,
96 .ssl_callback_ctrl = ssl3_callback_ctrl,
97 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
98};
99
100const SSL_METHOD TLSv1_1_client_method_data = {
101 .version = TLS1_1_VERSION,
102 .ssl_new = tls1_new,
103 .ssl_clear = tls1_clear,
104 .ssl_free = tls1_free,
105 .ssl_accept = ssl_undefined_function,
106 .ssl_connect = ssl3_connect,
107 .ssl_read = ssl3_read,
108 .ssl_peek = ssl3_peek,
109 .ssl_write = ssl3_write,
110 .ssl_shutdown = ssl3_shutdown,
111 .ssl_renegotiate = ssl3_renegotiate,
112 .ssl_renegotiate_check = ssl3_renegotiate_check,
113 .ssl_get_message = ssl3_get_message,
114 .ssl_read_bytes = ssl3_read_bytes,
115 .ssl_write_bytes = ssl3_write_bytes,
116 .ssl_dispatch_alert = ssl3_dispatch_alert,
117 .ssl_ctrl = ssl3_ctrl,
118 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
119 .get_cipher_by_char = ssl3_get_cipher_by_char,
120 .put_cipher_by_char = ssl3_put_cipher_by_char,
121 .ssl_pending = ssl3_pending,
122 .num_ciphers = ssl3_num_ciphers,
123 .get_cipher = ssl3_get_cipher,
124 .get_ssl_method = tls1_get_client_method,
125 .get_timeout = tls1_default_timeout,
126 .ssl3_enc = &TLSv1_enc_data,
127 .ssl_version = ssl_undefined_void_function,
128 .ssl_callback_ctrl = ssl3_callback_ctrl,
129 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
130};
131
132const SSL_METHOD TLSv1_2_client_method_data = {
133 .version = TLS1_2_VERSION,
134 .ssl_new = tls1_new,
135 .ssl_clear = tls1_clear,
136 .ssl_free = tls1_free,
137 .ssl_accept = ssl_undefined_function,
138 .ssl_connect = ssl3_connect,
139 .ssl_read = ssl3_read,
140 .ssl_peek = ssl3_peek,
141 .ssl_write = ssl3_write,
142 .ssl_shutdown = ssl3_shutdown,
143 .ssl_renegotiate = ssl3_renegotiate,
144 .ssl_renegotiate_check = ssl3_renegotiate_check,
145 .ssl_get_message = ssl3_get_message,
146 .ssl_read_bytes = ssl3_read_bytes,
147 .ssl_write_bytes = ssl3_write_bytes,
148 .ssl_dispatch_alert = ssl3_dispatch_alert,
149 .ssl_ctrl = ssl3_ctrl,
150 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
151 .get_cipher_by_char = ssl3_get_cipher_by_char,
152 .put_cipher_by_char = ssl3_put_cipher_by_char,
153 .ssl_pending = ssl3_pending,
154 .num_ciphers = ssl3_num_ciphers,
155 .get_cipher = ssl3_get_cipher,
156 .get_ssl_method = tls1_get_client_method,
157 .get_timeout = tls1_default_timeout,
158 .ssl3_enc = &TLSv1_enc_data,
159 .ssl_version = ssl_undefined_void_function,
160 .ssl_callback_ctrl = ssl3_callback_ctrl,
161 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
162};
163
164const SSL_METHOD *
165TLSv1_client_method(void)
166{
167 return &TLSv1_client_method_data;
168}
169
170const SSL_METHOD *
171TLSv1_1_client_method(void)
172{
173 return &TLSv1_1_client_method_data;
174}
175
176const SSL_METHOD *
177TLSv1_2_client_method(void)
178{
179 return &TLSv1_2_client_method_data;
180}
181
68static const SSL_METHOD * 182static const SSL_METHOD *
69tls1_get_client_method(int ver) 183tls1_get_client_method(int ver)
70{ 184{
@@ -76,12 +190,3 @@ tls1_get_client_method(int ver)
76 return (TLSv1_client_method()); 190 return (TLSv1_client_method());
77 return (NULL); 191 return (NULL);
78} 192}
79
80IMPLEMENT_tls_meth_func(TLS1_2_VERSION, TLSv1_2_client_method,
81 ssl_undefined_function, ssl3_connect, tls1_get_client_method)
82
83IMPLEMENT_tls_meth_func(TLS1_1_VERSION, TLSv1_1_client_method,
84 ssl_undefined_function, ssl3_connect, tls1_get_client_method)
85
86IMPLEMENT_tls_meth_func(TLS1_VERSION, TLSv1_client_method,
87 ssl_undefined_function, ssl3_connect, tls1_get_client_method)
diff --git a/src/lib/libssl/t1_meth.c b/src/lib/libssl/t1_meth.c
index 49fe9624a2..b39303b369 100644
--- a/src/lib/libssl/t1_meth.c
+++ b/src/lib/libssl/t1_meth.c
@@ -60,6 +60,122 @@
60#include <openssl/objects.h> 60#include <openssl/objects.h>
61#include "ssl_locl.h" 61#include "ssl_locl.h"
62 62
63static const SSL_METHOD *tls1_get_method(int ver);
64
65const SSL_METHOD TLSv1_method_data = {
66 .version = TLS1_VERSION,
67 .ssl_new = tls1_new,
68 .ssl_clear = tls1_clear,
69 .ssl_free = tls1_free,
70 .ssl_accept = ssl3_accept,
71 .ssl_connect = ssl3_connect,
72 .ssl_read = ssl3_read,
73 .ssl_peek = ssl3_peek,
74 .ssl_write = ssl3_write,
75 .ssl_shutdown = ssl3_shutdown,
76 .ssl_renegotiate = ssl3_renegotiate,
77 .ssl_renegotiate_check = ssl3_renegotiate_check,
78 .ssl_get_message = ssl3_get_message,
79 .ssl_read_bytes = ssl3_read_bytes,
80 .ssl_write_bytes = ssl3_write_bytes,
81 .ssl_dispatch_alert = ssl3_dispatch_alert,
82 .ssl_ctrl = ssl3_ctrl,
83 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
84 .get_cipher_by_char = ssl3_get_cipher_by_char,
85 .put_cipher_by_char = ssl3_put_cipher_by_char,
86 .ssl_pending = ssl3_pending,
87 .num_ciphers = ssl3_num_ciphers,
88 .get_cipher = ssl3_get_cipher,
89 .get_ssl_method = tls1_get_method,
90 .get_timeout = tls1_default_timeout,
91 .ssl3_enc = &TLSv1_enc_data,
92 .ssl_version = ssl_undefined_void_function,
93 .ssl_callback_ctrl = ssl3_callback_ctrl,
94 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
95};
96
97const SSL_METHOD TLSv1_1_method_data = {
98 .version = TLS1_1_VERSION,
99 .ssl_new = tls1_new,
100 .ssl_clear = tls1_clear,
101 .ssl_free = tls1_free,
102 .ssl_accept = ssl3_accept,
103 .ssl_connect = ssl3_connect,
104 .ssl_read = ssl3_read,
105 .ssl_peek = ssl3_peek,
106 .ssl_write = ssl3_write,
107 .ssl_shutdown = ssl3_shutdown,
108 .ssl_renegotiate = ssl3_renegotiate,
109 .ssl_renegotiate_check = ssl3_renegotiate_check,
110 .ssl_get_message = ssl3_get_message,
111 .ssl_read_bytes = ssl3_read_bytes,
112 .ssl_write_bytes = ssl3_write_bytes,
113 .ssl_dispatch_alert = ssl3_dispatch_alert,
114 .ssl_ctrl = ssl3_ctrl,
115 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
116 .get_cipher_by_char = ssl3_get_cipher_by_char,
117 .put_cipher_by_char = ssl3_put_cipher_by_char,
118 .ssl_pending = ssl3_pending,
119 .num_ciphers = ssl3_num_ciphers,
120 .get_cipher = ssl3_get_cipher,
121 .get_ssl_method = tls1_get_method,
122 .get_timeout = tls1_default_timeout,
123 .ssl3_enc = &TLSv1_enc_data,
124 .ssl_version = ssl_undefined_void_function,
125 .ssl_callback_ctrl = ssl3_callback_ctrl,
126 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
127};
128
129const SSL_METHOD TLSv1_2_method_data = {
130 .version = TLS1_2_VERSION,
131 .ssl_new = tls1_new,
132 .ssl_clear = tls1_clear,
133 .ssl_free = tls1_free,
134 .ssl_accept = ssl3_accept,
135 .ssl_connect = ssl3_connect,
136 .ssl_read = ssl3_read,
137 .ssl_peek = ssl3_peek,
138 .ssl_write = ssl3_write,
139 .ssl_shutdown = ssl3_shutdown,
140 .ssl_renegotiate = ssl3_renegotiate,
141 .ssl_renegotiate_check = ssl3_renegotiate_check,
142 .ssl_get_message = ssl3_get_message,
143 .ssl_read_bytes = ssl3_read_bytes,
144 .ssl_write_bytes = ssl3_write_bytes,
145 .ssl_dispatch_alert = ssl3_dispatch_alert,
146 .ssl_ctrl = ssl3_ctrl,
147 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
148 .get_cipher_by_char = ssl3_get_cipher_by_char,
149 .put_cipher_by_char = ssl3_put_cipher_by_char,
150 .ssl_pending = ssl3_pending,
151 .num_ciphers = ssl3_num_ciphers,
152 .get_cipher = ssl3_get_cipher,
153 .get_ssl_method = tls1_get_method,
154 .get_timeout = tls1_default_timeout,
155 .ssl3_enc = &TLSv1_enc_data,
156 .ssl_version = ssl_undefined_void_function,
157 .ssl_callback_ctrl = ssl3_callback_ctrl,
158 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
159};
160
161const SSL_METHOD *
162TLSv1_method(void)
163{
164 return &TLSv1_method_data;
165}
166
167const SSL_METHOD *
168TLSv1_1_method(void)
169{
170 return &TLSv1_1_method_data;
171}
172
173const SSL_METHOD *
174TLSv1_2_method(void)
175{
176 return &TLSv1_2_method_data;
177}
178
63static const SSL_METHOD * 179static const SSL_METHOD *
64tls1_get_method(int ver) 180tls1_get_method(int ver)
65{ 181{
@@ -71,12 +187,3 @@ tls1_get_method(int ver)
71 return (TLSv1_method()); 187 return (TLSv1_method());
72 return (NULL); 188 return (NULL);
73} 189}
74
75IMPLEMENT_tls_meth_func(TLS1_2_VERSION, TLSv1_2_method,
76 ssl3_accept, ssl3_connect, tls1_get_method)
77
78IMPLEMENT_tls_meth_func(TLS1_1_VERSION, TLSv1_1_method,
79 ssl3_accept, ssl3_connect, tls1_get_method)
80
81IMPLEMENT_tls_meth_func(TLS1_VERSION, TLSv1_method,
82 ssl3_accept, ssl3_connect, tls1_get_method)
diff --git a/src/lib/libssl/t1_srvr.c b/src/lib/libssl/t1_srvr.c
index 01220072f1..d38afc5a21 100644
--- a/src/lib/libssl/t1_srvr.c
+++ b/src/lib/libssl/t1_srvr.c
@@ -66,6 +66,120 @@
66 66
67static const SSL_METHOD *tls1_get_server_method(int ver); 67static const SSL_METHOD *tls1_get_server_method(int ver);
68 68
69const SSL_METHOD TLSv1_server_method_data = {
70 .version = TLS1_VERSION,
71 .ssl_new = tls1_new,
72 .ssl_clear = tls1_clear,
73 .ssl_free = tls1_free,
74 .ssl_accept = ssl3_accept,
75 .ssl_connect = ssl_undefined_function,
76 .ssl_read = ssl3_read,
77 .ssl_peek = ssl3_peek,
78 .ssl_write = ssl3_write,
79 .ssl_shutdown = ssl3_shutdown,
80 .ssl_renegotiate = ssl3_renegotiate,
81 .ssl_renegotiate_check = ssl3_renegotiate_check,
82 .ssl_get_message = ssl3_get_message,
83 .ssl_read_bytes = ssl3_read_bytes,
84 .ssl_write_bytes = ssl3_write_bytes,
85 .ssl_dispatch_alert = ssl3_dispatch_alert,
86 .ssl_ctrl = ssl3_ctrl,
87 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
88 .get_cipher_by_char = ssl3_get_cipher_by_char,
89 .put_cipher_by_char = ssl3_put_cipher_by_char,
90 .ssl_pending = ssl3_pending,
91 .num_ciphers = ssl3_num_ciphers,
92 .get_cipher = ssl3_get_cipher,
93 .get_ssl_method = tls1_get_server_method,
94 .get_timeout = tls1_default_timeout,
95 .ssl3_enc = &TLSv1_enc_data,
96 .ssl_version = ssl_undefined_void_function,
97 .ssl_callback_ctrl = ssl3_callback_ctrl,
98 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
99};
100
101const SSL_METHOD TLSv1_1_server_method_data = {
102 .version = TLS1_1_VERSION,
103 .ssl_new = tls1_new,
104 .ssl_clear = tls1_clear,
105 .ssl_free = tls1_free,
106 .ssl_accept = ssl3_accept,
107 .ssl_connect = ssl_undefined_function,
108 .ssl_read = ssl3_read,
109 .ssl_peek = ssl3_peek,
110 .ssl_write = ssl3_write,
111 .ssl_shutdown = ssl3_shutdown,
112 .ssl_renegotiate = ssl3_renegotiate,
113 .ssl_renegotiate_check = ssl3_renegotiate_check,
114 .ssl_get_message = ssl3_get_message,
115 .ssl_read_bytes = ssl3_read_bytes,
116 .ssl_write_bytes = ssl3_write_bytes,
117 .ssl_dispatch_alert = ssl3_dispatch_alert,
118 .ssl_ctrl = ssl3_ctrl,
119 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
120 .get_cipher_by_char = ssl3_get_cipher_by_char,
121 .put_cipher_by_char = ssl3_put_cipher_by_char,
122 .ssl_pending = ssl3_pending,
123 .num_ciphers = ssl3_num_ciphers,
124 .get_cipher = ssl3_get_cipher,
125 .get_ssl_method = tls1_get_server_method,
126 .get_timeout = tls1_default_timeout,
127 .ssl3_enc = &TLSv1_enc_data,
128 .ssl_version = ssl_undefined_void_function,
129 .ssl_callback_ctrl = ssl3_callback_ctrl,
130 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
131};
132
133const SSL_METHOD TLSv1_2_server_method_data = {
134 .version = TLS1_2_VERSION,
135 .ssl_new = tls1_new,
136 .ssl_clear = tls1_clear,
137 .ssl_free = tls1_free,
138 .ssl_accept = ssl3_accept,
139 .ssl_connect = ssl_undefined_function,
140 .ssl_read = ssl3_read,
141 .ssl_peek = ssl3_peek,
142 .ssl_write = ssl3_write,
143 .ssl_shutdown = ssl3_shutdown,
144 .ssl_renegotiate = ssl3_renegotiate,
145 .ssl_renegotiate_check = ssl3_renegotiate_check,
146 .ssl_get_message = ssl3_get_message,
147 .ssl_read_bytes = ssl3_read_bytes,
148 .ssl_write_bytes = ssl3_write_bytes,
149 .ssl_dispatch_alert = ssl3_dispatch_alert,
150 .ssl_ctrl = ssl3_ctrl,
151 .ssl_ctx_ctrl = ssl3_ctx_ctrl,
152 .get_cipher_by_char = ssl3_get_cipher_by_char,
153 .put_cipher_by_char = ssl3_put_cipher_by_char,
154 .ssl_pending = ssl3_pending,
155 .num_ciphers = ssl3_num_ciphers,
156 .get_cipher = ssl3_get_cipher,
157 .get_ssl_method = tls1_get_server_method,
158 .get_timeout = tls1_default_timeout,
159 .ssl3_enc = &TLSv1_enc_data,
160 .ssl_version = ssl_undefined_void_function,
161 .ssl_callback_ctrl = ssl3_callback_ctrl,
162 .ssl_ctx_callback_ctrl = ssl3_ctx_callback_ctrl,
163};
164
165const SSL_METHOD *
166TLSv1_server_method(void)
167{
168 return &TLSv1_server_method_data;
169}
170
171const SSL_METHOD *
172TLSv1_1_server_method(void)
173{
174 return &TLSv1_1_server_method_data;
175}
176
177const SSL_METHOD *
178TLSv1_2_server_method(void)
179{
180 return &TLSv1_2_server_method_data;
181}
182
69static const SSL_METHOD * 183static const SSL_METHOD *
70tls1_get_server_method(int ver) 184tls1_get_server_method(int ver)
71{ 185{
@@ -77,12 +191,3 @@ tls1_get_server_method(int ver)
77 return (TLSv1_server_method()); 191 return (TLSv1_server_method());
78 return (NULL); 192 return (NULL);
79} 193}
80
81IMPLEMENT_tls_meth_func(TLS1_2_VERSION, TLSv1_2_server_method,
82 ssl3_accept, ssl_undefined_function, tls1_get_server_method)
83
84IMPLEMENT_tls_meth_func(TLS1_1_VERSION, TLSv1_1_server_method,
85 ssl3_accept, ssl_undefined_function, tls1_get_server_method)
86
87IMPLEMENT_tls_meth_func(TLS1_VERSION, TLSv1_server_method,
88 ssl3_accept, ssl_undefined_function, tls1_get_server_method)