Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/ssl/t1_lib.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||
5 | - | |||||||||||||||||||||||||
6 | - | |||||||||||||||||||||||||
7 | static int tls_decrypt_ticket(SSL *s, const unsigned char *tick, int ticklen, | - | ||||||||||||||||||||||||
8 | const unsigned char *sess_id, int sesslen, | - | ||||||||||||||||||||||||
9 | SSL_SESSION **psess); | - | ||||||||||||||||||||||||
10 | - | |||||||||||||||||||||||||
11 | SSL3_ENC_METHOD TLSv1_enc_data = { | - | ||||||||||||||||||||||||
12 | .enc = tls1_enc, | - | ||||||||||||||||||||||||
13 | .enc_flags = 0, | - | ||||||||||||||||||||||||
14 | }; | - | ||||||||||||||||||||||||
15 | - | |||||||||||||||||||||||||
16 | SSL3_ENC_METHOD TLSv1_1_enc_data = { | - | ||||||||||||||||||||||||
17 | .enc = tls1_enc, | - | ||||||||||||||||||||||||
18 | .enc_flags = (1 << 0), | - | ||||||||||||||||||||||||
19 | }; | - | ||||||||||||||||||||||||
20 | - | |||||||||||||||||||||||||
21 | SSL3_ENC_METHOD TLSv1_2_enc_data = { | - | ||||||||||||||||||||||||
22 | .enc = tls1_enc, | - | ||||||||||||||||||||||||
23 | .enc_flags = (1 << 0)|(1 << 1)| | - | ||||||||||||||||||||||||
24 | (1 << 2)|(1 << 4), | - | ||||||||||||||||||||||||
25 | }; | - | ||||||||||||||||||||||||
26 | - | |||||||||||||||||||||||||
27 | long | - | ||||||||||||||||||||||||
28 | tls1_default_timeout(void) | - | ||||||||||||||||||||||||
29 | { | - | ||||||||||||||||||||||||
30 | - | |||||||||||||||||||||||||
31 | - | |||||||||||||||||||||||||
32 | return executed 181 times by 13 tests: (60 * 60 * 2);return (60 * 60 * 2); Executed by:
executed 181 times by 13 tests: return (60 * 60 * 2); Executed by:
| 181 | ||||||||||||||||||||||||
33 | } | - | ||||||||||||||||||||||||
34 | - | |||||||||||||||||||||||||
35 | int | - | ||||||||||||||||||||||||
36 | tls1_new(SSL *s) | - | ||||||||||||||||||||||||
37 | { | - | ||||||||||||||||||||||||
38 | if (!ssl3_new(s)
| 0-169 | ||||||||||||||||||||||||
39 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
40 | s->method->internal->ssl_clear(s); | - | ||||||||||||||||||||||||
41 | return executed 169 times by 11 tests: (1);return (1); Executed by:
executed 169 times by 11 tests: return (1); Executed by:
| 169 | ||||||||||||||||||||||||
42 | } | - | ||||||||||||||||||||||||
43 | - | |||||||||||||||||||||||||
44 | void | - | ||||||||||||||||||||||||
45 | tls1_free(SSL *s) | - | ||||||||||||||||||||||||
46 | { | - | ||||||||||||||||||||||||
47 | if (s ==
| 0-163 | ||||||||||||||||||||||||
48 | ((void *)0)
| 0-163 | ||||||||||||||||||||||||
49 | ) | - | ||||||||||||||||||||||||
50 | return; never executed: return; | 0 | ||||||||||||||||||||||||
51 | - | |||||||||||||||||||||||||
52 | free(s->internal->tlsext_session_ticket); | - | ||||||||||||||||||||||||
53 | ssl3_free(s); | - | ||||||||||||||||||||||||
54 | } executed 163 times by 11 tests: end of block Executed by:
| 163 | ||||||||||||||||||||||||
55 | - | |||||||||||||||||||||||||
56 | void | - | ||||||||||||||||||||||||
57 | tls1_clear(SSL *s) | - | ||||||||||||||||||||||||
58 | { | - | ||||||||||||||||||||||||
59 | ssl3_clear(s); | - | ||||||||||||||||||||||||
60 | s->version = s->method->internal->version; | - | ||||||||||||||||||||||||
61 | } executed 623 times by 11 tests: end of block Executed by:
| 623 | ||||||||||||||||||||||||
62 | - | |||||||||||||||||||||||||
63 | static int nid_list[] = { | - | ||||||||||||||||||||||||
64 | 721, | - | ||||||||||||||||||||||||
65 | 722, | - | ||||||||||||||||||||||||
66 | 723, | - | ||||||||||||||||||||||||
67 | 724, | - | ||||||||||||||||||||||||
68 | 725, | - | ||||||||||||||||||||||||
69 | 726, | - | ||||||||||||||||||||||||
70 | 727, | - | ||||||||||||||||||||||||
71 | 728, | - | ||||||||||||||||||||||||
72 | 729, | - | ||||||||||||||||||||||||
73 | 730, | - | ||||||||||||||||||||||||
74 | 731, | - | ||||||||||||||||||||||||
75 | 732, | - | ||||||||||||||||||||||||
76 | 733, | - | ||||||||||||||||||||||||
77 | 734, | - | ||||||||||||||||||||||||
78 | 708, | - | ||||||||||||||||||||||||
79 | 709, | - | ||||||||||||||||||||||||
80 | 710, | - | ||||||||||||||||||||||||
81 | 711, | - | ||||||||||||||||||||||||
82 | 409, | - | ||||||||||||||||||||||||
83 | 712, | - | ||||||||||||||||||||||||
84 | 713, | - | ||||||||||||||||||||||||
85 | 714, | - | ||||||||||||||||||||||||
86 | 415, | - | ||||||||||||||||||||||||
87 | 715, | - | ||||||||||||||||||||||||
88 | 716, | - | ||||||||||||||||||||||||
89 | 928, | - | ||||||||||||||||||||||||
90 | 932, | - | ||||||||||||||||||||||||
91 | 934, | - | ||||||||||||||||||||||||
92 | 950, | - | ||||||||||||||||||||||||
93 | }; | - | ||||||||||||||||||||||||
94 | static const uint8_t ecformats_default[] = { | - | ||||||||||||||||||||||||
95 | 0, | - | ||||||||||||||||||||||||
96 | }; | - | ||||||||||||||||||||||||
97 | static const uint16_t eccurves_default[] = { | - | ||||||||||||||||||||||||
98 | 29, | - | ||||||||||||||||||||||||
99 | 23, | - | ||||||||||||||||||||||||
100 | 24, | - | ||||||||||||||||||||||||
101 | }; | - | ||||||||||||||||||||||||
102 | - | |||||||||||||||||||||||||
103 | int | - | ||||||||||||||||||||||||
104 | tls1_ec_curve_id2nid(const uint16_t curve_id) | - | ||||||||||||||||||||||||
105 | { | - | ||||||||||||||||||||||||
106 | - | |||||||||||||||||||||||||
107 | if ((
| 0-84 | ||||||||||||||||||||||||
108 | ((
| 0-84 | ||||||||||||||||||||||||
109 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
110 | return executed 84 times by 2 tests: nid_list[curve_id - 1];return nid_list[curve_id - 1]; Executed by:
executed 84 times by 2 tests: return nid_list[curve_id - 1]; Executed by:
| 84 | ||||||||||||||||||||||||
111 | } | - | ||||||||||||||||||||||||
112 | - | |||||||||||||||||||||||||
113 | uint16_t | - | ||||||||||||||||||||||||
114 | tls1_ec_nid2curve_id(const int nid) | - | ||||||||||||||||||||||||
115 | { | - | ||||||||||||||||||||||||
116 | - | |||||||||||||||||||||||||
117 | switch (nid) { | - | ||||||||||||||||||||||||
118 | case never executed: 721:case 721: never executed: case 721: | 0 | ||||||||||||||||||||||||
119 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
120 | case never executed: 722:case 722: never executed: case 722: | 0 | ||||||||||||||||||||||||
121 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
122 | case never executed: 723:case 723: never executed: case 723: | 0 | ||||||||||||||||||||||||
123 | return never executed: 3;return 3; never executed: return 3; | 0 | ||||||||||||||||||||||||
124 | case never executed: 724:case 724: never executed: case 724: | 0 | ||||||||||||||||||||||||
125 | return never executed: 4;return 4; never executed: return 4; | 0 | ||||||||||||||||||||||||
126 | case never executed: 725:case 725: never executed: case 725: | 0 | ||||||||||||||||||||||||
127 | return never executed: 5;return 5; never executed: return 5; | 0 | ||||||||||||||||||||||||
128 | case never executed: 726:case 726: never executed: case 726: | 0 | ||||||||||||||||||||||||
129 | return never executed: 6;return 6; never executed: return 6; | 0 | ||||||||||||||||||||||||
130 | case never executed: 727:case 727: never executed: case 727: | 0 | ||||||||||||||||||||||||
131 | return never executed: 7;return 7; never executed: return 7; | 0 | ||||||||||||||||||||||||
132 | case never executed: 728:case 728: never executed: case 728: | 0 | ||||||||||||||||||||||||
133 | return never executed: 8;return 8; never executed: return 8; | 0 | ||||||||||||||||||||||||
134 | case never executed: 729:case 729: never executed: case 729: | 0 | ||||||||||||||||||||||||
135 | return never executed: 9;return 9; never executed: return 9; | 0 | ||||||||||||||||||||||||
136 | case never executed: 730:case 730: never executed: case 730: | 0 | ||||||||||||||||||||||||
137 | return never executed: 10;return 10; never executed: return 10; | 0 | ||||||||||||||||||||||||
138 | case never executed: 731:case 731: never executed: case 731: | 0 | ||||||||||||||||||||||||
139 | return never executed: 11;return 11; never executed: return 11; | 0 | ||||||||||||||||||||||||
140 | case never executed: 732:case 732: never executed: case 732: | 0 | ||||||||||||||||||||||||
141 | return never executed: 12;return 12; never executed: return 12; | 0 | ||||||||||||||||||||||||
142 | case never executed: 733:case 733: never executed: case 733: | 0 | ||||||||||||||||||||||||
143 | return never executed: 13;return 13; never executed: return 13; | 0 | ||||||||||||||||||||||||
144 | case never executed: 734:case 734: never executed: case 734: | 0 | ||||||||||||||||||||||||
145 | return never executed: 14;return 14; never executed: return 14; | 0 | ||||||||||||||||||||||||
146 | case never executed: 708:case 708: never executed: case 708: | 0 | ||||||||||||||||||||||||
147 | return never executed: 15;return 15; never executed: return 15; | 0 | ||||||||||||||||||||||||
148 | case never executed: 709:case 709: never executed: case 709: | 0 | ||||||||||||||||||||||||
149 | return never executed: 16;return 16; never executed: return 16; | 0 | ||||||||||||||||||||||||
150 | case never executed: 710:case 710: never executed: case 710: | 0 | ||||||||||||||||||||||||
151 | return never executed: 17;return 17; never executed: return 17; | 0 | ||||||||||||||||||||||||
152 | case never executed: 711:case 711: never executed: case 711: | 0 | ||||||||||||||||||||||||
153 | return never executed: 18;return 18; never executed: return 18; | 0 | ||||||||||||||||||||||||
154 | case executed 1 time by 1 test: 409:case 409: Executed by:
executed 1 time by 1 test: case 409: Executed by:
| 1 | ||||||||||||||||||||||||
155 | return executed 1 time by 1 test: 19;return 19; Executed by:
executed 1 time by 1 test: return 19; Executed by:
| 1 | ||||||||||||||||||||||||
156 | case never executed: 712:case 712: never executed: case 712: | 0 | ||||||||||||||||||||||||
157 | return never executed: 20;return 20; never executed: return 20; | 0 | ||||||||||||||||||||||||
158 | case executed 1 time by 1 test: 713:case 713: Executed by:
executed 1 time by 1 test: case 713: Executed by:
| 1 | ||||||||||||||||||||||||
159 | return executed 1 time by 1 test: 21;return 21; Executed by:
executed 1 time by 1 test: return 21; Executed by:
| 1 | ||||||||||||||||||||||||
160 | case never executed: 714:case 714: never executed: case 714: | 0 | ||||||||||||||||||||||||
161 | return never executed: 22;return 22; never executed: return 22; | 0 | ||||||||||||||||||||||||
162 | case executed 80 times by 2 tests: 415:case 415: Executed by:
executed 80 times by 2 tests: case 415: Executed by:
| 80 | ||||||||||||||||||||||||
163 | return executed 80 times by 2 tests: 23;return 23; Executed by:
executed 80 times by 2 tests: return 23; Executed by:
| 80 | ||||||||||||||||||||||||
164 | case executed 9 times by 2 tests: 715:case 715: Executed by:
executed 9 times by 2 tests: case 715: Executed by:
| 9 | ||||||||||||||||||||||||
165 | return executed 9 times by 2 tests: 24;return 24; Executed by:
executed 9 times by 2 tests: return 24; Executed by:
| 9 | ||||||||||||||||||||||||
166 | case never executed: 716:case 716: never executed: case 716: | 0 | ||||||||||||||||||||||||
167 | return never executed: 25;return 25; never executed: return 25; | 0 | ||||||||||||||||||||||||
168 | case never executed: 928:case 928: never executed: case 928: | 0 | ||||||||||||||||||||||||
169 | return never executed: 26;return 26; never executed: return 26; | 0 | ||||||||||||||||||||||||
170 | case never executed: 932:case 932: never executed: case 932: | 0 | ||||||||||||||||||||||||
171 | return never executed: 27;return 27; never executed: return 27; | 0 | ||||||||||||||||||||||||
172 | case never executed: 934:case 934: never executed: case 934: | 0 | ||||||||||||||||||||||||
173 | return never executed: 28;return 28; never executed: return 28; | 0 | ||||||||||||||||||||||||
174 | case executed 13 times by 2 tests: 950:case 950: Executed by:
executed 13 times by 2 tests: case 950: Executed by:
| 13 | ||||||||||||||||||||||||
175 | return executed 13 times by 2 tests: 29;return 29; Executed by:
executed 13 times by 2 tests: return 29; Executed by:
| 13 | ||||||||||||||||||||||||
176 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||
177 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
178 | } | - | ||||||||||||||||||||||||
179 | } | - | ||||||||||||||||||||||||
180 | - | |||||||||||||||||||||||||
181 | - | |||||||||||||||||||||||||
182 | - | |||||||||||||||||||||||||
183 | - | |||||||||||||||||||||||||
184 | - | |||||||||||||||||||||||||
185 | - | |||||||||||||||||||||||||
186 | void | - | ||||||||||||||||||||||||
187 | tls1_get_formatlist(SSL *s, int client_formats, const uint8_t **pformats, | - | ||||||||||||||||||||||||
188 | size_t *pformatslen) | - | ||||||||||||||||||||||||
189 | { | - | ||||||||||||||||||||||||
190 | if (client_formats != 0
| 0-72 | ||||||||||||||||||||||||
191 | *pformats = (s->session->internal)->tlsext_ecpointformatlist; | - | ||||||||||||||||||||||||
192 | *pformatslen = (s->session->internal)->tlsext_ecpointformatlist_length; | - | ||||||||||||||||||||||||
193 | return; never executed: return; | 0 | ||||||||||||||||||||||||
194 | } | - | ||||||||||||||||||||||||
195 | - | |||||||||||||||||||||||||
196 | *pformats = s->internal->tlsext_ecpointformatlist; | - | ||||||||||||||||||||||||
197 | *pformatslen = s->internal->tlsext_ecpointformatlist_length; | - | ||||||||||||||||||||||||
198 | if (*
| 2-70 | ||||||||||||||||||||||||
199 | ((void *)0)
| 2-70 | ||||||||||||||||||||||||
200 | ) { | - | ||||||||||||||||||||||||
201 | *pformats = ecformats_default; | - | ||||||||||||||||||||||||
202 | *pformatslen = sizeof(ecformats_default); | - | ||||||||||||||||||||||||
203 | } executed 70 times by 4 tests: end of block Executed by:
| 70 | ||||||||||||||||||||||||
204 | } executed 72 times by 4 tests: end of block Executed by:
| 72 | ||||||||||||||||||||||||
205 | - | |||||||||||||||||||||||||
206 | - | |||||||||||||||||||||||||
207 | - | |||||||||||||||||||||||||
208 | - | |||||||||||||||||||||||||
209 | - | |||||||||||||||||||||||||
210 | - | |||||||||||||||||||||||||
211 | void | - | ||||||||||||||||||||||||
212 | tls1_get_curvelist(SSL *s, int client_curves, const uint16_t **pcurves, | - | ||||||||||||||||||||||||
213 | size_t *pcurveslen) | - | ||||||||||||||||||||||||
214 | { | - | ||||||||||||||||||||||||
215 | if (client_curves != 0
| 60-129 | ||||||||||||||||||||||||
216 | *pcurves = (s->session->internal)->tlsext_supportedgroups; | - | ||||||||||||||||||||||||
217 | *pcurveslen = (s->session->internal)->tlsext_supportedgroups_length; | - | ||||||||||||||||||||||||
218 | return; executed 60 times by 2 tests: return; Executed by:
| 60 | ||||||||||||||||||||||||
219 | } | - | ||||||||||||||||||||||||
220 | - | |||||||||||||||||||||||||
221 | *pcurves = s->internal->tlsext_supportedgroups; | - | ||||||||||||||||||||||||
222 | *pcurveslen = s->internal->tlsext_supportedgroups_length; | - | ||||||||||||||||||||||||
223 | if (*
| 62-67 | ||||||||||||||||||||||||
224 | ((void *)0)
| 62-67 | ||||||||||||||||||||||||
225 | ) { | - | ||||||||||||||||||||||||
226 | *pcurves = eccurves_default; | - | ||||||||||||||||||||||||
227 | *pcurveslen = sizeof(eccurves_default) / 2; | - | ||||||||||||||||||||||||
228 | } executed 62 times by 3 tests: end of block Executed by:
| 62 | ||||||||||||||||||||||||
229 | } executed 129 times by 4 tests: end of block Executed by:
| 129 | ||||||||||||||||||||||||
230 | - | |||||||||||||||||||||||||
231 | int | - | ||||||||||||||||||||||||
232 | tls1_set_groups(uint16_t **out_group_ids, size_t *out_group_ids_len, | - | ||||||||||||||||||||||||
233 | const int *groups, size_t ngroups) | - | ||||||||||||||||||||||||
234 | { | - | ||||||||||||||||||||||||
235 | uint16_t *group_ids; | - | ||||||||||||||||||||||||
236 | size_t i; | - | ||||||||||||||||||||||||
237 | - | |||||||||||||||||||||||||
238 | group_ids = calloc(ngroups, sizeof(uint16_t)); | - | ||||||||||||||||||||||||
239 | if (group_ids ==
| 0-57 | ||||||||||||||||||||||||
240 | ((void *)0)
| 0-57 | ||||||||||||||||||||||||
241 | ) | - | ||||||||||||||||||||||||
242 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
243 | - | |||||||||||||||||||||||||
244 | for (i = 0; i < ngroups
| 57-73 | ||||||||||||||||||||||||
245 | group_ids[i] = tls1_ec_nid2curve_id(groups[i]); | - | ||||||||||||||||||||||||
246 | if (group_ids[i] == 0
| 0-73 | ||||||||||||||||||||||||
247 | free(group_ids); | - | ||||||||||||||||||||||||
248 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
249 | } | - | ||||||||||||||||||||||||
250 | } executed 73 times by 2 tests: end of block Executed by:
| 73 | ||||||||||||||||||||||||
251 | - | |||||||||||||||||||||||||
252 | free(*out_group_ids); | - | ||||||||||||||||||||||||
253 | *out_group_ids = group_ids; | - | ||||||||||||||||||||||||
254 | *out_group_ids_len = ngroups; | - | ||||||||||||||||||||||||
255 | - | |||||||||||||||||||||||||
256 | return executed 57 times by 2 tests: 1;return 1; Executed by:
executed 57 times by 2 tests: return 1; Executed by:
| 57 | ||||||||||||||||||||||||
257 | } | - | ||||||||||||||||||||||||
258 | - | |||||||||||||||||||||||||
259 | int | - | ||||||||||||||||||||||||
260 | tls1_set_groups_list(uint16_t **out_group_ids, size_t *out_group_ids_len, | - | ||||||||||||||||||||||||
261 | const char *groups) | - | ||||||||||||||||||||||||
262 | { | - | ||||||||||||||||||||||||
263 | uint16_t *new_group_ids, *group_ids = | - | ||||||||||||||||||||||||
264 | ((void *)0) | - | ||||||||||||||||||||||||
265 | ; | - | ||||||||||||||||||||||||
266 | size_t ngroups = 0; | - | ||||||||||||||||||||||||
267 | char *gs, *p, *q; | - | ||||||||||||||||||||||||
268 | int nid; | - | ||||||||||||||||||||||||
269 | - | |||||||||||||||||||||||||
270 | if ((
| 0 | ||||||||||||||||||||||||
271 | (__extension__ (__builtin_constant_p (
| 0 | ||||||||||||||||||||||||
272 | groups
| 0 | ||||||||||||||||||||||||
273 | )
| 0 | ||||||||||||||||||||||||
274 | groups
| 0 | ||||||||||||||||||||||||
275 | ) + 1) - (size_t)(const void *)(
| 0 | ||||||||||||||||||||||||
276 | groups
| 0 | ||||||||||||||||||||||||
277 | ) == 1)
| 0 | ||||||||||||||||||||||||
278 | groups
| 0 | ||||||||||||||||||||||||
279 | ))[0] == '\0'
| 0 | ||||||||||||||||||||||||
280 | groups
| 0 | ||||||||||||||||||||||||
281 | ) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)
never executed: __retval = (char *) memcpy (__retval, groups , __len); | 0 | ||||||||||||||||||||||||
282 | groups
never executed: __retval = (char *) memcpy (__retval, groups , __len); | 0 | ||||||||||||||||||||||||
283 | , __len); __retval; })) : __strdup (
| 0 | ||||||||||||||||||||||||
284 | groups
| 0 | ||||||||||||||||||||||||
285 | )))
| 0 | ||||||||||||||||||||||||
286 | ) ==
| 0 | ||||||||||||||||||||||||
287 | ((void *)0)
| 0 | ||||||||||||||||||||||||
288 | ) | - | ||||||||||||||||||||||||
289 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
290 | - | |||||||||||||||||||||||||
291 | q = gs; | - | ||||||||||||||||||||||||
292 | while ((
| 0 | ||||||||||||||||||||||||
293 | __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p (
| 0 | ||||||||||||||||||||||||
294 | ":"
| 0 | ||||||||||||||||||||||||
295 | ) && ((size_t)(const void *)((
| 0 | ||||||||||||||||||||||||
296 | ":"
| 0 | ||||||||||||||||||||||||
297 | ) + 1) - (size_t)(const void *)(
| 0 | ||||||||||||||||||||||||
298 | ":"
| 0 | ||||||||||||||||||||||||
299 | ) == 1) && (__r0 = ((const char *) (
| 0 | ||||||||||||||||||||||||
300 | ":"
| 0 | ||||||||||||||||||||||||
301 | ))[0], ((const char *) (
| 0 | ||||||||||||||||||||||||
302 | ":"
| 0 | ||||||||||||||||||||||||
303 | ))[0] != '\0') ? ((__r1 = ((const char *) (
| 0 | ||||||||||||||||||||||||
304 | ":"
| 0 | ||||||||||||||||||||||||
305 | ))[1], ((const char *) (
| 0 | ||||||||||||||||||||||||
306 | ":"
| 0 | ||||||||||||||||||||||||
307 | ))[1] == '\0') ? __strsep_1c (
| 0 | ||||||||||||||||||||||||
308 | &q
| 0 | ||||||||||||||||||||||||
309 | , __r0) : ((__r2 = ((const char *) (
| 0 | ||||||||||||||||||||||||
310 | ":"
| 0 | ||||||||||||||||||||||||
311 | ))[2], __r2 == '\0') ? __strsep_2c (
| 0 | ||||||||||||||||||||||||
312 | &q
| 0 | ||||||||||||||||||||||||
313 | , __r0, __r1) : (((const char *) (
| 0 | ||||||||||||||||||||||||
314 | ":"
| 0 | ||||||||||||||||||||||||
315 | ))[3] == '\0' ? __strsep_3c (
| 0 | ||||||||||||||||||||||||
316 | &q
| 0 | ||||||||||||||||||||||||
317 | , __r0, __r1, __r2) : __strsep_g (
| 0 | ||||||||||||||||||||||||
318 | &q
| 0 | ||||||||||||||||||||||||
319 | ,
| 0 | ||||||||||||||||||||||||
320 | ":"
| 0 | ||||||||||||||||||||||||
321 | )))) : __strsep_g (
| 0 | ||||||||||||||||||||||||
322 | &q
| 0 | ||||||||||||||||||||||||
323 | ,
| 0 | ||||||||||||||||||||||||
324 | ":"
| 0 | ||||||||||||||||||||||||
325 | )); })
| 0 | ||||||||||||||||||||||||
326 | ) !=
| 0 | ||||||||||||||||||||||||
327 | ((void *)0)
| 0 | ||||||||||||||||||||||||
328 | ) { | - | ||||||||||||||||||||||||
329 | nid = OBJ_sn2nid(p); | - | ||||||||||||||||||||||||
330 | if (nid == 0
| 0 | ||||||||||||||||||||||||
331 | nid = OBJ_ln2nid(p); never executed: nid = OBJ_ln2nid(p); | 0 | ||||||||||||||||||||||||
332 | if (nid == 0
| 0 | ||||||||||||||||||||||||
333 | nid = EC_curve_nist2nid(p); never executed: nid = EC_curve_nist2nid(p); | 0 | ||||||||||||||||||||||||
334 | if (nid == 0
| 0 | ||||||||||||||||||||||||
335 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
336 | - | |||||||||||||||||||||||||
337 | if ((
| 0 | ||||||||||||||||||||||||
338 | sizeof(uint16_t))) ==
| 0 | ||||||||||||||||||||||||
339 | ((void *)0)
| 0 | ||||||||||||||||||||||||
340 | ) | - | ||||||||||||||||||||||||
341 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
342 | group_ids = new_group_ids; | - | ||||||||||||||||||||||||
343 | - | |||||||||||||||||||||||||
344 | group_ids[ngroups] = tls1_ec_nid2curve_id(nid); | - | ||||||||||||||||||||||||
345 | if (group_ids[ngroups] == 0
| 0 | ||||||||||||||||||||||||
346 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
347 | - | |||||||||||||||||||||||||
348 | ngroups++; | - | ||||||||||||||||||||||||
349 | } never executed: end of block | 0 | ||||||||||||||||||||||||
350 | - | |||||||||||||||||||||||||
351 | free(gs); | - | ||||||||||||||||||||||||
352 | free(*out_group_ids); | - | ||||||||||||||||||||||||
353 | *out_group_ids = group_ids; | - | ||||||||||||||||||||||||
354 | *out_group_ids_len = ngroups; | - | ||||||||||||||||||||||||
355 | - | |||||||||||||||||||||||||
356 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
357 | - | |||||||||||||||||||||||||
358 | err: | - | ||||||||||||||||||||||||
359 | free(gs); | - | ||||||||||||||||||||||||
360 | free(group_ids); | - | ||||||||||||||||||||||||
361 | - | |||||||||||||||||||||||||
362 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
363 | } | - | ||||||||||||||||||||||||
364 | - | |||||||||||||||||||||||||
365 | - | |||||||||||||||||||||||||
366 | int | - | ||||||||||||||||||||||||
367 | tls1_check_curve(SSL *s, const uint16_t curve_id) | - | ||||||||||||||||||||||||
368 | { | - | ||||||||||||||||||||||||
369 | const uint16_t *curves; | - | ||||||||||||||||||||||||
370 | size_t curveslen, i; | - | ||||||||||||||||||||||||
371 | - | |||||||||||||||||||||||||
372 | tls1_get_curvelist(s, 0, &curves, &curveslen); | - | ||||||||||||||||||||||||
373 | - | |||||||||||||||||||||||||
374 | for (i = 0; i < curveslen
| 0-51 | ||||||||||||||||||||||||
375 | if (curves[i] == curve_id
| 23-28 | ||||||||||||||||||||||||
376 | return executed 28 times by 2 tests: (1);return (1); Executed by:
executed 28 times by 2 tests: return (1); Executed by:
| 28 | ||||||||||||||||||||||||
377 | } executed 23 times by 1 test: end of block Executed by:
| 23 | ||||||||||||||||||||||||
378 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
379 | } | - | ||||||||||||||||||||||||
380 | - | |||||||||||||||||||||||||
381 | int | - | ||||||||||||||||||||||||
382 | tls1_get_shared_curve(SSL *s) | - | ||||||||||||||||||||||||
383 | { | - | ||||||||||||||||||||||||
384 | size_t preflen, supplen, i, j; | - | ||||||||||||||||||||||||
385 | const uint16_t *pref, *supp; | - | ||||||||||||||||||||||||
386 | unsigned long server_pref; | - | ||||||||||||||||||||||||
387 | - | |||||||||||||||||||||||||
388 | - | |||||||||||||||||||||||||
389 | if (s->server == 0
| 0-60 | ||||||||||||||||||||||||
390 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
391 | - | |||||||||||||||||||||||||
392 | - | |||||||||||||||||||||||||
393 | server_pref = (s->internal->options & 0x00400000L); | - | ||||||||||||||||||||||||
394 | tls1_get_curvelist(s, (server_pref == 0), &pref, &preflen); | - | ||||||||||||||||||||||||
395 | tls1_get_curvelist(s, (server_pref != 0), &supp, &supplen); | - | ||||||||||||||||||||||||
396 | - | |||||||||||||||||||||||||
397 | for (i = 0; i < preflen
| 4-102 | ||||||||||||||||||||||||
398 | for (j = 0; j < supplen
| 46-102 | ||||||||||||||||||||||||
399 | if (pref[i] == supp[j]
| 46-56 | ||||||||||||||||||||||||
400 | return executed 56 times by 2 tests: (tls1_ec_curve_id2nid(pref[i]));return (tls1_ec_curve_id2nid(pref[i])); Executed by:
executed 56 times by 2 tests: return (tls1_ec_curve_id2nid(pref[i])); Executed by:
| 56 | ||||||||||||||||||||||||
401 | } executed 46 times by 1 test: end of block Executed by:
| 46 | ||||||||||||||||||||||||
402 | } executed 46 times by 1 test: end of block Executed by:
| 46 | ||||||||||||||||||||||||
403 | return executed 4 times by 1 test: (0);return (0); Executed by:
executed 4 times by 1 test: return (0); Executed by:
| 4 | ||||||||||||||||||||||||
404 | } | - | ||||||||||||||||||||||||
405 | - | |||||||||||||||||||||||||
406 | - | |||||||||||||||||||||||||
407 | static int | - | ||||||||||||||||||||||||
408 | tls1_set_ec_id(uint16_t *curve_id, uint8_t *comp_id, EC_KEY *ec) | - | ||||||||||||||||||||||||
409 | { | - | ||||||||||||||||||||||||
410 | const EC_GROUP *grp; | - | ||||||||||||||||||||||||
411 | const EC_METHOD *meth; | - | ||||||||||||||||||||||||
412 | int is_prime = 0; | - | ||||||||||||||||||||||||
413 | int nid, id; | - | ||||||||||||||||||||||||
414 | - | |||||||||||||||||||||||||
415 | if (ec ==
| 0 | ||||||||||||||||||||||||
416 | ((void *)0)
| 0 | ||||||||||||||||||||||||
417 | ) | - | ||||||||||||||||||||||||
418 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
419 | - | |||||||||||||||||||||||||
420 | - | |||||||||||||||||||||||||
421 | if ((
| 0 | ||||||||||||||||||||||||
422 | ((void *)0)
| 0 | ||||||||||||||||||||||||
423 | ) | - | ||||||||||||||||||||||||
424 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
425 | if ((
| 0 | ||||||||||||||||||||||||
426 | ((void *)0)
| 0 | ||||||||||||||||||||||||
427 | ) | - | ||||||||||||||||||||||||
428 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
429 | if (EC_METHOD_get_field_type(meth) == 406
| 0 | ||||||||||||||||||||||||
430 | is_prime = 1; never executed: is_prime = 1; | 0 | ||||||||||||||||||||||||
431 | - | |||||||||||||||||||||||||
432 | - | |||||||||||||||||||||||||
433 | nid = EC_GROUP_get_curve_name(grp); | - | ||||||||||||||||||||||||
434 | id = tls1_ec_nid2curve_id(nid); | - | ||||||||||||||||||||||||
435 | - | |||||||||||||||||||||||||
436 | - | |||||||||||||||||||||||||
437 | if (id != 0
| 0 | ||||||||||||||||||||||||
438 | * never executed: curve_id = id;*curve_id = id; never executed: *curve_id = id; | 0 | ||||||||||||||||||||||||
439 | else | - | ||||||||||||||||||||||||
440 | * never executed: curve_id = is_prime*curve_id = is_prime ? 0xff01 : 0xff02;
never executed: *curve_id = is_prime ? 0xff01 : 0xff02; | 0 | ||||||||||||||||||||||||
441 | - | |||||||||||||||||||||||||
442 | - | |||||||||||||||||||||||||
443 | if (comp_id !=
| 0 | ||||||||||||||||||||||||
444 | ((void *)0)
| 0 | ||||||||||||||||||||||||
445 | ) { | - | ||||||||||||||||||||||||
446 | if (EC_KEY_get0_public_key(ec) ==
| 0 | ||||||||||||||||||||||||
447 | ((void *)0)
| 0 | ||||||||||||||||||||||||
448 | ) | - | ||||||||||||||||||||||||
449 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
450 | - | |||||||||||||||||||||||||
451 | if (EC_KEY_get_conv_form(ec) == POINT_CONVERSION_COMPRESSED
| 0 | ||||||||||||||||||||||||
452 | *comp_id = is_prime
| 0 | ||||||||||||||||||||||||
453 | 1 : | - | ||||||||||||||||||||||||
454 | 2; | - | ||||||||||||||||||||||||
455 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
456 | *comp_id = 0; | - | ||||||||||||||||||||||||
457 | } never executed: end of block | 0 | ||||||||||||||||||||||||
458 | } | - | ||||||||||||||||||||||||
459 | return never executed: (1);return (1); never executed: return (1); | 0 | ||||||||||||||||||||||||
460 | } | - | ||||||||||||||||||||||||
461 | - | |||||||||||||||||||||||||
462 | - | |||||||||||||||||||||||||
463 | static int | - | ||||||||||||||||||||||||
464 | tls1_check_ec_key(SSL *s, const uint16_t *curve_id, const uint8_t *comp_id) | - | ||||||||||||||||||||||||
465 | { | - | ||||||||||||||||||||||||
466 | size_t curveslen, formatslen, i; | - | ||||||||||||||||||||||||
467 | const uint16_t *curves; | - | ||||||||||||||||||||||||
468 | const uint8_t *formats; | - | ||||||||||||||||||||||||
469 | - | |||||||||||||||||||||||||
470 | - | |||||||||||||||||||||||||
471 | - | |||||||||||||||||||||||||
472 | - | |||||||||||||||||||||||||
473 | - | |||||||||||||||||||||||||
474 | tls1_get_formatlist(s, 1, &formats, &formatslen); | - | ||||||||||||||||||||||||
475 | if (comp_id !=
| 0 | ||||||||||||||||||||||||
476 | ((void *)0)
| 0 | ||||||||||||||||||||||||
477 | && formats !=
| 0 | ||||||||||||||||||||||||
478 | ((void *)0)
| 0 | ||||||||||||||||||||||||
479 | ) { | - | ||||||||||||||||||||||||
480 | for (i = 0; i < formatslen
| 0 | ||||||||||||||||||||||||
481 | if (formats[i] == *comp_id
| 0 | ||||||||||||||||||||||||
482 | break; never executed: break; | 0 | ||||||||||||||||||||||||
483 | } never executed: end of block | 0 | ||||||||||||||||||||||||
484 | if (i == formatslen
| 0 | ||||||||||||||||||||||||
485 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
486 | } never executed: end of block | 0 | ||||||||||||||||||||||||
487 | - | |||||||||||||||||||||||||
488 | - | |||||||||||||||||||||||||
489 | - | |||||||||||||||||||||||||
490 | - | |||||||||||||||||||||||||
491 | tls1_get_curvelist(s, 1, &curves, &curveslen); | - | ||||||||||||||||||||||||
492 | if (curve_id !=
| 0 | ||||||||||||||||||||||||
493 | ((void *)0)
| 0 | ||||||||||||||||||||||||
494 | && curves !=
| 0 | ||||||||||||||||||||||||
495 | ((void *)0)
| 0 | ||||||||||||||||||||||||
496 | ) { | - | ||||||||||||||||||||||||
497 | for (i = 0; i < curveslen
| 0 | ||||||||||||||||||||||||
498 | if (curves[i] == *curve_id
| 0 | ||||||||||||||||||||||||
499 | break; never executed: break; | 0 | ||||||||||||||||||||||||
500 | } never executed: end of block | 0 | ||||||||||||||||||||||||
501 | if (i == curveslen
| 0 | ||||||||||||||||||||||||
502 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
503 | } never executed: end of block | 0 | ||||||||||||||||||||||||
504 | - | |||||||||||||||||||||||||
505 | return never executed: (1);return (1); never executed: return (1); | 0 | ||||||||||||||||||||||||
506 | } | - | ||||||||||||||||||||||||
507 | - | |||||||||||||||||||||||||
508 | - | |||||||||||||||||||||||||
509 | int | - | ||||||||||||||||||||||||
510 | tls1_check_ec_server_key(SSL *s) | - | ||||||||||||||||||||||||
511 | { | - | ||||||||||||||||||||||||
512 | CERT_PKEY *cpk = s->cert->pkeys + 3; | - | ||||||||||||||||||||||||
513 | uint16_t curve_id; | - | ||||||||||||||||||||||||
514 | uint8_t comp_id; | - | ||||||||||||||||||||||||
515 | EVP_PKEY *pkey; | - | ||||||||||||||||||||||||
516 | int rv; | - | ||||||||||||||||||||||||
517 | - | |||||||||||||||||||||||||
518 | if (cpk->x509 ==
| 0 | ||||||||||||||||||||||||
519 | ((void *)0)
| 0 | ||||||||||||||||||||||||
520 | || cpk->privatekey ==
| 0 | ||||||||||||||||||||||||
521 | ((void *)0)
| 0 | ||||||||||||||||||||||||
522 | ) | - | ||||||||||||||||||||||||
523 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
524 | if ((
| 0 | ||||||||||||||||||||||||
525 | ((void *)0)
| 0 | ||||||||||||||||||||||||
526 | ) | - | ||||||||||||||||||||||||
527 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
528 | rv = tls1_set_ec_id(&curve_id, &comp_id, pkey->pkey.ec); | - | ||||||||||||||||||||||||
529 | EVP_PKEY_free(pkey); | - | ||||||||||||||||||||||||
530 | if (rv != 1
| 0 | ||||||||||||||||||||||||
531 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
532 | - | |||||||||||||||||||||||||
533 | return never executed: tls1_check_ec_key(s, &curve_id, &comp_id);return tls1_check_ec_key(s, &curve_id, &comp_id); never executed: return tls1_check_ec_key(s, &curve_id, &comp_id); | 0 | ||||||||||||||||||||||||
534 | } | - | ||||||||||||||||||||||||
535 | - | |||||||||||||||||||||||||
536 | - | |||||||||||||||||||||||||
537 | int | - | ||||||||||||||||||||||||
538 | tls1_check_ec_tmp_key(SSL *s) | - | ||||||||||||||||||||||||
539 | { | - | ||||||||||||||||||||||||
540 | EC_KEY *ec = s->cert->ecdh_tmp; | - | ||||||||||||||||||||||||
541 | uint16_t curve_id; | - | ||||||||||||||||||||||||
542 | - | |||||||||||||||||||||||||
543 | - | |||||||||||||||||||||||||
544 | if (tls1_get_shared_curve(s) != 0
| 4-28 | ||||||||||||||||||||||||
545 | return executed 28 times by 2 tests: (1);return (1); Executed by:
executed 28 times by 2 tests: return (1); Executed by:
| 28 | ||||||||||||||||||||||||
546 | - | |||||||||||||||||||||||||
547 | if (ec ==
| 0-4 | ||||||||||||||||||||||||
548 | ((void *)0)
| 0-4 | ||||||||||||||||||||||||
549 | ) | - | ||||||||||||||||||||||||
550 | return executed 4 times by 1 test: (0);return (0); Executed by:
executed 4 times by 1 test: return (0); Executed by:
| 4 | ||||||||||||||||||||||||
551 | - | |||||||||||||||||||||||||
552 | if (tls1_set_ec_id(&curve_id,
| 0 | ||||||||||||||||||||||||
553 | ((void *)0)
| 0 | ||||||||||||||||||||||||
554 | , ec) != 1
| 0 | ||||||||||||||||||||||||
555 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
556 | - | |||||||||||||||||||||||||
557 | return never executed: tls1_check_ec_key(s, &curve_id, return tls1_check_ec_key(s, &curve_id, ((void *)0) ); never executed: return tls1_check_ec_key(s, &curve_id, ((void *)0) ); | 0 | ||||||||||||||||||||||||
558 | ((void *)0) never executed: return tls1_check_ec_key(s, &curve_id, ((void *)0) ); | 0 | ||||||||||||||||||||||||
559 | ); never executed: return tls1_check_ec_key(s, &curve_id, ((void *)0) ); | 0 | ||||||||||||||||||||||||
560 | } | - | ||||||||||||||||||||||||
561 | - | |||||||||||||||||||||||||
562 | - | |||||||||||||||||||||||||
563 | - | |||||||||||||||||||||||||
564 | - | |||||||||||||||||||||||||
565 | - | |||||||||||||||||||||||||
566 | - | |||||||||||||||||||||||||
567 | static unsigned char tls12_sigalgs[] = { | - | ||||||||||||||||||||||||
568 | 6, 1, | - | ||||||||||||||||||||||||
569 | 6, 3, | - | ||||||||||||||||||||||||
570 | - | |||||||||||||||||||||||||
571 | 239, 239, | - | ||||||||||||||||||||||||
572 | - | |||||||||||||||||||||||||
573 | - | |||||||||||||||||||||||||
574 | 5, 1, | - | ||||||||||||||||||||||||
575 | 5, 3, | - | ||||||||||||||||||||||||
576 | - | |||||||||||||||||||||||||
577 | 4, 1, | - | ||||||||||||||||||||||||
578 | 4, 3, | - | ||||||||||||||||||||||||
579 | - | |||||||||||||||||||||||||
580 | - | |||||||||||||||||||||||||
581 | 238, 238, | - | ||||||||||||||||||||||||
582 | 237, 237, | - | ||||||||||||||||||||||||
583 | - | |||||||||||||||||||||||||
584 | - | |||||||||||||||||||||||||
585 | 3, 1, | - | ||||||||||||||||||||||||
586 | 3, 3, | - | ||||||||||||||||||||||||
587 | - | |||||||||||||||||||||||||
588 | 2, 1, | - | ||||||||||||||||||||||||
589 | 2, 3, | - | ||||||||||||||||||||||||
590 | }; | - | ||||||||||||||||||||||||
591 | - | |||||||||||||||||||||||||
592 | void | - | ||||||||||||||||||||||||
593 | tls12_get_req_sig_algs(SSL *s, unsigned char **sigalgs, size_t *sigalgs_len) | - | ||||||||||||||||||||||||
594 | { | - | ||||||||||||||||||||||||
595 | *sigalgs = tls12_sigalgs; | - | ||||||||||||||||||||||||
596 | *sigalgs_len = sizeof(tls12_sigalgs); | - | ||||||||||||||||||||||||
597 | } executed 45 times by 4 tests: end of block Executed by:
| 45 | ||||||||||||||||||||||||
598 | - | |||||||||||||||||||||||||
599 | int | - | ||||||||||||||||||||||||
600 | ssl_check_clienthello_tlsext_early(SSL *s) | - | ||||||||||||||||||||||||
601 | { | - | ||||||||||||||||||||||||
602 | int ret = 3; | - | ||||||||||||||||||||||||
603 | int al = 112; | - | ||||||||||||||||||||||||
604 | if (s->ctx !=
| 0-65 | ||||||||||||||||||||||||
605 | ((void *)0)
| 0-65 | ||||||||||||||||||||||||
606 | && s->ctx->internal->tlsext_servername_callback != 0
| 4-61 | ||||||||||||||||||||||||
607 | ret = s->ctx->internal->tlsext_servername_callback(s, &al, executed 4 times by 1 test: ret = s->ctx->internal->tlsext_servername_callback(s, &al, s->ctx->internal->tlsext_servername_arg); Executed by:
| 4 | ||||||||||||||||||||||||
608 | s->ctx->internal->tlsext_servername_arg); executed 4 times by 1 test: ret = s->ctx->internal->tlsext_servername_callback(s, &al, s->ctx->internal->tlsext_servername_arg); Executed by:
| 4 | ||||||||||||||||||||||||
609 | else if (s->initial_ctx !=
| 0-61 | ||||||||||||||||||||||||
610 | ((void *)0)
| 0-61 | ||||||||||||||||||||||||
611 | && s->initial_ctx->internal->tlsext_servername_callback != 0
| 0-61 | ||||||||||||||||||||||||
612 | ret = s->initial_ctx->internal->tlsext_servername_callback(s, &al, never executed: ret = s->initial_ctx->internal->tlsext_servername_callback(s, &al, s->initial_ctx->internal->tlsext_servername_arg); | 0 | ||||||||||||||||||||||||
613 | s->initial_ctx->internal->tlsext_servername_arg); never executed: ret = s->initial_ctx->internal->tlsext_servername_callback(s, &al, s->initial_ctx->internal->tlsext_servername_arg); | 0 | ||||||||||||||||||||||||
614 | - | |||||||||||||||||||||||||
615 | switch (ret) { | - | ||||||||||||||||||||||||
616 | case never executed: 2:case 2: never executed: case 2: | 0 | ||||||||||||||||||||||||
617 | ssl3_send_alert(s, 2, al); | - | ||||||||||||||||||||||||
618 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
619 | case never executed: 1:case 1: never executed: case 1: | 0 | ||||||||||||||||||||||||
620 | ssl3_send_alert(s, 1, al); | - | ||||||||||||||||||||||||
621 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
622 | case executed 61 times by 2 tests: 3:case 3: Executed by:
executed 61 times by 2 tests: case 3: Executed by:
| 61 | ||||||||||||||||||||||||
623 | s->internal->servername_done = 0; | - | ||||||||||||||||||||||||
624 | default executed 65 times by 3 tests: :default: Executed by:
executed 65 times by 3 tests: default: Executed by:
code before this statement executed 61 times by 2 tests: default: Executed by:
| 61-65 | ||||||||||||||||||||||||
625 | return executed 65 times by 3 tests: 1;return 1; Executed by:
executed 65 times by 3 tests: return 1; Executed by:
| 65 | ||||||||||||||||||||||||
626 | } | - | ||||||||||||||||||||||||
627 | } | - | ||||||||||||||||||||||||
628 | - | |||||||||||||||||||||||||
629 | int | - | ||||||||||||||||||||||||
630 | ssl_check_clienthello_tlsext_late(SSL *s) | - | ||||||||||||||||||||||||
631 | { | - | ||||||||||||||||||||||||
632 | int ret = 0; | - | ||||||||||||||||||||||||
633 | int al = 0; | - | ||||||||||||||||||||||||
634 | - | |||||||||||||||||||||||||
635 | - | |||||||||||||||||||||||||
636 | - | |||||||||||||||||||||||||
637 | - | |||||||||||||||||||||||||
638 | - | |||||||||||||||||||||||||
639 | - | |||||||||||||||||||||||||
640 | if ((
| 4-61 | ||||||||||||||||||||||||
641 | s->ctx
| 0-4 | ||||||||||||||||||||||||
642 | int r; | - | ||||||||||||||||||||||||
643 | CERT_PKEY *certpkey; | - | ||||||||||||||||||||||||
644 | certpkey = ssl_get_server_send_pkey(s); | - | ||||||||||||||||||||||||
645 | - | |||||||||||||||||||||||||
646 | if (certpkey ==
| 0-4 | ||||||||||||||||||||||||
647 | ((void *)0)
| 0-4 | ||||||||||||||||||||||||
648 | ) { | - | ||||||||||||||||||||||||
649 | s->internal->tlsext_status_expected = 0; | - | ||||||||||||||||||||||||
650 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
651 | } | - | ||||||||||||||||||||||||
652 | - | |||||||||||||||||||||||||
653 | - | |||||||||||||||||||||||||
654 | - | |||||||||||||||||||||||||
655 | s->cert->key = certpkey; | - | ||||||||||||||||||||||||
656 | r = s->ctx->internal->tlsext_status_cb(s, | - | ||||||||||||||||||||||||
657 | s->ctx->internal->tlsext_status_arg); | - | ||||||||||||||||||||||||
658 | switch (r) { | - | ||||||||||||||||||||||||
659 | - | |||||||||||||||||||||||||
660 | case executed 4 times by 1 test: 3:case 3: Executed by:
executed 4 times by 1 test: case 3: Executed by:
| 4 | ||||||||||||||||||||||||
661 | s->internal->tlsext_status_expected = 0; | - | ||||||||||||||||||||||||
662 | break; executed 4 times by 1 test: break; Executed by:
| 4 | ||||||||||||||||||||||||
663 | - | |||||||||||||||||||||||||
664 | case never executed: 0:case 0: never executed: case 0: | 0 | ||||||||||||||||||||||||
665 | if (s->internal->tlsext_ocsp_resp
| 0 | ||||||||||||||||||||||||
666 | s->internal->tlsext_status_expected = 1; never executed: s->internal->tlsext_status_expected = 1; | 0 | ||||||||||||||||||||||||
667 | else | - | ||||||||||||||||||||||||
668 | s->internal->tlsext_status_expected = 0; never executed: s->internal->tlsext_status_expected = 0; | 0 | ||||||||||||||||||||||||
669 | break; never executed: break; | 0 | ||||||||||||||||||||||||
670 | - | |||||||||||||||||||||||||
671 | case never executed: 2:case 2: never executed: case 2: | 0 | ||||||||||||||||||||||||
672 | ret = 2; | - | ||||||||||||||||||||||||
673 | al = 80; | - | ||||||||||||||||||||||||
674 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
675 | } | - | ||||||||||||||||||||||||
676 | } executed 4 times by 1 test: elseend of block Executed by:
| 4 | ||||||||||||||||||||||||
677 | s->internal->tlsext_status_expected = 0; executed 61 times by 2 tests: s->internal->tlsext_status_expected = 0; Executed by:
| 61 | ||||||||||||||||||||||||
678 | - | |||||||||||||||||||||||||
679 | err: code before this statement executed 65 times by 3 tests: err: Executed by:
| 65 | ||||||||||||||||||||||||
680 | switch (ret) { | - | ||||||||||||||||||||||||
681 | case never executed: 2:case 2: never executed: case 2: | 0 | ||||||||||||||||||||||||
682 | ssl3_send_alert(s, 2, al); | - | ||||||||||||||||||||||||
683 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
684 | case never executed: 1:case 1: never executed: case 1: | 0 | ||||||||||||||||||||||||
685 | ssl3_send_alert(s, 1, al); | - | ||||||||||||||||||||||||
686 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
687 | default executed 65 times by 3 tests: :default: Executed by:
executed 65 times by 3 tests: default: Executed by:
| 65 | ||||||||||||||||||||||||
688 | return executed 65 times by 3 tests: 1;return 1; Executed by:
executed 65 times by 3 tests: return 1; Executed by:
| 65 | ||||||||||||||||||||||||
689 | } | - | ||||||||||||||||||||||||
690 | } | - | ||||||||||||||||||||||||
691 | - | |||||||||||||||||||||||||
692 | int | - | ||||||||||||||||||||||||
693 | ssl_check_serverhello_tlsext(SSL *s) | - | ||||||||||||||||||||||||
694 | { | - | ||||||||||||||||||||||||
695 | int ret = 3; | - | ||||||||||||||||||||||||
696 | int al = 112; | - | ||||||||||||||||||||||||
697 | - | |||||||||||||||||||||||||
698 | ret = 0; | - | ||||||||||||||||||||||||
699 | - | |||||||||||||||||||||||||
700 | if (s->ctx !=
| 0-63 | ||||||||||||||||||||||||
701 | ((void *)0)
| 0-63 | ||||||||||||||||||||||||
702 | && s->ctx->internal->tlsext_servername_callback != 0
| 0-63 | ||||||||||||||||||||||||
703 | ret = s->ctx->internal->tlsext_servername_callback(s, &al, never executed: ret = s->ctx->internal->tlsext_servername_callback(s, &al, s->ctx->internal->tlsext_servername_arg); | 0 | ||||||||||||||||||||||||
704 | s->ctx->internal->tlsext_servername_arg); never executed: ret = s->ctx->internal->tlsext_servername_callback(s, &al, s->ctx->internal->tlsext_servername_arg); | 0 | ||||||||||||||||||||||||
705 | else if (s->initial_ctx !=
| 0-63 | ||||||||||||||||||||||||
706 | ((void *)0)
| 0-63 | ||||||||||||||||||||||||
707 | && s->initial_ctx->internal->tlsext_servername_callback != 0
| 0-63 | ||||||||||||||||||||||||
708 | ret = s->initial_ctx->internal->tlsext_servername_callback(s, &al, never executed: ret = s->initial_ctx->internal->tlsext_servername_callback(s, &al, s->initial_ctx->internal->tlsext_servername_arg); | 0 | ||||||||||||||||||||||||
709 | s->initial_ctx->internal->tlsext_servername_arg); never executed: ret = s->initial_ctx->internal->tlsext_servername_callback(s, &al, s->initial_ctx->internal->tlsext_servername_arg); | 0 | ||||||||||||||||||||||||
710 | - | |||||||||||||||||||||||||
711 | - | |||||||||||||||||||||||||
712 | - | |||||||||||||||||||||||||
713 | - | |||||||||||||||||||||||||
714 | if ((
| 0-59 | ||||||||||||||||||||||||
715 | s->ctx
| 0-4 | ||||||||||||||||||||||||
716 | int r; | - | ||||||||||||||||||||||||
717 | - | |||||||||||||||||||||||||
718 | - | |||||||||||||||||||||||||
719 | - | |||||||||||||||||||||||||
720 | free(s->internal->tlsext_ocsp_resp); | - | ||||||||||||||||||||||||
721 | s->internal->tlsext_ocsp_resp = | - | ||||||||||||||||||||||||
722 | ((void *)0) | - | ||||||||||||||||||||||||
723 | ; | - | ||||||||||||||||||||||||
724 | s->internal->tlsext_ocsp_resplen = -1; | - | ||||||||||||||||||||||||
725 | r = s->ctx->internal->tlsext_status_cb(s, | - | ||||||||||||||||||||||||
726 | s->ctx->internal->tlsext_status_arg); | - | ||||||||||||||||||||||||
727 | if (r == 0
| 0-4 | ||||||||||||||||||||||||
728 | al = 113; | - | ||||||||||||||||||||||||
729 | ret = 2; | - | ||||||||||||||||||||||||
730 | } never executed: end of block | 0 | ||||||||||||||||||||||||
731 | if (r < 0
| 0-4 | ||||||||||||||||||||||||
732 | al = 80; | - | ||||||||||||||||||||||||
733 | ret = 2; | - | ||||||||||||||||||||||||
734 | } never executed: end of block | 0 | ||||||||||||||||||||||||
735 | } executed 4 times by 1 test: end of block Executed by:
| 4 | ||||||||||||||||||||||||
736 | - | |||||||||||||||||||||||||
737 | switch (ret) { | - | ||||||||||||||||||||||||
738 | case never executed: 2:case 2: never executed: case 2: | 0 | ||||||||||||||||||||||||
739 | ssl3_send_alert(s, 2, al); | - | ||||||||||||||||||||||||
740 | - | |||||||||||||||||||||||||
741 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
742 | case never executed: 1:case 1: never executed: case 1: | 0 | ||||||||||||||||||||||||
743 | ssl3_send_alert(s, 1, al); | - | ||||||||||||||||||||||||
744 | - | |||||||||||||||||||||||||
745 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
746 | case never executed: 3:case 3: never executed: case 3: | 0 | ||||||||||||||||||||||||
747 | s->internal->servername_done = 0; | - | ||||||||||||||||||||||||
748 | default executed 63 times by 2 tests: default: Executed by:
code before this statement never executed: default: executed 63 times by 2 tests: :default: Executed by:
code before this statement never executed: default: executed 63 times by 2 tests: default: Executed by:
| 0-63 | ||||||||||||||||||||||||
749 | return executed 63 times by 2 tests: 1;return 1; Executed by:
executed 63 times by 2 tests: return 1; Executed by:
| 63 | ||||||||||||||||||||||||
750 | } | - | ||||||||||||||||||||||||
751 | } | - | ||||||||||||||||||||||||
752 | int | - | ||||||||||||||||||||||||
753 | tls1_process_ticket(SSL *s, const unsigned char *session_id, int session_id_len, | - | ||||||||||||||||||||||||
754 | CBS *ext_block, SSL_SESSION **ret) | - | ||||||||||||||||||||||||
755 | { | - | ||||||||||||||||||||||||
756 | CBS extensions; | - | ||||||||||||||||||||||||
757 | - | |||||||||||||||||||||||||
758 | s->internal->tlsext_ticket_expected = 0; | - | ||||||||||||||||||||||||
759 | *ret = | - | ||||||||||||||||||||||||
760 | ((void *)0) | - | ||||||||||||||||||||||||
761 | ; | - | ||||||||||||||||||||||||
762 | - | |||||||||||||||||||||||||
763 | - | |||||||||||||||||||||||||
764 | - | |||||||||||||||||||||||||
765 | - | |||||||||||||||||||||||||
766 | - | |||||||||||||||||||||||||
767 | if (SSL_ctrl((s),32,0,
| 4-61 | ||||||||||||||||||||||||
768 | ((void *)0)
| 4-61 | ||||||||||||||||||||||||
769 | ) & 0x00004000L
| 4-61 | ||||||||||||||||||||||||
770 | return executed 4 times by 1 test: 0;return 0; Executed by:
executed 4 times by 1 test: return 0; Executed by:
| 4 | ||||||||||||||||||||||||
771 | - | |||||||||||||||||||||||||
772 | - | |||||||||||||||||||||||||
773 | - | |||||||||||||||||||||||||
774 | - | |||||||||||||||||||||||||
775 | - | |||||||||||||||||||||||||
776 | if (CBS_len(ext_block) == 0
| 2-59 | ||||||||||||||||||||||||
777 | return executed 2 times by 1 test: 0;return 0; Executed by:
executed 2 times by 1 test: return 0; Executed by:
| 2 | ||||||||||||||||||||||||
778 | - | |||||||||||||||||||||||||
779 | if (!CBS_get_u16_length_prefixed(ext_block, &extensions)
| 0-59 | ||||||||||||||||||||||||
780 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
781 | - | |||||||||||||||||||||||||
782 | while (CBS_len(&extensions) > 0
| 0-107 | ||||||||||||||||||||||||
783 | uint16_t ext_type; | - | ||||||||||||||||||||||||
784 | CBS ext_data; | - | ||||||||||||||||||||||||
785 | - | |||||||||||||||||||||||||
786 | if (!CBS_get_u16(&extensions, &ext_type)
| 0-107 | ||||||||||||||||||||||||
787 | !CBS_get_u16_length_prefixed(&extensions, &ext_data)
| 0-107 | ||||||||||||||||||||||||
788 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
789 | - | |||||||||||||||||||||||||
790 | if (ext_type == 35
| 48-59 | ||||||||||||||||||||||||
791 | int r; | - | ||||||||||||||||||||||||
792 | if (CBS_len(&ext_data) == 0
| 0-59 | ||||||||||||||||||||||||
793 | - | |||||||||||||||||||||||||
794 | - | |||||||||||||||||||||||||
795 | s->internal->tlsext_ticket_expected = 1; | - | ||||||||||||||||||||||||
796 | return executed 59 times by 1 test: 1;return 1; Executed by:
executed 59 times by 1 test: return 1; Executed by:
| 59 | ||||||||||||||||||||||||
797 | } | - | ||||||||||||||||||||||||
798 | if (s->internal->tls_session_secret_cb !=
| 0 | ||||||||||||||||||||||||
799 | ((void *)0)
| 0 | ||||||||||||||||||||||||
800 | ) { | - | ||||||||||||||||||||||||
801 | - | |||||||||||||||||||||||||
802 | - | |||||||||||||||||||||||||
803 | - | |||||||||||||||||||||||||
804 | - | |||||||||||||||||||||||||
805 | - | |||||||||||||||||||||||||
806 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
807 | } | - | ||||||||||||||||||||||||
808 | - | |||||||||||||||||||||||||
809 | r = tls_decrypt_ticket(s, CBS_data(&ext_data), | - | ||||||||||||||||||||||||
810 | CBS_len(&ext_data), session_id, session_id_len, ret); | - | ||||||||||||||||||||||||
811 | - | |||||||||||||||||||||||||
812 | switch (r) { | - | ||||||||||||||||||||||||
813 | case never executed: 2:case 2: never executed: case 2: | 0 | ||||||||||||||||||||||||
814 | s->internal->tlsext_ticket_expected = 1; | - | ||||||||||||||||||||||||
815 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
816 | case never executed: 3:case 3: never executed: case 3: | 0 | ||||||||||||||||||||||||
817 | return never executed: r;return r; never executed: return r; | 0 | ||||||||||||||||||||||||
818 | case never executed: 4:case 4: never executed: case 4: | 0 | ||||||||||||||||||||||||
819 | s->internal->tlsext_ticket_expected = 1; | - | ||||||||||||||||||||||||
820 | return never executed: 3;return 3; never executed: return 3; | 0 | ||||||||||||||||||||||||
821 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||
822 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
823 | } | - | ||||||||||||||||||||||||
824 | } | - | ||||||||||||||||||||||||
825 | } executed 48 times by 1 test: end of block Executed by:
| 48 | ||||||||||||||||||||||||
826 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
827 | } | - | ||||||||||||||||||||||||
828 | static int | - | ||||||||||||||||||||||||
829 | tls_decrypt_ticket(SSL *s, const unsigned char *etick, int eticklen, | - | ||||||||||||||||||||||||
830 | const unsigned char *sess_id, int sesslen, SSL_SESSION **psess) | - | ||||||||||||||||||||||||
831 | { | - | ||||||||||||||||||||||||
832 | SSL_SESSION *sess; | - | ||||||||||||||||||||||||
833 | unsigned char *sdec; | - | ||||||||||||||||||||||||
834 | const unsigned char *p; | - | ||||||||||||||||||||||||
835 | int slen, mlen, renew_ticket = 0; | - | ||||||||||||||||||||||||
836 | unsigned char tick_hmac[64]; | - | ||||||||||||||||||||||||
837 | HMAC_CTX hctx; | - | ||||||||||||||||||||||||
838 | EVP_CIPHER_CTX ctx; | - | ||||||||||||||||||||||||
839 | SSL_CTX *tctx = s->initial_ctx; | - | ||||||||||||||||||||||||
840 | - | |||||||||||||||||||||||||
841 | - | |||||||||||||||||||||||||
842 | - | |||||||||||||||||||||||||
843 | - | |||||||||||||||||||||||||
844 | - | |||||||||||||||||||||||||
845 | - | |||||||||||||||||||||||||
846 | - | |||||||||||||||||||||||||
847 | if (eticklen < 16 + 16
| 0 | ||||||||||||||||||||||||
848 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
849 | - | |||||||||||||||||||||||||
850 | - | |||||||||||||||||||||||||
851 | HMAC_CTX_init(&hctx); | - | ||||||||||||||||||||||||
852 | EVP_CIPHER_CTX_init(&ctx); | - | ||||||||||||||||||||||||
853 | if (tctx->internal->tlsext_ticket_key_cb
| 0 | ||||||||||||||||||||||||
854 | unsigned char *nctick = (unsigned char *)etick; | - | ||||||||||||||||||||||||
855 | int rv = tctx->internal->tlsext_ticket_key_cb(s, | - | ||||||||||||||||||||||||
856 | nctick, nctick + 16, &ctx, &hctx, 0); | - | ||||||||||||||||||||||||
857 | if (rv < 0
| 0 | ||||||||||||||||||||||||
858 | HMAC_CTX_cleanup(&hctx); | - | ||||||||||||||||||||||||
859 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
860 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
861 | } | - | ||||||||||||||||||||||||
862 | if (rv == 0
| 0 | ||||||||||||||||||||||||
863 | HMAC_CTX_cleanup(&hctx); | - | ||||||||||||||||||||||||
864 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
865 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
866 | } | - | ||||||||||||||||||||||||
867 | if (rv == 2
| 0 | ||||||||||||||||||||||||
868 | renew_ticket = 1; never executed: renew_ticket = 1; | 0 | ||||||||||||||||||||||||
869 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
870 | - | |||||||||||||||||||||||||
871 | if (timingsafe_memcmp(etick,
| 0 | ||||||||||||||||||||||||
872 | tctx->internal->tlsext_tick_key_name, 16)
| 0 | ||||||||||||||||||||||||
873 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
874 | HMAC_Init_ex(&hctx, tctx->internal->tlsext_tick_hmac_key, | - | ||||||||||||||||||||||||
875 | 16, EVP_sha256(), | - | ||||||||||||||||||||||||
876 | ((void *)0) | - | ||||||||||||||||||||||||
877 | ); | - | ||||||||||||||||||||||||
878 | EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), | - | ||||||||||||||||||||||||
879 | ((void *)0) | - | ||||||||||||||||||||||||
880 | , | - | ||||||||||||||||||||||||
881 | tctx->internal->tlsext_tick_aes_key, etick + 16); | - | ||||||||||||||||||||||||
882 | } never executed: end of block | 0 | ||||||||||||||||||||||||
883 | - | |||||||||||||||||||||||||
884 | - | |||||||||||||||||||||||||
885 | - | |||||||||||||||||||||||||
886 | - | |||||||||||||||||||||||||
887 | - | |||||||||||||||||||||||||
888 | mlen = (EVP_MD_size((&hctx)->md)); | - | ||||||||||||||||||||||||
889 | if (mlen < 0
| 0 | ||||||||||||||||||||||||
890 | HMAC_CTX_cleanup(&hctx); | - | ||||||||||||||||||||||||
891 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
892 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
893 | } | - | ||||||||||||||||||||||||
894 | - | |||||||||||||||||||||||||
895 | - | |||||||||||||||||||||||||
896 | if (eticklen <= 16 + EVP_CIPHER_CTX_iv_length(&ctx) + mlen
| 0 | ||||||||||||||||||||||||
897 | HMAC_CTX_cleanup(&hctx); | - | ||||||||||||||||||||||||
898 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
899 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
900 | } | - | ||||||||||||||||||||||||
901 | eticklen -= mlen; | - | ||||||||||||||||||||||||
902 | - | |||||||||||||||||||||||||
903 | - | |||||||||||||||||||||||||
904 | if (HMAC_Update(&hctx, etick, eticklen) <= 0
| 0 | ||||||||||||||||||||||||
905 | HMAC_Final(&hctx, tick_hmac,
| 0 | ||||||||||||||||||||||||
906 | ((void *)0)
| 0 | ||||||||||||||||||||||||
907 | ) <= 0
| 0 | ||||||||||||||||||||||||
908 | HMAC_CTX_cleanup(&hctx); | - | ||||||||||||||||||||||||
909 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
910 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
911 | } | - | ||||||||||||||||||||||||
912 | - | |||||||||||||||||||||||||
913 | HMAC_CTX_cleanup(&hctx); | - | ||||||||||||||||||||||||
914 | if (timingsafe_memcmp(tick_hmac, etick + eticklen, mlen)
| 0 | ||||||||||||||||||||||||
915 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
916 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
917 | } | - | ||||||||||||||||||||||||
918 | - | |||||||||||||||||||||||||
919 | - | |||||||||||||||||||||||||
920 | - | |||||||||||||||||||||||||
921 | p = etick + 16 + EVP_CIPHER_CTX_iv_length(&ctx); | - | ||||||||||||||||||||||||
922 | eticklen -= 16 + EVP_CIPHER_CTX_iv_length(&ctx); | - | ||||||||||||||||||||||||
923 | sdec = malloc(eticklen); | - | ||||||||||||||||||||||||
924 | if (sdec ==
| 0 | ||||||||||||||||||||||||
925 | ((void *)0)
| 0 | ||||||||||||||||||||||||
926 | || | - | ||||||||||||||||||||||||
927 | EVP_DecryptUpdate(&ctx, sdec, &slen, p, eticklen) <= 0
| 0 | ||||||||||||||||||||||||
928 | free(sdec); | - | ||||||||||||||||||||||||
929 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
930 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
931 | } | - | ||||||||||||||||||||||||
932 | if (EVP_DecryptFinal_ex(&ctx, sdec + slen, &mlen) <= 0
| 0 | ||||||||||||||||||||||||
933 | free(sdec); | - | ||||||||||||||||||||||||
934 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
935 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
936 | } | - | ||||||||||||||||||||||||
937 | slen += mlen; | - | ||||||||||||||||||||||||
938 | EVP_CIPHER_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
939 | p = sdec; | - | ||||||||||||||||||||||||
940 | - | |||||||||||||||||||||||||
941 | sess = d2i_SSL_SESSION( | - | ||||||||||||||||||||||||
942 | ((void *)0) | - | ||||||||||||||||||||||||
943 | , &p, slen); | - | ||||||||||||||||||||||||
944 | free(sdec); | - | ||||||||||||||||||||||||
945 | if (sess
| 0 | ||||||||||||||||||||||||
946 | - | |||||||||||||||||||||||||
947 | - | |||||||||||||||||||||||||
948 | - | |||||||||||||||||||||||||
949 | - | |||||||||||||||||||||||||
950 | - | |||||||||||||||||||||||||
951 | if (sesslen
| 0 | ||||||||||||||||||||||||
952 | memcpy(sess->session_id, sess_id, sesslen); never executed: memcpy(sess->session_id, sess_id, sesslen); | 0 | ||||||||||||||||||||||||
953 | sess->session_id_length = sesslen; | - | ||||||||||||||||||||||||
954 | *psess = sess; | - | ||||||||||||||||||||||||
955 | if (renew_ticket
| 0 | ||||||||||||||||||||||||
956 | return never executed: 4;return 4; never executed: return 4; | 0 | ||||||||||||||||||||||||
957 | else | - | ||||||||||||||||||||||||
958 | return never executed: 3;return 3; never executed: return 3; | 0 | ||||||||||||||||||||||||
959 | } | - | ||||||||||||||||||||||||
960 | ERR_clear_error(); | - | ||||||||||||||||||||||||
961 | - | |||||||||||||||||||||||||
962 | - | |||||||||||||||||||||||||
963 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||
964 | } | - | ||||||||||||||||||||||||
965 | - | |||||||||||||||||||||||||
966 | - | |||||||||||||||||||||||||
967 | - | |||||||||||||||||||||||||
968 | typedef struct { | - | ||||||||||||||||||||||||
969 | int nid; | - | ||||||||||||||||||||||||
970 | int id; | - | ||||||||||||||||||||||||
971 | } tls12_lookup; | - | ||||||||||||||||||||||||
972 | - | |||||||||||||||||||||||||
973 | static tls12_lookup tls12_md[] = { | - | ||||||||||||||||||||||||
974 | {4, 1}, | - | ||||||||||||||||||||||||
975 | {64, 2}, | - | ||||||||||||||||||||||||
976 | {675, 3}, | - | ||||||||||||||||||||||||
977 | {672, 4}, | - | ||||||||||||||||||||||||
978 | {673, 5}, | - | ||||||||||||||||||||||||
979 | {674, 6}, | - | ||||||||||||||||||||||||
980 | {809, 237}, | - | ||||||||||||||||||||||||
981 | {941, 238}, | - | ||||||||||||||||||||||||
982 | {942, 239} | - | ||||||||||||||||||||||||
983 | }; | - | ||||||||||||||||||||||||
984 | - | |||||||||||||||||||||||||
985 | static tls12_lookup tls12_sig[] = { | - | ||||||||||||||||||||||||
986 | {6, 1}, | - | ||||||||||||||||||||||||
987 | {408, 3}, | - | ||||||||||||||||||||||||
988 | {811, 237}, | - | ||||||||||||||||||||||||
989 | }; | - | ||||||||||||||||||||||||
990 | - | |||||||||||||||||||||||||
991 | static int | - | ||||||||||||||||||||||||
992 | tls12_find_id(int nid, tls12_lookup *table, size_t tlen) | - | ||||||||||||||||||||||||
993 | { | - | ||||||||||||||||||||||||
994 | size_t i; | - | ||||||||||||||||||||||||
995 | for (i = 0; i < tlen
| 0-259 | ||||||||||||||||||||||||
996 | if (table[i].nid == nid
| 98-161 | ||||||||||||||||||||||||
997 | return executed 98 times by 3 tests: table[i].id;return table[i].id; Executed by:
executed 98 times by 3 tests: return table[i].id; Executed by:
| 98 | ||||||||||||||||||||||||
998 | } executed 161 times by 3 tests: end of block Executed by:
| 161 | ||||||||||||||||||||||||
999 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
1000 | } | - | ||||||||||||||||||||||||
1001 | - | |||||||||||||||||||||||||
1002 | int | - | ||||||||||||||||||||||||
1003 | tls12_get_hashid(const EVP_MD *md) | - | ||||||||||||||||||||||||
1004 | { | - | ||||||||||||||||||||||||
1005 | if (md ==
| 0-33 | ||||||||||||||||||||||||
1006 | ((void *)0)
| 0-33 | ||||||||||||||||||||||||
1007 | ) | - | ||||||||||||||||||||||||
1008 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
1009 | - | |||||||||||||||||||||||||
1010 | return executed 33 times by 3 tests: tls12_find_id(EVP_MD_type(md), tls12_md,return tls12_find_id(EVP_MD_type(md), tls12_md, sizeof(tls12_md) / sizeof(tls12_lookup)); Executed by:
executed 33 times by 3 tests: return tls12_find_id(EVP_MD_type(md), tls12_md, sizeof(tls12_md) / sizeof(tls12_lookup)); Executed by:
| 33 | ||||||||||||||||||||||||
1011 | sizeof(tls12_md) / sizeof(tls12_lookup)); executed 33 times by 3 tests: return tls12_find_id(EVP_MD_type(md), tls12_md, sizeof(tls12_md) / sizeof(tls12_lookup)); Executed by:
| 33 | ||||||||||||||||||||||||
1012 | } | - | ||||||||||||||||||||||||
1013 | - | |||||||||||||||||||||||||
1014 | int | - | ||||||||||||||||||||||||
1015 | tls12_get_sigid(const EVP_PKEY *pk) | - | ||||||||||||||||||||||||
1016 | { | - | ||||||||||||||||||||||||
1017 | if (pk ==
| 0-65 | ||||||||||||||||||||||||
1018 | ((void *)0)
| 0-65 | ||||||||||||||||||||||||
1019 | ) | - | ||||||||||||||||||||||||
1020 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
1021 | - | |||||||||||||||||||||||||
1022 | return executed 65 times by 3 tests: tls12_find_id(pk->type, tls12_sig,return tls12_find_id(pk->type, tls12_sig, sizeof(tls12_sig) / sizeof(tls12_lookup)); Executed by:
executed 65 times by 3 tests: return tls12_find_id(pk->type, tls12_sig, sizeof(tls12_sig) / sizeof(tls12_lookup)); Executed by:
| 65 | ||||||||||||||||||||||||
1023 | sizeof(tls12_sig) / sizeof(tls12_lookup)); executed 65 times by 3 tests: return tls12_find_id(pk->type, tls12_sig, sizeof(tls12_sig) / sizeof(tls12_lookup)); Executed by:
| 65 | ||||||||||||||||||||||||
1024 | } | - | ||||||||||||||||||||||||
1025 | - | |||||||||||||||||||||||||
1026 | int | - | ||||||||||||||||||||||||
1027 | tls12_get_hashandsig(CBB *cbb, const EVP_PKEY *pk, const EVP_MD *md) | - | ||||||||||||||||||||||||
1028 | { | - | ||||||||||||||||||||||||
1029 | int hash_id, sig_id; | - | ||||||||||||||||||||||||
1030 | - | |||||||||||||||||||||||||
1031 | if ((
| 0-33 | ||||||||||||||||||||||||
1032 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
1033 | if ((
| 0-33 | ||||||||||||||||||||||||
1034 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
1035 | - | |||||||||||||||||||||||||
1036 | if (!CBB_add_u8(cbb, hash_id)
| 0-33 | ||||||||||||||||||||||||
1037 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
1038 | if (!CBB_add_u8(cbb, sig_id)
| 0-33 | ||||||||||||||||||||||||
1039 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
1040 | - | |||||||||||||||||||||||||
1041 | return executed 33 times by 3 tests: 1;return 1; Executed by:
executed 33 times by 3 tests: return 1; Executed by:
| 33 | ||||||||||||||||||||||||
1042 | } | - | ||||||||||||||||||||||||
1043 | - | |||||||||||||||||||||||||
1044 | const EVP_MD * | - | ||||||||||||||||||||||||
1045 | tls12_get_hash(unsigned char hash_alg) | - | ||||||||||||||||||||||||
1046 | { | - | ||||||||||||||||||||||||
1047 | switch (hash_alg) { | - | ||||||||||||||||||||||||
1048 | case never executed: 2:case 2: never executed: case 2: | 0 | ||||||||||||||||||||||||
1049 | return never executed: EVP_sha1();return EVP_sha1(); never executed: return EVP_sha1(); | 0 | ||||||||||||||||||||||||
1050 | case never executed: 3:case 3: never executed: case 3: | 0 | ||||||||||||||||||||||||
1051 | return never executed: EVP_sha224();return EVP_sha224(); never executed: return EVP_sha224(); | 0 | ||||||||||||||||||||||||
1052 | case never executed: 4:case 4: never executed: case 4: | 0 | ||||||||||||||||||||||||
1053 | return never executed: EVP_sha256();return EVP_sha256(); never executed: return EVP_sha256(); | 0 | ||||||||||||||||||||||||
1054 | case never executed: 5:case 5: never executed: case 5: | 0 | ||||||||||||||||||||||||
1055 | return never executed: EVP_sha384();return EVP_sha384(); never executed: return EVP_sha384(); | 0 | ||||||||||||||||||||||||
1056 | case executed 112 times by 3 tests: 6:case 6: Executed by:
executed 112 times by 3 tests: case 6: Executed by:
| 112 | ||||||||||||||||||||||||
1057 | return executed 112 times by 3 tests: EVP_sha512();return EVP_sha512(); Executed by:
executed 112 times by 3 tests: return EVP_sha512(); Executed by:
| 112 | ||||||||||||||||||||||||
1058 | - | |||||||||||||||||||||||||
1059 | case never executed: 237:case 237: never executed: case 237: | 0 | ||||||||||||||||||||||||
1060 | return never executed: EVP_gostr341194();return EVP_gostr341194(); never executed: return EVP_gostr341194(); | 0 | ||||||||||||||||||||||||
1061 | case never executed: 238:case 238: never executed: case 238: | 0 | ||||||||||||||||||||||||
1062 | return never executed: EVP_streebog256();return EVP_streebog256(); never executed: return EVP_streebog256(); | 0 | ||||||||||||||||||||||||
1063 | case executed 40 times by 3 tests: 239:case 239: Executed by:
executed 40 times by 3 tests: case 239: Executed by:
| 40 | ||||||||||||||||||||||||
1064 | return executed 40 times by 3 tests: EVP_streebog512();return EVP_streebog512(); Executed by:
executed 40 times by 3 tests: return EVP_streebog512(); Executed by:
| 40 | ||||||||||||||||||||||||
1065 | - | |||||||||||||||||||||||||
1066 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||
1067 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
1068 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
1069 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
1070 | } | - | ||||||||||||||||||||||||
1071 | } | - | ||||||||||||||||||||||||
1072 | - | |||||||||||||||||||||||||
1073 | - | |||||||||||||||||||||||||
1074 | - | |||||||||||||||||||||||||
1075 | int | - | ||||||||||||||||||||||||
1076 | tls1_process_sigalgs(SSL *s, CBS *cbs) | - | ||||||||||||||||||||||||
1077 | { | - | ||||||||||||||||||||||||
1078 | const EVP_MD *md; | - | ||||||||||||||||||||||||
1079 | CERT *c = s->cert; | - | ||||||||||||||||||||||||
1080 | int idx; | - | ||||||||||||||||||||||||
1081 | - | |||||||||||||||||||||||||
1082 | - | |||||||||||||||||||||||||
1083 | if (!(s->method->internal->ssl3_enc->enc_flags & (1 << 1))
| 0-40 | ||||||||||||||||||||||||
1084 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||
1085 | - | |||||||||||||||||||||||||
1086 | - | |||||||||||||||||||||||||
1087 | if (c ==
| 0-40 | ||||||||||||||||||||||||
1088 | ((void *)0)
| 0-40 | ||||||||||||||||||||||||
1089 | ) | - | ||||||||||||||||||||||||
1090 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
1091 | - | |||||||||||||||||||||||||
1092 | c->pkeys[1].digest = | - | ||||||||||||||||||||||||
1093 | ((void *)0) | - | ||||||||||||||||||||||||
1094 | ; | - | ||||||||||||||||||||||||
1095 | c->pkeys[0].digest = | - | ||||||||||||||||||||||||
1096 | ((void *)0) | - | ||||||||||||||||||||||||
1097 | ; | - | ||||||||||||||||||||||||
1098 | c->pkeys[3].digest = | - | ||||||||||||||||||||||||
1099 | ((void *)0) | - | ||||||||||||||||||||||||
1100 | ; | - | ||||||||||||||||||||||||
1101 | c->pkeys[4].digest = | - | ||||||||||||||||||||||||
1102 | ((void *)0) | - | ||||||||||||||||||||||||
1103 | ; | - | ||||||||||||||||||||||||
1104 | - | |||||||||||||||||||||||||
1105 | while (CBS_len(cbs) > 0
| 40-520 | ||||||||||||||||||||||||
1106 | uint8_t hash_alg, sig_alg; | - | ||||||||||||||||||||||||
1107 | - | |||||||||||||||||||||||||
1108 | if (!CBS_get_u8(cbs, &hash_alg)
| 0-520 | ||||||||||||||||||||||||
1109 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
1110 | - | |||||||||||||||||||||||||
1111 | switch (sig_alg) { | - | ||||||||||||||||||||||||
1112 | case executed 200 times by 3 tests: 1:case 1: Executed by:
executed 200 times by 3 tests: case 1: Executed by:
| 200 | ||||||||||||||||||||||||
1113 | idx = 1; | - | ||||||||||||||||||||||||
1114 | break; executed 200 times by 3 tests: break; Executed by:
| 200 | ||||||||||||||||||||||||
1115 | case executed 200 times by 3 tests: 3:case 3: Executed by:
executed 200 times by 3 tests: case 3: Executed by:
| 200 | ||||||||||||||||||||||||
1116 | idx = 3; | - | ||||||||||||||||||||||||
1117 | break; executed 200 times by 3 tests: break; Executed by:
| 200 | ||||||||||||||||||||||||
1118 | case executed 40 times by 3 tests: 237:case 237: Executed by:
executed 40 times by 3 tests: case 237: Executed by:
| 40 | ||||||||||||||||||||||||
1119 | case executed 40 times by 3 tests: 238:case 238: Executed by:
executed 40 times by 3 tests: case 238: Executed by:
| 40 | ||||||||||||||||||||||||
1120 | case executed 40 times by 3 tests: 239:case 239: Executed by:
executed 40 times by 3 tests: case 239: Executed by:
| 40 | ||||||||||||||||||||||||
1121 | idx = 4; | - | ||||||||||||||||||||||||
1122 | break; executed 120 times by 3 tests: break; Executed by:
| 120 | ||||||||||||||||||||||||
1123 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||
1124 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1125 | } | - | ||||||||||||||||||||||||
1126 | - | |||||||||||||||||||||||||
1127 | if (c->pkeys[idx].digest ==
| 120-400 | ||||||||||||||||||||||||
1128 | ((void *)0)
| 120-400 | ||||||||||||||||||||||||
1129 | ) { | - | ||||||||||||||||||||||||
1130 | md = tls12_get_hash(hash_alg); | - | ||||||||||||||||||||||||
1131 | if (md
| 0-120 | ||||||||||||||||||||||||
1132 | c->pkeys[idx].digest = md; | - | ||||||||||||||||||||||||
1133 | if (idx == 1
| 40-80 | ||||||||||||||||||||||||
1134 | c->pkeys[0].digest = md; executed 40 times by 3 tests: c->pkeys[0].digest = md; Executed by:
| 40 | ||||||||||||||||||||||||
1135 | } executed 120 times by 3 tests: end of block Executed by:
| 120 | ||||||||||||||||||||||||
1136 | } executed 120 times by 3 tests: end of block Executed by:
| 120 | ||||||||||||||||||||||||
1137 | - | |||||||||||||||||||||||||
1138 | } executed 520 times by 3 tests: end of block Executed by:
| 520 | ||||||||||||||||||||||||
1139 | - | |||||||||||||||||||||||||
1140 | - | |||||||||||||||||||||||||
1141 | - | |||||||||||||||||||||||||
1142 | - | |||||||||||||||||||||||||
1143 | - | |||||||||||||||||||||||||
1144 | if (!c->pkeys[1].digest
| 0-40 | ||||||||||||||||||||||||
1145 | c->pkeys[1].digest = EVP_sha1(); | - | ||||||||||||||||||||||||
1146 | c->pkeys[0].digest = EVP_sha1(); | - | ||||||||||||||||||||||||
1147 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1148 | if (!c->pkeys[3].digest
| 0-40 | ||||||||||||||||||||||||
1149 | c->pkeys[3].digest = EVP_sha1(); never executed: c->pkeys[3].digest = EVP_sha1(); | 0 | ||||||||||||||||||||||||
1150 | - | |||||||||||||||||||||||||
1151 | if (!c->pkeys[4].digest
| 0-40 | ||||||||||||||||||||||||
1152 | c->pkeys[4].digest = EVP_gostr341194(); never executed: c->pkeys[4].digest = EVP_gostr341194(); | 0 | ||||||||||||||||||||||||
1153 | - | |||||||||||||||||||||||||
1154 | return executed 40 times by 3 tests: 1;return 1; Executed by:
executed 40 times by 3 tests: return 1; Executed by:
| 40 | ||||||||||||||||||||||||
1155 | } | - | ||||||||||||||||||||||||
Switch to Source code | Preprocessed file |