Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/ssl/t1_enc.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||
5 | - | |||||||||||||||||||||||||
6 | int tls1_PRF(SSL *s, const unsigned char *secret, size_t secret_len, | - | ||||||||||||||||||||||||
7 | const void *seed1, size_t seed1_len, const void *seed2, size_t seed2_len, | - | ||||||||||||||||||||||||
8 | const void *seed3, size_t seed3_len, const void *seed4, size_t seed4_len, | - | ||||||||||||||||||||||||
9 | const void *seed5, size_t seed5_len, unsigned char *out, size_t out_len); | - | ||||||||||||||||||||||||
10 | - | |||||||||||||||||||||||||
11 | void | - | ||||||||||||||||||||||||
12 | tls1_cleanup_key_block(SSL *s) | - | ||||||||||||||||||||||||
13 | { | - | ||||||||||||||||||||||||
14 | freezero((s->s3->internal)->hs.key_block, (s->s3->internal)->hs.key_block_len); | - | ||||||||||||||||||||||||
15 | (s->s3->internal)->hs.key_block = | - | ||||||||||||||||||||||||
16 | ((void *)0) | - | ||||||||||||||||||||||||
17 | ; | - | ||||||||||||||||||||||||
18 | (s->s3->internal)->hs.key_block_len = 0; | - | ||||||||||||||||||||||||
19 | } executed 1192 times by 11 tests: end of block Executed by:
| 1192 | ||||||||||||||||||||||||
20 | - | |||||||||||||||||||||||||
21 | int | - | ||||||||||||||||||||||||
22 | tls1_init_finished_mac(SSL *s) | - | ||||||||||||||||||||||||
23 | { | - | ||||||||||||||||||||||||
24 | BIO_free((s->s3->internal)->handshake_buffer); | - | ||||||||||||||||||||||||
25 | - | |||||||||||||||||||||||||
26 | (s->s3->internal)->handshake_buffer = BIO_new(BIO_s_mem()); | - | ||||||||||||||||||||||||
27 | if ((
| 0-139 | ||||||||||||||||||||||||
28 | ((void *)0)
| 0-139 | ||||||||||||||||||||||||
29 | ) | - | ||||||||||||||||||||||||
30 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
31 | - | |||||||||||||||||||||||||
32 | (void)(int)BIO_ctrl((s->s3->internal)->handshake_buffer,9,(0x01), | - | ||||||||||||||||||||||||
33 | ((void *)0) | - | ||||||||||||||||||||||||
34 | ); | - | ||||||||||||||||||||||||
35 | - | |||||||||||||||||||||||||
36 | return executed 139 times by 4 tests: (1);return (1); Executed by:
executed 139 times by 4 tests: return (1); Executed by:
| 139 | ||||||||||||||||||||||||
37 | } | - | ||||||||||||||||||||||||
38 | - | |||||||||||||||||||||||||
39 | int | - | ||||||||||||||||||||||||
40 | tls1_finish_mac(SSL *s, const unsigned char *buf, int len) | - | ||||||||||||||||||||||||
41 | { | - | ||||||||||||||||||||||||
42 | if (len < 0
| 0-1152 | ||||||||||||||||||||||||
43 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
44 | - | |||||||||||||||||||||||||
45 | if (!tls1_handshake_hash_update(s, buf, len)
| 0-1152 | ||||||||||||||||||||||||
46 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
47 | - | |||||||||||||||||||||||||
48 | if ((
| 352-800 | ||||||||||||||||||||||||
49 | !(s->s3->flags & 0x0020)
| 5-347 | ||||||||||||||||||||||||
50 | BIO_write((s->s3->internal)->handshake_buffer, (void *)buf, len); | - | ||||||||||||||||||||||||
51 | return executed 347 times by 4 tests: 1;return 1; Executed by:
executed 347 times by 4 tests: return 1; Executed by:
| 347 | ||||||||||||||||||||||||
52 | } | - | ||||||||||||||||||||||||
53 | - | |||||||||||||||||||||||||
54 | return executed 805 times by 3 tests: 1;return 1; Executed by:
executed 805 times by 3 tests: return 1; Executed by:
| 805 | ||||||||||||||||||||||||
55 | } | - | ||||||||||||||||||||||||
56 | - | |||||||||||||||||||||||||
57 | int | - | ||||||||||||||||||||||||
58 | tls1_digest_cached_records(SSL *s) | - | ||||||||||||||||||||||||
59 | { | - | ||||||||||||||||||||||||
60 | long hdatalen; | - | ||||||||||||||||||||||||
61 | void *hdata; | - | ||||||||||||||||||||||||
62 | - | |||||||||||||||||||||||||
63 | hdatalen = BIO_ctrl((s->s3->internal)->handshake_buffer,3,0,(char *)&hdata); | - | ||||||||||||||||||||||||
64 | if (hdatalen <= 0
| 0-128 | ||||||||||||||||||||||||
65 | SSL_error_internal(s, 332, __FILE__, 200); | - | ||||||||||||||||||||||||
66 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
67 | } | - | ||||||||||||||||||||||||
68 | - | |||||||||||||||||||||||||
69 | if (!(s->s3->flags & 0x0020)
| 5-123 | ||||||||||||||||||||||||
70 | BIO_free((s->s3->internal)->handshake_buffer); | - | ||||||||||||||||||||||||
71 | (s->s3->internal)->handshake_buffer = | - | ||||||||||||||||||||||||
72 | ((void *)0) | - | ||||||||||||||||||||||||
73 | ; | - | ||||||||||||||||||||||||
74 | } executed 123 times by 3 tests: end of block Executed by:
| 123 | ||||||||||||||||||||||||
75 | - | |||||||||||||||||||||||||
76 | return executed 128 times by 3 tests: 1;return 1; Executed by:
executed 128 times by 3 tests: return 1; Executed by:
| 128 | ||||||||||||||||||||||||
77 | - | |||||||||||||||||||||||||
78 | err: | - | ||||||||||||||||||||||||
79 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
80 | } | - | ||||||||||||||||||||||||
81 | - | |||||||||||||||||||||||||
82 | void | - | ||||||||||||||||||||||||
83 | tls1_record_sequence_increment(unsigned char *seq) | - | ||||||||||||||||||||||||
84 | { | - | ||||||||||||||||||||||||
85 | int i; | - | ||||||||||||||||||||||||
86 | - | |||||||||||||||||||||||||
87 | for (i = 8 - 1; i >= 0
| 0-752 | ||||||||||||||||||||||||
88 | if (++
| 0-752 | ||||||||||||||||||||||||
89 | break; executed 752 times by 3 tests: break; Executed by:
| 752 | ||||||||||||||||||||||||
90 | } never executed: end of block | 0 | ||||||||||||||||||||||||
91 | } executed 752 times by 3 tests: end of block Executed by:
| 752 | ||||||||||||||||||||||||
92 | - | |||||||||||||||||||||||||
93 | - | |||||||||||||||||||||||||
94 | - | |||||||||||||||||||||||||
95 | - | |||||||||||||||||||||||||
96 | static int | - | ||||||||||||||||||||||||
97 | tls1_P_hash(const EVP_MD *md, const unsigned char *secret, size_t secret_len, | - | ||||||||||||||||||||||||
98 | const void *seed1, size_t seed1_len, const void *seed2, size_t seed2_len, | - | ||||||||||||||||||||||||
99 | const void *seed3, size_t seed3_len, const void *seed4, size_t seed4_len, | - | ||||||||||||||||||||||||
100 | const void *seed5, size_t seed5_len, unsigned char *out, size_t out_len) | - | ||||||||||||||||||||||||
101 | { | - | ||||||||||||||||||||||||
102 | unsigned char A1[64], hmac[64]; | - | ||||||||||||||||||||||||
103 | size_t A1_len, hmac_len; | - | ||||||||||||||||||||||||
104 | EVP_MD_CTX ctx; | - | ||||||||||||||||||||||||
105 | EVP_PKEY *mac_key; | - | ||||||||||||||||||||||||
106 | int ret = 0; | - | ||||||||||||||||||||||||
107 | int chunk; | - | ||||||||||||||||||||||||
108 | size_t i; | - | ||||||||||||||||||||||||
109 | - | |||||||||||||||||||||||||
110 | chunk = EVP_MD_size(md); | - | ||||||||||||||||||||||||
111 | (void)((chunk >= 0) ? 0 : (OpenSSLDie(__FILE__, 244, "chunk >= 0"),1)); | - | ||||||||||||||||||||||||
112 | - | |||||||||||||||||||||||||
113 | EVP_MD_CTX_init(&ctx); | - | ||||||||||||||||||||||||
114 | - | |||||||||||||||||||||||||
115 | mac_key = EVP_PKEY_new_mac_key(855, | - | ||||||||||||||||||||||||
116 | ((void *)0) | - | ||||||||||||||||||||||||
117 | , secret, secret_len); | - | ||||||||||||||||||||||||
118 | if (!mac_key
| 0-1644 | ||||||||||||||||||||||||
119 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
120 | if (!EVP_DigestSignInit(&ctx,
| 0-1644 | ||||||||||||||||||||||||
121 | ((void *)0)
| 0-1644 | ||||||||||||||||||||||||
122 | , md,
| 0-1644 | ||||||||||||||||||||||||
123 | ((void *)0)
| 0-1644 | ||||||||||||||||||||||||
124 | , mac_key)
| 0-1644 | ||||||||||||||||||||||||
125 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
126 | if (seed1
| 0-1644 | ||||||||||||||||||||||||
127 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
128 | if (seed2
| 0-1644 | ||||||||||||||||||||||||
129 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
130 | if (seed3
| 0-952 | ||||||||||||||||||||||||
131 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
132 | if (seed4
| 0-952 | ||||||||||||||||||||||||
133 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
134 | if (seed5
| 0-876 | ||||||||||||||||||||||||
135 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
136 | if (!EVP_DigestSignFinal(&ctx, A1, &A1_len)
| 0-1644 | ||||||||||||||||||||||||
137 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
138 | - | |||||||||||||||||||||||||
139 | for (;;) { | - | ||||||||||||||||||||||||
140 | if (!EVP_DigestSignInit(&ctx,
| 0-4318 | ||||||||||||||||||||||||
141 | ((void *)0)
| 0-4318 | ||||||||||||||||||||||||
142 | , md,
| 0-4318 | ||||||||||||||||||||||||
143 | ((void *)0)
| 0-4318 | ||||||||||||||||||||||||
144 | , mac_key)
| 0-4318 | ||||||||||||||||||||||||
145 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
146 | if (!EVP_DigestUpdate(&ctx,A1,A1_len)
| 0-4318 | ||||||||||||||||||||||||
147 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
148 | if (seed1
| 0-4318 | ||||||||||||||||||||||||
149 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
150 | if (seed2
| 0-4318 | ||||||||||||||||||||||||
151 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
152 | if (seed3
| 0-3334 | ||||||||||||||||||||||||
153 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
154 | if (seed4
| 0-2728 | ||||||||||||||||||||||||
155 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
156 | if (seed5
| 0-2252 | ||||||||||||||||||||||||
157 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
158 | if (!EVP_DigestSignFinal(&ctx, hmac, &hmac_len)
| 0-4318 | ||||||||||||||||||||||||
159 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
160 | - | |||||||||||||||||||||||||
161 | if (hmac_len > out_len
| 1524-2794 | ||||||||||||||||||||||||
162 | hmac_len = out_len; executed 1524 times by 3 tests: hmac_len = out_len; Executed by:
| 1524 | ||||||||||||||||||||||||
163 | - | |||||||||||||||||||||||||
164 | for (i = 0; i < hmac_len
| 4318-85792 | ||||||||||||||||||||||||
165 | out[i] ^= hmac[i]; executed 85792 times by 3 tests: out[i] ^= hmac[i]; Executed by:
| 85792 | ||||||||||||||||||||||||
166 | - | |||||||||||||||||||||||||
167 | out += hmac_len; | - | ||||||||||||||||||||||||
168 | out_len -= hmac_len; | - | ||||||||||||||||||||||||
169 | - | |||||||||||||||||||||||||
170 | if (out_len == 0
| 1644-2674 | ||||||||||||||||||||||||
171 | break; executed 1644 times by 3 tests: break; Executed by:
| 1644 | ||||||||||||||||||||||||
172 | - | |||||||||||||||||||||||||
173 | if (!EVP_DigestSignInit(&ctx,
| 0-2674 | ||||||||||||||||||||||||
174 | ((void *)0)
| 0-2674 | ||||||||||||||||||||||||
175 | , md,
| 0-2674 | ||||||||||||||||||||||||
176 | ((void *)0)
| 0-2674 | ||||||||||||||||||||||||
177 | , mac_key)
| 0-2674 | ||||||||||||||||||||||||
178 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
179 | if (!EVP_DigestUpdate(&ctx,A1,A1_len)
| 0-2674 | ||||||||||||||||||||||||
180 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
181 | if (!EVP_DigestSignFinal(&ctx, A1, &A1_len)
| 0-2674 | ||||||||||||||||||||||||
182 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
183 | } executed 2674 times by 3 tests: end of block Executed by:
| 2674 | ||||||||||||||||||||||||
184 | ret = 1; | - | ||||||||||||||||||||||||
185 | - | |||||||||||||||||||||||||
186 | err: code before this statement executed 1644 times by 3 tests: err: Executed by:
| 1644 | ||||||||||||||||||||||||
187 | EVP_PKEY_free(mac_key); | - | ||||||||||||||||||||||||
188 | EVP_MD_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||
189 | - | |||||||||||||||||||||||||
190 | explicit_bzero(A1, sizeof(A1)); | - | ||||||||||||||||||||||||
191 | explicit_bzero(hmac, sizeof(hmac)); | - | ||||||||||||||||||||||||
192 | - | |||||||||||||||||||||||||
193 | return executed 1644 times by 3 tests: ret;return ret; Executed by:
executed 1644 times by 3 tests: return ret; Executed by:
| 1644 | ||||||||||||||||||||||||
194 | } | - | ||||||||||||||||||||||||
195 | - | |||||||||||||||||||||||||
196 | int | - | ||||||||||||||||||||||||
197 | tls1_PRF(SSL *s, const unsigned char *secret, size_t secret_len, | - | ||||||||||||||||||||||||
198 | const void *seed1, size_t seed1_len, const void *seed2, size_t seed2_len, | - | ||||||||||||||||||||||||
199 | const void *seed3, size_t seed3_len, const void *seed4, size_t seed4_len, | - | ||||||||||||||||||||||||
200 | const void *seed5, size_t seed5_len, unsigned char *out, size_t out_len) | - | ||||||||||||||||||||||||
201 | { | - | ||||||||||||||||||||||||
202 | const EVP_MD *md; | - | ||||||||||||||||||||||||
203 | size_t half_len; | - | ||||||||||||||||||||||||
204 | - | |||||||||||||||||||||||||
205 | memset(out, 0, out_len); | - | ||||||||||||||||||||||||
206 | - | |||||||||||||||||||||||||
207 | if (!ssl_get_handshake_evp_md(s, &md)
| 0-1248 | ||||||||||||||||||||||||
208 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
209 | - | |||||||||||||||||||||||||
210 | if (md->type == 114
| 396-852 | ||||||||||||||||||||||||
211 | - | |||||||||||||||||||||||||
212 | - | |||||||||||||||||||||||||
213 | - | |||||||||||||||||||||||||
214 | - | |||||||||||||||||||||||||
215 | half_len = secret_len - (secret_len / 2); | - | ||||||||||||||||||||||||
216 | if (!tls1_P_hash(EVP_md5(), secret, half_len, seed1, seed1_len,
| 0-396 | ||||||||||||||||||||||||
217 | seed2, seed2_len, seed3, seed3_len, seed4, seed4_len,
| 0-396 | ||||||||||||||||||||||||
218 | seed5, seed5_len, out, out_len)
| 0-396 | ||||||||||||||||||||||||
219 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
220 | - | |||||||||||||||||||||||||
221 | secret += secret_len - half_len; | - | ||||||||||||||||||||||||
222 | if (!tls1_P_hash(EVP_sha1(), secret, half_len, seed1, seed1_len,
| 0-396 | ||||||||||||||||||||||||
223 | seed2, seed2_len, seed3, seed3_len, seed4, seed4_len,
| 0-396 | ||||||||||||||||||||||||
224 | seed5, seed5_len, out, out_len)
| 0-396 | ||||||||||||||||||||||||
225 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
226 | - | |||||||||||||||||||||||||
227 | return executed 396 times by 2 tests: (1);return (1); Executed by:
executed 396 times by 2 tests: return (1); Executed by:
| 396 | ||||||||||||||||||||||||
228 | } | - | ||||||||||||||||||||||||
229 | - | |||||||||||||||||||||||||
230 | if (!tls1_P_hash(md, secret, secret_len, seed1, seed1_len,
| 0-852 | ||||||||||||||||||||||||
231 | seed2, seed2_len, seed3, seed3_len, seed4, seed4_len,
| 0-852 | ||||||||||||||||||||||||
232 | seed5, seed5_len, out, out_len)
| 0-852 | ||||||||||||||||||||||||
233 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
234 | - | |||||||||||||||||||||||||
235 | return executed 852 times by 3 tests: (1);return (1); Executed by:
executed 852 times by 3 tests: return (1); Executed by:
| 852 | ||||||||||||||||||||||||
236 | } | - | ||||||||||||||||||||||||
237 | - | |||||||||||||||||||||||||
238 | static int | - | ||||||||||||||||||||||||
239 | tls1_generate_key_block(SSL *s, unsigned char *km, int num) | - | ||||||||||||||||||||||||
240 | { | - | ||||||||||||||||||||||||
241 | if (num < 0
| 0-126 | ||||||||||||||||||||||||
242 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
243 | - | |||||||||||||||||||||||||
244 | return executed 126 times by 2 tests: tls1_PRF(s,return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
245 | s->session->master_key, s->session->master_key_length, executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
246 | "key expansion", 13, executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
247 | s->s3->server_random, 32, executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
248 | s->s3->client_random, 32, executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
249 | executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
250 | ((void *)0) executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
251 | , 0, executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
252 | ((void *)0) executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
253 | , 0, km, num); executed 126 times by 2 tests: return tls1_PRF(s, s->session->master_key, s->session->master_key_length, "key expansion", 13, s->s3->server_random, 32, s->s3->client_random, 32, ((void *)0) , 0, ((void *)0) , 0, km, num); Executed by:
| 126 | ||||||||||||||||||||||||
254 | } | - | ||||||||||||||||||||||||
255 | - | |||||||||||||||||||||||||
256 | - | |||||||||||||||||||||||||
257 | - | |||||||||||||||||||||||||
258 | - | |||||||||||||||||||||||||
259 | - | |||||||||||||||||||||||||
260 | static int | - | ||||||||||||||||||||||||
261 | tls1_aead_ctx_init(SSL_AEAD_CTX **aead_ctx) | - | ||||||||||||||||||||||||
262 | { | - | ||||||||||||||||||||||||
263 | if (*
| 0-92 | ||||||||||||||||||||||||
264 | ((void *)0)
| 0-92 | ||||||||||||||||||||||||
265 | ) { | - | ||||||||||||||||||||||||
266 | EVP_AEAD_CTX_cleanup(&(*aead_ctx)->ctx); | - | ||||||||||||||||||||||||
267 | return never executed: (1);return (1); never executed: return (1); | 0 | ||||||||||||||||||||||||
268 | } | - | ||||||||||||||||||||||||
269 | - | |||||||||||||||||||||||||
270 | *aead_ctx = malloc(sizeof(SSL_AEAD_CTX)); | - | ||||||||||||||||||||||||
271 | if (*
| 0-92 | ||||||||||||||||||||||||
272 | ((void *)0)
| 0-92 | ||||||||||||||||||||||||
273 | ) { | - | ||||||||||||||||||||||||
274 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,385); | - | ||||||||||||||||||||||||
275 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
276 | } | - | ||||||||||||||||||||||||
277 | - | |||||||||||||||||||||||||
278 | return executed 92 times by 2 tests: (1);return (1); Executed by:
executed 92 times by 2 tests: return (1); Executed by:
| 92 | ||||||||||||||||||||||||
279 | } | - | ||||||||||||||||||||||||
280 | - | |||||||||||||||||||||||||
281 | static int | - | ||||||||||||||||||||||||
282 | tls1_change_cipher_state_aead(SSL *s, char is_read, const unsigned char *key, | - | ||||||||||||||||||||||||
283 | unsigned key_len, const unsigned char *iv, unsigned iv_len) | - | ||||||||||||||||||||||||
284 | { | - | ||||||||||||||||||||||||
285 | const EVP_AEAD *aead = (s->s3->internal)->tmp.new_aead; | - | ||||||||||||||||||||||||
286 | SSL_AEAD_CTX *aead_ctx; | - | ||||||||||||||||||||||||
287 | - | |||||||||||||||||||||||||
288 | if (is_read
| 46 | ||||||||||||||||||||||||
289 | ssl_clear_cipher_read_state(s); | - | ||||||||||||||||||||||||
290 | if (!tls1_aead_ctx_init(&s->internal->aead_read_ctx)
| 0-46 | ||||||||||||||||||||||||
291 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
292 | aead_ctx = s->internal->aead_read_ctx; | - | ||||||||||||||||||||||||
293 | } executed 46 times by 2 tests: else {end of block Executed by:
| 46 | ||||||||||||||||||||||||
294 | - | |||||||||||||||||||||||||
295 | ssl_clear_cipher_write_state(s); | - | ||||||||||||||||||||||||
296 | if (!tls1_aead_ctx_init(&s->internal->aead_write_ctx)
| 0-46 | ||||||||||||||||||||||||
297 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
298 | aead_ctx = s->internal->aead_write_ctx; | - | ||||||||||||||||||||||||
299 | } executed 46 times by 2 tests: end of block Executed by:
| 46 | ||||||||||||||||||||||||
300 | - | |||||||||||||||||||||||||
301 | if (!EVP_AEAD_CTX_init(&aead_ctx->ctx, aead, key, key_len,
| 0-92 | ||||||||||||||||||||||||
302 | 0,
| 0-92 | ||||||||||||||||||||||||
303 | ((void *)0)
| 0-92 | ||||||||||||||||||||||||
304 | )
| 0-92 | ||||||||||||||||||||||||
305 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
306 | if (iv_len > sizeof(aead_ctx->fixed_nonce)
| 0-92 | ||||||||||||||||||||||||
307 | ERR_put_error(20,(0xfff),((4|64)),__FILE__,416); | - | ||||||||||||||||||||||||
308 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
309 | } | - | ||||||||||||||||||||||||
310 | memcpy(aead_ctx->fixed_nonce, iv, iv_len); | - | ||||||||||||||||||||||||
311 | aead_ctx->fixed_nonce_len = iv_len; | - | ||||||||||||||||||||||||
312 | aead_ctx->variable_nonce_len = 8; | - | ||||||||||||||||||||||||
313 | aead_ctx->variable_nonce_in_record = | - | ||||||||||||||||||||||||
314 | ((s->s3->internal)->hs.new_cipher->algorithm2 & | - | ||||||||||||||||||||||||
315 | (1 << 22)) != 0; | - | ||||||||||||||||||||||||
316 | aead_ctx->xor_fixed_nonce = | - | ||||||||||||||||||||||||
317 | (s->s3->internal)->hs.new_cipher->algorithm_enc == 0x00001000L; | - | ||||||||||||||||||||||||
318 | aead_ctx->tag_len = EVP_AEAD_max_overhead(aead); | - | ||||||||||||||||||||||||
319 | - | |||||||||||||||||||||||||
320 | if (aead_ctx->xor_fixed_nonce
| 24-68 | ||||||||||||||||||||||||
321 | if (aead_ctx->fixed_nonce_len != EVP_AEAD_nonce_length(aead)
| 0-68 | ||||||||||||||||||||||||
322 | aead_ctx->variable_nonce_len > EVP_AEAD_nonce_length(aead)
| 0-68 | ||||||||||||||||||||||||
323 | ERR_put_error(20,(0xfff),((4|64)),__FILE__,432); | - | ||||||||||||||||||||||||
324 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
325 | } | - | ||||||||||||||||||||||||
326 | } executed 68 times by 2 tests: else {end of block Executed by:
| 68 | ||||||||||||||||||||||||
327 | if (aead_ctx->variable_nonce_len + aead_ctx->fixed_nonce_len !=
| 0-24 | ||||||||||||||||||||||||
328 | EVP_AEAD_nonce_length(aead)
| 0-24 | ||||||||||||||||||||||||
329 | ERR_put_error(20,(0xfff),((4|64)),__FILE__,438); | - | ||||||||||||||||||||||||
330 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
331 | } | - | ||||||||||||||||||||||||
332 | } executed 24 times by 1 test: end of block Executed by:
| 24 | ||||||||||||||||||||||||
333 | - | |||||||||||||||||||||||||
334 | return executed 92 times by 2 tests: (1);return (1); Executed by:
executed 92 times by 2 tests: return (1); Executed by:
| 92 | ||||||||||||||||||||||||
335 | } | - | ||||||||||||||||||||||||
336 | - | |||||||||||||||||||||||||
337 | - | |||||||||||||||||||||||||
338 | - | |||||||||||||||||||||||||
339 | - | |||||||||||||||||||||||||
340 | - | |||||||||||||||||||||||||
341 | - | |||||||||||||||||||||||||
342 | - | |||||||||||||||||||||||||
343 | static int | - | ||||||||||||||||||||||||
344 | tls1_change_cipher_state_cipher(SSL *s, char is_read, | - | ||||||||||||||||||||||||
345 | const unsigned char *mac_secret, unsigned int mac_secret_size, | - | ||||||||||||||||||||||||
346 | const unsigned char *key, unsigned int key_len, const unsigned char *iv, | - | ||||||||||||||||||||||||
347 | unsigned int iv_len) | - | ||||||||||||||||||||||||
348 | { | - | ||||||||||||||||||||||||
349 | EVP_CIPHER_CTX *cipher_ctx; | - | ||||||||||||||||||||||||
350 | const EVP_CIPHER *cipher; | - | ||||||||||||||||||||||||
351 | EVP_MD_CTX *mac_ctx; | - | ||||||||||||||||||||||||
352 | EVP_PKEY *mac_key; | - | ||||||||||||||||||||||||
353 | const EVP_MD *mac; | - | ||||||||||||||||||||||||
354 | int mac_type; | - | ||||||||||||||||||||||||
355 | - | |||||||||||||||||||||||||
356 | cipher = (s->s3->internal)->tmp.new_sym_enc; | - | ||||||||||||||||||||||||
357 | mac = (s->s3->internal)->tmp.new_hash; | - | ||||||||||||||||||||||||
358 | mac_type = (s->s3->internal)->tmp.new_mac_pkey_type; | - | ||||||||||||||||||||||||
359 | - | |||||||||||||||||||||||||
360 | if (is_read
| 80 | ||||||||||||||||||||||||
361 | if ((
| 0-80 | ||||||||||||||||||||||||
362 | s->internal->mac_flags |= 1; never executed: s->internal->mac_flags |= 1; | 0 | ||||||||||||||||||||||||
363 | else | - | ||||||||||||||||||||||||
364 | s->internal->mac_flags &= ~1; executed 80 times by 1 test: s->internal->mac_flags &= ~1; Executed by:
| 80 | ||||||||||||||||||||||||
365 | - | |||||||||||||||||||||||||
366 | ssl_clear_cipher_read_state(s); | - | ||||||||||||||||||||||||
367 | - | |||||||||||||||||||||||||
368 | if ((
| 0-80 | ||||||||||||||||||||||||
369 | ((void *)0)
| 0-80 | ||||||||||||||||||||||||
370 | ) | - | ||||||||||||||||||||||||
371 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
372 | s->enc_read_ctx = cipher_ctx; | - | ||||||||||||||||||||||||
373 | if ((
| 0-80 | ||||||||||||||||||||||||
374 | ((void *)0)
| 0-80 | ||||||||||||||||||||||||
375 | ) | - | ||||||||||||||||||||||||
376 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
377 | s->read_hash = mac_ctx; | - | ||||||||||||||||||||||||
378 | } executed 80 times by 1 test: else {end of block Executed by:
| 80 | ||||||||||||||||||||||||
379 | if ((
| 0-80 | ||||||||||||||||||||||||
380 | s->internal->mac_flags |= 2; never executed: s->internal->mac_flags |= 2; | 0 | ||||||||||||||||||||||||
381 | else | - | ||||||||||||||||||||||||
382 | s->internal->mac_flags &= ~2; executed 80 times by 1 test: s->internal->mac_flags &= ~2; Executed by:
| 80 | ||||||||||||||||||||||||
383 | if (!(s->method->internal->version == 0xFEFF)
| 22-58 | ||||||||||||||||||||||||
384 | ssl_clear_cipher_write_state(s); executed 58 times by 1 test: ssl_clear_cipher_write_state(s); Executed by:
| 58 | ||||||||||||||||||||||||
385 | - | |||||||||||||||||||||||||
386 | if ((
| 0-80 | ||||||||||||||||||||||||
387 | ((void *)0)
| 0-80 | ||||||||||||||||||||||||
388 | ) | - | ||||||||||||||||||||||||
389 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
390 | s->internal->enc_write_ctx = cipher_ctx; | - | ||||||||||||||||||||||||
391 | if ((
| 0-80 | ||||||||||||||||||||||||
392 | ((void *)0)
| 0-80 | ||||||||||||||||||||||||
393 | ) | - | ||||||||||||||||||||||||
394 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
395 | s->internal->write_hash = mac_ctx; | - | ||||||||||||||||||||||||
396 | } executed 80 times by 1 test: end of block Executed by:
| 80 | ||||||||||||||||||||||||
397 | - | |||||||||||||||||||||||||
398 | EVP_CipherInit_ex(cipher_ctx, cipher, | - | ||||||||||||||||||||||||
399 | ((void *)0) | - | ||||||||||||||||||||||||
400 | , key, iv, !is_read); | - | ||||||||||||||||||||||||
401 | - | |||||||||||||||||||||||||
402 | if ((
| 0-160 | ||||||||||||||||||||||||
403 | ((void *)0)
| 0-160 | ||||||||||||||||||||||||
404 | , mac_secret,
| 0-160 | ||||||||||||||||||||||||
405 | mac_secret_size)) ==
| 0-160 | ||||||||||||||||||||||||
406 | ((void *)0)
| 0-160 | ||||||||||||||||||||||||
407 | ) | - | ||||||||||||||||||||||||
408 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
409 | EVP_DigestSignInit(mac_ctx, | - | ||||||||||||||||||||||||
410 | ((void *)0) | - | ||||||||||||||||||||||||
411 | , mac, | - | ||||||||||||||||||||||||
412 | ((void *)0) | - | ||||||||||||||||||||||||
413 | , mac_key); | - | ||||||||||||||||||||||||
414 | EVP_PKEY_free(mac_key); | - | ||||||||||||||||||||||||
415 | - | |||||||||||||||||||||||||
416 | if ((
| 0-160 | ||||||||||||||||||||||||
417 | int nid; | - | ||||||||||||||||||||||||
418 | if ((
| 0 | ||||||||||||||||||||||||
419 | nid = 824; never executed: nid = 824; | 0 | ||||||||||||||||||||||||
420 | else | - | ||||||||||||||||||||||||
421 | nid = 945; never executed: nid = 945; | 0 | ||||||||||||||||||||||||
422 | - | |||||||||||||||||||||||||
423 | EVP_CIPHER_CTX_ctrl(cipher_ctx, 0x19, nid, 0); | - | ||||||||||||||||||||||||
424 | if ((
| 0 | ||||||||||||||||||||||||
425 | EVP_MD_CTX_ctrl(mac_ctx, 0x4, nid, 0); never executed: EVP_MD_CTX_ctrl(mac_ctx, 0x4, nid, 0); | 0 | ||||||||||||||||||||||||
426 | } never executed: end of block | 0 | ||||||||||||||||||||||||
427 | - | |||||||||||||||||||||||||
428 | return executed 160 times by 1 test: (1);return (1); Executed by:
executed 160 times by 1 test: return (1); Executed by:
| 160 | ||||||||||||||||||||||||
429 | - | |||||||||||||||||||||||||
430 | err: | - | ||||||||||||||||||||||||
431 | ERR_put_error(20,(0xfff),((1|64)),__FILE__,530); | - | ||||||||||||||||||||||||
432 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
433 | } | - | ||||||||||||||||||||||||
434 | - | |||||||||||||||||||||||||
435 | int | - | ||||||||||||||||||||||||
436 | tls1_change_cipher_state(SSL *s, int which) | - | ||||||||||||||||||||||||
437 | { | - | ||||||||||||||||||||||||
438 | const unsigned char *client_write_mac_secret, *server_write_mac_secret; | - | ||||||||||||||||||||||||
439 | const unsigned char *client_write_key, *server_write_key; | - | ||||||||||||||||||||||||
440 | const unsigned char *client_write_iv, *server_write_iv; | - | ||||||||||||||||||||||||
441 | const unsigned char *mac_secret, *key, *iv; | - | ||||||||||||||||||||||||
442 | int mac_secret_size, key_len, iv_len; | - | ||||||||||||||||||||||||
443 | unsigned char *key_block, *seq; | - | ||||||||||||||||||||||||
444 | const EVP_CIPHER *cipher; | - | ||||||||||||||||||||||||
445 | const EVP_AEAD *aead; | - | ||||||||||||||||||||||||
446 | char is_read, use_client_keys; | - | ||||||||||||||||||||||||
447 | - | |||||||||||||||||||||||||
448 | cipher = (s->s3->internal)->tmp.new_sym_enc; | - | ||||||||||||||||||||||||
449 | aead = (s->s3->internal)->tmp.new_aead; | - | ||||||||||||||||||||||||
450 | - | |||||||||||||||||||||||||
451 | - | |||||||||||||||||||||||||
452 | - | |||||||||||||||||||||||||
453 | - | |||||||||||||||||||||||||
454 | - | |||||||||||||||||||||||||
455 | - | |||||||||||||||||||||||||
456 | is_read = (which & 0x01) != 0; | - | ||||||||||||||||||||||||
457 | - | |||||||||||||||||||||||||
458 | - | |||||||||||||||||||||||||
459 | - | |||||||||||||||||||||||||
460 | - | |||||||||||||||||||||||||
461 | - | |||||||||||||||||||||||||
462 | - | |||||||||||||||||||||||||
463 | use_client_keys = ((
| 63-189 | ||||||||||||||||||||||||
464 | (
| 63-126 | ||||||||||||||||||||||||
465 | - | |||||||||||||||||||||||||
466 | - | |||||||||||||||||||||||||
467 | - | |||||||||||||||||||||||||
468 | - | |||||||||||||||||||||||||
469 | - | |||||||||||||||||||||||||
470 | if (!(s->method->internal->version == 0xFEFF)
| 44-208 | ||||||||||||||||||||||||
471 | seq = is_read
| 104 | ||||||||||||||||||||||||
472 | memset(seq, 0, 8); | - | ||||||||||||||||||||||||
473 | } executed 208 times by 2 tests: end of block Executed by:
| 208 | ||||||||||||||||||||||||
474 | - | |||||||||||||||||||||||||
475 | if (aead !=
| 92-160 | ||||||||||||||||||||||||
476 | ((void *)0)
| 92-160 | ||||||||||||||||||||||||
477 | ) { | - | ||||||||||||||||||||||||
478 | key_len = EVP_AEAD_key_length(aead); | - | ||||||||||||||||||||||||
479 | iv_len = ((((s->s3->internal)->hs.new_cipher->algorithm2 >> 24) & 0xf) * 2); | - | ||||||||||||||||||||||||
480 | } executed 92 times by 2 tests: else {end of block Executed by:
| 92 | ||||||||||||||||||||||||
481 | key_len = EVP_CIPHER_key_length(cipher); | - | ||||||||||||||||||||||||
482 | iv_len = EVP_CIPHER_iv_length(cipher); | - | ||||||||||||||||||||||||
483 | } executed 160 times by 1 test: end of block Executed by:
| 160 | ||||||||||||||||||||||||
484 | - | |||||||||||||||||||||||||
485 | mac_secret_size = s->s3->tmp.new_mac_secret_size; | - | ||||||||||||||||||||||||
486 | - | |||||||||||||||||||||||||
487 | key_block = (s->s3->internal)->hs.key_block; | - | ||||||||||||||||||||||||
488 | client_write_mac_secret = key_block; | - | ||||||||||||||||||||||||
489 | key_block += mac_secret_size; | - | ||||||||||||||||||||||||
490 | server_write_mac_secret = key_block; | - | ||||||||||||||||||||||||
491 | key_block += mac_secret_size; | - | ||||||||||||||||||||||||
492 | client_write_key = key_block; | - | ||||||||||||||||||||||||
493 | key_block += key_len; | - | ||||||||||||||||||||||||
494 | server_write_key = key_block; | - | ||||||||||||||||||||||||
495 | key_block += key_len; | - | ||||||||||||||||||||||||
496 | client_write_iv = key_block; | - | ||||||||||||||||||||||||
497 | key_block += iv_len; | - | ||||||||||||||||||||||||
498 | server_write_iv = key_block; | - | ||||||||||||||||||||||||
499 | key_block += iv_len; | - | ||||||||||||||||||||||||
500 | - | |||||||||||||||||||||||||
501 | if (use_client_keys
| 126 | ||||||||||||||||||||||||
502 | mac_secret = client_write_mac_secret; | - | ||||||||||||||||||||||||
503 | key = client_write_key; | - | ||||||||||||||||||||||||
504 | iv = client_write_iv; | - | ||||||||||||||||||||||||
505 | } executed 126 times by 2 tests: else {end of block Executed by:
| 126 | ||||||||||||||||||||||||
506 | mac_secret = server_write_mac_secret; | - | ||||||||||||||||||||||||
507 | key = server_write_key; | - | ||||||||||||||||||||||||
508 | iv = server_write_iv; | - | ||||||||||||||||||||||||
509 | } executed 126 times by 2 tests: end of block Executed by:
| 126 | ||||||||||||||||||||||||
510 | - | |||||||||||||||||||||||||
511 | if (key_block - (s->s3->internal)->hs.key_block != (s->s3->internal)->hs.key_block_len
| 0-252 | ||||||||||||||||||||||||
512 | SSL_error_internal(s, (4|64), __FILE__, 609); | - | ||||||||||||||||||||||||
513 | goto never executed: err2;goto err2; never executed: goto err2; | 0 | ||||||||||||||||||||||||
514 | } | - | ||||||||||||||||||||||||
515 | - | |||||||||||||||||||||||||
516 | if (is_read
| 126 | ||||||||||||||||||||||||
517 | memcpy((s->s3->internal)->read_mac_secret, mac_secret, mac_secret_size); | - | ||||||||||||||||||||||||
518 | (s->s3->internal)->read_mac_secret_size = mac_secret_size; | - | ||||||||||||||||||||||||
519 | } executed 126 times by 2 tests: else {end of block Executed by:
| 126 | ||||||||||||||||||||||||
520 | memcpy((s->s3->internal)->write_mac_secret, mac_secret, mac_secret_size); | - | ||||||||||||||||||||||||
521 | (s->s3->internal)->write_mac_secret_size = mac_secret_size; | - | ||||||||||||||||||||||||
522 | } executed 126 times by 2 tests: end of block Executed by:
| 126 | ||||||||||||||||||||||||
523 | - | |||||||||||||||||||||||||
524 | if (aead !=
| 92-160 | ||||||||||||||||||||||||
525 | ((void *)0)
| 92-160 | ||||||||||||||||||||||||
526 | ) { | - | ||||||||||||||||||||||||
527 | return executed 92 times by 2 tests: tls1_change_cipher_state_aead(s, is_read, key, key_len,return tls1_change_cipher_state_aead(s, is_read, key, key_len, iv, iv_len); Executed by:
executed 92 times by 2 tests: return tls1_change_cipher_state_aead(s, is_read, key, key_len, iv, iv_len); Executed by:
| 92 | ||||||||||||||||||||||||
528 | iv, iv_len); executed 92 times by 2 tests: return tls1_change_cipher_state_aead(s, is_read, key, key_len, iv, iv_len); Executed by:
| 92 | ||||||||||||||||||||||||
529 | } | - | ||||||||||||||||||||||||
530 | - | |||||||||||||||||||||||||
531 | return executed 160 times by 1 test: tls1_change_cipher_state_cipher(s, is_read,return tls1_change_cipher_state_cipher(s, is_read, mac_secret, mac_secret_size, key, key_len, iv, iv_len); Executed by:
executed 160 times by 1 test: return tls1_change_cipher_state_cipher(s, is_read, mac_secret, mac_secret_size, key, key_len, iv, iv_len); Executed by:
| 160 | ||||||||||||||||||||||||
532 | mac_secret, mac_secret_size, key, key_len, iv, iv_len); executed 160 times by 1 test: return tls1_change_cipher_state_cipher(s, is_read, mac_secret, mac_secret_size, key, key_len, iv, iv_len); Executed by:
| 160 | ||||||||||||||||||||||||
533 | - | |||||||||||||||||||||||||
534 | err2: | - | ||||||||||||||||||||||||
535 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
536 | } | - | ||||||||||||||||||||||||
537 | - | |||||||||||||||||||||||||
538 | int | - | ||||||||||||||||||||||||
539 | tls1_setup_key_block(SSL *s) | - | ||||||||||||||||||||||||
540 | { | - | ||||||||||||||||||||||||
541 | unsigned char *key_block; | - | ||||||||||||||||||||||||
542 | int mac_type = 0, mac_secret_size = 0; | - | ||||||||||||||||||||||||
543 | int key_block_len, key_len, iv_len; | - | ||||||||||||||||||||||||
544 | const EVP_CIPHER *cipher = | - | ||||||||||||||||||||||||
545 | ((void *)0) | - | ||||||||||||||||||||||||
546 | ; | - | ||||||||||||||||||||||||
547 | const EVP_AEAD *aead = | - | ||||||||||||||||||||||||
548 | ((void *)0) | - | ||||||||||||||||||||||||
549 | ; | - | ||||||||||||||||||||||||
550 | const EVP_MD *mac = | - | ||||||||||||||||||||||||
551 | ((void *)0) | - | ||||||||||||||||||||||||
552 | ; | - | ||||||||||||||||||||||||
553 | int ret = 0; | - | ||||||||||||||||||||||||
554 | - | |||||||||||||||||||||||||
555 | if ((
| 63-126 | ||||||||||||||||||||||||
556 | return executed 63 times by 2 tests: (1);return (1); Executed by:
executed 63 times by 2 tests: return (1); Executed by:
| 63 | ||||||||||||||||||||||||
557 | - | |||||||||||||||||||||||||
558 | if (s->session->cipher
| 0-126 | ||||||||||||||||||||||||
559 | (
| 46-80 | ||||||||||||||||||||||||
560 | if (!ssl_cipher_get_evp_aead(s->session, &aead)
| 0-46 | ||||||||||||||||||||||||
561 | SSL_error_internal(s, 138, __FILE__, 650); | - | ||||||||||||||||||||||||
562 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
563 | } | - | ||||||||||||||||||||||||
564 | key_len = EVP_AEAD_key_length(aead); | - | ||||||||||||||||||||||||
565 | iv_len = (((s->session->cipher->algorithm2 >> 24) & 0xf) * 2); | - | ||||||||||||||||||||||||
566 | } executed 46 times by 2 tests: else {end of block Executed by:
| 46 | ||||||||||||||||||||||||
567 | if (!ssl_cipher_get_evp(s->session, &cipher, &mac, &mac_type,
| 0-80 | ||||||||||||||||||||||||
568 | &mac_secret_size)
| 0-80 | ||||||||||||||||||||||||
569 | SSL_error_internal(s, 138, __FILE__, 658); | - | ||||||||||||||||||||||||
570 | return never executed: (0);return (0); never executed: return (0); | 0 | ||||||||||||||||||||||||
571 | } | - | ||||||||||||||||||||||||
572 | key_len = EVP_CIPHER_key_length(cipher); | - | ||||||||||||||||||||||||
573 | iv_len = EVP_CIPHER_iv_length(cipher); | - | ||||||||||||||||||||||||
574 | } executed 80 times by 1 test: end of block Executed by:
| 80 | ||||||||||||||||||||||||
575 | - | |||||||||||||||||||||||||
576 | (s->s3->internal)->tmp.new_aead = aead; | - | ||||||||||||||||||||||||
577 | (s->s3->internal)->tmp.new_sym_enc = cipher; | - | ||||||||||||||||||||||||
578 | (s->s3->internal)->tmp.new_hash = mac; | - | ||||||||||||||||||||||||
579 | (s->s3->internal)->tmp.new_mac_pkey_type = mac_type; | - | ||||||||||||||||||||||||
580 | s->s3->tmp.new_mac_secret_size = mac_secret_size; | - | ||||||||||||||||||||||||
581 | - | |||||||||||||||||||||||||
582 | tls1_cleanup_key_block(s); | - | ||||||||||||||||||||||||
583 | - | |||||||||||||||||||||||||
584 | if ((
| 0-126 | ||||||||||||||||||||||||
585 | ((void *)0)
| 0-126 | ||||||||||||||||||||||||
586 | , mac_secret_size + key_len + iv_len,
| 0-126 | ||||||||||||||||||||||||
587 | 2)) ==
| 0-126 | ||||||||||||||||||||||||
588 | ((void *)0)
| 0-126 | ||||||||||||||||||||||||
589 | ) { | - | ||||||||||||||||||||||||
590 | SSL_error_internal(s, (1|64), __FILE__, 675); | - | ||||||||||||||||||||||||
591 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
592 | } | - | ||||||||||||||||||||||||
593 | key_block_len = (mac_secret_size + key_len + iv_len) * 2; | - | ||||||||||||||||||||||||
594 | - | |||||||||||||||||||||||||
595 | (s->s3->internal)->hs.key_block_len = key_block_len; | - | ||||||||||||||||||||||||
596 | (s->s3->internal)->hs.key_block = key_block; | - | ||||||||||||||||||||||||
597 | - | |||||||||||||||||||||||||
598 | if (!tls1_generate_key_block(s, key_block, key_block_len)
| 0-126 | ||||||||||||||||||||||||
599 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
600 | - | |||||||||||||||||||||||||
601 | if (!(s->internal->options & 0x00000800L)
| 0-126 | ||||||||||||||||||||||||
602 | s->method->internal->version <= 0x0301
| 36-90 | ||||||||||||||||||||||||
603 | - | |||||||||||||||||||||||||
604 | - | |||||||||||||||||||||||||
605 | - | |||||||||||||||||||||||||
606 | - | |||||||||||||||||||||||||
607 | (s->s3->internal)->need_empty_fragments = 1; | - | ||||||||||||||||||||||||
608 | - | |||||||||||||||||||||||||
609 | if (s->session->cipher !=
| 0-36 | ||||||||||||||||||||||||
610 | ((void *)0)
| 0-36 | ||||||||||||||||||||||||
611 | ) { | - | ||||||||||||||||||||||||
612 | if (s->session->cipher->algorithm_enc == 0x00000010L
| 0-36 | ||||||||||||||||||||||||
613 | ( never executed: s->s3->internal)->need_empty_fragments = 0;(s->s3->internal)->need_empty_fragments = 0; never executed: (s->s3->internal)->need_empty_fragments = 0; | 0 | ||||||||||||||||||||||||
614 | - | |||||||||||||||||||||||||
615 | - | |||||||||||||||||||||||||
616 | if (s->session->cipher->algorithm_enc == 0x00000004L
| 0-36 | ||||||||||||||||||||||||
617 | ( never executed: s->s3->internal)->need_empty_fragments = 0;(s->s3->internal)->need_empty_fragments = 0; never executed: (s->s3->internal)->need_empty_fragments = 0; | 0 | ||||||||||||||||||||||||
618 | - | |||||||||||||||||||||||||
619 | } executed 36 times by 1 test: end of block Executed by:
| 36 | ||||||||||||||||||||||||
620 | } executed 36 times by 1 test: end of block Executed by:
| 36 | ||||||||||||||||||||||||
621 | - | |||||||||||||||||||||||||
622 | ret = 1; | - | ||||||||||||||||||||||||
623 | - | |||||||||||||||||||||||||
624 | err: code before this statement executed 126 times by 2 tests: err: Executed by:
| 126 | ||||||||||||||||||||||||
625 | return executed 126 times by 2 tests: (ret);return (ret); Executed by:
executed 126 times by 2 tests: return (ret); Executed by:
| 126 | ||||||||||||||||||||||||
626 | } | - | ||||||||||||||||||||||||
627 | int | - | ||||||||||||||||||||||||
628 | tls1_enc(SSL *s, int send) | - | ||||||||||||||||||||||||
629 | { | - | ||||||||||||||||||||||||
630 | const SSL_AEAD_CTX *aead; | - | ||||||||||||||||||||||||
631 | const EVP_CIPHER *enc; | - | ||||||||||||||||||||||||
632 | EVP_CIPHER_CTX *ds; | - | ||||||||||||||||||||||||
633 | SSL3_RECORD *rec; | - | ||||||||||||||||||||||||
634 | unsigned char *seq; | - | ||||||||||||||||||||||||
635 | unsigned long l; | - | ||||||||||||||||||||||||
636 | int bs, i, j, k, pad = 0, ret, mac_size = 0; | - | ||||||||||||||||||||||||
637 | - | |||||||||||||||||||||||||
638 | if (send
| 700-820 | ||||||||||||||||||||||||
639 | aead = s->internal->aead_write_ctx; | - | ||||||||||||||||||||||||
640 | rec = &(s->s3->internal)->wrec; | - | ||||||||||||||||||||||||
641 | seq = (s->s3->internal)->write_sequence; | - | ||||||||||||||||||||||||
642 | } executed 820 times by 4 tests: else {end of block Executed by:
| 820 | ||||||||||||||||||||||||
643 | aead = s->internal->aead_read_ctx; | - | ||||||||||||||||||||||||
644 | rec = &(s->s3->internal)->rrec; | - | ||||||||||||||||||||||||
645 | seq = (s->s3->internal)->read_sequence; | - | ||||||||||||||||||||||||
646 | } executed 700 times by 3 tests: end of block Executed by:
| 700 | ||||||||||||||||||||||||
647 | - | |||||||||||||||||||||||||
648 | if (aead
| 214-1306 | ||||||||||||||||||||||||
649 | unsigned char ad[13], *in, *out, nonce[16]; | - | ||||||||||||||||||||||||
650 | size_t out_len, pad_len = 0; | - | ||||||||||||||||||||||||
651 | unsigned int nonce_used; | - | ||||||||||||||||||||||||
652 | - | |||||||||||||||||||||||||
653 | if ((
| 0-214 | ||||||||||||||||||||||||
654 | dtls1_build_sequence_number(ad, seq, | - | ||||||||||||||||||||||||
655 | send ? (s->d1->internal)->w_epoch : (s->d1->internal)->r_epoch); | - | ||||||||||||||||||||||||
656 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
657 | memcpy(ad, seq, 8); | - | ||||||||||||||||||||||||
658 | tls1_record_sequence_increment(seq); | - | ||||||||||||||||||||||||
659 | } executed 214 times by 2 tests: end of block Executed by:
| 214 | ||||||||||||||||||||||||
660 | - | |||||||||||||||||||||||||
661 | ad[8] = rec->type; | - | ||||||||||||||||||||||||
662 | ad[9] = (unsigned char)(s->version >> 8); | - | ||||||||||||||||||||||||
663 | ad[10] = (unsigned char)(s->version); | - | ||||||||||||||||||||||||
664 | - | |||||||||||||||||||||||||
665 | if (aead->variable_nonce_len > 8
| 0-214 | ||||||||||||||||||||||||
666 | aead->variable_nonce_len > sizeof(nonce)
| 0-214 | ||||||||||||||||||||||||
667 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
668 | - | |||||||||||||||||||||||||
669 | if (aead->xor_fixed_nonce
| 60-154 | ||||||||||||||||||||||||
670 | if (aead->fixed_nonce_len > sizeof(nonce)
| 0-154 | ||||||||||||||||||||||||
671 | aead->variable_nonce_len > aead->fixed_nonce_len
| 0-154 | ||||||||||||||||||||||||
672 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
673 | pad_len = aead->fixed_nonce_len - aead->variable_nonce_len; | - | ||||||||||||||||||||||||
674 | } executed 154 times by 2 tests: else {end of block Executed by:
| 154 | ||||||||||||||||||||||||
675 | if (aead->fixed_nonce_len +
| 0-60 | ||||||||||||||||||||||||
676 | aead->variable_nonce_len > sizeof(nonce)
| 0-60 | ||||||||||||||||||||||||
677 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
678 | } executed 60 times by 1 test: end of block Executed by:
| 60 | ||||||||||||||||||||||||
679 | - | |||||||||||||||||||||||||
680 | if (send
| 84-130 | ||||||||||||||||||||||||
681 | size_t len = rec->length; | - | ||||||||||||||||||||||||
682 | size_t eivlen = 0; | - | ||||||||||||||||||||||||
683 | in = rec->input; | - | ||||||||||||||||||||||||
684 | out = rec->data; | - | ||||||||||||||||||||||||
685 | - | |||||||||||||||||||||||||
686 | if (aead->xor_fixed_nonce
| 36-94 | ||||||||||||||||||||||||
687 | - | |||||||||||||||||||||||||
688 | - | |||||||||||||||||||||||||
689 | - | |||||||||||||||||||||||||
690 | - | |||||||||||||||||||||||||
691 | - | |||||||||||||||||||||||||
692 | memset(nonce, 0, pad_len); | - | ||||||||||||||||||||||||
693 | memcpy(nonce + pad_len, ad, | - | ||||||||||||||||||||||||
694 | aead->variable_nonce_len); | - | ||||||||||||||||||||||||
695 | for (i = 0; i < aead->fixed_nonce_len
| 94-1128 | ||||||||||||||||||||||||
696 | nonce[i] ^= aead->fixed_nonce[i]; executed 1128 times by 2 tests: nonce[i] ^= aead->fixed_nonce[i]; Executed by:
| 1128 | ||||||||||||||||||||||||
697 | nonce_used = aead->fixed_nonce_len; | - | ||||||||||||||||||||||||
698 | } executed 94 times by 2 tests: else {end of block Executed by:
| 94 | ||||||||||||||||||||||||
699 | - | |||||||||||||||||||||||||
700 | - | |||||||||||||||||||||||||
701 | - | |||||||||||||||||||||||||
702 | - | |||||||||||||||||||||||||
703 | memcpy(nonce, aead->fixed_nonce, | - | ||||||||||||||||||||||||
704 | aead->fixed_nonce_len); | - | ||||||||||||||||||||||||
705 | nonce_used = aead->fixed_nonce_len; | - | ||||||||||||||||||||||||
706 | memcpy(nonce + nonce_used, ad, | - | ||||||||||||||||||||||||
707 | aead->variable_nonce_len); | - | ||||||||||||||||||||||||
708 | nonce_used += aead->variable_nonce_len; | - | ||||||||||||||||||||||||
709 | } executed 36 times by 1 test: end of block Executed by:
| 36 | ||||||||||||||||||||||||
710 | if (aead->variable_nonce_in_record
| 36-94 | ||||||||||||||||||||||||
711 | memcpy(out, ad, aead->variable_nonce_len); | - | ||||||||||||||||||||||||
712 | len -= aead->variable_nonce_len; | - | ||||||||||||||||||||||||
713 | eivlen = aead->variable_nonce_len; | - | ||||||||||||||||||||||||
714 | } executed 36 times by 1 test: end of block Executed by:
| 36 | ||||||||||||||||||||||||
715 | - | |||||||||||||||||||||||||
716 | ad[11] = len >> 8; | - | ||||||||||||||||||||||||
717 | ad[12] = len & 0xff; | - | ||||||||||||||||||||||||
718 | - | |||||||||||||||||||||||||
719 | if (!EVP_AEAD_CTX_seal(&aead->ctx,
| 0-130 | ||||||||||||||||||||||||
720 | out + eivlen, &out_len, len + aead->tag_len, nonce,
| 0-130 | ||||||||||||||||||||||||
721 | nonce_used, in + eivlen, len, ad, sizeof(ad))
| 0-130 | ||||||||||||||||||||||||
722 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
723 | if (aead->variable_nonce_in_record
| 36-94 | ||||||||||||||||||||||||
724 | out_len += aead->variable_nonce_len; executed 36 times by 1 test: out_len += aead->variable_nonce_len; Executed by:
| 36 | ||||||||||||||||||||||||
725 | } executed 130 times by 2 tests: else {end of block Executed by:
| 130 | ||||||||||||||||||||||||
726 | - | |||||||||||||||||||||||||
727 | size_t len = rec->length; | - | ||||||||||||||||||||||||
728 | - | |||||||||||||||||||||||||
729 | if (rec->data != rec->input
| 0-84 | ||||||||||||||||||||||||
730 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
731 | out = in = rec->input; | - | ||||||||||||||||||||||||
732 | - | |||||||||||||||||||||||||
733 | if (len < aead->variable_nonce_len
| 0-84 | ||||||||||||||||||||||||
734 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
735 | - | |||||||||||||||||||||||||
736 | if (aead->xor_fixed_nonce
| 24-60 | ||||||||||||||||||||||||
737 | - | |||||||||||||||||||||||||
738 | - | |||||||||||||||||||||||||
739 | - | |||||||||||||||||||||||||
740 | - | |||||||||||||||||||||||||
741 | - | |||||||||||||||||||||||||
742 | memset(nonce, 0, pad_len); | - | ||||||||||||||||||||||||
743 | memcpy(nonce + pad_len, ad, | - | ||||||||||||||||||||||||
744 | aead->variable_nonce_len); | - | ||||||||||||||||||||||||
745 | for (i = 0; i < aead->fixed_nonce_len
| 60-720 | ||||||||||||||||||||||||
746 | nonce[i] ^= aead->fixed_nonce[i]; executed 720 times by 2 tests: nonce[i] ^= aead->fixed_nonce[i]; Executed by:
| 720 | ||||||||||||||||||||||||
747 | nonce_used = aead->fixed_nonce_len; | - | ||||||||||||||||||||||||
748 | } executed 60 times by 2 tests: else {end of block Executed by:
| 60 | ||||||||||||||||||||||||
749 | memcpy(nonce, aead->fixed_nonce, | - | ||||||||||||||||||||||||
750 | aead->fixed_nonce_len); | - | ||||||||||||||||||||||||
751 | nonce_used = aead->fixed_nonce_len; | - | ||||||||||||||||||||||||
752 | - | |||||||||||||||||||||||||
753 | memcpy(nonce + nonce_used, | - | ||||||||||||||||||||||||
754 | aead->variable_nonce_in_record ? in : ad, | - | ||||||||||||||||||||||||
755 | aead->variable_nonce_len); | - | ||||||||||||||||||||||||
756 | nonce_used += aead->variable_nonce_len; | - | ||||||||||||||||||||||||
757 | } executed 24 times by 1 test: end of block Executed by:
| 24 | ||||||||||||||||||||||||
758 | - | |||||||||||||||||||||||||
759 | if (aead->variable_nonce_in_record
| 24-60 | ||||||||||||||||||||||||
760 | in += aead->variable_nonce_len; | - | ||||||||||||||||||||||||
761 | len -= aead->variable_nonce_len; | - | ||||||||||||||||||||||||
762 | out += aead->variable_nonce_len; | - | ||||||||||||||||||||||||
763 | } executed 24 times by 1 test: end of block Executed by:
| 24 | ||||||||||||||||||||||||
764 | - | |||||||||||||||||||||||||
765 | if (len < aead->tag_len
| 0-84 | ||||||||||||||||||||||||
766 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
767 | len -= aead->tag_len; | - | ||||||||||||||||||||||||
768 | - | |||||||||||||||||||||||||
769 | ad[11] = len >> 8; | - | ||||||||||||||||||||||||
770 | ad[12] = len & 0xff; | - | ||||||||||||||||||||||||
771 | - | |||||||||||||||||||||||||
772 | if (!EVP_AEAD_CTX_open(&aead->ctx, out, &out_len, len,
| 0-84 | ||||||||||||||||||||||||
773 | nonce, nonce_used, in, len + aead->tag_len, ad,
| 0-84 | ||||||||||||||||||||||||
774 | sizeof(ad))
| 0-84 | ||||||||||||||||||||||||
775 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
776 | - | |||||||||||||||||||||||||
777 | rec->data = rec->input = out; | - | ||||||||||||||||||||||||
778 | } executed 84 times by 2 tests: end of block Executed by:
| 84 | ||||||||||||||||||||||||
779 | - | |||||||||||||||||||||||||
780 | rec->length = out_len; | - | ||||||||||||||||||||||||
781 | - | |||||||||||||||||||||||||
782 | return executed 214 times by 2 tests: 1;return 1; Executed by:
executed 214 times by 2 tests: return 1; Executed by:
| 214 | ||||||||||||||||||||||||
783 | } | - | ||||||||||||||||||||||||
784 | - | |||||||||||||||||||||||||
785 | if (send
| 616-690 | ||||||||||||||||||||||||
786 | if (EVP_MD_CTX_md(s->internal->write_hash)
| 210-480 | ||||||||||||||||||||||||
787 | int n = EVP_MD_size(EVP_MD_CTX_md(s->internal->write_hash)); | - | ||||||||||||||||||||||||
788 | (void)((n >= 0) ? 0 : (OpenSSLDie(__FILE__, 889, "n >= 0"),1)); | - | ||||||||||||||||||||||||
789 | } executed 210 times by 1 test: end of block Executed by:
| 210 | ||||||||||||||||||||||||
790 | ds = s->internal->enc_write_ctx; | - | ||||||||||||||||||||||||
791 | if (s->internal->enc_write_ctx ==
| 210-480 | ||||||||||||||||||||||||
792 | ((void *)0)
| 210-480 | ||||||||||||||||||||||||
793 | ) | - | ||||||||||||||||||||||||
794 | enc = executed 480 times by 4 tests: enc = ((void *)0) ; Executed by:
| 480 | ||||||||||||||||||||||||
795 | ((void *)0) executed 480 times by 4 tests: enc = ((void *)0) ; Executed by:
| 480 | ||||||||||||||||||||||||
796 | ; executed 480 times by 4 tests: enc = ((void *)0) ; Executed by:
| 480 | ||||||||||||||||||||||||
797 | else { | - | ||||||||||||||||||||||||
798 | int ivlen = 0; | - | ||||||||||||||||||||||||
799 | enc = EVP_CIPHER_CTX_cipher(s->internal->enc_write_ctx); | - | ||||||||||||||||||||||||
800 | if ((
| 66-144 | ||||||||||||||||||||||||
801 | (
| 6-60 | ||||||||||||||||||||||||
802 | ivlen = EVP_CIPHER_iv_length(enc); executed 60 times by 1 test: ivlen = EVP_CIPHER_iv_length(enc); Executed by:
| 60 | ||||||||||||||||||||||||
803 | if (ivlen > 1
| 60-150 | ||||||||||||||||||||||||
804 | if (rec->data != rec->input
| 0-60 | ||||||||||||||||||||||||
805 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
806 | arc4random_buf(rec->input, ivlen); executed 60 times by 1 test: arc4random_buf(rec->input, ivlen); Executed by:
| 60 | ||||||||||||||||||||||||
807 | } | - | ||||||||||||||||||||||||
808 | } executed 210 times by 1 test: end of block Executed by:
| 210 | ||||||||||||||||||||||||
809 | } else { | - | ||||||||||||||||||||||||
810 | if (EVP_MD_CTX_md(s->read_hash)
| 152-464 | ||||||||||||||||||||||||
811 | int n = EVP_MD_size(EVP_MD_CTX_md(s->read_hash)); | - | ||||||||||||||||||||||||
812 | (void)((n >= 0) ? 0 : (OpenSSLDie(__FILE__, 917, "n >= 0"),1)); | - | ||||||||||||||||||||||||
813 | } executed 152 times by 1 test: end of block Executed by:
| 152 | ||||||||||||||||||||||||
814 | ds = s->enc_read_ctx; | - | ||||||||||||||||||||||||
815 | if (s->enc_read_ctx ==
| 152-464 | ||||||||||||||||||||||||
816 | ((void *)0)
| 152-464 | ||||||||||||||||||||||||
817 | ) | - | ||||||||||||||||||||||||
818 | enc = executed 464 times by 3 tests: enc = ((void *)0) ; Executed by:
| 464 | ||||||||||||||||||||||||
819 | ((void *)0) executed 464 times by 3 tests: enc = ((void *)0) ; Executed by:
| 464 | ||||||||||||||||||||||||
820 | ; executed 464 times by 3 tests: enc = ((void *)0) ; Executed by:
| 464 | ||||||||||||||||||||||||
821 | else | - | ||||||||||||||||||||||||
822 | enc = EVP_CIPHER_CTX_cipher(s->enc_read_ctx); executed 152 times by 1 test: enc = EVP_CIPHER_CTX_cipher(s->enc_read_ctx); Executed by:
| 152 | ||||||||||||||||||||||||
823 | } | - | ||||||||||||||||||||||||
824 | - | |||||||||||||||||||||||||
825 | if ((
| 45-1261 | ||||||||||||||||||||||||
826 | ((void *)0)
| 45-1261 | ||||||||||||||||||||||||
827 | )
| 45-1261 | ||||||||||||||||||||||||
828 | ((void *)0)
| 362-899 | ||||||||||||||||||||||||
829 | )
| 0-899 | ||||||||||||||||||||||||
830 | ((void *)0)
| 0-362 | ||||||||||||||||||||||||
831 | )
| 0-362 | ||||||||||||||||||||||||
832 | memmove(rec->data, rec->input, rec->length); | - | ||||||||||||||||||||||||
833 | rec->input = rec->data; | - | ||||||||||||||||||||||||
834 | ret = 1; | - | ||||||||||||||||||||||||
835 | } executed 944 times by 4 tests: else {end of block Executed by:
| 944 | ||||||||||||||||||||||||
836 | l = rec->length; | - | ||||||||||||||||||||||||
837 | bs = EVP_CIPHER_block_size(ds->cipher); | - | ||||||||||||||||||||||||
838 | - | |||||||||||||||||||||||||
839 | if (bs != 1
| 10-352 | ||||||||||||||||||||||||
840 | i = bs - ((int)l % bs); | - | ||||||||||||||||||||||||
841 | - | |||||||||||||||||||||||||
842 | - | |||||||||||||||||||||||||
843 | - | |||||||||||||||||||||||||
844 | - | |||||||||||||||||||||||||
845 | j = i - 1; | - | ||||||||||||||||||||||||
846 | for (k = (int)l; k < (int)(l + i)
| 204-2576 | ||||||||||||||||||||||||
847 | rec->input[k] = j; executed 2576 times by 1 test: rec->input[k] = j; Executed by:
| 2576 | ||||||||||||||||||||||||
848 | l += i; | - | ||||||||||||||||||||||||
849 | rec->length += i; | - | ||||||||||||||||||||||||
850 | } executed 204 times by 1 test: end of block Executed by:
| 204 | ||||||||||||||||||||||||
851 | - | |||||||||||||||||||||||||
852 | if (!send
| 152-210 | ||||||||||||||||||||||||
853 | if (l == 0
| 0-152 | ||||||||||||||||||||||||
854 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
855 | } executed 152 times by 1 test: end of block Executed by:
| 152 | ||||||||||||||||||||||||
856 | - | |||||||||||||||||||||||||
857 | i = EVP_Cipher(ds, rec->data, rec->input, l); | - | ||||||||||||||||||||||||
858 | if ((
| 0-362 | ||||||||||||||||||||||||
859 | 0x100000)
| 0-362 | ||||||||||||||||||||||||
860 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
861 | - | |||||||||||||||||||||||||
862 | ret = 1; | - | ||||||||||||||||||||||||
863 | if (EVP_MD_CTX_md(s->read_hash) !=
| 29-333 | ||||||||||||||||||||||||
864 | ((void *)0)
| 29-333 | ||||||||||||||||||||||||
865 | ) | - | ||||||||||||||||||||||||
866 | mac_size = EVP_MD_size(EVP_MD_CTX_md(s->read_hash)); executed 333 times by 1 test: mac_size = EVP_MD_size(EVP_MD_CTX_md(s->read_hash)); Executed by:
| 333 | ||||||||||||||||||||||||
867 | if ((
| 10-352 | ||||||||||||||||||||||||
868 | ret = tls1_cbc_remove_padding(s, rec, bs, mac_size); executed 148 times by 1 test: ret = tls1_cbc_remove_padding(s, rec, bs, mac_size); Executed by:
| 148 | ||||||||||||||||||||||||
869 | if (pad
| 0-362 | ||||||||||||||||||||||||
870 | rec->length -= pad; never executed: rec->length -= pad; | 0 | ||||||||||||||||||||||||
871 | } executed 362 times by 1 test: end of block Executed by:
| 362 | ||||||||||||||||||||||||
872 | return executed 1306 times by 4 tests: ret;return ret; Executed by:
executed 1306 times by 4 tests: return ret; Executed by:
| 1306 | ||||||||||||||||||||||||
873 | } | - | ||||||||||||||||||||||||
874 | - | |||||||||||||||||||||||||
875 | int | - | ||||||||||||||||||||||||
876 | tls1_final_finish_mac(SSL *s, const char *str, int str_len, unsigned char *out) | - | ||||||||||||||||||||||||
877 | { | - | ||||||||||||||||||||||||
878 | unsigned char buf[64]; | - | ||||||||||||||||||||||||
879 | size_t hash_len; | - | ||||||||||||||||||||||||
880 | - | |||||||||||||||||||||||||
881 | if (str_len < 0
| 0-356 | ||||||||||||||||||||||||
882 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
883 | - | |||||||||||||||||||||||||
884 | if (!tls1_handshake_hash_value(s, buf, sizeof(buf), &hash_len)
| 0-356 | ||||||||||||||||||||||||
885 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
886 | - | |||||||||||||||||||||||||
887 | if (!tls1_PRF(s, s->session->master_key, s->session->master_key_length,
| 0-356 | ||||||||||||||||||||||||
888 | str, str_len, buf, hash_len,
| 0-356 | ||||||||||||||||||||||||
889 | ((void *)0)
| 0-356 | ||||||||||||||||||||||||
890 | , 0,
| 0-356 | ||||||||||||||||||||||||
891 | ((void *)0)
| 0-356 | ||||||||||||||||||||||||
892 | , 0,
| 0-356 | ||||||||||||||||||||||||
893 | ((void *)0)
| 0-356 | ||||||||||||||||||||||||
894 | , 0,
| 0-356 | ||||||||||||||||||||||||
895 | out, 12)
| 0-356 | ||||||||||||||||||||||||
896 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
897 | - | |||||||||||||||||||||||||
898 | return executed 356 times by 2 tests: 12;return 12; Executed by:
executed 356 times by 2 tests: return 12; Executed by:
| 356 | ||||||||||||||||||||||||
899 | } | - | ||||||||||||||||||||||||
900 | - | |||||||||||||||||||||||||
901 | int | - | ||||||||||||||||||||||||
902 | tls1_mac(SSL *ssl, unsigned char *md, int send) | - | ||||||||||||||||||||||||
903 | { | - | ||||||||||||||||||||||||
904 | SSL3_RECORD *rec; | - | ||||||||||||||||||||||||
905 | unsigned char *seq; | - | ||||||||||||||||||||||||
906 | EVP_MD_CTX *hash; | - | ||||||||||||||||||||||||
907 | size_t md_size, orig_len; | - | ||||||||||||||||||||||||
908 | EVP_MD_CTX hmac, *mac_ctx; | - | ||||||||||||||||||||||||
909 | unsigned char header[13]; | - | ||||||||||||||||||||||||
910 | int stream_mac = (send
| 196-276 | ||||||||||||||||||||||||
911 | (ssl->internal->mac_flags & 2) : | - | ||||||||||||||||||||||||
912 | (ssl->internal->mac_flags & 1)); | - | ||||||||||||||||||||||||
913 | int t; | - | ||||||||||||||||||||||||
914 | - | |||||||||||||||||||||||||
915 | if (send
| 196-276 | ||||||||||||||||||||||||
916 | rec = &(ssl->s3->internal->wrec); | - | ||||||||||||||||||||||||
917 | seq = &(ssl->s3->internal->write_sequence[0]); | - | ||||||||||||||||||||||||
918 | hash = ssl->internal->write_hash; | - | ||||||||||||||||||||||||
919 | } executed 276 times by 1 test: else {end of block Executed by:
| 276 | ||||||||||||||||||||||||
920 | rec = &(ssl->s3->internal->rrec); | - | ||||||||||||||||||||||||
921 | seq = &(ssl->s3->internal->read_sequence[0]); | - | ||||||||||||||||||||||||
922 | hash = ssl->read_hash; | - | ||||||||||||||||||||||||
923 | } executed 196 times by 1 test: end of block Executed by:
| 196 | ||||||||||||||||||||||||
924 | - | |||||||||||||||||||||||||
925 | t = EVP_MD_size(EVP_MD_CTX_md(hash)); | - | ||||||||||||||||||||||||
926 | (void)((t >= 0) ? 0 : (OpenSSLDie(__FILE__, 1013, "t >= 0"),1)); | - | ||||||||||||||||||||||||
927 | md_size = t; | - | ||||||||||||||||||||||||
928 | - | |||||||||||||||||||||||||
929 | - | |||||||||||||||||||||||||
930 | if (stream_mac
| 0-472 | ||||||||||||||||||||||||
931 | mac_ctx = hash; | - | ||||||||||||||||||||||||
932 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
933 | if (!EVP_MD_CTX_copy(&hmac, hash)
| 0-472 | ||||||||||||||||||||||||
934 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
935 | mac_ctx = &hmac; | - | ||||||||||||||||||||||||
936 | } executed 472 times by 1 test: end of block Executed by:
| 472 | ||||||||||||||||||||||||
937 | - | |||||||||||||||||||||||||
938 | if ((
| 110-362 | ||||||||||||||||||||||||
939 | dtls1_build_sequence_number(header, seq, executed 110 times by 1 test: dtls1_build_sequence_number(header, seq, send ? (ssl->d1->internal)->w_epoch : (ssl->d1->internal)->r_epoch); Executed by:
| 110 | ||||||||||||||||||||||||
940 | send ? (ssl->d1->internal)->w_epoch : (ssl->d1->internal)->r_epoch); executed 110 times by 1 test: dtls1_build_sequence_number(header, seq, send ? (ssl->d1->internal)->w_epoch : (ssl->d1->internal)->r_epoch); Executed by:
| 110 | ||||||||||||||||||||||||
941 | else | - | ||||||||||||||||||||||||
942 | memcpy(header, seq, 8); executed 362 times by 1 test: memcpy(header, seq, 8); Executed by:
| 362 | ||||||||||||||||||||||||
943 | - | |||||||||||||||||||||||||
944 | - | |||||||||||||||||||||||||
945 | orig_len = rec->length + md_size + ((unsigned int)rec->type >> 8); | - | ||||||||||||||||||||||||
946 | rec->type &= 0xff; | - | ||||||||||||||||||||||||
947 | - | |||||||||||||||||||||||||
948 | header[8] = rec->type; | - | ||||||||||||||||||||||||
949 | header[9] = (unsigned char)(ssl->version >> 8); | - | ||||||||||||||||||||||||
950 | header[10] = (unsigned char)(ssl->version); | - | ||||||||||||||||||||||||
951 | header[11] = (rec->length) >> 8; | - | ||||||||||||||||||||||||
952 | header[12] = (rec->length) & 0xff; | - | ||||||||||||||||||||||||
953 | - | |||||||||||||||||||||||||
954 | if (!send
| 196-276 | ||||||||||||||||||||||||
955 | (
| 12-184 | ||||||||||||||||||||||||
956 | ssl3_cbc_record_digest_supported(mac_ctx)
| 0-184 | ||||||||||||||||||||||||
957 | - | |||||||||||||||||||||||||
958 | - | |||||||||||||||||||||||||
959 | - | |||||||||||||||||||||||||
960 | - | |||||||||||||||||||||||||
961 | if (!ssl3_cbc_digest_record(mac_ctx,
| 0-184 | ||||||||||||||||||||||||
962 | md, &md_size, header, rec->input,
| 0-184 | ||||||||||||||||||||||||
963 | rec->length + md_size, orig_len,
| 0-184 | ||||||||||||||||||||||||
964 | ssl->s3->internal->read_mac_secret,
| 0-184 | ||||||||||||||||||||||||
965 | ssl->s3->internal->read_mac_secret_size)
| 0-184 | ||||||||||||||||||||||||
966 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||||||||
967 | } executed 184 times by 1 test: else {end of block Executed by:
| 184 | ||||||||||||||||||||||||
968 | EVP_DigestUpdate(mac_ctx,header,sizeof(header)); | - | ||||||||||||||||||||||||
969 | EVP_DigestUpdate(mac_ctx,rec->input,rec->length); | - | ||||||||||||||||||||||||
970 | t = EVP_DigestSignFinal(mac_ctx, md, &md_size); | - | ||||||||||||||||||||||||
971 | (void)((t > 0) ? 0 : (OpenSSLDie(__FILE__, 1058, "t > 0"),1)); | - | ||||||||||||||||||||||||
972 | } executed 288 times by 1 test: end of block Executed by:
| 288 | ||||||||||||||||||||||||
973 | - | |||||||||||||||||||||||||
974 | if (!stream_mac
| 0-472 | ||||||||||||||||||||||||
975 | EVP_MD_CTX_cleanup(&hmac); executed 472 times by 1 test: EVP_MD_CTX_cleanup(&hmac); Executed by:
| 472 | ||||||||||||||||||||||||
976 | - | |||||||||||||||||||||||||
977 | if (!(ssl->method->internal->version == 0xFEFF)
| 110-362 | ||||||||||||||||||||||||
978 | tls1_record_sequence_increment(seq); executed 362 times by 1 test: tls1_record_sequence_increment(seq); Executed by:
| 362 | ||||||||||||||||||||||||
979 | - | |||||||||||||||||||||||||
980 | return executed 472 times by 1 test: (md_size);return (md_size); Executed by:
executed 472 times by 1 test: return (md_size); Executed by:
| 472 | ||||||||||||||||||||||||
981 | } | - | ||||||||||||||||||||||||
982 | - | |||||||||||||||||||||||||
983 | int | - | ||||||||||||||||||||||||
984 | tls1_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p, | - | ||||||||||||||||||||||||
985 | int len) | - | ||||||||||||||||||||||||
986 | { | - | ||||||||||||||||||||||||
987 | if (len < 0
| 0-126 | ||||||||||||||||||||||||
988 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
989 | - | |||||||||||||||||||||||||
990 | if (!tls1_PRF(s, p, len,
| 0-126 | ||||||||||||||||||||||||
991 | "master secret", 13,
| 0-126 | ||||||||||||||||||||||||
992 | s->s3->client_random, 32,
| 0-126 | ||||||||||||||||||||||||
993 | ((void *)0)
| 0-126 | ||||||||||||||||||||||||
994 | , 0,
| 0-126 | ||||||||||||||||||||||||
995 | s->s3->server_random, 32,
| 0-126 | ||||||||||||||||||||||||
996 | ((void *)0)
| 0-126 | ||||||||||||||||||||||||
997 | , 0,
| 0-126 | ||||||||||||||||||||||||
998 | s->session->master_key, 48)
| 0-126 | ||||||||||||||||||||||||
999 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
1000 | - | |||||||||||||||||||||||||
1001 | return executed 126 times by 2 tests: (48);return (48); Executed by:
executed 126 times by 2 tests: return (48); Executed by:
| 126 | ||||||||||||||||||||||||
1002 | } | - | ||||||||||||||||||||||||
1003 | - | |||||||||||||||||||||||||
1004 | int | - | ||||||||||||||||||||||||
1005 | tls1_export_keying_material(SSL *s, unsigned char *out, size_t olen, | - | ||||||||||||||||||||||||
1006 | const char *label, size_t llen, const unsigned char *context, | - | ||||||||||||||||||||||||
1007 | size_t contextlen, int use_context) | - | ||||||||||||||||||||||||
1008 | { | - | ||||||||||||||||||||||||
1009 | unsigned char *val = | - | ||||||||||||||||||||||||
1010 | ((void *)0) | - | ||||||||||||||||||||||||
1011 | ; | - | ||||||||||||||||||||||||
1012 | size_t vallen, currentvalpos; | - | ||||||||||||||||||||||||
1013 | int rv; | - | ||||||||||||||||||||||||
1014 | - | |||||||||||||||||||||||||
1015 | - | |||||||||||||||||||||||||
1016 | - | |||||||||||||||||||||||||
1017 | - | |||||||||||||||||||||||||
1018 | - | |||||||||||||||||||||||||
1019 | - | |||||||||||||||||||||||||
1020 | vallen = llen + 32 * 2; | - | ||||||||||||||||||||||||
1021 | if (use_context
| 0 | ||||||||||||||||||||||||
1022 | vallen += 2 + contextlen; | - | ||||||||||||||||||||||||
1023 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1024 | - | |||||||||||||||||||||||||
1025 | val = malloc(vallen); | - | ||||||||||||||||||||||||
1026 | if (val ==
| 0 | ||||||||||||||||||||||||
1027 | ((void *)0)
| 0 | ||||||||||||||||||||||||
1028 | ) | - | ||||||||||||||||||||||||
1029 | goto never executed: err2;goto err2; never executed: goto err2; | 0 | ||||||||||||||||||||||||
1030 | currentvalpos = 0; | - | ||||||||||||||||||||||||
1031 | memcpy(val + currentvalpos, (unsigned char *) label, llen); | - | ||||||||||||||||||||||||
1032 | currentvalpos += llen; | - | ||||||||||||||||||||||||
1033 | memcpy(val + currentvalpos, s->s3->client_random, 32); | - | ||||||||||||||||||||||||
1034 | currentvalpos += 32; | - | ||||||||||||||||||||||||
1035 | memcpy(val + currentvalpos, s->s3->server_random, 32); | - | ||||||||||||||||||||||||
1036 | currentvalpos += 32; | - | ||||||||||||||||||||||||
1037 | - | |||||||||||||||||||||||||
1038 | if (use_context
| 0 | ||||||||||||||||||||||||
1039 | val[currentvalpos] = (contextlen >> 8) & 0xff; | - | ||||||||||||||||||||||||
1040 | currentvalpos++; | - | ||||||||||||||||||||||||
1041 | val[currentvalpos] = contextlen & 0xff; | - | ||||||||||||||||||||||||
1042 | currentvalpos++; | - | ||||||||||||||||||||||||
1043 | if ((
| 0 | ||||||||||||||||||||||||
1044 | ((void *)0)
| 0 | ||||||||||||||||||||||||
1045 | )
| 0 | ||||||||||||||||||||||||
1046 | memcpy(val + currentvalpos, context, contextlen); | - | ||||||||||||||||||||||||
1047 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1048 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1049 | - | |||||||||||||||||||||||||
1050 | - | |||||||||||||||||||||||||
1051 | - | |||||||||||||||||||||||||
1052 | - | |||||||||||||||||||||||||
1053 | - | |||||||||||||||||||||||||
1054 | - | |||||||||||||||||||||||||
1055 | if (memcmp(val, "client finished",
| 0 | ||||||||||||||||||||||||
1056 | 15) == 0
| 0 | ||||||||||||||||||||||||
1057 | goto never executed: err1;goto err1; never executed: goto err1; | 0 | ||||||||||||||||||||||||
1058 | if (memcmp(val, "server finished",
| 0 | ||||||||||||||||||||||||
1059 | 15) == 0
| 0 | ||||||||||||||||||||||||
1060 | goto never executed: err1;goto err1; never executed: goto err1; | 0 | ||||||||||||||||||||||||
1061 | if (memcmp(val, "master secret",
| 0 | ||||||||||||||||||||||||
1062 | 13) == 0
| 0 | ||||||||||||||||||||||||
1063 | goto never executed: err1;goto err1; never executed: goto err1; | 0 | ||||||||||||||||||||||||
1064 | if (memcmp(val, "key expansion",
| 0 | ||||||||||||||||||||||||
1065 | 13) == 0
| 0 | ||||||||||||||||||||||||
1066 | goto never executed: err1;goto err1; never executed: goto err1; | 0 | ||||||||||||||||||||||||
1067 | - | |||||||||||||||||||||||||
1068 | rv = tls1_PRF(s, s->session->master_key, s->session->master_key_length, | - | ||||||||||||||||||||||||
1069 | val, vallen, | - | ||||||||||||||||||||||||
1070 | ((void *)0) | - | ||||||||||||||||||||||||
1071 | , 0, | - | ||||||||||||||||||||||||
1072 | ((void *)0) | - | ||||||||||||||||||||||||
1073 | , 0, | - | ||||||||||||||||||||||||
1074 | ((void *)0) | - | ||||||||||||||||||||||||
1075 | , 0, | - | ||||||||||||||||||||||||
1076 | ((void *)0) | - | ||||||||||||||||||||||||
1077 | , 0, out, olen); | - | ||||||||||||||||||||||||
1078 | - | |||||||||||||||||||||||||
1079 | goto never executed: ret;goto ret; never executed: goto ret; | 0 | ||||||||||||||||||||||||
1080 | err1: | - | ||||||||||||||||||||||||
1081 | SSL_error_internal(s, 367, __FILE__, 1150); | - | ||||||||||||||||||||||||
1082 | rv = 0; | - | ||||||||||||||||||||||||
1083 | goto never executed: ret;goto ret; never executed: goto ret; | 0 | ||||||||||||||||||||||||
1084 | err2: | - | ||||||||||||||||||||||||
1085 | SSL_error_internal(s, (1|64), __FILE__, 1154); | - | ||||||||||||||||||||||||
1086 | rv = 0; | - | ||||||||||||||||||||||||
1087 | ret: code before this statement never executed: ret: | 0 | ||||||||||||||||||||||||
1088 | free(val); | - | ||||||||||||||||||||||||
1089 | - | |||||||||||||||||||||||||
1090 | return never executed: (rv);return (rv); never executed: return (rv); | 0 | ||||||||||||||||||||||||
1091 | } | - | ||||||||||||||||||||||||
1092 | - | |||||||||||||||||||||||||
1093 | int | - | ||||||||||||||||||||||||
1094 | tls1_alert_code(int code) | - | ||||||||||||||||||||||||
1095 | { | - | ||||||||||||||||||||||||
1096 | switch (code) { | - | ||||||||||||||||||||||||
1097 | case executed 126 times by 2 tests: 0:case 0: Executed by:
executed 126 times by 2 tests: case 0: Executed by:
| 126 | ||||||||||||||||||||||||
1098 | return executed 126 times by 2 tests: (0);return (0); Executed by:
executed 126 times by 2 tests: return (0); Executed by:
| 126 | ||||||||||||||||||||||||
1099 | case never executed: 10:case 10: never executed: case 10: | 0 | ||||||||||||||||||||||||
1100 | return never executed: (10);return (10); never executed: return (10); | 0 | ||||||||||||||||||||||||
1101 | case never executed: 20:case 20: never executed: case 20: | 0 | ||||||||||||||||||||||||
1102 | return never executed: (20);return (20); never executed: return (20); | 0 | ||||||||||||||||||||||||
1103 | case never executed: 21:case 21: never executed: case 21: | 0 | ||||||||||||||||||||||||
1104 | return never executed: (21);return (21); never executed: return (21); | 0 | ||||||||||||||||||||||||
1105 | case never executed: 22:case 22: never executed: case 22: | 0 | ||||||||||||||||||||||||
1106 | return never executed: (22);return (22); never executed: return (22); | 0 | ||||||||||||||||||||||||
1107 | case never executed: 30:case 30: never executed: case 30: | 0 | ||||||||||||||||||||||||
1108 | return never executed: (30);return (30); never executed: return (30); | 0 | ||||||||||||||||||||||||
1109 | case never executed: 40:case 40: never executed: case 40: | 0 | ||||||||||||||||||||||||
1110 | return never executed: (40);return (40); never executed: return (40); | 0 | ||||||||||||||||||||||||
1111 | case never executed: 41:case 41: never executed: case 41: | 0 | ||||||||||||||||||||||||
1112 | return never executed: (-1);return (-1); never executed: return (-1); | 0 | ||||||||||||||||||||||||
1113 | case never executed: 42:case 42: never executed: case 42: | 0 | ||||||||||||||||||||||||
1114 | return never executed: (42);return (42); never executed: return (42); | 0 | ||||||||||||||||||||||||
1115 | case never executed: 43:case 43: never executed: case 43: | 0 | ||||||||||||||||||||||||
1116 | return never executed: (43);return (43); never executed: return (43); | 0 | ||||||||||||||||||||||||
1117 | case never executed: 44:case 44: never executed: case 44: | 0 | ||||||||||||||||||||||||
1118 | return never executed: (44);return (44); never executed: return (44); | 0 | ||||||||||||||||||||||||
1119 | case never executed: 45:case 45: never executed: case 45: | 0 | ||||||||||||||||||||||||
1120 | return never executed: (45);return (45); never executed: return (45); | 0 | ||||||||||||||||||||||||
1121 | case never executed: 46:case 46: never executed: case 46: | 0 | ||||||||||||||||||||||||
1122 | return never executed: (46);return (46); never executed: return (46); | 0 | ||||||||||||||||||||||||
1123 | case never executed: 47:case 47: never executed: case 47: | 0 | ||||||||||||||||||||||||
1124 | return never executed: (47);return (47); never executed: return (47); | 0 | ||||||||||||||||||||||||
1125 | case never executed: 48:case 48: never executed: case 48: | 0 | ||||||||||||||||||||||||
1126 | return never executed: (48);return (48); never executed: return (48); | 0 | ||||||||||||||||||||||||
1127 | case never executed: 49:case 49: never executed: case 49: | 0 | ||||||||||||||||||||||||
1128 | return never executed: (49);return (49); never executed: return (49); | 0 | ||||||||||||||||||||||||
1129 | case never executed: 50:case 50: never executed: case 50: | 0 | ||||||||||||||||||||||||
1130 | return never executed: (50);return (50); never executed: return (50); | 0 | ||||||||||||||||||||||||
1131 | case never executed: 51:case 51: never executed: case 51: | 0 | ||||||||||||||||||||||||
1132 | return never executed: (51);return (51); never executed: return (51); | 0 | ||||||||||||||||||||||||
1133 | case never executed: 60:case 60: never executed: case 60: | 0 | ||||||||||||||||||||||||
1134 | return never executed: (60);return (60); never executed: return (60); | 0 | ||||||||||||||||||||||||
1135 | case never executed: 70:case 70: never executed: case 70: | 0 | ||||||||||||||||||||||||
1136 | return never executed: (70);return (70); never executed: return (70); | 0 | ||||||||||||||||||||||||
1137 | case never executed: 71:case 71: never executed: case 71: | 0 | ||||||||||||||||||||||||
1138 | return never executed: (71);return (71); never executed: return (71); | 0 | ||||||||||||||||||||||||
1139 | case never executed: 80:case 80: never executed: case 80: | 0 | ||||||||||||||||||||||||
1140 | return never executed: (80);return (80); never executed: return (80); | 0 | ||||||||||||||||||||||||
1141 | case never executed: 86:case 86: never executed: case 86: | 0 | ||||||||||||||||||||||||
1142 | return never executed: (86);return(86); never executed: return(86); | 0 | ||||||||||||||||||||||||
1143 | case never executed: 90:case 90: never executed: case 90: | 0 | ||||||||||||||||||||||||
1144 | return never executed: (90);return (90); never executed: return (90); | 0 | ||||||||||||||||||||||||
1145 | case never executed: 100:case 100: never executed: case 100: | 0 | ||||||||||||||||||||||||
1146 | return never executed: (100);return (100); never executed: return (100); | 0 | ||||||||||||||||||||||||
1147 | case never executed: 110:case 110: never executed: case 110: | 0 | ||||||||||||||||||||||||
1148 | return never executed: (110);return (110); never executed: return (110); | 0 | ||||||||||||||||||||||||
1149 | case never executed: 111:case 111: never executed: case 111: | 0 | ||||||||||||||||||||||||
1150 | return never executed: (111);return (111); never executed: return (111); | 0 | ||||||||||||||||||||||||
1151 | case never executed: 112:case 112: never executed: case 112: | 0 | ||||||||||||||||||||||||
1152 | return never executed: (112);return (112); never executed: return (112); | 0 | ||||||||||||||||||||||||
1153 | case never executed: 113:case 113: never executed: case 113: | 0 | ||||||||||||||||||||||||
1154 | return never executed: (113);return (113); never executed: return (113); | 0 | ||||||||||||||||||||||||
1155 | case never executed: 114:case 114: never executed: case 114: | 0 | ||||||||||||||||||||||||
1156 | return never executed: (114);return (114); never executed: return (114); | 0 | ||||||||||||||||||||||||
1157 | case never executed: 115:case 115: never executed: case 115: | 0 | ||||||||||||||||||||||||
1158 | return never executed: (115);return (115); never executed: return (115); | 0 | ||||||||||||||||||||||||
1159 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||
1160 | return never executed: (-1);return (-1); never executed: return (-1); | 0 | ||||||||||||||||||||||||
1161 | } | - | ||||||||||||||||||||||||
1162 | } | - | ||||||||||||||||||||||||
Switch to Source code | Preprocessed file |