Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/rsa/rsa_gen.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | static int rsa_builtin_keygen(RSA *rsa, int bits, int primes, BIGNUM *e_value, | - | ||||||||||||||||||
3 | BN_GENCB *cb); | - | ||||||||||||||||||
4 | int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb) | - | ||||||||||||||||||
5 | { | - | ||||||||||||||||||
6 | if (rsa->meth->rsa_keygen !=
| 0 | ||||||||||||||||||
7 | ((void *)0)
| 0 | ||||||||||||||||||
8 | ) | - | ||||||||||||||||||
9 | return never executed: rsa->meth->rsa_keygen(rsa, bits, e_value, cb);return rsa->meth->rsa_keygen(rsa, bits, e_value, cb); never executed: return rsa->meth->rsa_keygen(rsa, bits, e_value, cb); | 0 | ||||||||||||||||||
10 | - | |||||||||||||||||||
11 | return never executed: RSA_generate_multi_prime_key(rsa, bits, 2,return RSA_generate_multi_prime_key(rsa, bits, 2, e_value, cb); never executed: return RSA_generate_multi_prime_key(rsa, bits, 2, e_value, cb); | 0 | ||||||||||||||||||
12 | e_value, cb); never executed: return RSA_generate_multi_prime_key(rsa, bits, 2, e_value, cb); | 0 | ||||||||||||||||||
13 | } | - | ||||||||||||||||||
14 | - | |||||||||||||||||||
15 | int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, | - | ||||||||||||||||||
16 | BIGNUM *e_value, BN_GENCB *cb) | - | ||||||||||||||||||
17 | { | - | ||||||||||||||||||
18 | - | |||||||||||||||||||
19 | if (rsa->meth->rsa_multi_prime_keygen !=
| 0-22 | ||||||||||||||||||
20 | ((void *)0)
| 0-22 | ||||||||||||||||||
21 | ) { | - | ||||||||||||||||||
22 | return never executed: rsa->meth->rsa_multi_prime_keygen(rsa, bits, primes,return rsa->meth->rsa_multi_prime_keygen(rsa, bits, primes, e_value, cb); never executed: return rsa->meth->rsa_multi_prime_keygen(rsa, bits, primes, e_value, cb); | 0 | ||||||||||||||||||
23 | e_value, cb); never executed: return rsa->meth->rsa_multi_prime_keygen(rsa, bits, primes, e_value, cb); | 0 | ||||||||||||||||||
24 | } else if (rsa->meth->rsa_keygen !=
| 0-22 | ||||||||||||||||||
25 | ((void *)0)
| 0-22 | ||||||||||||||||||
26 | ) { | - | ||||||||||||||||||
27 | - | |||||||||||||||||||
28 | - | |||||||||||||||||||
29 | - | |||||||||||||||||||
30 | - | |||||||||||||||||||
31 | - | |||||||||||||||||||
32 | - | |||||||||||||||||||
33 | if (primes == 2
| 0 | ||||||||||||||||||
34 | return never executed: rsa->meth->rsa_keygen(rsa, bits, e_value, cb);return rsa->meth->rsa_keygen(rsa, bits, e_value, cb); never executed: return rsa->meth->rsa_keygen(rsa, bits, e_value, cb); | 0 | ||||||||||||||||||
35 | else | - | ||||||||||||||||||
36 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
37 | } | - | ||||||||||||||||||
38 | - | |||||||||||||||||||
39 | return executed 22 times by 1 test: rsa_builtin_keygen(rsa, bits, primes, e_value, cb);return rsa_builtin_keygen(rsa, bits, primes, e_value, cb); Executed by:
executed 22 times by 1 test: return rsa_builtin_keygen(rsa, bits, primes, e_value, cb); Executed by:
| 22 | ||||||||||||||||||
40 | } | - | ||||||||||||||||||
41 | - | |||||||||||||||||||
42 | static int rsa_builtin_keygen(RSA *rsa, int bits, int primes, BIGNUM *e_value, | - | ||||||||||||||||||
43 | BN_GENCB *cb) | - | ||||||||||||||||||
44 | { | - | ||||||||||||||||||
45 | BIGNUM *r0 = | - | ||||||||||||||||||
46 | ((void *)0) | - | ||||||||||||||||||
47 | , *r1 = | - | ||||||||||||||||||
48 | ((void *)0) | - | ||||||||||||||||||
49 | , *r2 = | - | ||||||||||||||||||
50 | ((void *)0) | - | ||||||||||||||||||
51 | , *tmp, *prime; | - | ||||||||||||||||||
52 | int ok = -1, n = 0, bitsr[5], bitse = 0; | - | ||||||||||||||||||
53 | int i = 0, quo = 0, rmd = 0, adj = 0, retries = 0; | - | ||||||||||||||||||
54 | RSA_PRIME_INFO *pinfo = | - | ||||||||||||||||||
55 | ((void *)0) | - | ||||||||||||||||||
56 | ; | - | ||||||||||||||||||
57 | struct stack_st_RSA_PRIME_INFO *prime_infos = | - | ||||||||||||||||||
58 | ((void *)0) | - | ||||||||||||||||||
59 | ; | - | ||||||||||||||||||
60 | BN_CTX *ctx = | - | ||||||||||||||||||
61 | ((void *)0) | - | ||||||||||||||||||
62 | ; | - | ||||||||||||||||||
63 | unsigned long bitst = 0; | - | ||||||||||||||||||
64 | unsigned long error = 0; | - | ||||||||||||||||||
65 | - | |||||||||||||||||||
66 | if (bits < 512
| 3-19 | ||||||||||||||||||
67 | ok = 0; | - | ||||||||||||||||||
68 | ERR_put_error(4,(129),(120),__FILE__,78); | - | ||||||||||||||||||
69 | goto executed 3 times by 1 test: err;goto err; Executed by:
executed 3 times by 1 test: goto err; Executed by:
| 3 | ||||||||||||||||||
70 | } | - | ||||||||||||||||||
71 | - | |||||||||||||||||||
72 | if (primes < 2
| 0-19 | ||||||||||||||||||
73 | ok = 0; | - | ||||||||||||||||||
74 | ERR_put_error(4,(129),(165),__FILE__,84); | - | ||||||||||||||||||
75 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
76 | } | - | ||||||||||||||||||
77 | - | |||||||||||||||||||
78 | ctx = BN_CTX_new(); | - | ||||||||||||||||||
79 | if (ctx ==
| 0-19 | ||||||||||||||||||
80 | ((void *)0)
| 0-19 | ||||||||||||||||||
81 | ) | - | ||||||||||||||||||
82 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
83 | BN_CTX_start(ctx); | - | ||||||||||||||||||
84 | r0 = BN_CTX_get(ctx); | - | ||||||||||||||||||
85 | r1 = BN_CTX_get(ctx); | - | ||||||||||||||||||
86 | r2 = BN_CTX_get(ctx); | - | ||||||||||||||||||
87 | if (r2 ==
| 0-19 | ||||||||||||||||||
88 | ((void *)0)
| 0-19 | ||||||||||||||||||
89 | ) | - | ||||||||||||||||||
90 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
91 | - | |||||||||||||||||||
92 | - | |||||||||||||||||||
93 | quo = bits / primes; | - | ||||||||||||||||||
94 | rmd = bits % primes; | - | ||||||||||||||||||
95 | - | |||||||||||||||||||
96 | for (i = 0; i < primes
| 19-50 | ||||||||||||||||||
97 | bitsr[i] = (
executed 50 times by 1 test: bitsr[i] = (i < rmd) ? quo + 1 : quo; Executed by:
| 8-50 | ||||||||||||||||||
98 | - | |||||||||||||||||||
99 | - | |||||||||||||||||||
100 | if (!rsa->n
| 0-19 | ||||||||||||||||||
101 | ((void *)0)
| 0-19 | ||||||||||||||||||
102 | )
| 0-19 | ||||||||||||||||||
103 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
104 | if (!rsa->d
| 0-19 | ||||||||||||||||||
105 | ((void *)0)
| 0-19 | ||||||||||||||||||
106 | )
| 0-19 | ||||||||||||||||||
107 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
108 | if (!rsa->e
| 0-19 | ||||||||||||||||||
109 | ((void *)0)
| 0-19 | ||||||||||||||||||
110 | )
| 0-19 | ||||||||||||||||||
111 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
112 | if (!rsa->p
| 0-19 | ||||||||||||||||||
113 | ((void *)0)
| 0-19 | ||||||||||||||||||
114 | )
| 0-19 | ||||||||||||||||||
115 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
116 | if (!rsa->q
| 0-19 | ||||||||||||||||||
117 | ((void *)0)
| 0-19 | ||||||||||||||||||
118 | )
| 0-19 | ||||||||||||||||||
119 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
120 | if (!rsa->dmp1
| 0-19 | ||||||||||||||||||
121 | ((void *)0)
| 0-19 | ||||||||||||||||||
122 | )
| 0-19 | ||||||||||||||||||
123 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
124 | if (!rsa->dmq1
| 0-19 | ||||||||||||||||||
125 | ((void *)0)
| 0-19 | ||||||||||||||||||
126 | )
| 0-19 | ||||||||||||||||||
127 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
128 | if (!rsa->iqmp
| 0-19 | ||||||||||||||||||
129 | ((void *)0)
| 0-19 | ||||||||||||||||||
130 | )
| 0-19 | ||||||||||||||||||
131 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
132 | - | |||||||||||||||||||
133 | - | |||||||||||||||||||
134 | if (primes > 2
| 6-13 | ||||||||||||||||||
135 | rsa->version = 1; | - | ||||||||||||||||||
136 | prime_infos = sk_RSA_PRIME_INFO_new_reserve( | - | ||||||||||||||||||
137 | ((void *)0) | - | ||||||||||||||||||
138 | , primes - 2); | - | ||||||||||||||||||
139 | if (prime_infos ==
| 0-6 | ||||||||||||||||||
140 | ((void *)0)
| 0-6 | ||||||||||||||||||
141 | ) | - | ||||||||||||||||||
142 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
143 | if (rsa->prime_infos !=
| 0-6 | ||||||||||||||||||
144 | ((void *)0)
| 0-6 | ||||||||||||||||||
145 | ) { | - | ||||||||||||||||||
146 | - | |||||||||||||||||||
147 | sk_RSA_PRIME_INFO_pop_free(rsa->prime_infos, rsa_multip_info_free); | - | ||||||||||||||||||
148 | } never executed: end of block | 0 | ||||||||||||||||||
149 | rsa->prime_infos = prime_infos; | - | ||||||||||||||||||
150 | - | |||||||||||||||||||
151 | - | |||||||||||||||||||
152 | for (i = 2; i < primes
| 6-12 | ||||||||||||||||||
153 | pinfo = rsa_multip_info_new(); | - | ||||||||||||||||||
154 | if (pinfo ==
| 0-12 | ||||||||||||||||||
155 | ((void *)0)
| 0-12 | ||||||||||||||||||
156 | ) | - | ||||||||||||||||||
157 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
158 | (void)sk_RSA_PRIME_INFO_push(prime_infos, pinfo); | - | ||||||||||||||||||
159 | } executed 12 times by 1 test: end of block Executed by:
| 12 | ||||||||||||||||||
160 | } executed 6 times by 1 test: end of block Executed by:
| 6 | ||||||||||||||||||
161 | - | |||||||||||||||||||
162 | if (BN_copy(rsa->e, e_value) ==
| 0-19 | ||||||||||||||||||
163 | ((void *)0)
| 0-19 | ||||||||||||||||||
164 | ) | - | ||||||||||||||||||
165 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
166 | - | |||||||||||||||||||
167 | - | |||||||||||||||||||
168 | for (i = 0; i < primes
| 19-50 | ||||||||||||||||||
169 | adj = 0; | - | ||||||||||||||||||
170 | retries = 0; | - | ||||||||||||||||||
171 | - | |||||||||||||||||||
172 | if (i == 0
| 19-31 | ||||||||||||||||||
173 | prime = rsa->p; | - | ||||||||||||||||||
174 | } executed 19 times by 1 test: else if (i == 1end of block Executed by:
| 12-19 | ||||||||||||||||||
175 | prime = rsa->q; | - | ||||||||||||||||||
176 | } executed 19 times by 1 test: else {end of block Executed by:
| 19 | ||||||||||||||||||
177 | pinfo = sk_RSA_PRIME_INFO_value(prime_infos, i - 2); | - | ||||||||||||||||||
178 | prime = pinfo->r; | - | ||||||||||||||||||
179 | } executed 12 times by 1 test: end of block Executed by:
| 12 | ||||||||||||||||||
180 | BN_set_flags(prime, 0x04); | - | ||||||||||||||||||
181 | - | |||||||||||||||||||
182 | for (;;) { | - | ||||||||||||||||||
183 | redo: | - | ||||||||||||||||||
184 | if (!BN_generate_prime_ex(prime, bitsr[i] + adj, 0,
| 0-64 | ||||||||||||||||||
185 | ((void *)0)
| 0-64 | ||||||||||||||||||
186 | ,
| 0-64 | ||||||||||||||||||
187 | ((void *)0)
| 0-64 | ||||||||||||||||||
188 | , cb)
| 0-64 | ||||||||||||||||||
189 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
190 | - | |||||||||||||||||||
191 | - | |||||||||||||||||||
192 | - | |||||||||||||||||||
193 | - | |||||||||||||||||||
194 | { | - | ||||||||||||||||||
195 | int j; | - | ||||||||||||||||||
196 | - | |||||||||||||||||||
197 | for (j = 0; j < i
| 64-92 | ||||||||||||||||||
198 | BIGNUM *prev_prime; | - | ||||||||||||||||||
199 | - | |||||||||||||||||||
200 | if (j == 0
| 45-47 | ||||||||||||||||||
201 | prev_prime = rsa->p; executed 45 times by 1 test: prev_prime = rsa->p; Executed by:
| 45 | ||||||||||||||||||
202 | else if (j == 1
| 21-26 | ||||||||||||||||||
203 | prev_prime = rsa->q; executed 26 times by 1 test: prev_prime = rsa->q; Executed by:
| 26 | ||||||||||||||||||
204 | else | - | ||||||||||||||||||
205 | prev_prime = sk_RSA_PRIME_INFO_value(prime_infos, executed 21 times by 1 test: prev_prime = sk_RSA_PRIME_INFO_value(prime_infos, j - 2)->r; Executed by:
| 21 | ||||||||||||||||||
206 | j - 2)->r; executed 21 times by 1 test: prev_prime = sk_RSA_PRIME_INFO_value(prime_infos, j - 2)->r; Executed by:
| 21 | ||||||||||||||||||
207 | - | |||||||||||||||||||
208 | if (!BN_cmp(prime, prev_prime)
| 0-92 | ||||||||||||||||||
209 | goto never executed: redo;goto redo; never executed: goto redo; | 0 | ||||||||||||||||||
210 | } | - | ||||||||||||||||||
211 | } executed 92 times by 1 test: end of block Executed by:
| 92 | ||||||||||||||||||
212 | } | - | ||||||||||||||||||
213 | if (!BN_sub(r2, prime, BN_value_one())
| 0-64 | ||||||||||||||||||
214 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
215 | ERR_set_mark(); | - | ||||||||||||||||||
216 | BN_set_flags(r2, 0x04); | - | ||||||||||||||||||
217 | if (BN_mod_inverse(r1, r2, rsa->e, ctx) !=
| 0-64 | ||||||||||||||||||
218 | ((void *)0)
| 0-64 | ||||||||||||||||||
219 | ) { | - | ||||||||||||||||||
220 | - | |||||||||||||||||||
221 | break; executed 64 times by 1 test: break; Executed by:
| 64 | ||||||||||||||||||
222 | } | - | ||||||||||||||||||
223 | error = ERR_peek_last_error(); | - | ||||||||||||||||||
224 | if ((
| 0 | ||||||||||||||||||
225 | && (
| 0 | ||||||||||||||||||
226 | - | |||||||||||||||||||
227 | ERR_pop_to_mark(); | - | ||||||||||||||||||
228 | } never executed: else {end of block | 0 | ||||||||||||||||||
229 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
230 | } | - | ||||||||||||||||||
231 | if (!BN_GENCB_call(cb, 2, n++)
| 0 | ||||||||||||||||||
232 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
233 | } never executed: end of block | 0 | ||||||||||||||||||
234 | - | |||||||||||||||||||
235 | bitse += bitsr[i]; | - | ||||||||||||||||||
236 | - | |||||||||||||||||||
237 | - | |||||||||||||||||||
238 | if (i == 1
| 19-45 | ||||||||||||||||||
239 | - | |||||||||||||||||||
240 | if (!BN_mul(r1, rsa->p, rsa->q, ctx)
| 0-19 | ||||||||||||||||||
241 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
242 | } executed 19 times by 1 test: else if (i != 0end of block Executed by:
| 19-26 | ||||||||||||||||||
243 | - | |||||||||||||||||||
244 | if (!BN_mul(r1, rsa->n, prime, ctx)
| 0-26 | ||||||||||||||||||
245 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
246 | } executed 26 times by 1 test: else {end of block Executed by:
| 26 | ||||||||||||||||||
247 | - | |||||||||||||||||||
248 | if (!BN_GENCB_call(cb, 3, i)
| 0-19 | ||||||||||||||||||
249 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
250 | continue; executed 19 times by 1 test: continue; Executed by:
| 19 | ||||||||||||||||||
251 | } | - | ||||||||||||||||||
252 | if (!BN_rshift(r2, r1, bitse - 4)
| 0-45 | ||||||||||||||||||
253 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
254 | bitst = BN_get_word(r2); | - | ||||||||||||||||||
255 | - | |||||||||||||||||||
256 | if (bitst < 0x9
| 4-35 | ||||||||||||||||||
257 | bitse -= bitsr[i]; | - | ||||||||||||||||||
258 | if (!BN_GENCB_call(cb, 2, n++)
| 0-14 | ||||||||||||||||||
259 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
260 | if (primes > 4
| 4-10 | ||||||||||||||||||
261 | if (bitst < 0x9
| 4-6 | ||||||||||||||||||
262 | adj++; executed 6 times by 1 test: adj++; Executed by:
| 6 | ||||||||||||||||||
263 | else | - | ||||||||||||||||||
264 | adj--; executed 4 times by 1 test: adj--; Executed by:
| 4 | ||||||||||||||||||
265 | } else if (retries == 4
| 0-4 | ||||||||||||||||||
266 | - | |||||||||||||||||||
267 | - | |||||||||||||||||||
268 | - | |||||||||||||||||||
269 | - | |||||||||||||||||||
270 | - | |||||||||||||||||||
271 | i = -1; | - | ||||||||||||||||||
272 | bitse = 0; | - | ||||||||||||||||||
273 | continue; never executed: continue; | 0 | ||||||||||||||||||
274 | } | - | ||||||||||||||||||
275 | retries++; | - | ||||||||||||||||||
276 | goto executed 14 times by 1 test: redo;goto redo; Executed by:
executed 14 times by 1 test: goto redo; Executed by:
| 14 | ||||||||||||||||||
277 | } | - | ||||||||||||||||||
278 | - | |||||||||||||||||||
279 | if (i > 1
| 0-19 | ||||||||||||||||||
280 | ((void *)0)
| 0-12 | ||||||||||||||||||
281 | ) | - | ||||||||||||||||||
282 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
283 | if (BN_copy(rsa->n, r1) ==
| 0-31 | ||||||||||||||||||
284 | ((void *)0)
| 0-31 | ||||||||||||||||||
285 | ) | - | ||||||||||||||||||
286 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
287 | if (!BN_GENCB_call(cb, 3, i)
| 0-31 | ||||||||||||||||||
288 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
289 | } executed 31 times by 1 test: end of block Executed by:
| 31 | ||||||||||||||||||
290 | - | |||||||||||||||||||
291 | if (BN_cmp(rsa->p, rsa->q) < 0
| 9-10 | ||||||||||||||||||
292 | tmp = rsa->p; | - | ||||||||||||||||||
293 | rsa->p = rsa->q; | - | ||||||||||||||||||
294 | rsa->q = tmp; | - | ||||||||||||||||||
295 | } executed 9 times by 1 test: end of block Executed by:
| 9 | ||||||||||||||||||
296 | - | |||||||||||||||||||
297 | - | |||||||||||||||||||
298 | - | |||||||||||||||||||
299 | - | |||||||||||||||||||
300 | if (!BN_sub(r1, rsa->p, BN_value_one())
| 0-19 | ||||||||||||||||||
301 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
302 | - | |||||||||||||||||||
303 | if (!BN_sub(r2, rsa->q, BN_value_one())
| 0-19 | ||||||||||||||||||
304 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
305 | - | |||||||||||||||||||
306 | if (!BN_mul(r0, r1, r2, ctx)
| 0-19 | ||||||||||||||||||
307 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
308 | - | |||||||||||||||||||
309 | for (i = 2; i < primes
| 12-19 | ||||||||||||||||||
310 | pinfo = sk_RSA_PRIME_INFO_value(prime_infos, i - 2); | - | ||||||||||||||||||
311 | - | |||||||||||||||||||
312 | if (!BN_sub(pinfo->d, pinfo->r, BN_value_one())
| 0-12 | ||||||||||||||||||
313 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
314 | if (!BN_mul(r0, r0, pinfo->d, ctx)
| 0-12 | ||||||||||||||||||
315 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
316 | } executed 12 times by 1 test: end of block Executed by:
| 12 | ||||||||||||||||||
317 | - | |||||||||||||||||||
318 | { | - | ||||||||||||||||||
319 | BIGNUM *pr0 = BN_new(); | - | ||||||||||||||||||
320 | - | |||||||||||||||||||
321 | if (pr0 ==
| 0-19 | ||||||||||||||||||
322 | ((void *)0)
| 0-19 | ||||||||||||||||||
323 | ) | - | ||||||||||||||||||
324 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
325 | - | |||||||||||||||||||
326 | BN_with_flags(pr0, r0, 0x04); | - | ||||||||||||||||||
327 | if (!BN_mod_inverse(rsa->d, rsa->e, pr0, ctx)
| 0-19 | ||||||||||||||||||
328 | BN_free(pr0); | - | ||||||||||||||||||
329 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
330 | } | - | ||||||||||||||||||
331 | - | |||||||||||||||||||
332 | BN_free(pr0); | - | ||||||||||||||||||
333 | } | - | ||||||||||||||||||
334 | - | |||||||||||||||||||
335 | { | - | ||||||||||||||||||
336 | BIGNUM *d = BN_new(); | - | ||||||||||||||||||
337 | - | |||||||||||||||||||
338 | if (d ==
| 0-19 | ||||||||||||||||||
339 | ((void *)0)
| 0-19 | ||||||||||||||||||
340 | ) | - | ||||||||||||||||||
341 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
342 | - | |||||||||||||||||||
343 | BN_with_flags(d, rsa->d, 0x04); | - | ||||||||||||||||||
344 | - | |||||||||||||||||||
345 | - | |||||||||||||||||||
346 | if (!BN_div(
| 0-19 | ||||||||||||||||||
347 | ((void *)0)
| 0-19 | ||||||||||||||||||
348 | ,(rsa->dmp1),(d),(r1),(ctx))
| 0-19 | ||||||||||||||||||
349 | || !BN_div(
| 0-19 | ||||||||||||||||||
350 | ((void *)0)
| 0-19 | ||||||||||||||||||
351 | ,(rsa->dmq1),(d),(r2),(ctx))
| 0-19 | ||||||||||||||||||
352 | BN_free(d); | - | ||||||||||||||||||
353 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
354 | } | - | ||||||||||||||||||
355 | - | |||||||||||||||||||
356 | - | |||||||||||||||||||
357 | for (i = 2; i < primes
| 12-19 | ||||||||||||||||||
358 | pinfo = sk_RSA_PRIME_INFO_value(prime_infos, i - 2); | - | ||||||||||||||||||
359 | - | |||||||||||||||||||
360 | if (!BN_div(
| 0-12 | ||||||||||||||||||
361 | ((void *)0)
| 0-12 | ||||||||||||||||||
362 | ,(pinfo->d),(d),(pinfo->d),(ctx))
| 0-12 | ||||||||||||||||||
363 | BN_free(d); | - | ||||||||||||||||||
364 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
365 | } | - | ||||||||||||||||||
366 | } executed 12 times by 1 test: end of block Executed by:
| 12 | ||||||||||||||||||
367 | - | |||||||||||||||||||
368 | - | |||||||||||||||||||
369 | BN_free(d); | - | ||||||||||||||||||
370 | } | - | ||||||||||||||||||
371 | - | |||||||||||||||||||
372 | { | - | ||||||||||||||||||
373 | BIGNUM *p = BN_new(); | - | ||||||||||||||||||
374 | - | |||||||||||||||||||
375 | if (p ==
| 0-19 | ||||||||||||||||||
376 | ((void *)0)
| 0-19 | ||||||||||||||||||
377 | ) | - | ||||||||||||||||||
378 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
379 | BN_with_flags(p, rsa->p, 0x04); | - | ||||||||||||||||||
380 | - | |||||||||||||||||||
381 | - | |||||||||||||||||||
382 | if (!BN_mod_inverse(rsa->iqmp, rsa->q, p, ctx)
| 0-19 | ||||||||||||||||||
383 | BN_free(p); | - | ||||||||||||||||||
384 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
385 | } | - | ||||||||||||||||||
386 | - | |||||||||||||||||||
387 | - | |||||||||||||||||||
388 | for (i = 2; i < primes
| 12-19 | ||||||||||||||||||
389 | pinfo = sk_RSA_PRIME_INFO_value(prime_infos, i - 2); | - | ||||||||||||||||||
390 | BN_with_flags(p, pinfo->r, 0x04); | - | ||||||||||||||||||
391 | if (!BN_mod_inverse(pinfo->t, pinfo->pp, p, ctx)
| 0-12 | ||||||||||||||||||
392 | BN_free(p); | - | ||||||||||||||||||
393 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
394 | } | - | ||||||||||||||||||
395 | } executed 12 times by 1 test: end of block Executed by:
| 12 | ||||||||||||||||||
396 | - | |||||||||||||||||||
397 | - | |||||||||||||||||||
398 | BN_free(p); | - | ||||||||||||||||||
399 | } | - | ||||||||||||||||||
400 | - | |||||||||||||||||||
401 | ok = 1; | - | ||||||||||||||||||
402 | err: code before this statement executed 19 times by 1 test: err: Executed by:
| 19 | ||||||||||||||||||
403 | if (ok == -1
| 0-22 | ||||||||||||||||||
404 | ERR_put_error(4,(129),(3),__FILE__,387); | - | ||||||||||||||||||
405 | ok = 0; | - | ||||||||||||||||||
406 | } never executed: end of block | 0 | ||||||||||||||||||
407 | if (ctx !=
| 3-19 | ||||||||||||||||||
408 | ((void *)0)
| 3-19 | ||||||||||||||||||
409 | ) | - | ||||||||||||||||||
410 | BN_CTX_end(ctx); executed 19 times by 1 test: BN_CTX_end(ctx); Executed by:
| 19 | ||||||||||||||||||
411 | BN_CTX_free(ctx); | - | ||||||||||||||||||
412 | return executed 22 times by 1 test: ok;return ok; Executed by:
executed 22 times by 1 test: return ok; Executed by:
| 22 | ||||||||||||||||||
413 | } | - | ||||||||||||||||||
Switch to Source code | Preprocessed file |