OpenCoverage

s3_enc.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/ssl/s3_enc.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num)-
4{-
5 EVP_MD_CTX *m5;-
6 EVP_MD_CTX *s1;-
7 unsigned char buf[16], smd[20];-
8 unsigned char c = 'A';-
9 unsigned int i, j, k;-
10 int ret = 0;-
11-
12-
13-
14-
15 k = 0;-
16 m5 = EVP_MD_CTX_new();-
17 s1 = EVP_MD_CTX_new();-
18 if (m5 ==
m5 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
19 ((void *)0)
m5 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
20 || s1 ==
s1 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
21 ((void *)0)
s1 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
22 ) {-
23 ossl_statem_fatal((s), (80), (238), ((1|64)),-
24 __FILE__-
25 ,-
26 34-
27 )-
28 ;-
29 goto
never executed: goto err;
err;
never executed: goto err;
0
30 }-
31 EVP_MD_CTX_set_flags(m5, 0x0008);-
32 for (i = 0; (
(int)i < numDescription
TRUEnever evaluated
FALSEnever evaluated
int)i < num
(int)i < numDescription
TRUEnever evaluated
FALSEnever evaluated
; i += 16) {
0
33 k++;-
34 if (k > sizeof(buf)
k > sizeof(buf)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
35-
36 ossl_statem_fatal((s), (80), (238), ((4|64)),-
37 __FILE__-
38 ,-
39 43-
40 )-
41 ;-
42 goto
never executed: goto err;
err;
never executed: goto err;
0
43 }-
44-
45 for (j = 0; j < k
j < kDescription
TRUEnever evaluated
FALSEnever evaluated
; j++)
0
46 buf[j] = c;
never executed: buf[j] = c;
0
47 c++;-
48 if (!EVP_DigestInit_ex(s1, EVP_sha1(),
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
49 ((void *)0)
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
50 )
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
51 || !EVP_DigestUpdate(s1, buf, k)
!EVP_DigestUpdate(s1, buf, k)Description
TRUEnever evaluated
FALSEnever evaluated
0
52 || !EVP_DigestUpdate(s1, s->session->master_key,
!EVP_DigestUpd...er_key_length)Description
TRUEnever evaluated
FALSEnever evaluated
0
53 s->session->master_key_length)
!EVP_DigestUpd...er_key_length)Description
TRUEnever evaluated
FALSEnever evaluated
0
54 || !EVP_DigestUpdate(s1, s->s3->server_random, 32)
!EVP_DigestUpd...er_random, 32)Description
TRUEnever evaluated
FALSEnever evaluated
0
55 || !EVP_DigestUpdate(s1, s->s3->client_random, 32)
!EVP_DigestUpd...nt_random, 32)Description
TRUEnever evaluated
FALSEnever evaluated
0
56 || !EVP_DigestFinal_ex(s1, smd,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
57 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
58 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
59 || !EVP_DigestInit_ex(m5, EVP_md5(),
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
60 ((void *)0)
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
61 )
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
62 || !EVP_DigestUpdate(m5, s->session->master_key,
!EVP_DigestUpd...er_key_length)Description
TRUEnever evaluated
FALSEnever evaluated
0
63 s->session->master_key_length)
!EVP_DigestUpd...er_key_length)Description
TRUEnever evaluated
FALSEnever evaluated
0
64 || !EVP_DigestUpdate(m5, smd, 20)
!EVP_DigestUpdate(m5, smd, 20)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
65 ossl_statem_fatal((s), (80), (238), ((4|64)),-
66 __FILE__-
67 ,-
68 62-
69 )-
70 ;-
71 goto
never executed: goto err;
err;
never executed: goto err;
0
72 }-
73 if ((
(int)(i + 16) > numDescription
TRUEnever evaluated
FALSEnever evaluated
int)(i + 16) > num
(int)(i + 16) > numDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
74 if (!EVP_DigestFinal_ex(m5, smd,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
75 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
76 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
77 ossl_statem_fatal((s), (80), (238), ((4|64)),-
78 __FILE__-
79 ,-
80 68-
81 )-
82 ;-
83 goto
never executed: goto err;
err;
never executed: goto err;
0
84 }-
85 memcpy(km, smd, (num - i));-
86 }
never executed: end of block
else {
0
87 if (!EVP_DigestFinal_ex(m5, km,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
88 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
89 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
90 ossl_statem_fatal((s), (80), (238), ((4|64)),-
91 __FILE__-
92 ,-
93 75-
94 )-
95 ;-
96 goto
never executed: goto err;
err;
never executed: goto err;
0
97 }-
98 }
never executed: end of block
0
99-
100 km += 16;-
101 }
never executed: end of block
0
102 OPENSSL_cleanse(smd, sizeof(smd));-
103 ret = 1;-
104 err:
code before this statement never executed: err:
0
105 EVP_MD_CTX_free(m5);-
106 EVP_MD_CTX_free(s1);-
107 return
never executed: return ret;
ret;
never executed: return ret;
0
108}-
109-
110int ssl3_change_cipher_state(SSL *s, int which)-
111{-
112 unsigned char *p, *mac_secret;-
113 unsigned char exp_key[64];-
114 unsigned char exp_iv[16];-
115 unsigned char *ms, *key, *iv;-
116 EVP_CIPHER_CTX *dd;-
117 const EVP_CIPHER *c;-
118-
119 COMP_METHOD *comp;-
120-
121 const EVP_MD *m;-
122 int mdi;-
123 size_t n, i, j, k, cl;-
124 int reuse_dd = 0;-
125-
126 c = s->s3->tmp.new_sym_enc;-
127 m = s->s3->tmp.new_hash;-
128-
129 if (!((m !=
!((m != ((void *)0) ) != 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
130 ((void *)0)
!((m != ((void *)0) ) != 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
131 ) != 0)
!((m != ((void *)0) ) != 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
132 ossl_statem_fatal((s), (80), (129), ((4|64)),-
133 __FILE__-
134 ,-
135 111-
136 )-
137 ;-
138 goto
never executed: goto err;
err;
never executed: goto err;
0
139 }-
140-
141 if (s->s3->tmp.new_compression ==
s->s3->tmp.new...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
142 ((void *)0)
s->s3->tmp.new...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
143 )-
144 comp =
never executed: comp = ((void *)0) ;
0
145 ((void *)0)
never executed: comp = ((void *)0) ;
0
146 ;
never executed: comp = ((void *)0) ;
0
147 else-
148 comp = s->s3->tmp.new_compression->method;
never executed: comp = s->s3->tmp.new_compression->method;
0
149-
150-
151 if (which & 0x001
which & 0x001Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
152 if (s->enc_read_ctx !=
s->enc_read_ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
153 ((void *)0)
s->enc_read_ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
154 ) {-
155 reuse_dd = 1;-
156 }
never executed: end of block
else if ((
(s->enc_read_c...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
s->enc_read_ctx = EVP_CIPHER_CTX_new()) ==
(s->enc_read_c...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
157 ((void *)0)
(s->enc_read_c...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
158 ) {-
159 ossl_statem_fatal((s), (80), (129), ((1|64)),-
160 __FILE__-
161 ,-
162 126-
163 )-
164 ;-
165 goto
never executed: goto err;
err;
never executed: goto err;
0
166 } else {-
167-
168-
169-
170 EVP_CIPHER_CTX_reset(s->enc_read_ctx);-
171 }
never executed: end of block
0
172 dd = s->enc_read_ctx;-
173-
174 if (ssl_replace_hash(&s->read_hash, m) ==
ssl_replace_ha...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
175 ((void *)0)
ssl_replace_ha...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
176 ) {-
177 ossl_statem_fatal((s), (80), (129), ((4|64)),-
178 __FILE__-
179 ,-
180 138-
181 )-
182 ;-
183 goto
never executed: goto err;
err;
never executed: goto err;
0
184 }-
185-
186-
187 COMP_CTX_free(s->expand);-
188 s->expand = -
189 ((void *)0)-
190 ;-
191 if (comp !=
comp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
192 ((void *)0)
comp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
193 ) {-
194 s->expand = COMP_CTX_new(comp);-
195 if (s->expand ==
s->expand == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
196 ((void *)0)
s->expand == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
197 ) {-
198 ossl_statem_fatal((s), (80), (129), (142),-
199-
200 __FILE__-
201 ,-
202-
203 150-
204 )-
205-
206 ;-
207 goto
never executed: goto err;
err;
never executed: goto err;
0
208 }-
209 }
never executed: end of block
0
210-
211 RECORD_LAYER_reset_read_sequence(&s->rlayer);-
212 mac_secret = &(s->s3->read_mac_secret[0]);-
213 }
never executed: end of block
else {
0
214 s->statem.enc_write_state = ENC_WRITE_STATE_INVALID;-
215 if (s->enc_write_ctx !=
s->enc_write_c...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
216 ((void *)0)
s->enc_write_c...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
217 ) {-
218 reuse_dd = 1;-
219 }
never executed: end of block
else if ((
(s->enc_write_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
s->enc_write_ctx = EVP_CIPHER_CTX_new()) ==
(s->enc_write_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
220 ((void *)0)
(s->enc_write_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
221 ) {-
222 ossl_statem_fatal((s), (80), (129), ((1|64)),-
223 __FILE__-
224 ,-
225 163-
226 )-
227 ;-
228 goto
never executed: goto err;
err;
never executed: goto err;
0
229 } else {-
230-
231-
232-
233 EVP_CIPHER_CTX_reset(s->enc_write_ctx);-
234 }
never executed: end of block
0
235 dd = s->enc_write_ctx;-
236 if (ssl_replace_hash(&s->write_hash, m) ==
ssl_replace_ha...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
237 ((void *)0)
ssl_replace_ha...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
238 ) {-
239 ossl_statem_fatal((s), (80), (129), ((1|64)),-
240 __FILE__-
241 ,-
242 174-
243 )-
244 ;-
245 goto
never executed: goto err;
err;
never executed: goto err;
0
246 }-
247-
248-
249 COMP_CTX_free(s->compress);-
250 s->compress = -
251 ((void *)0)-
252 ;-
253 if (comp !=
comp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
254 ((void *)0)
comp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
255 ) {-
256 s->compress = COMP_CTX_new(comp);-
257 if (s->compress ==
s->compress == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
258 ((void *)0)
s->compress == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
259 ) {-
260 ossl_statem_fatal((s), (80), (129), (142),-
261-
262 __FILE__-
263 ,-
264-
265 186-
266 )-
267-
268 ;-
269 goto
never executed: goto err;
err;
never executed: goto err;
0
270 }-
271 }
never executed: end of block
0
272-
273 RECORD_LAYER_reset_write_sequence(&s->rlayer);-
274 mac_secret = &(s->s3->write_mac_secret[0]);-
275 }
never executed: end of block
0
276-
277 if (reuse_dd
reuse_ddDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
278 EVP_CIPHER_CTX_reset(dd);
never executed: EVP_CIPHER_CTX_reset(dd);
0
279-
280 p = s->s3->tmp.key_block;-
281 mdi = EVP_MD_size(m);-
282 if (mdi < 0
mdi < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
283 ossl_statem_fatal((s), (80), (129), ((4|64)),-
284 __FILE__-
285 ,-
286 202-
287 )-
288 ;-
289 goto
never executed: goto err;
err;
never executed: goto err;
0
290 }-
291 i = mdi;-
292 cl = EVP_CIPHER_key_length(c);-
293 j = cl;-
294 k = EVP_CIPHER_iv_length(c);-
295 if ((
(which == (0x010|0x002))Description
TRUEnever evaluated
FALSEnever evaluated
which == (0x010|0x002))
(which == (0x010|0x002))Description
TRUEnever evaluated
FALSEnever evaluated
||
0
296 (
(which == (0x020|0x001))Description
TRUEnever evaluated
FALSEnever evaluated
which == (0x020|0x001))
(which == (0x020|0x001))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
297 ms = &(p[0]);-
298 n = i + i;-
299 key = &(p[n]);-
300 n += j + j;-
301 iv = &(p[n]);-
302 n += k + k;-
303 }
never executed: end of block
else {
0
304 n = i;-
305 ms = &(p[n]);-
306 n += i + j;-
307 key = &(p[n]);-
308 n += j + k;-
309 iv = &(p[n]);-
310 n += k;-
311 }
never executed: end of block
0
312-
313 if (n > s->s3->tmp.key_block_length
n > s->s3->tmp...y_block_lengthDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
314 ossl_statem_fatal((s), (80), (129), ((4|64)),-
315 __FILE__-
316 ,-
317 229-
318 )-
319 ;-
320 goto
never executed: goto err;
err;
never executed: goto err;
0
321 }-
322-
323 memcpy(mac_secret, ms, i);-
324-
325 if (!EVP_CipherInit_ex(dd, c,
!EVP_CipherIni...hich & 0x002))Description
TRUEnever evaluated
FALSEnever evaluated
0
326 ((void *)0)
!EVP_CipherIni...hich & 0x002))Description
TRUEnever evaluated
FALSEnever evaluated
0
327 , key, iv, (which & 0x002))
!EVP_CipherIni...hich & 0x002))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
328 ossl_statem_fatal((s), (80), (129), ((4|64)),-
329 __FILE__-
330 ,-
331 237-
332 )-
333 ;-
334 goto
never executed: goto err;
err;
never executed: goto err;
0
335 }-
336-
337 s->statem.enc_write_state = ENC_WRITE_STATE_VALID;-
338 OPENSSL_cleanse(exp_key, sizeof(exp_key));-
339 OPENSSL_cleanse(exp_iv, sizeof(exp_iv));-
340 return
never executed: return 1;
1;
never executed: return 1;
0
341 err:-
342 OPENSSL_cleanse(exp_key, sizeof(exp_key));-
343 OPENSSL_cleanse(exp_iv, sizeof(exp_iv));-
344 return
never executed: return 0;
0;
never executed: return 0;
0
345}-
346-
347int ssl3_setup_key_block(SSL *s)-
348{-
349 unsigned char *p;-
350 const EVP_CIPHER *c;-
351 const EVP_MD *hash;-
352 int num;-
353 int ret = 0;-
354 SSL_COMP *comp;-
355-
356 if (s->s3->tmp.key_block_length != 0
s->s3->tmp.key...ck_length != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
357 return
never executed: return 1;
1;
never executed: return 1;
0
358-
359 if (!ssl_cipher_get_evp(s->session, &c, &hash,
!ssl_cipher_ge...0) , &comp, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
360 ((void *)0)
!ssl_cipher_ge...0) , &comp, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
361 ,
!ssl_cipher_ge...0) , &comp, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
362 ((void *)0)
!ssl_cipher_ge...0) , &comp, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
363 , &comp, 0)
!ssl_cipher_ge...0) , &comp, 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
364 ossl_statem_fatal((s), (80), (157), (138),-
365 __FILE__-
366 ,-
367 265-
368 )-
369 ;-
370 return
never executed: return 0;
0;
never executed: return 0;
0
371 }-
372-
373 s->s3->tmp.new_sym_enc = c;-
374 s->s3->tmp.new_hash = hash;-
375-
376-
377-
378 s->s3->tmp.new_compression = comp;-
379-
380-
381 num = EVP_MD_size(hash);-
382 if (num < 0
num < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
383 return
never executed: return 0;
0;
never executed: return 0;
0
384-
385 num = EVP_CIPHER_key_length(c) + num + EVP_CIPHER_iv_length(c);-
386 num *= 2;-
387-
388 ssl3_cleanup_key_block(s);-
389-
390 if ((
(p = CRYPTO_ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p = CRYPTO_malloc(num, __FILE__, 286)) ==
(p = CRYPTO_ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
391 ((void *)0)
(p = CRYPTO_ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
392 ) {-
393 ossl_statem_fatal((s), (80), (157), ((1|64)),-
394 __FILE__-
395 ,-
396 288-
397 )-
398 ;-
399 return
never executed: return 0;
0;
never executed: return 0;
0
400 }-
401-
402 s->s3->tmp.key_block_length = num;-
403 s->s3->tmp.key_block = p;-
404-
405-
406 ret = ssl3_generate_key_block(s, p, num);-
407-
408 if (!(s->options & 0x00000800U)
!(s->options & 0x00000800U)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
409-
410-
411-
412-
413 s->s3->need_empty_fragments = 1;-
414-
415 if (s->session->cipher !=
s->session->ci...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
416 ((void *)0)
s->session->ci...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
417 ) {-
418 if (s->session->cipher->algorithm_enc == 0x00000020U
s->session->ci...== 0x00000020UDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
419 s->s3->need_empty_fragments = 0;
never executed: s->s3->need_empty_fragments = 0;
0
420-
421-
422 if (s->session->cipher->algorithm_enc == 0x00000004U
s->session->ci...== 0x00000004UDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
423 s->s3->need_empty_fragments = 0;
never executed: s->s3->need_empty_fragments = 0;
0
424-
425 }
never executed: end of block
0
426 }
never executed: end of block
0
427-
428 return
never executed: return ret;
ret;
never executed: return ret;
0
429}-
430-
431void ssl3_cleanup_key_block(SSL *s)-
432{-
433 CRYPTO_clear_free(s->s3->tmp.key_block, s->s3->tmp.key_block_length, __FILE__, 321);-
434 s->s3->tmp.key_block = -
435 ((void *)0)-
436 ;-
437 s->s3->tmp.key_block_length = 0;-
438}
executed 47115 times by 2 tests: end of block
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
47115
439-
440int ssl3_init_finished_mac(SSL *s)-
441{-
442 BIO *buf = BIO_new(BIO_s_mem());-
443-
444 if (buf ==
buf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9057 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-9057
445 ((void *)0)
buf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9057 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-9057
446 ) {-
447 ossl_statem_fatal((s), (80), (397), ((1|64)),-
448 __FILE__-
449 ,-
450 332-
451 )-
452 ;-
453 return
never executed: return 0;
0;
never executed: return 0;
0
454 }-
455 ssl3_free_digest_list(s);-
456 s->s3->handshake_buffer = buf;-
457 (void)(int)BIO_ctrl(s->s3->handshake_buffer,9,(0x01),-
458 ((void *)0)-
459 );-
460 return
executed 9057 times by 1 test: return 1;
Executed by:
  • libssl.so.1.1
1;
executed 9057 times by 1 test: return 1;
Executed by:
  • libssl.so.1.1
9057
461}-
462-
463-
464-
465-
466-
467-
468void ssl3_free_digest_list(SSL *s)-
469{-
470 BIO_free(s->s3->handshake_buffer);-
471 s->s3->handshake_buffer = -
472 ((void *)0)-
473 ;-
474 EVP_MD_CTX_free(s->s3->handshake_dgst);-
475 s->s3->handshake_dgst = -
476 ((void *)0)-
477 ;-
478}
executed 50257 times by 2 tests: end of block
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
50257
479-
480int ssl3_finish_mac(SSL *s, const unsigned char *buf, size_t len)-
481{-
482 int ret;-
483-
484 if (s->s3->handshake_dgst ==
s->s3->handsha...== ((void *)0)Description
TRUEevaluated 22173 times by 1 test
Evaluated by:
  • libssl.so.1.1
FALSEevaluated 21465 times by 1 test
Evaluated by:
  • libssl.so.1.1
21465-22173
485 ((void *)0)
s->s3->handsha...== ((void *)0)Description
TRUEevaluated 22173 times by 1 test
Evaluated by:
  • libssl.so.1.1
FALSEevaluated 21465 times by 1 test
Evaluated by:
  • libssl.so.1.1
21465-22173
486 ) {-
487-
488 if (len > 0x7fffffff
len > 0x7fffffffDescription
TRUEnever evaluated
FALSEevaluated 22173 times by 1 test
Evaluated by:
  • libssl.so.1.1
) {
0-22173
489 ossl_statem_fatal((s), (80), (587), (237),-
490 __FILE__-
491 ,-
492 362-
493 )-
494 ;-
495 return
never executed: return 0;
0;
never executed: return 0;
0
496 }-
497 ret = BIO_write(s->s3->handshake_buffer, (void *)buf, (int)len);-
498 if (ret <= 0
ret <= 0Description
TRUEnever evaluated
FALSEevaluated 22173 times by 1 test
Evaluated by:
  • libssl.so.1.1
|| ret != (int)len
ret != (int)lenDescription
TRUEnever evaluated
FALSEevaluated 22173 times by 1 test
Evaluated by:
  • libssl.so.1.1
) {
0-22173
499 ossl_statem_fatal((s), (80), (587), ((4|64)),-
500 __FILE__-
501 ,-
502 368-
503 )-
504 ;-
505 return
never executed: return 0;
0;
never executed: return 0;
0
506 }-
507 }
executed 22173 times by 1 test: end of block
Executed by:
  • libssl.so.1.1
else {
22173
508 ret = EVP_DigestUpdate(s->s3->handshake_dgst, buf, len);-
509 if (!ret
!retDescription
TRUEnever evaluated
FALSEevaluated 21465 times by 1 test
Evaluated by:
  • libssl.so.1.1
) {
0-21465
510 ossl_statem_fatal((s), (80), (587), ((4|64)),-
511 __FILE__-
512 ,-
513 375-
514 )-
515 ;-
516 return
never executed: return 0;
0;
never executed: return 0;
0
517 }-
518 }
executed 21465 times by 1 test: end of block
Executed by:
  • libssl.so.1.1
21465
519 return
executed 43638 times by 1 test: return 1;
Executed by:
  • libssl.so.1.1
1;
executed 43638 times by 1 test: return 1;
Executed by:
  • libssl.so.1.1
43638
520}-
521-
522int ssl3_digest_cached_records(SSL *s, int keep)-
523{-
524 const EVP_MD *md;-
525 long hdatalen;-
526 void *hdata;-
527-
528 if (s->s3->handshake_dgst ==
s->s3->handsha...== ((void *)0)Description
TRUEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
FALSEevaluated 14725 times by 1 test
Evaluated by:
  • libssl.so.1.1
5223-14725
529 ((void *)0)
s->s3->handsha...== ((void *)0)Description
TRUEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
FALSEevaluated 14725 times by 1 test
Evaluated by:
  • libssl.so.1.1
5223-14725
530 ) {-
531 hdatalen = BIO_ctrl(s->s3->handshake_buffer,3,0,(char *)(&hdata));-
532 if (hdatalen <= 0
hdatalen <= 0Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
) {
0-5223
533 ossl_statem_fatal((s), (80), (293), (332),-
534 __FILE__-
535 ,-
536 392-
537 )-
538 ;-
539 return
never executed: return 0;
0;
never executed: return 0;
0
540 }-
541-
542 s->s3->handshake_dgst = EVP_MD_CTX_new();-
543 if (s->s3->handshake_dgst ==
s->s3->handsha...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-5223
544 ((void *)0)
s->s3->handsha...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-5223
545 ) {-
546 ossl_statem_fatal((s), (80), (293), ((1|64)),-
547 __FILE__-
548 ,-
549 399-
550 )-
551 ;-
552 return
never executed: return 0;
0;
never executed: return 0;
0
553 }-
554-
555 md = ssl_handshake_md(s);-
556 if (md ==
md == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-5223
557 ((void *)0)
md == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-5223
558 || !EVP_DigestInit_ex(s->s3->handshake_dgst, md,
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-5223
559 ((void *)0)
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-5223
560 )
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
0-5223
561 || !EVP_DigestUpdate(s->s3->handshake_dgst, hdata, hdatalen)
!EVP_DigestUpd...ata, hdatalen)Description
TRUEnever evaluated
FALSEevaluated 5223 times by 1 test
Evaluated by:
  • libssl.so.1.1
) {
0-5223
562 ossl_statem_fatal((s), (80), (293), ((4|64)),-
563 __FILE__-
564 ,-
565 407-
566 )-
567 ;-
568 return
never executed: return 0;
0;
never executed: return 0;
0
569 }-
570 }
executed 5223 times by 1 test: end of block
Executed by:
  • libssl.so.1.1
5223
571 if (keep == 0
keep == 0Description
TRUEevaluated 11101 times by 1 test
Evaluated by:
  • libssl.so.1.1
FALSEevaluated 8847 times by 1 test
Evaluated by:
  • libssl.so.1.1
) {
8847-11101
572 BIO_free(s->s3->handshake_buffer);-
573 s->s3->handshake_buffer = -
574 ((void *)0)-
575 ;-
576 }
executed 11101 times by 1 test: end of block
Executed by:
  • libssl.so.1.1
11101
577-
578 return
executed 19948 times by 1 test: return 1;
Executed by:
  • libssl.so.1.1
1;
executed 19948 times by 1 test: return 1;
Executed by:
  • libssl.so.1.1
19948
579}-
580-
581size_t ssl3_final_finish_mac(SSL *s, const char *sender, size_t len,-
582 unsigned char *p)-
583{-
584 int ret;-
585 EVP_MD_CTX *ctx = -
586 ((void *)0)-
587 ;-
588-
589 if (!ssl3_digest_cached_records(s, 0)
!ssl3_digest_c..._records(s, 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
590-
591 return
never executed: return 0;
0;
never executed: return 0;
0
592 }-
593-
594 if (EVP_MD_type(EVP_MD_CTX_md(s->s3->handshake_dgst)) != 114
EVP_MD_type(EV..._dgst)) != 114Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
595 ossl_statem_fatal((s), (80), (285), (324),-
596 __FILE__-
597 ,-
598 432-
599 )-
600 ;-
601 return
never executed: return 0;
0;
never executed: return 0;
0
602 }-
603-
604 ctx = EVP_MD_CTX_new();-
605 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
606 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
607 ) {-
608 ossl_statem_fatal((s), (80), (285), ((1|64)),-
609 __FILE__-
610 ,-
611 439-
612 )-
613 ;-
614 return
never executed: return 0;
0;
never executed: return 0;
0
615 }-
616 if (!EVP_MD_CTX_copy_ex(ctx, s->s3->handshake_dgst)
!EVP_MD_CTX_co...andshake_dgst)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
617 ossl_statem_fatal((s), (80), (285), ((4|64)),-
618 __FILE__-
619 ,-
620 444-
621 )-
622 ;-
623 return
never executed: return 0;
0;
never executed: return 0;
0
624 }-
625-
626 ret = EVP_MD_size(EVP_MD_CTX_md(ctx));-
627 if (ret < 0
ret < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
628 ossl_statem_fatal((s), (80), (285), ((4|64)),-
629 __FILE__-
630 ,-
631 451-
632 )-
633 ;-
634 EVP_MD_CTX_reset(ctx);-
635 return
never executed: return 0;
0;
never executed: return 0;
0
636 }-
637-
638 if ((sender !=
sender != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
639 ((void *)0)
sender != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
640 && EVP_DigestUpdate(ctx, sender, len) <= 0
EVP_DigestUpda...der, len) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
641 || EVP_MD_CTX_ctrl(ctx, 0x1d,
EVP_MD_CTX_ctr...ster_key) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
642 (int)s->session->master_key_length,
EVP_MD_CTX_ctr...ster_key) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
643 s->session->master_key) <= 0
EVP_MD_CTX_ctr...ster_key) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
644 || EVP_DigestFinal_ex(ctx, p,
EVP_DigestFina...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
645 ((void *)0)
EVP_DigestFina...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
646 ) <= 0
EVP_DigestFina...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
647 ossl_statem_fatal((s), (80), (285), ((4|64)),-
648 __FILE__-
649 ,-
650 462-
651 )-
652 ;-
653 ret = 0;-
654 }
never executed: end of block
0
655-
656 EVP_MD_CTX_free(ctx);-
657-
658 return
never executed: return ret;
ret;
never executed: return ret;
0
659}-
660-
661int ssl3_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p,-
662 size_t len, size_t *secret_size)-
663{-
664 static const unsigned char *salt[3] = {-
665-
666 (const unsigned char *)"A",-
667 (const unsigned char *)"BB",-
668 (const unsigned char *)"CCC",-
669-
670-
671-
672-
673-
674 };-
675 unsigned char buf[64];-
676 EVP_MD_CTX *ctx = EVP_MD_CTX_new();-
677 int i, ret = 1;-
678 unsigned int n;-
679 size_t ret_secret_size = 0;-
680-
681 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
682 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
683 ) {-
684 ossl_statem_fatal((s), (80), (388), ((1|64)),-
685 __FILE__-
686 ,-
687 493-
688 )-
689 ;-
690 return
never executed: return 0;
0;
never executed: return 0;
0
691 }-
692 for (i = 0; i < 3
i < 3Description
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
693 if (EVP_DigestInit_ex(ctx, s->ctx->sha1,
EVP_DigestInit...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
694 ((void *)0)
EVP_DigestInit...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
695 ) <= 0
EVP_DigestInit...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
696 || EVP_DigestUpdate(ctx, salt[i],
EVP_DigestUpda...salt[i])) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
697 strlen((const char *)salt[i])) <= 0
EVP_DigestUpda...salt[i])) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
698 || EVP_DigestUpdate(ctx, p, len) <= 0
EVP_DigestUpda..., p, len) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
699 || EVP_DigestUpdate(ctx, &(s->s3->client_random[0]),
EVP_DigestUpda...[0]), 32) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
700 32) <= 0
EVP_DigestUpda...[0]), 32) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
701 || EVP_DigestUpdate(ctx, &(s->s3->server_random[0]),
EVP_DigestUpda...[0]), 32) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
702 32) <= 0
EVP_DigestUpda...[0]), 32) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
703-
704 || EVP_DigestFinal_ex(ctx, buf, &n) <= 0
EVP_DigestFina... buf, &n) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
705 || EVP_DigestInit_ex(ctx, s->ctx->md5,
EVP_DigestInit...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
706 ((void *)0)
EVP_DigestInit...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
707 ) <= 0
EVP_DigestInit...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
708 || EVP_DigestUpdate(ctx, p, len) <= 0
EVP_DigestUpda..., p, len) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
709 || EVP_DigestUpdate(ctx, buf, n) <= 0
EVP_DigestUpda..., buf, n) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
710 || EVP_DigestFinal_ex(ctx, out, &n) <= 0
EVP_DigestFina... out, &n) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
711 ossl_statem_fatal((s), (80), (388), ((4|64)),-
712 __FILE__-
713 ,-
714 512-
715 )-
716 ;-
717 ret = 0;-
718 break;
never executed: break;
0
719 }-
720 out += n;-
721 ret_secret_size += n;-
722 }
never executed: end of block
0
723 EVP_MD_CTX_free(ctx);-
724-
725 OPENSSL_cleanse(buf, sizeof(buf));-
726 if (ret
retDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
727 *
never executed: *secret_size = ret_secret_size;
secret_size = ret_secret_size;
never executed: *secret_size = ret_secret_size;
0
728 return
never executed: return ret;
ret;
never executed: return ret;
0
729}-
730-
731int ssl3_alert_code(int code)-
732{-
733 switch (code) {-
734 case
never executed: case 0:
0:
never executed: case 0:
0
735 return
never executed: return 0;
0;
never executed: return 0;
0
736 case
never executed: case 10:
10:
never executed: case 10:
0
737 return
never executed: return 10;
10;
never executed: return 10;
0
738 case
never executed: case 20:
20:
never executed: case 20:
0
739 return
never executed: return 20;
20;
never executed: return 20;
0
740 case
never executed: case 21:
21:
never executed: case 21:
0
741 return
never executed: return 20;
20;
never executed: return 20;
0
742 case
never executed: case 22:
22:
never executed: case 22:
0
743 return
never executed: return 20;
20;
never executed: return 20;
0
744 case
never executed: case 30:
30:
never executed: case 30:
0
745 return
never executed: return 30;
30;
never executed: return 30;
0
746 case
never executed: case 40:
40:
never executed: case 40:
0
747 return
never executed: return 40;
40;
never executed: return 40;
0
748 case
never executed: case 41:
41:
never executed: case 41:
0
749 return
never executed: return 41;
41;
never executed: return 41;
0
750 case
never executed: case 42:
42:
never executed: case 42:
0
751 return
never executed: return 42;
42;
never executed: return 42;
0
752 case
never executed: case 43:
43:
never executed: case 43:
0
753 return
never executed: return 43;
43;
never executed: return 43;
0
754 case
never executed: case 44:
44:
never executed: case 44:
0
755 return
never executed: return 44;
44;
never executed: return 44;
0
756 case
never executed: case 45:
45:
never executed: case 45:
0
757 return
never executed: return 45;
45;
never executed: return 45;
0
758 case
never executed: case 46:
46:
never executed: case 46:
0
759 return
never executed: return 46;
46;
never executed: return 46;
0
760 case
never executed: case 47:
47:
never executed: case 47:
0
761 return
never executed: return 47;
47;
never executed: return 47;
0
762 case
never executed: case 48:
48:
never executed: case 48:
0
763 return
never executed: return 42;
42;
never executed: return 42;
0
764 case
never executed: case 49:
49:
never executed: case 49:
0
765 return
never executed: return 40;
40;
never executed: return 40;
0
766 case
never executed: case 50:
50:
never executed: case 50:
0
767 return
never executed: return 40;
40;
never executed: return 40;
0
768 case
never executed: case 51:
51:
never executed: case 51:
0
769 return
never executed: return 40;
40;
never executed: return 40;
0
770 case
never executed: case 60:
60:
never executed: case 60:
0
771 return
never executed: return 40;
40;
never executed: return 40;
0
772 case
never executed: case 70:
70:
never executed: case 70:
0
773 return
never executed: return 40;
40;
never executed: return 40;
0
774 case
never executed: case 71:
71:
never executed: case 71:
0
775 return
never executed: return 40;
40;
never executed: return 40;
0
776 case
never executed: case 80:
80:
never executed: case 80:
0
777 return
never executed: return 40;
40;
never executed: return 40;
0
778 case
never executed: case 90:
90:
never executed: case 90:
0
779 return
never executed: return 40;
40;
never executed: return 40;
0
780 case
never executed: case 100:
100:
never executed: case 100:
0
781 return
never executed: return -1;
-1;
never executed: return -1;
0
782 case
never executed: case 110:
110:
never executed: case 110:
0
783 return
never executed: return 40;
40;
never executed: return 40;
0
784 case
never executed: case 111:
111:
never executed: case 111:
0
785 return
never executed: return 40;
40;
never executed: return 40;
0
786 case
never executed: case 112:
112:
never executed: case 112:
0
787 return
never executed: return 40;
40;
never executed: return 40;
0
788 case
never executed: case 113:
113:
never executed: case 113:
0
789 return
never executed: return 40;
40;
never executed: return 40;
0
790 case
never executed: case 114:
114:
never executed: case 114:
0
791 return
never executed: return 40;
40;
never executed: return 40;
0
792 case
never executed: case 115:
115:
never executed: case 115:
0
793 return
never executed: return 115;
115;
never executed: return 115;
0
794 case
never executed: case 86:
86:
never executed: case 86:
0
795 return
never executed: return 86;
86;
never executed: return 86;
0
796 case
never executed: case 120:
120:
never executed: case 120:
0
797 return
never executed: return 120;
120;
never executed: return 120;
0
798 case
never executed: case 116:
116:
never executed: case 116:
0
799 return
never executed: return 40;
40;
never executed: return 40;
0
800 default
never executed: default:
:
never executed: default:
0
801 return
never executed: return -1;
-1;
never executed: return -1;
0
802 }-
803}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2