Line | Source | Count |
1 | | - |
2 | int RSA_check_key(const RSA *key) | - |
3 | { | - |
4 | return never executed: return RSA_check_key_ex(key, ((void *)0) ); RSA_check_key_ex(key, never executed: return RSA_check_key_ex(key, ((void *)0) ); | 0 |
5 | ((void *)0) never executed: return RSA_check_key_ex(key, ((void *)0) ); | 0 |
6 | ); never executed: return RSA_check_key_ex(key, ((void *)0) ); | 0 |
7 | } | - |
8 | | - |
9 | int RSA_check_key_ex(const RSA *key, BN_GENCB *cb) | - |
10 | { | - |
11 | BIGNUM *i, *j, *k, *l, *m; | - |
12 | BN_CTX *ctx; | - |
13 | int ret = 1, ex_primes = 0, idx; | - |
14 | RSA_PRIME_INFO *pinfo; | - |
15 | | - |
16 | if (key->p == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
17 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
18 | || key->q == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
19 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
20 | || key->n == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
21 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
22 | | - |
23 | || key->e == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
24 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
25 | || key->d == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
26 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
27 | ) { | - |
28 | ERR_put_error(4,(160),(147),__FILE__,28); | - |
29 | return never executed: return 0; 0;never executed: return 0; | 0 |
30 | } | - |
31 | | - |
32 | | - |
33 | if (key->version == 1TRUE | evaluated 7 times by 1 test | FALSE | evaluated 5 times by 1 test |
) { | 5-7 |
34 | ex_primes = sk_RSA_PRIME_INFO_num(key->prime_infos); | - |
35 | if (ex_primes <= 0TRUE | never evaluated | FALSE | evaluated 7 times by 1 test |
| 0-7 |
36 | || (TRUE | never evaluated | FALSE | evaluated 7 times by 1 test |
ex_primes + 2) > rsa_multip_cap(BN_num_bits(key->n))TRUE | never evaluated | FALSE | evaluated 7 times by 1 test |
) { | 0-7 |
37 | ERR_put_error(4,(160),(167),__FILE__,37); | - |
38 | return never executed: return 0; 0;never executed: return 0; | 0 |
39 | } | - |
40 | }executed 7 times by 1 test: end of block | 7 |
41 | | - |
42 | i = BN_new(); | - |
43 | j = BN_new(); | - |
44 | k = BN_new(); | - |
45 | l = BN_new(); | - |
46 | m = BN_new(); | - |
47 | ctx = BN_CTX_new(); | - |
48 | if (i == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
49 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
50 | || j == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
51 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
52 | || k == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
53 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
54 | || l == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
55 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
56 | | - |
57 | || m == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
58 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
59 | || ctx == TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
60 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
61 | ) { | - |
62 | ret = -1; | - |
63 | ERR_put_error(4,(160),((1|64)),__FILE__,51); | - |
64 | goto never executed: goto err; err;never executed: goto err; | 0 |
65 | } | - |
66 | | - |
67 | if (BN_is_one(key->e)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
68 | ret = 0; | - |
69 | ERR_put_error(4,(160),(101),__FILE__,57); | - |
70 | } never executed: end of block | 0 |
71 | if (!BN_is_odd(key->e)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
72 | ret = 0; | - |
73 | ERR_put_error(4,(160),(101),__FILE__,61); | - |
74 | } never executed: end of block | 0 |
75 | | - |
76 | | - |
77 | if (BN_is_prime_ex(key->p, 0, TRUE | evaluated 1 time by 1 test | FALSE | evaluated 11 times by 1 test |
| 1-11 |
78 | ((void *)0)TRUE | evaluated 1 time by 1 test | FALSE | evaluated 11 times by 1 test |
| 1-11 |
79 | , cb) != 1TRUE | evaluated 1 time by 1 test | FALSE | evaluated 11 times by 1 test |
) { | 1-11 |
80 | ret = 0; | - |
81 | ERR_put_error(4,(160),(128),__FILE__,67); | - |
82 | }executed 1 time by 1 test: end of block | 1 |
83 | | - |
84 | | - |
85 | if (BN_is_prime_ex(key->q, 0, TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
86 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
87 | , cb) != 1TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
88 | ret = 0; | - |
89 | ERR_put_error(4,(160),(129),__FILE__,73); | - |
90 | } never executed: end of block | 0 |
91 | | - |
92 | | - |
93 | for (idx = 0; idx < ex_primesTRUE | evaluated 13 times by 1 test | FALSE | evaluated 12 times by 1 test |
; idx++) { | 12-13 |
94 | pinfo = sk_RSA_PRIME_INFO_value(key->prime_infos, idx); | - |
95 | if (BN_is_prime_ex(pinfo->r, 0, TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
96 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
97 | , cb) != 1TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
98 | ret = 0; | - |
99 | ERR_put_error(4,(160),(170),__FILE__,81); | - |
100 | } never executed: end of block | 0 |
101 | }executed 13 times by 1 test: end of block | 13 |
102 | | - |
103 | | - |
104 | if (!BN_mul(i, key->p, key->q, ctx)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
105 | ret = -1; | - |
106 | goto never executed: goto err; err;never executed: goto err; | 0 |
107 | } | - |
108 | for (idx = 0; idx < ex_primesTRUE | evaluated 13 times by 1 test | FALSE | evaluated 12 times by 1 test |
; idx++) { | 12-13 |
109 | pinfo = sk_RSA_PRIME_INFO_value(key->prime_infos, idx); | - |
110 | if (!BN_mul(i, i, pinfo->r, ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
111 | ret = -1; | - |
112 | goto never executed: goto err; err;never executed: goto err; | 0 |
113 | } | - |
114 | }executed 13 times by 1 test: end of block | 13 |
115 | if (BN_cmp(i, key->n) != 0TRUE | evaluated 1 time by 1 test | FALSE | evaluated 11 times by 1 test |
) { | 1-11 |
116 | ret = 0; | - |
117 | if (ex_primesTRUE | never evaluated | FALSE | evaluated 1 time by 1 test |
) | 0-1 |
118 | ERR_put_error(4,(160),(172),__FILE__,101) never executed: ERR_put_error(4,(160),(172),__FILE__,101) ; | 0 |
119 | ; never executed: ERR_put_error(4,(160),(172),__FILE__,101) ; | 0 |
120 | else | - |
121 | ERR_put_error(4,(160),(127),__FILE__,103);executed 1 time by 1 test: ERR_put_error(4,(160),(127),__FILE__,103); | 1 |
122 | } | - |
123 | | - |
124 | | - |
125 | if (!BN_sub(i, key->p, BN_value_one())TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
126 | ret = -1; | - |
127 | goto never executed: goto err; err;never executed: goto err; | 0 |
128 | } | - |
129 | if (!BN_sub(j, key->q, BN_value_one())TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
130 | ret = -1; | - |
131 | goto never executed: goto err; err;never executed: goto err; | 0 |
132 | } | - |
133 | | - |
134 | | - |
135 | if (!BN_mul(l, i, j, ctx)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
136 | ret = -1; | - |
137 | goto never executed: goto err; err;never executed: goto err; | 0 |
138 | } | - |
139 | if (!BN_gcd(m, i, j, ctx)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
140 | ret = -1; | - |
141 | goto never executed: goto err; err;never executed: goto err; | 0 |
142 | } | - |
143 | for (idx = 0; idx < ex_primesTRUE | evaluated 13 times by 1 test | FALSE | evaluated 12 times by 1 test |
; idx++) { | 12-13 |
144 | pinfo = sk_RSA_PRIME_INFO_value(key->prime_infos, idx); | - |
145 | if (!BN_sub(k, pinfo->r, BN_value_one())TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
146 | ret = -1; | - |
147 | goto never executed: goto err; err;never executed: goto err; | 0 |
148 | } | - |
149 | if (!BN_mul(l, l, k, ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
150 | ret = -1; | - |
151 | goto never executed: goto err; err;never executed: goto err; | 0 |
152 | } | - |
153 | if (!BN_gcd(m, m, k, ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
154 | ret = -1; | - |
155 | goto never executed: goto err; err;never executed: goto err; | 0 |
156 | } | - |
157 | }executed 13 times by 1 test: end of block | 13 |
158 | if (!BN_div(k, TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
159 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
160 | , l, m, ctx)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
161 | ret = -1; | - |
162 | goto never executed: goto err; err;never executed: goto err; | 0 |
163 | } | - |
164 | if (!BN_mod_mul(i, key->d, key->e, k, ctx)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
165 | ret = -1; | - |
166 | goto never executed: goto err; err;never executed: goto err; | 0 |
167 | } | - |
168 | | - |
169 | if (!BN_is_one(i)TRUE | evaluated 1 time by 1 test | FALSE | evaluated 11 times by 1 test |
) { | 1-11 |
170 | ret = 0; | - |
171 | ERR_put_error(4,(160),(123),__FILE__,151); | - |
172 | }executed 1 time by 1 test: end of block | 1 |
173 | | - |
174 | if (key->dmp1 != TRUE | evaluated 12 times by 1 test | FALSE | never evaluated |
| 0-12 |
175 | ((void *)0)TRUE | evaluated 12 times by 1 test | FALSE | never evaluated |
| 0-12 |
176 | && key->dmq1 != TRUE | evaluated 12 times by 1 test | FALSE | never evaluated |
| 0-12 |
177 | ((void *)0)TRUE | evaluated 12 times by 1 test | FALSE | never evaluated |
| 0-12 |
178 | && key->iqmp != TRUE | evaluated 12 times by 1 test | FALSE | never evaluated |
| 0-12 |
179 | ((void *)0)TRUE | evaluated 12 times by 1 test | FALSE | never evaluated |
| 0-12 |
180 | ) { | - |
181 | | - |
182 | if (!BN_sub(i, key->p, BN_value_one())TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
183 | ret = -1; | - |
184 | goto never executed: goto err; err;never executed: goto err; | 0 |
185 | } | - |
186 | if (!BN_div(TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
187 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
188 | ,(j),(key->d),(i),(ctx))TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
189 | ret = -1; | - |
190 | goto never executed: goto err; err;never executed: goto err; | 0 |
191 | } | - |
192 | if (BN_cmp(j, key->dmp1) != 0TRUE | evaluated 1 time by 1 test | FALSE | evaluated 11 times by 1 test |
) { | 1-11 |
193 | ret = 0; | - |
194 | ERR_put_error(4,(160),(124),__FILE__,166); | - |
195 | }executed 1 time by 1 test: end of block | 1 |
196 | | - |
197 | | - |
198 | if (!BN_sub(i, key->q, BN_value_one())TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
199 | ret = -1; | - |
200 | goto never executed: goto err; err;never executed: goto err; | 0 |
201 | } | - |
202 | if (!BN_div(TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
203 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
| 0-12 |
204 | ,(j),(key->d),(i),(ctx))TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
205 | ret = -1; | - |
206 | goto never executed: goto err; err;never executed: goto err; | 0 |
207 | } | - |
208 | if (BN_cmp(j, key->dmq1) != 0TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
209 | ret = 0; | - |
210 | ERR_put_error(4,(160),(125),__FILE__,180); | - |
211 | } never executed: end of block | 0 |
212 | | - |
213 | | - |
214 | if (!BN_mod_inverse(i, key->q, key->p, ctx)TRUE | never evaluated | FALSE | evaluated 12 times by 1 test |
) { | 0-12 |
215 | ret = -1; | - |
216 | goto never executed: goto err; err;never executed: goto err; | 0 |
217 | } | - |
218 | if (BN_cmp(i, key->iqmp) != 0TRUE | evaluated 1 time by 1 test | FALSE | evaluated 11 times by 1 test |
) { | 1-11 |
219 | ret = 0; | - |
220 | ERR_put_error(4,(160),(126),__FILE__,190); | - |
221 | }executed 1 time by 1 test: end of block | 1 |
222 | }executed 12 times by 1 test: end of block | 12 |
223 | | - |
224 | for (idx = 0; idx < ex_primesTRUE | evaluated 13 times by 1 test | FALSE | evaluated 12 times by 1 test |
; idx++) { | 12-13 |
225 | pinfo = sk_RSA_PRIME_INFO_value(key->prime_infos, idx); | - |
226 | | - |
227 | if (!BN_sub(i, pinfo->r, BN_value_one())TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
228 | ret = -1; | - |
229 | goto never executed: goto err; err;never executed: goto err; | 0 |
230 | } | - |
231 | if (!BN_div(TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
232 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
233 | ,(j),(key->d),(i),(ctx))TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
234 | ret = -1; | - |
235 | goto never executed: goto err; err;never executed: goto err; | 0 |
236 | } | - |
237 | if (BN_cmp(j, pinfo->d) != 0TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
238 | ret = 0; | - |
239 | ERR_put_error(4,(160),(169),__FILE__,207); | - |
240 | } never executed: end of block | 0 |
241 | | - |
242 | if (!BN_mod_inverse(i, pinfo->pp, pinfo->r, ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
243 | ret = -1; | - |
244 | goto never executed: goto err; err;never executed: goto err; | 0 |
245 | } | - |
246 | if (BN_cmp(i, pinfo->t) != 0TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
247 | ret = 0; | - |
248 | ERR_put_error(4,(160),(168),__FILE__,216); | - |
249 | } never executed: end of block | 0 |
250 | }executed 13 times by 1 test: end of block | 13 |
251 | | - |
252 | err:code before this statement executed 12 times by 1 test: err: | 12 |
253 | BN_free(i); | - |
254 | BN_free(j); | - |
255 | BN_free(k); | - |
256 | BN_free(l); | - |
257 | BN_free(m); | - |
258 | BN_CTX_free(ctx); | - |
259 | returnexecuted 12 times by 1 test: return ret; ret;executed 12 times by 1 test: return ret; | 12 |
260 | } | - |
| | |