Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/bn/bn_sqrt.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | - | ||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | - | |||||||||||||||||||
6 | - | |||||||||||||||||||
7 | - | |||||||||||||||||||
8 | { | - | ||||||||||||||||||
9 | BIGNUM *ret = in; | - | ||||||||||||||||||
10 | int err = 1; | - | ||||||||||||||||||
11 | int r; | - | ||||||||||||||||||
12 | BIGNUM *A, *b, *q, *t, *x, *y; | - | ||||||||||||||||||
13 | int e, i, j; | - | ||||||||||||||||||
14 | - | |||||||||||||||||||
15 | if (!BN_is_odd(p)
| 0-4601 | ||||||||||||||||||
16 | if (BN_abs_is_word(p, 2)
| 0-5 | ||||||||||||||||||
17 | if (ret ==
| 0-5 | ||||||||||||||||||
18 | ((void *)0)
| 0-5 | ||||||||||||||||||
19 | ) | - | ||||||||||||||||||
20 | ret = BN_new(); never executed: ret = BN_new(); | 0 | ||||||||||||||||||
21 | if (ret ==
| 0-5 | ||||||||||||||||||
22 | ((void *)0)
| 0-5 | ||||||||||||||||||
23 | ) | - | ||||||||||||||||||
24 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
25 | if (!BN_set_word(ret, BN_is_bit_set(a, 0))
| 0-5 | ||||||||||||||||||
26 | if (ret != in
| 0 | ||||||||||||||||||
27 | BN_free(ret); never executed: BN_free(ret); | 0 | ||||||||||||||||||
28 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
29 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
30 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
31 | } | - | ||||||||||||||||||
32 | ; | - | ||||||||||||||||||
33 | return executed 5 times by 1 test: ret;return ret; Executed by:
executed 5 times by 1 test: return ret; Executed by:
| 5 | ||||||||||||||||||
34 | } | - | ||||||||||||||||||
35 | - | |||||||||||||||||||
36 | ERR_put_error(3,(121),(112),__FILE__,41); | - | ||||||||||||||||||
37 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
38 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
39 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
40 | } | - | ||||||||||||||||||
41 | - | |||||||||||||||||||
42 | if (BN_is_zero(a)
| 1-4594 | ||||||||||||||||||
43 | if (ret ==
| 0-8 | ||||||||||||||||||
44 | ((void *)0)
| 0-8 | ||||||||||||||||||
45 | ) | - | ||||||||||||||||||
46 | ret = BN_new(); never executed: ret = BN_new(); | 0 | ||||||||||||||||||
47 | if (ret ==
| 0-8 | ||||||||||||||||||
48 | ((void *)0)
| 0-8 | ||||||||||||||||||
49 | ) | - | ||||||||||||||||||
50 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
51 | if (!BN_set_word(ret, BN_is_one(a))
| 0-8 | ||||||||||||||||||
52 | if (ret != in
| 0 | ||||||||||||||||||
53 | BN_free(ret); never executed: BN_free(ret); | 0 | ||||||||||||||||||
54 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
55 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
56 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
57 | } | - | ||||||||||||||||||
58 | ; | - | ||||||||||||||||||
59 | return executed 8 times by 1 test: ret;return ret; Executed by:
executed 8 times by 1 test: return ret; Executed by:
| 8 | ||||||||||||||||||
60 | } | - | ||||||||||||||||||
61 | - | |||||||||||||||||||
62 | BN_CTX_start(ctx); | - | ||||||||||||||||||
63 | A = BN_CTX_get(ctx); | - | ||||||||||||||||||
64 | b = BN_CTX_get(ctx); | - | ||||||||||||||||||
65 | q = BN_CTX_get(ctx); | - | ||||||||||||||||||
66 | t = BN_CTX_get(ctx); | - | ||||||||||||||||||
67 | x = BN_CTX_get(ctx); | - | ||||||||||||||||||
68 | y = BN_CTX_get(ctx); | - | ||||||||||||||||||
69 | if (y ==
| 0-4593 | ||||||||||||||||||
70 | ((void *)0)
| 0-4593 | ||||||||||||||||||
71 | ) | - | ||||||||||||||||||
72 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
73 | - | |||||||||||||||||||
74 | if (ret ==
| 0-4593 | ||||||||||||||||||
75 | ((void *)0)
| 0-4593 | ||||||||||||||||||
76 | ) | - | ||||||||||||||||||
77 | ret = BN_new(); never executed: ret = BN_new(); | 0 | ||||||||||||||||||
78 | if (ret ==
| 0-4593 | ||||||||||||||||||
79 | ((void *)0)
| 0-4593 | ||||||||||||||||||
80 | ) | - | ||||||||||||||||||
81 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
82 | - | |||||||||||||||||||
83 | - | |||||||||||||||||||
84 | if (!BN_nnmod(A, a, p, ctx)
| 0-4593 | ||||||||||||||||||
85 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
86 | - | |||||||||||||||||||
87 | - | |||||||||||||||||||
88 | e = 1; | - | ||||||||||||||||||
89 | while (!BN_is_bit_set(p, e)
| 4593-195180 | ||||||||||||||||||
90 | e++; executed 195180 times by 1 test: e++; Executed by:
| 195180 | ||||||||||||||||||
91 | - | |||||||||||||||||||
92 | - | |||||||||||||||||||
93 | if (e == 1
| 1894-2699 | ||||||||||||||||||
94 | if (!BN_rshift(q, p, 2)
| 0-1894 | ||||||||||||||||||
95 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
96 | q->neg = 0; | - | ||||||||||||||||||
97 | if (!BN_add_word(q, 1)
| 0-1894 | ||||||||||||||||||
98 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
99 | if (!BN_mod_exp(ret, A, q, p, ctx)
| 0-1894 | ||||||||||||||||||
100 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
101 | err = 0; | - | ||||||||||||||||||
102 | goto executed 1894 times by 1 test: vrfy;goto vrfy; Executed by:
executed 1894 times by 1 test: goto vrfy; Executed by:
| 1894 | ||||||||||||||||||
103 | } | - | ||||||||||||||||||
104 | - | |||||||||||||||||||
105 | if (e == 2
| 595-2104 | ||||||||||||||||||
106 | if (!BN_mod_lshift1_quick(t, A, p)
| 0-595 | ||||||||||||||||||
107 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
108 | - | |||||||||||||||||||
109 | - | |||||||||||||||||||
110 | if (!BN_rshift(q, p, 3)
| 0-595 | ||||||||||||||||||
111 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
112 | q->neg = 0; | - | ||||||||||||||||||
113 | if (!BN_mod_exp(b, t, q, p, ctx)
| 0-595 | ||||||||||||||||||
114 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
115 | - | |||||||||||||||||||
116 | - | |||||||||||||||||||
117 | if (!BN_mod_sqr(y, b, p, ctx)
| 0-595 | ||||||||||||||||||
118 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
119 | - | |||||||||||||||||||
120 | - | |||||||||||||||||||
121 | if (!BN_mod_mul(t, t, y, p, ctx)
| 0-595 | ||||||||||||||||||
122 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
123 | if (!BN_sub_word(t, 1)
| 0-595 | ||||||||||||||||||
124 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
125 | - | |||||||||||||||||||
126 | - | |||||||||||||||||||
127 | if (!BN_mod_mul(x, A, b, p, ctx)
| 0-595 | ||||||||||||||||||
128 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
129 | if (!BN_mod_mul(x, x, t, p, ctx)
| 0-595 | ||||||||||||||||||
130 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
131 | - | |||||||||||||||||||
132 | if (!BN_copy(ret, x)
| 0-595 | ||||||||||||||||||
133 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
134 | err = 0; | - | ||||||||||||||||||
135 | goto executed 595 times by 1 test: vrfy;goto vrfy; Executed by:
executed 595 times by 1 test: goto vrfy; Executed by:
| 595 | ||||||||||||||||||
136 | } | - | ||||||||||||||||||
137 | - | |||||||||||||||||||
138 | - | |||||||||||||||||||
139 | - | |||||||||||||||||||
140 | - | |||||||||||||||||||
141 | - | |||||||||||||||||||
142 | if (!BN_copy(q, p)
| 0-2104 | ||||||||||||||||||
143 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
144 | q->neg = 0; | - | ||||||||||||||||||
145 | i = 2; | - | ||||||||||||||||||
146 | do { | - | ||||||||||||||||||
147 | - | |||||||||||||||||||
148 | - | |||||||||||||||||||
149 | - | |||||||||||||||||||
150 | - | |||||||||||||||||||
151 | if (i < 22
| 550-20474 | ||||||||||||||||||
152 | if (!BN_set_word(y, i)
| 0-20474 | ||||||||||||||||||
153 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
154 | } executed 20474 times by 1 test: else {end of block Executed by:
| 20474 | ||||||||||||||||||
155 | if (!BN_priv_rand(y, BN_num_bits(p), 0, 0)
| 0-550 | ||||||||||||||||||
156 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
157 | if (BN_ucmp(y, p) >= 0
| 123-427 | ||||||||||||||||||
158 | if (!(p->neg
| 0-123 | ||||||||||||||||||
159 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
160 | } executed 123 times by 1 test: end of block Executed by:
| 123 | ||||||||||||||||||
161 | - | |||||||||||||||||||
162 | if (BN_is_zero(y)
| 0-550 | ||||||||||||||||||
163 | if (!BN_set_word(y, i)
| 0 | ||||||||||||||||||
164 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
165 | } executed 550 times by 1 test: end of block Executed by:
| 550 | ||||||||||||||||||
166 | - | |||||||||||||||||||
167 | r = BN_kronecker(y, q, ctx); | - | ||||||||||||||||||
168 | if (r < -1
| 0-21024 | ||||||||||||||||||
169 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
170 | if (r == 0
| 5-21019 | ||||||||||||||||||
171 | - | |||||||||||||||||||
172 | ERR_put_error(3,(121),(112),__FILE__,199); | - | ||||||||||||||||||
173 | goto executed 5 times by 1 test: end;goto end; Executed by:
executed 5 times by 1 test: goto end; Executed by:
| 5 | ||||||||||||||||||
174 | } | - | ||||||||||||||||||
175 | } executed 21019 times by 1 test: end of block Executed by:
| 21019 | ||||||||||||||||||
176 | while (r == 1
| 9-18929 | ||||||||||||||||||
177 | - | |||||||||||||||||||
178 | if (r != -1
| 9-2090 | ||||||||||||||||||
179 | - | |||||||||||||||||||
180 | - | |||||||||||||||||||
181 | - | |||||||||||||||||||
182 | - | |||||||||||||||||||
183 | - | |||||||||||||||||||
184 | ERR_put_error(3,(121),(113),__FILE__,211); | - | ||||||||||||||||||
185 | goto executed 9 times by 1 test: end;goto end; Executed by:
executed 9 times by 1 test: goto end; Executed by:
| 9 | ||||||||||||||||||
186 | } | - | ||||||||||||||||||
187 | - | |||||||||||||||||||
188 | - | |||||||||||||||||||
189 | if (!BN_rshift(q, q, e)
| 0-2090 | ||||||||||||||||||
190 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
191 | - | |||||||||||||||||||
192 | - | |||||||||||||||||||
193 | - | |||||||||||||||||||
194 | - | |||||||||||||||||||
195 | - | |||||||||||||||||||
196 | if (!BN_mod_exp(y, y, q, p, ctx)
| 0-2090 | ||||||||||||||||||
197 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
198 | if (BN_is_one(y)
| 0-2090 | ||||||||||||||||||
199 | ERR_put_error(3,(121),(112),__FILE__,226); | - | ||||||||||||||||||
200 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
201 | } | - | ||||||||||||||||||
202 | if (!BN_rshift1(t, q)
| 0-2090 | ||||||||||||||||||
203 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
204 | - | |||||||||||||||||||
205 | - | |||||||||||||||||||
206 | if (BN_is_zero(t)
| 5-2085 | ||||||||||||||||||
207 | if (!BN_nnmod(t, A, p, ctx)
| 0-5 | ||||||||||||||||||
208 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
209 | if (BN_is_zero(t)
| 0-5 | ||||||||||||||||||
210 | - | |||||||||||||||||||
211 | (BN_set_word((ret),0)); | - | ||||||||||||||||||
212 | err = 0; | - | ||||||||||||||||||
213 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
214 | } else if (!(BN_set_word((x),1))
| 0-5 | ||||||||||||||||||
215 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
216 | } executed 5 times by 1 test: else {end of block Executed by:
| 5 | ||||||||||||||||||
217 | if (!BN_mod_exp(x, A, t, p, ctx)
| 0-2085 | ||||||||||||||||||
218 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
219 | if (BN_is_zero(x)
| 0-2085 | ||||||||||||||||||
220 | - | |||||||||||||||||||
221 | (BN_set_word((ret),0)); | - | ||||||||||||||||||
222 | err = 0; | - | ||||||||||||||||||
223 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
224 | } | - | ||||||||||||||||||
225 | } executed 2085 times by 1 test: end of block Executed by:
| 2085 | ||||||||||||||||||
226 | - | |||||||||||||||||||
227 | - | |||||||||||||||||||
228 | if (!BN_mod_sqr(b, x, p, ctx)
| 0-2090 | ||||||||||||||||||
229 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
230 | if (!BN_mod_mul(b, b, A, p, ctx)
| 0-2090 | ||||||||||||||||||
231 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
232 | - | |||||||||||||||||||
233 | - | |||||||||||||||||||
234 | if (!BN_mod_mul(x, x, A, p, ctx)
| 0-2090 | ||||||||||||||||||
235 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
236 | - | |||||||||||||||||||
237 | while (1) { | - | ||||||||||||||||||
238 | if (BN_is_one(b)
| 1491-71682 | ||||||||||||||||||
239 | if (!BN_copy(ret, x)
| 0-1491 | ||||||||||||||||||
240 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
241 | err = 0; | - | ||||||||||||||||||
242 | goto executed 1491 times by 1 test: vrfy;goto vrfy; Executed by:
executed 1491 times by 1 test: goto vrfy; Executed by:
| 1491 | ||||||||||||||||||
243 | } | - | ||||||||||||||||||
244 | - | |||||||||||||||||||
245 | - | |||||||||||||||||||
246 | i = 1; | - | ||||||||||||||||||
247 | if (!BN_mod_sqr(t, b, p, ctx)
| 0-71682 | ||||||||||||||||||
248 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
249 | while (!BN_is_one(t)
| 71083-3365412 | ||||||||||||||||||
250 | i++; | - | ||||||||||||||||||
251 | if (i == e
| 599-3364813 | ||||||||||||||||||
252 | ERR_put_error(3,(121),(111),__FILE__,310); | - | ||||||||||||||||||
253 | goto executed 599 times by 1 test: end;goto end; Executed by:
executed 599 times by 1 test: goto end; Executed by:
| 599 | ||||||||||||||||||
254 | } | - | ||||||||||||||||||
255 | if (!BN_mod_mul(t, t, t, p, ctx)
| 0-3364813 | ||||||||||||||||||
256 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
257 | } executed 3364813 times by 1 test: end of block Executed by:
| 3364813 | ||||||||||||||||||
258 | - | |||||||||||||||||||
259 | - | |||||||||||||||||||
260 | if (!BN_copy(t, y)
| 0-71083 | ||||||||||||||||||
261 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
262 | for (j = e - i - 1; j > 0
| 63419-71083 | ||||||||||||||||||
263 | if (!BN_mod_sqr(t, t, p, ctx)
| 0-63419 | ||||||||||||||||||
264 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
265 | } executed 63419 times by 1 test: end of block Executed by:
| 63419 | ||||||||||||||||||
266 | if (!BN_mod_mul(y, t, t, p, ctx)
| 0-71083 | ||||||||||||||||||
267 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
268 | if (!BN_mod_mul(x, x, t, p, ctx)
| 0-71083 | ||||||||||||||||||
269 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
270 | if (!BN_mod_mul(b, b, y, p, ctx)
| 0-71083 | ||||||||||||||||||
271 | goto never executed: end;goto end; never executed: goto end; | 0 | ||||||||||||||||||
272 | e = i; | - | ||||||||||||||||||
273 | } executed 71083 times by 1 test: end of block Executed by:
| 71083 | ||||||||||||||||||
274 | - | |||||||||||||||||||
275 | vrfy: code before this statement never executed: vrfy: | 0 | ||||||||||||||||||
276 | if (!err
| 0-3980 | ||||||||||||||||||
277 | - | |||||||||||||||||||
278 | - | |||||||||||||||||||
279 | - | |||||||||||||||||||
280 | - | |||||||||||||||||||
281 | - | |||||||||||||||||||
282 | if (!BN_mod_sqr(x, ret, p, ctx)
| 0-3980 | ||||||||||||||||||
283 | err = 1; never executed: err = 1; | 0 | ||||||||||||||||||
284 | - | |||||||||||||||||||
285 | if (!err
| 0-3980 | ||||||||||||||||||
286 | ERR_put_error(3,(121),(111),__FILE__,344); | - | ||||||||||||||||||
287 | err = 1; | - | ||||||||||||||||||
288 | } executed 666 times by 1 test: end of block Executed by:
| 666 | ||||||||||||||||||
289 | } executed 3980 times by 1 test: end of block Executed by:
| 3980 | ||||||||||||||||||
290 | - | |||||||||||||||||||
291 | end: code before this statement executed 3980 times by 1 test: end: Executed by:
| 3980 | ||||||||||||||||||
292 | if (err
| 1279-3314 | ||||||||||||||||||
293 | if (ret != in
| 0-1279 | ||||||||||||||||||
294 | BN_clear_free(ret); never executed: BN_clear_free(ret); | 0 | ||||||||||||||||||
295 | ret = | - | ||||||||||||||||||
296 | ((void *)0) | - | ||||||||||||||||||
297 | ; | - | ||||||||||||||||||
298 | } executed 1279 times by 1 test: end of block Executed by:
| 1279 | ||||||||||||||||||
299 | BN_CTX_end(ctx); | - | ||||||||||||||||||
300 | ; | - | ||||||||||||||||||
301 | return executed 4593 times by 1 test: ret;return ret; Executed by:
executed 4593 times by 1 test: return ret; Executed by:
| 4593 | ||||||||||||||||||
302 | } | - | ||||||||||||||||||
Switch to Source code | Preprocessed file |