1 | /* |
2 | * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. |
3 | * |
4 | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | * this file except in compliance with the License. You can obtain a copy |
6 | * in the file LICENSE in the source distribution or at |
7 | * https://www.openssl.org/source/license.html |
8 | */ |
9 | |
10 | /***************************************************************************** |
11 | * * |
12 | * The following definitions are PRIVATE to the state machine. They should * |
13 | * NOT be used outside of the state machine. * |
14 | * * |
15 | *****************************************************************************/ |
16 | |
17 | /* Max message length definitions */ |
18 | |
19 | /* The spec allows for a longer length than this, but we limit it */ |
20 | #define HELLO_VERIFY_REQUEST_MAX_LENGTH 258 |
21 | #define END_OF_EARLY_DATA_MAX_LENGTH 0 |
22 | #define SERVER_HELLO_MAX_LENGTH 20000 |
23 | #define HELLO_RETRY_REQUEST_MAX_LENGTH 20000 |
24 | #define ENCRYPTED_EXTENSIONS_MAX_LENGTH 20000 |
25 | #define SERVER_KEY_EXCH_MAX_LENGTH 102400 |
26 | #define SERVER_HELLO_DONE_MAX_LENGTH 0 |
27 | #define KEY_UPDATE_MAX_LENGTH 1 |
28 | #define CCS_MAX_LENGTH 1 |
29 | /* Max should actually be 36 but we are generous */ |
30 | #define FINISHED_MAX_LENGTH 64 |
31 | |
32 | /* Dummy message type */ |
33 | #define SSL3_MT_DUMMY -1 |
34 | |
35 | extern const unsigned char hrrrandom[]; |
36 | |
37 | /* Message processing return codes */ |
38 | typedef enum { |
39 | /* Something bad happened */ |
40 | MSG_PROCESS_ERROR, |
41 | /* We've finished reading - swap to writing */ |
42 | MSG_PROCESS_FINISHED_READING, |
43 | /* |
44 | * We've completed the main processing of this message but there is some |
45 | * post processing to be done. |
46 | */ |
47 | MSG_PROCESS_CONTINUE_PROCESSING, |
48 | /* We've finished this message - read the next message */ |
49 | MSG_PROCESS_CONTINUE_READING |
50 | } MSG_PROCESS_RETURN; |
51 | |
52 | typedef int (*confunc_f) (SSL *s, WPACKET *pkt); |
53 | |
54 | int ssl3_take_mac(SSL *s); |
55 | int check_in_list(SSL *s, uint16_t group_id, const uint16_t *groups, |
56 | size_t num_groups, int checkallow); |
57 | int create_synthetic_message_hash(SSL *s, const unsigned char *hashval, |
58 | size_t hashlen, const unsigned char *hrr, |
59 | size_t hrrlen); |
60 | int parse_ca_names(SSL *s, PACKET *pkt); |
61 | const STACK_OF(X509_NAME) *get_ca_names(SSL *s); |
62 | int construct_ca_names(SSL *s, const STACK_OF(X509_NAME) *ca_sk, WPACKET *pkt); |
63 | size_t construct_key_exchange_tbs(SSL *s, unsigned char **ptbs, |
64 | const void *param, size_t paramlen); |
65 | |
66 | /* |
67 | * TLS/DTLS client state machine functions |
68 | */ |
69 | int ossl_statem_client_read_transition(SSL *s, int mt); |
70 | WRITE_TRAN ossl_statem_client_write_transition(SSL *s); |
71 | WORK_STATE ossl_statem_client_pre_work(SSL *s, WORK_STATE wst); |
72 | WORK_STATE ossl_statem_client_post_work(SSL *s, WORK_STATE wst); |
73 | int ossl_statem_client_construct_message(SSL *s, WPACKET *pkt, |
74 | confunc_f *confunc, int *mt); |
75 | size_t ossl_statem_client_max_message_size(SSL *s); |
76 | MSG_PROCESS_RETURN ossl_statem_client_process_message(SSL *s, PACKET *pkt); |
77 | WORK_STATE ossl_statem_client_post_process_message(SSL *s, WORK_STATE wst); |
78 | |
79 | /* |
80 | * TLS/DTLS server state machine functions |
81 | */ |
82 | int ossl_statem_server_read_transition(SSL *s, int mt); |
83 | WRITE_TRAN ossl_statem_server_write_transition(SSL *s); |
84 | WORK_STATE ossl_statem_server_pre_work(SSL *s, WORK_STATE wst); |
85 | WORK_STATE ossl_statem_server_post_work(SSL *s, WORK_STATE wst); |
86 | int ossl_statem_server_construct_message(SSL *s, WPACKET *pkt, |
87 | confunc_f *confunc,int *mt); |
88 | size_t ossl_statem_server_max_message_size(SSL *s); |
89 | MSG_PROCESS_RETURN ossl_statem_server_process_message(SSL *s, PACKET *pkt); |
90 | WORK_STATE ossl_statem_server_post_process_message(SSL *s, WORK_STATE wst); |
91 | |
92 | /* Functions for getting new message data */ |
93 | __owur int (SSL *s, int *mt); |
94 | __owur int tls_get_message_body(SSL *s, size_t *len); |
95 | __owur int dtls_get_message(SSL *s, int *mt, size_t *len); |
96 | |
97 | /* Message construction and processing functions */ |
98 | __owur int tls_process_initial_server_flight(SSL *s); |
99 | __owur MSG_PROCESS_RETURN tls_process_change_cipher_spec(SSL *s, PACKET *pkt); |
100 | __owur MSG_PROCESS_RETURN tls_process_finished(SSL *s, PACKET *pkt); |
101 | __owur int tls_construct_change_cipher_spec(SSL *s, WPACKET *pkt); |
102 | __owur int dtls_construct_change_cipher_spec(SSL *s, WPACKET *pkt); |
103 | |
104 | __owur int tls_construct_finished(SSL *s, WPACKET *pkt); |
105 | __owur int tls_construct_key_update(SSL *s, WPACKET *pkt); |
106 | __owur MSG_PROCESS_RETURN tls_process_key_update(SSL *s, PACKET *pkt); |
107 | __owur WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, |
108 | int stop); |
109 | __owur WORK_STATE dtls_wait_for_dry(SSL *s); |
110 | |
111 | /* some client-only functions */ |
112 | __owur int tls_construct_client_hello(SSL *s, WPACKET *pkt); |
113 | __owur MSG_PROCESS_RETURN tls_process_server_hello(SSL *s, PACKET *pkt); |
114 | __owur MSG_PROCESS_RETURN tls_process_certificate_request(SSL *s, PACKET *pkt); |
115 | __owur MSG_PROCESS_RETURN tls_process_new_session_ticket(SSL *s, PACKET *pkt); |
116 | __owur int tls_process_cert_status_body(SSL *s, PACKET *pkt); |
117 | __owur MSG_PROCESS_RETURN tls_process_cert_status(SSL *s, PACKET *pkt); |
118 | __owur MSG_PROCESS_RETURN tls_process_server_done(SSL *s, PACKET *pkt); |
119 | __owur int tls_construct_cert_verify(SSL *s, WPACKET *pkt); |
120 | __owur WORK_STATE tls_prepare_client_certificate(SSL *s, WORK_STATE wst); |
121 | __owur int tls_construct_client_certificate(SSL *s, WPACKET *pkt); |
122 | __owur int ssl_do_client_cert_cb(SSL *s, X509 **px509, EVP_PKEY **ppkey); |
123 | __owur int tls_construct_client_key_exchange(SSL *s, WPACKET *pkt); |
124 | __owur int tls_client_key_exchange_post_work(SSL *s); |
125 | __owur int tls_construct_cert_status_body(SSL *s, WPACKET *pkt); |
126 | __owur int tls_construct_cert_status(SSL *s, WPACKET *pkt); |
127 | __owur MSG_PROCESS_RETURN tls_process_key_exchange(SSL *s, PACKET *pkt); |
128 | __owur MSG_PROCESS_RETURN tls_process_server_certificate(SSL *s, PACKET *pkt); |
129 | __owur int ssl3_check_cert_and_algorithm(SSL *s); |
130 | #ifndef OPENSSL_NO_NEXTPROTONEG |
131 | __owur int tls_construct_next_proto(SSL *s, WPACKET *pkt); |
132 | #endif |
133 | __owur MSG_PROCESS_RETURN tls_process_hello_req(SSL *s, PACKET *pkt); |
134 | __owur MSG_PROCESS_RETURN dtls_process_hello_verify(SSL *s, PACKET *pkt); |
135 | __owur int tls_construct_end_of_early_data(SSL *s, WPACKET *pkt); |
136 | |
137 | /* some server-only functions */ |
138 | __owur MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt); |
139 | __owur WORK_STATE tls_post_process_client_hello(SSL *s, WORK_STATE wst); |
140 | __owur int tls_construct_server_hello(SSL *s, WPACKET *pkt); |
141 | __owur int dtls_construct_hello_verify_request(SSL *s, WPACKET *pkt); |
142 | __owur int tls_construct_server_certificate(SSL *s, WPACKET *pkt); |
143 | __owur int tls_construct_server_key_exchange(SSL *s, WPACKET *pkt); |
144 | __owur int tls_construct_certificate_request(SSL *s, WPACKET *pkt); |
145 | __owur int tls_construct_server_done(SSL *s, WPACKET *pkt); |
146 | __owur MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt); |
147 | __owur MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt); |
148 | __owur WORK_STATE tls_post_process_client_key_exchange(SSL *s, WORK_STATE wst); |
149 | __owur MSG_PROCESS_RETURN tls_process_cert_verify(SSL *s, PACKET *pkt); |
150 | #ifndef OPENSSL_NO_NEXTPROTONEG |
151 | __owur MSG_PROCESS_RETURN tls_process_next_proto(SSL *s, PACKET *pkt); |
152 | #endif |
153 | __owur int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt); |
154 | MSG_PROCESS_RETURN tls_process_end_of_early_data(SSL *s, PACKET *pkt); |
155 | |
156 | |
157 | /* Extension processing */ |
158 | |
159 | typedef enum ext_return_en { |
160 | EXT_RETURN_FAIL, |
161 | EXT_RETURN_SENT, |
162 | EXT_RETURN_NOT_SENT |
163 | } EXT_RETURN; |
164 | |
165 | __owur int tls_validate_all_contexts(SSL *s, unsigned int thisctx, |
166 | RAW_EXTENSION *exts); |
167 | __owur int extension_is_relevant(SSL *s, unsigned int extctx, |
168 | unsigned int thisctx); |
169 | __owur int tls_collect_extensions(SSL *s, PACKET *packet, unsigned int context, |
170 | RAW_EXTENSION **res, size_t *len, int init); |
171 | __owur int tls_parse_extension(SSL *s, TLSEXT_INDEX idx, int context, |
172 | RAW_EXTENSION *exts, X509 *x, size_t chainidx); |
173 | __owur int tls_parse_all_extensions(SSL *s, int context, RAW_EXTENSION *exts, |
174 | X509 *x, size_t chainidx, int fin); |
175 | __owur int should_add_extension(SSL *s, unsigned int extctx, |
176 | unsigned int thisctx, int max_version); |
177 | __owur int tls_construct_extensions(SSL *s, WPACKET *pkt, unsigned int context, |
178 | X509 *x, size_t chainidx); |
179 | |
180 | __owur int tls_psk_do_binder(SSL *s, const EVP_MD *md, |
181 | const unsigned char *msgstart, |
182 | size_t binderoffset, const unsigned char *binderin, |
183 | unsigned char *binderout, |
184 | SSL_SESSION *sess, int sign, int external); |
185 | |
186 | /* Server Extension processing */ |
187 | int tls_parse_ctos_renegotiate(SSL *s, PACKET *pkt, unsigned int context, |
188 | X509 *x, size_t chainidx); |
189 | int tls_parse_ctos_server_name(SSL *s, PACKET *pkt, unsigned int context, |
190 | X509 *x, size_t chainidx); |
191 | int tls_parse_ctos_maxfragmentlen(SSL *s, PACKET *pkt, unsigned int context, |
192 | X509 *x, size_t chainidx); |
193 | #ifndef OPENSSL_NO_SRP |
194 | int tls_parse_ctos_srp(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
195 | size_t chainidx); |
196 | #endif |
197 | int tls_parse_ctos_early_data(SSL *s, PACKET *pkt, unsigned int context, |
198 | X509 *x, size_t chainidx); |
199 | #ifndef OPENSSL_NO_EC |
200 | int tls_parse_ctos_ec_pt_formats(SSL *s, PACKET *pkt, unsigned int context, |
201 | X509 *x, size_t chainidx); |
202 | #endif |
203 | int tls_parse_ctos_supported_groups(SSL *s, PACKET *pkt, unsigned int context, |
204 | X509 *x, size_t chainidxl); |
205 | int tls_parse_ctos_session_ticket(SSL *s, PACKET *pkt, unsigned int context, |
206 | X509 *x, size_t chainidx); |
207 | int tls_parse_ctos_sig_algs_cert(SSL *s, PACKET *pkt, unsigned int context, |
208 | X509 *x, size_t chainidx); |
209 | int tls_parse_ctos_sig_algs(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
210 | size_t chainidx); |
211 | #ifndef OPENSSL_NO_OCSP |
212 | int tls_parse_ctos_status_request(SSL *s, PACKET *pkt, unsigned int context, |
213 | X509 *x, size_t chainidx); |
214 | #endif |
215 | #ifndef OPENSSL_NO_NEXTPROTONEG |
216 | int tls_parse_ctos_npn(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
217 | size_t chainidx); |
218 | #endif |
219 | int tls_parse_ctos_alpn(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
220 | size_t chainidx); |
221 | #ifndef OPENSSL_NO_SRTP |
222 | int tls_parse_ctos_use_srtp(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
223 | size_t chainidx); |
224 | #endif |
225 | int tls_parse_ctos_etm(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
226 | size_t chainidx); |
227 | int tls_parse_ctos_key_share(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
228 | size_t chainidx); |
229 | int tls_parse_ctos_cookie(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
230 | size_t chainidx); |
231 | int tls_parse_ctos_ems(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
232 | size_t chainidx); |
233 | int tls_parse_ctos_psk_kex_modes(SSL *s, PACKET *pkt, unsigned int context, |
234 | X509 *x, size_t chainidx); |
235 | int tls_parse_ctos_psk(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
236 | size_t chainidx); |
237 | int tls_parse_ctos_post_handshake_auth(SSL *, PACKET *pkt, unsigned int context, |
238 | X509 *x, size_t chainidx); |
239 | |
240 | EXT_RETURN tls_construct_stoc_renegotiate(SSL *s, WPACKET *pkt, |
241 | unsigned int context, X509 *x, |
242 | size_t chainidx); |
243 | EXT_RETURN tls_construct_stoc_server_name(SSL *s, WPACKET *pkt, |
244 | unsigned int context, X509 *x, |
245 | size_t chainidx); |
246 | EXT_RETURN tls_construct_stoc_early_data(SSL *s, WPACKET *pkt, |
247 | unsigned int context, X509 *x, |
248 | size_t chainidx); |
249 | EXT_RETURN tls_construct_stoc_maxfragmentlen(SSL *s, WPACKET *pkt, |
250 | unsigned int context, X509 *x, |
251 | size_t chainidx); |
252 | #ifndef OPENSSL_NO_EC |
253 | EXT_RETURN tls_construct_stoc_ec_pt_formats(SSL *s, WPACKET *pkt, |
254 | unsigned int context, X509 *x, |
255 | size_t chainidx); |
256 | #endif |
257 | EXT_RETURN tls_construct_stoc_supported_groups(SSL *s, WPACKET *pkt, |
258 | unsigned int context, X509 *x, |
259 | size_t chainidx); |
260 | EXT_RETURN tls_construct_stoc_session_ticket(SSL *s, WPACKET *pkt, |
261 | unsigned int context, X509 *x, |
262 | size_t chainidx); |
263 | #ifndef OPENSSL_NO_OCSP |
264 | EXT_RETURN tls_construct_stoc_status_request(SSL *s, WPACKET *pkt, |
265 | unsigned int context, X509 *x, |
266 | size_t chainidx); |
267 | #endif |
268 | #ifndef OPENSSL_NO_NEXTPROTONEG |
269 | EXT_RETURN tls_construct_stoc_next_proto_neg(SSL *s, WPACKET *pkt, |
270 | unsigned int context, X509 *x, |
271 | size_t chainidx); |
272 | #endif |
273 | EXT_RETURN tls_construct_stoc_alpn(SSL *s, WPACKET *pkt, unsigned int context, |
274 | X509 *x, size_t chainidx); |
275 | #ifndef OPENSSL_NO_SRTP |
276 | EXT_RETURN tls_construct_stoc_use_srtp(SSL *s, WPACKET *pkt, unsigned int context, |
277 | X509 *x, size_t chainidx); |
278 | #endif |
279 | EXT_RETURN tls_construct_stoc_etm(SSL *s, WPACKET *pkt, unsigned int context, |
280 | X509 *x, size_t chainidx); |
281 | EXT_RETURN tls_construct_stoc_ems(SSL *s, WPACKET *pkt, unsigned int context, |
282 | X509 *x, size_t chainidx); |
283 | EXT_RETURN tls_construct_stoc_supported_versions(SSL *s, WPACKET *pkt, |
284 | unsigned int context, X509 *x, |
285 | size_t chainidx); |
286 | EXT_RETURN tls_construct_stoc_key_share(SSL *s, WPACKET *pkt, |
287 | unsigned int context, X509 *x, |
288 | size_t chainidx); |
289 | EXT_RETURN tls_construct_stoc_cookie(SSL *s, WPACKET *pkt, unsigned int context, |
290 | X509 *x, size_t chainidx); |
291 | /* |
292 | * Not in public headers as this is not an official extension. Only used when |
293 | * SSL_OP_CRYPTOPRO_TLSEXT_BUG is set. |
294 | */ |
295 | #define TLSEXT_TYPE_cryptopro_bug 0xfde8 |
296 | EXT_RETURN tls_construct_stoc_cryptopro_bug(SSL *s, WPACKET *pkt, |
297 | unsigned int context, X509 *x, |
298 | size_t chainidx); |
299 | EXT_RETURN tls_construct_stoc_psk(SSL *s, WPACKET *pkt, unsigned int context, |
300 | X509 *x, size_t chainidx); |
301 | |
302 | /* Client Extension processing */ |
303 | EXT_RETURN tls_construct_ctos_renegotiate(SSL *s, WPACKET *pkt, unsigned int context, |
304 | X509 *x, size_t chainidx); |
305 | EXT_RETURN tls_construct_ctos_server_name(SSL *s, WPACKET *pkt, unsigned int context, |
306 | X509 *x, size_t chainidx); |
307 | EXT_RETURN tls_construct_ctos_maxfragmentlen(SSL *s, WPACKET *pkt, unsigned int context, |
308 | X509 *x, size_t chainidx); |
309 | #ifndef OPENSSL_NO_SRP |
310 | EXT_RETURN tls_construct_ctos_srp(SSL *s, WPACKET *pkt, unsigned int context, X509 *x, |
311 | size_t chainidx); |
312 | #endif |
313 | #ifndef OPENSSL_NO_EC |
314 | EXT_RETURN tls_construct_ctos_ec_pt_formats(SSL *s, WPACKET *pkt, |
315 | unsigned int context, X509 *x, |
316 | size_t chainidx); |
317 | #endif |
318 | EXT_RETURN tls_construct_ctos_supported_groups(SSL *s, WPACKET *pkt, |
319 | unsigned int context, X509 *x, |
320 | size_t chainidx); |
321 | |
322 | EXT_RETURN tls_construct_ctos_early_data(SSL *s, WPACKET *pkt, |
323 | unsigned int context, X509 *x, |
324 | size_t chainidx); |
325 | EXT_RETURN tls_construct_ctos_session_ticket(SSL *s, WPACKET *pkt, |
326 | unsigned int context, X509 *x, |
327 | size_t chainidx); |
328 | EXT_RETURN tls_construct_ctos_sig_algs(SSL *s, WPACKET *pkt, |
329 | unsigned int context, X509 *x, |
330 | size_t chainidx); |
331 | #ifndef OPENSSL_NO_OCSP |
332 | EXT_RETURN tls_construct_ctos_status_request(SSL *s, WPACKET *pkt, |
333 | unsigned int context, X509 *x, |
334 | size_t chainidx); |
335 | #endif |
336 | #ifndef OPENSSL_NO_NEXTPROTONEG |
337 | EXT_RETURN tls_construct_ctos_npn(SSL *s, WPACKET *pkt, unsigned int context, |
338 | X509 *x, size_t chainidx); |
339 | #endif |
340 | EXT_RETURN tls_construct_ctos_alpn(SSL *s, WPACKET *pkt, unsigned int context, |
341 | X509 *x, size_t chainidx); |
342 | #ifndef OPENSSL_NO_SRTP |
343 | EXT_RETURN tls_construct_ctos_use_srtp(SSL *s, WPACKET *pkt, unsigned int context, |
344 | X509 *x, size_t chainidx); |
345 | #endif |
346 | EXT_RETURN tls_construct_ctos_etm(SSL *s, WPACKET *pkt, unsigned int context, |
347 | X509 *x, size_t chainidx); |
348 | #ifndef OPENSSL_NO_CT |
349 | EXT_RETURN tls_construct_ctos_sct(SSL *s, WPACKET *pkt, unsigned int context, |
350 | X509 *x, size_t chainidx); |
351 | #endif |
352 | EXT_RETURN tls_construct_ctos_ems(SSL *s, WPACKET *pkt, unsigned int context, |
353 | X509 *x, size_t chainidx); |
354 | EXT_RETURN tls_construct_ctos_supported_versions(SSL *s, WPACKET *pkt, |
355 | unsigned int context, X509 *x, |
356 | size_t chainidx); |
357 | EXT_RETURN tls_construct_ctos_key_share(SSL *s, WPACKET *pkt, |
358 | unsigned int context, X509 *x, |
359 | size_t chainidx); |
360 | EXT_RETURN tls_construct_ctos_psk_kex_modes(SSL *s, WPACKET *pkt, |
361 | unsigned int context, X509 *x, |
362 | size_t chainidx); |
363 | EXT_RETURN tls_construct_ctos_cookie(SSL *s, WPACKET *pkt, unsigned int context, |
364 | X509 *x, size_t chainidx); |
365 | EXT_RETURN tls_construct_ctos_padding(SSL *s, WPACKET *pkt, |
366 | unsigned int context, X509 *x, |
367 | size_t chainidx); |
368 | EXT_RETURN tls_construct_ctos_psk(SSL *s, WPACKET *pkt, unsigned int context, |
369 | X509 *x, size_t chainidx); |
370 | EXT_RETURN tls_construct_ctos_post_handshake_auth(SSL *s, WPACKET *pkt, unsigned int context, |
371 | X509 *x, size_t chainidx); |
372 | |
373 | int tls_parse_stoc_renegotiate(SSL *s, PACKET *pkt, unsigned int context, |
374 | X509 *x, size_t chainidx); |
375 | int tls_parse_stoc_server_name(SSL *s, PACKET *pkt, unsigned int context, |
376 | X509 *x, size_t chainidx); |
377 | int tls_parse_stoc_early_data(SSL *s, PACKET *pkt, unsigned int context, |
378 | X509 *x, size_t chainidx); |
379 | int tls_parse_stoc_maxfragmentlen(SSL *s, PACKET *pkt, unsigned int context, |
380 | X509 *x, size_t chainidx); |
381 | #ifndef OPENSSL_NO_EC |
382 | int tls_parse_stoc_ec_pt_formats(SSL *s, PACKET *pkt, unsigned int context, |
383 | X509 *x, size_t chainidx); |
384 | #endif |
385 | int tls_parse_stoc_session_ticket(SSL *s, PACKET *pkt, unsigned int context, |
386 | X509 *x, size_t chainidx); |
387 | #ifndef OPENSSL_NO_OCSP |
388 | int tls_parse_stoc_status_request(SSL *s, PACKET *pkt, unsigned int context, |
389 | X509 *x, size_t chainidx); |
390 | #endif |
391 | #ifndef OPENSSL_NO_CT |
392 | int tls_parse_stoc_sct(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
393 | size_t chainidx); |
394 | #endif |
395 | #ifndef OPENSSL_NO_NEXTPROTONEG |
396 | int tls_parse_stoc_npn(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
397 | size_t chainidx); |
398 | #endif |
399 | int tls_parse_stoc_alpn(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
400 | size_t chainidx); |
401 | #ifndef OPENSSL_NO_SRTP |
402 | int tls_parse_stoc_use_srtp(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
403 | size_t chainidx); |
404 | #endif |
405 | int tls_parse_stoc_etm(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
406 | size_t chainidx); |
407 | int tls_parse_stoc_ems(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
408 | size_t chainidx); |
409 | int tls_parse_stoc_supported_versions(SSL *s, PACKET *pkt, unsigned int context, |
410 | X509 *x, size_t chainidx); |
411 | int tls_parse_stoc_key_share(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
412 | size_t chainidx); |
413 | int tls_parse_stoc_cookie(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
414 | size_t chainidx); |
415 | int tls_parse_stoc_psk(SSL *s, PACKET *pkt, unsigned int context, X509 *x, |
416 | size_t chainidx); |
417 | |
418 | int tls_handle_alpn(SSL *s); |
419 | |
420 | int tls13_save_handshake_digest_for_pha(SSL *s); |
421 | int tls13_restore_handshake_digest_for_pha(SSL *s); |
422 | |