OpenCoverage

bn_exp2.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bn/bn_exp2.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: bn_exp2.c,v 1.12 2017/01/29 17:49:22 beck Exp $ */-
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)-
3 * All rights reserved.-
4 *-
5 * This package is an SSL implementation written-
6 * by Eric Young (eay@cryptsoft.com).-
7 * The implementation was written so as to conform with Netscapes SSL.-
8 *-
9 * This library is free for commercial and non-commercial use as long as-
10 * the following conditions are aheared to. The following conditions-
11 * apply to all code found in this distribution, be it the RC4, RSA,-
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation-
13 * included with this distribution is covered by the same copyright terms-
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).-
15 *-
16 * Copyright remains Eric Young's, and as such any Copyright notices in-
17 * the code are not to be removed.-
18 * If this package is used in a product, Eric Young should be given attribution-
19 * as the author of the parts of the library used.-
20 * This can be in the form of a textual message at program startup or-
21 * in documentation (online or textual) provided with the package.-
22 *-
23 * Redistribution and use in source and binary forms, with or without-
24 * modification, are permitted provided that the following conditions-
25 * are met:-
26 * 1. Redistributions of source code must retain the copyright-
27 * notice, this list of conditions and the following disclaimer.-
28 * 2. Redistributions in binary form must reproduce the above copyright-
29 * notice, this list of conditions and the following disclaimer in the-
30 * documentation and/or other materials provided with the distribution.-
31 * 3. All advertising materials mentioning features or use of this software-
32 * must display the following acknowledgement:-
33 * "This product includes cryptographic software written by-
34 * Eric Young (eay@cryptsoft.com)"-
35 * The word 'cryptographic' can be left out if the rouines from the library-
36 * being used are not cryptographic related :-).-
37 * 4. If you include any Windows specific code (or a derivative thereof) from-
38 * the apps directory (application code) you must include an acknowledgement:-
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"-
40 *-
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND-
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE-
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-
51 * SUCH DAMAGE.-
52 *-
53 * The licence and distribution terms for any publically available version or-
54 * derivative of this code cannot be changed. i.e. this code cannot simply be-
55 * copied and put under another distribution licence-
56 * [including the GNU Public Licence.]-
57 */-
58/* ====================================================================-
59 * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved.-
60 *-
61 * Redistribution and use in source and binary forms, with or without-
62 * modification, are permitted provided that the following conditions-
63 * are met:-
64 *-
65 * 1. Redistributions of source code must retain the above copyright-
66 * notice, this list of conditions and the following disclaimer.-
67 *-
68 * 2. Redistributions in binary form must reproduce the above copyright-
69 * notice, this list of conditions and the following disclaimer in-
70 * the documentation and/or other materials provided with the-
71 * distribution.-
72 *-
73 * 3. All advertising materials mentioning features or use of this-
74 * software must display the following acknowledgment:-
75 * "This product includes software developed by the OpenSSL Project-
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"-
77 *-
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
79 * endorse or promote products derived from this software without-
80 * prior written permission. For written permission, please contact-
81 * openssl-core@openssl.org.-
82 *-
83 * 5. Products derived from this software may not be called "OpenSSL"-
84 * nor may "OpenSSL" appear in their names without prior written-
85 * permission of the OpenSSL Project.-
86 *-
87 * 6. Redistributions of any form whatsoever must retain the following-
88 * acknowledgment:-
89 * "This product includes software developed by the OpenSSL Project-
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"-
91 *-
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
103 * OF THE POSSIBILITY OF SUCH DAMAGE.-
104 * ====================================================================-
105 *-
106 * This product includes cryptographic software written by Eric Young-
107 * (eay@cryptsoft.com). This product includes software written by Tim-
108 * Hudson (tjh@cryptsoft.com).-
109 *-
110 */-
111-
112#include <stdio.h>-
113-
114#include <openssl/err.h>-
115-
116#include "bn_lcl.h"-
117-
118#define TABLE_SIZE 32-
119-
120int-
121BN_mod_exp2_mont(BIGNUM *rr, const BIGNUM *a1, const BIGNUM *p1,-
122 const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, BN_CTX *ctx,-
123 BN_MONT_CTX *in_mont)-
124{-
125 int i, j, bits, b, bits1, bits2, ret = 0, wpos1, wpos2, window1, window2, wvalue1, wvalue2;-
126 int r_is_one = 1;-
127 BIGNUM *d, *r;-
128 const BIGNUM *a_mod_m;-
129 /* Tables of variables obtained from 'ctx' */-
130 BIGNUM *val1[TABLE_SIZE], *val2[TABLE_SIZE];-
131 BN_MONT_CTX *mont = NULL;-
132-
133 bn_check_top(a1);-
134 bn_check_top(p1);-
135 bn_check_top(a2);-
136 bn_check_top(p2);-
137 bn_check_top(m);-
138-
139 if (!(m->d[0] & 1)) {
!(m->d[0] & 1)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
140 BNerror(BN_R_CALLED_WITH_EVEN_MODULUS);-
141 return (0);
never executed: return (0);
0
142 }-
143 bits1 = BN_num_bits(p1);-
144 bits2 = BN_num_bits(p2);-
145 if ((bits1 == 0) && (bits2 == 0)) {
(bits1 == 0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
(bits2 == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0-1
146 ret = BN_one(rr);-
147 return ret;
never executed: return ret;
0
148 }-
149-
150 bits = (bits1 > bits2) ? bits1 : bits2;
(bits1 > bits2)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
151-
152 BN_CTX_start(ctx);-
153 if ((d = BN_CTX_get(ctx)) == NULL)
(d = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
154 goto err;
never executed: goto err;
0
155 if ((r = BN_CTX_get(ctx)) == NULL)
(r = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
156 goto err;
never executed: goto err;
0
157 if ((val1[0] = BN_CTX_get(ctx)) == NULL)
(val1[0] = BN_...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
158 goto err;
never executed: goto err;
0
159 if ((val2[0] = BN_CTX_get(ctx)) == NULL)
(val2[0] = BN_...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
160 goto err;
never executed: goto err;
0
161-
162 if (in_mont != NULL)
in_mont != ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
FALSEnever evaluated
0-1
163 mont = in_mont;
executed 1 time by 1 test: mont = in_mont;
Executed by:
  • dsatest
1
164 else {-
165 if ((mont = BN_MONT_CTX_new()) == NULL)
(mont = BN_MON...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
166 goto err;
never executed: goto err;
0
167 if (!BN_MONT_CTX_set(mont, m, ctx))
!BN_MONT_CTX_set(mont, m, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
0
168 goto err;
never executed: goto err;
0
169 }
never executed: end of block
0
170-
171 window1 = BN_window_bits_for_exponent_size(bits1);
(bits1) > 671Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
(bits1) > 239Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
(bits1) > 79Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
FALSEnever evaluated
(bits1) > 23Description
TRUEnever evaluated
FALSEnever evaluated
0-1
172 window2 = BN_window_bits_for_exponent_size(bits2);
(bits2) > 671Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
(bits2) > 239Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
(bits2) > 79Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
FALSEnever evaluated
(bits2) > 23Description
TRUEnever evaluated
FALSEnever evaluated
0-1
173-
174 /*-
175 * Build table for a1: val1[i] := a1^(2*i + 1) mod m for i = 0 .. 2^(window1-1)-
176 */-
177 if (a1->neg || BN_ucmp(a1, m) >= 0) {
a1->negDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
BN_ucmp(a1, m) >= 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
178 if (!BN_mod_ct(val1[0], a1, m, ctx))
!BN_div_ct( ((...a1),(m),(ctx))Description
TRUEnever evaluated
FALSEnever evaluated
0
179 goto err;
never executed: goto err;
0
180 a_mod_m = val1[0];-
181 } else
never executed: end of block
0
182 a_mod_m = a1;
executed 1 time by 1 test: a_mod_m = a1;
Executed by:
  • dsatest
1
183 if (BN_is_zero(a_mod_m)) {
((a_mod_m)->top == 0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
184 BN_zero(rr);-
185 ret = 1;-
186 goto err;
never executed: goto err;
0
187 }-
188-
189 if (!BN_to_montgomery(val1[0], a_mod_m, mont, ctx))
!BN_mod_mul_mo...,(mont),(ctx))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
190 goto err;
never executed: goto err;
0
191 if (window1 > 1) {
window1 > 1Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
FALSEnever evaluated
0-1
192 if (!BN_mod_mul_montgomery(d, val1[0], val1[0], mont, ctx))
!BN_mod_mul_mo...0], mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
193 goto err;
never executed: goto err;
0
194-
195 j = 1 << (window1 - 1);-
196 for (i = 1; i < j; i++) {
i < jDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
1-7
197 if (((val1[i] = BN_CTX_get(ctx)) == NULL) ||
((val1[i] = BN... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • dsatest
0-7
198 !BN_mod_mul_montgomery(val1[i], val1[i - 1],
!BN_mod_mul_mo... d, mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • dsatest
0-7
199 d, mont, ctx))
!BN_mod_mul_mo... d, mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • dsatest
0-7
200 goto err;
never executed: goto err;
0
201 }
executed 7 times by 1 test: end of block
Executed by:
  • dsatest
7
202 }
executed 1 time by 1 test: end of block
Executed by:
  • dsatest
1
203-
204-
205 /*-
206 * Build table for a2: val2[i] := a2^(2*i + 1) mod m for i = 0 .. 2^(window2-1)-
207 */-
208 if (a2->neg || BN_ucmp(a2, m) >= 0) {
a2->negDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
BN_ucmp(a2, m) >= 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
209 if (!BN_mod_ct(val2[0], a2, m, ctx))
!BN_div_ct( ((...a2),(m),(ctx))Description
TRUEnever evaluated
FALSEnever evaluated
0
210 goto err;
never executed: goto err;
0
211 a_mod_m = val2[0];-
212 } else
never executed: end of block
0
213 a_mod_m = a2;
executed 1 time by 1 test: a_mod_m = a2;
Executed by:
  • dsatest
1
214 if (BN_is_zero(a_mod_m)) {
((a_mod_m)->top == 0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
215 BN_zero(rr);-
216 ret = 1;-
217 goto err;
never executed: goto err;
0
218 }-
219 if (!BN_to_montgomery(val2[0], a_mod_m, mont, ctx))
!BN_mod_mul_mo...,(mont),(ctx))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
220 goto err;
never executed: goto err;
0
221 if (window2 > 1) {
window2 > 1Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
FALSEnever evaluated
0-1
222 if (!BN_mod_mul_montgomery(d, val2[0], val2[0], mont, ctx))
!BN_mod_mul_mo...0], mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
223 goto err;
never executed: goto err;
0
224-
225 j = 1 << (window2 - 1);-
226 for (i = 1; i < j; i++) {
i < jDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
1-7
227 if (((val2[i] = BN_CTX_get(ctx)) == NULL) ||
((val2[i] = BN... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • dsatest
0-7
228 !BN_mod_mul_montgomery(val2[i], val2[i - 1],
!BN_mod_mul_mo... d, mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • dsatest
0-7
229 d, mont, ctx))
!BN_mod_mul_mo... d, mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • dsatest
0-7
230 goto err;
never executed: goto err;
0
231 }
executed 7 times by 1 test: end of block
Executed by:
  • dsatest
7
232 }
executed 1 time by 1 test: end of block
Executed by:
  • dsatest
1
233-
234-
235 /* Now compute the power product, using independent windows. */-
236 r_is_one = 1;-
237 wvalue1 = 0; /* The 'value' of the first window */-
238 wvalue2 = 0; /* The 'value' of the second window */-
239 wpos1 = 0; /* If wvalue1 > 0, the bottom bit of the first window */-
240 wpos2 = 0; /* If wvalue2 > 0, the bottom bit of the second window */-
241-
242 if (!BN_to_montgomery(r, BN_value_one(), mont, ctx))
!BN_mod_mul_mo...,(mont),(ctx))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
243 goto err;
never executed: goto err;
0
244 for (b = bits - 1; b >= 0; b--) {
b >= 0Description
TRUEevaluated 160 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
1-160
245 if (!r_is_one) {
!r_is_oneDescription
TRUEevaluated 156 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 4 times by 1 test
Evaluated by:
  • dsatest
4-156
246 if (!BN_mod_mul_montgomery(r, r,r, mont, ctx))
!BN_mod_mul_mo...,r, mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 156 times by 1 test
Evaluated by:
  • dsatest
0-156
247 goto err;
never executed: goto err;
0
248 }
executed 156 times by 1 test: end of block
Executed by:
  • dsatest
156
249-
250 if (!wvalue1)
!wvalue1Description
TRUEevaluated 100 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 60 times by 1 test
Evaluated by:
  • dsatest
60-100
251 if (BN_is_bit_set(p1, b)) {
BN_is_bit_set(p1, b)Description
TRUEevaluated 31 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 69 times by 1 test
Evaluated by:
  • dsatest
31-69
252 /* consider bits b-window1+1 .. b for this window */-
253 i = b - window1 + 1;-
254 while (!BN_is_bit_set(p1, i)) /* works for i<0 */
!BN_is_bit_set(p1, i)Description
TRUEevaluated 33 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 31 times by 1 test
Evaluated by:
  • dsatest
31-33
255 i++;
executed 33 times by 1 test: i++;
Executed by:
  • dsatest
33
256 wpos1 = i;-
257 wvalue1 = 1;-
258 for (i = b - 1; i >= wpos1; i--) {
i >= wpos1Description
TRUEevaluated 60 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 31 times by 1 test
Evaluated by:
  • dsatest
31-60
259 wvalue1 <<= 1;-
260 if (BN_is_bit_set(p1, i))
BN_is_bit_set(p1, i)Description
TRUEevaluated 39 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 21 times by 1 test
Evaluated by:
  • dsatest
21-39
261 wvalue1++;
executed 39 times by 1 test: wvalue1++;
Executed by:
  • dsatest
39
262 }
executed 60 times by 1 test: end of block
Executed by:
  • dsatest
60
263 }
executed 31 times by 1 test: end of block
Executed by:
  • dsatest
31
264-
265 if (!wvalue2)
!wvalue2Description
TRUEevaluated 92 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 68 times by 1 test
Evaluated by:
  • dsatest
68-92
266 if (BN_is_bit_set(p2, b)) {
BN_is_bit_set(p2, b)Description
TRUEevaluated 33 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 59 times by 1 test
Evaluated by:
  • dsatest
33-59
267 /* consider bits b-window2+1 .. b for this window */-
268 i = b - window2 + 1;-
269 while (!BN_is_bit_set(p2, i))
!BN_is_bit_set(p2, i)Description
TRUEevaluated 31 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 33 times by 1 test
Evaluated by:
  • dsatest
31-33
270 i++;
executed 31 times by 1 test: i++;
Executed by:
  • dsatest
31
271 wpos2 = i;-
272 wvalue2 = 1;-
273 for (i = b - 1; i >= wpos2; i--) {
i >= wpos2Description
TRUEevaluated 68 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 33 times by 1 test
Evaluated by:
  • dsatest
33-68
274 wvalue2 <<= 1;-
275 if (BN_is_bit_set(p2, i))
BN_is_bit_set(p2, i)Description
TRUEevaluated 52 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 16 times by 1 test
Evaluated by:
  • dsatest
16-52
276 wvalue2++;
executed 52 times by 1 test: wvalue2++;
Executed by:
  • dsatest
52
277 }
executed 68 times by 1 test: end of block
Executed by:
  • dsatest
68
278 }
executed 33 times by 1 test: end of block
Executed by:
  • dsatest
33
279-
280 if (wvalue1 && b == wpos1) {
wvalue1Description
TRUEevaluated 91 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 69 times by 1 test
Evaluated by:
  • dsatest
b == wpos1Description
TRUEevaluated 31 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 60 times by 1 test
Evaluated by:
  • dsatest
31-91
281 /* wvalue1 is odd and < 2^window1 */-
282 if (!BN_mod_mul_montgomery(r, r, val1[wvalue1 >> 1],
!BN_mod_mul_mo...1], mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 31 times by 1 test
Evaluated by:
  • dsatest
0-31
283 mont, ctx))
!BN_mod_mul_mo...1], mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 31 times by 1 test
Evaluated by:
  • dsatest
0-31
284 goto err;
never executed: goto err;
0
285 wvalue1 = 0;-
286 r_is_one = 0;-
287 }
executed 31 times by 1 test: end of block
Executed by:
  • dsatest
31
288-
289 if (wvalue2 && b == wpos2) {
wvalue2Description
TRUEevaluated 101 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 59 times by 1 test
Evaluated by:
  • dsatest
b == wpos2Description
TRUEevaluated 33 times by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 68 times by 1 test
Evaluated by:
  • dsatest
33-101
290 /* wvalue2 is odd and < 2^window2 */-
291 if (!BN_mod_mul_montgomery(r, r, val2[wvalue2 >> 1],
!BN_mod_mul_mo...1], mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 33 times by 1 test
Evaluated by:
  • dsatest
0-33
292 mont, ctx))
!BN_mod_mul_mo...1], mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 33 times by 1 test
Evaluated by:
  • dsatest
0-33
293 goto err;
never executed: goto err;
0
294 wvalue2 = 0;-
295 r_is_one = 0;-
296 }
executed 33 times by 1 test: end of block
Executed by:
  • dsatest
33
297 }
executed 160 times by 1 test: end of block
Executed by:
  • dsatest
160
298 if (!BN_from_montgomery(rr, r,mont, ctx))
!BN_from_montg..., r,mont, ctx)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
0-1
299 goto err;
never executed: goto err;
0
300 ret = 1;-
301-
302err:
code before this statement executed 1 time by 1 test: err:
Executed by:
  • dsatest
1
303 if ((in_mont == NULL) && (mont != NULL))
(in_mont == ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
(mont != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0-1
304 BN_MONT_CTX_free(mont);
never executed: BN_MONT_CTX_free(mont);
0
305 BN_CTX_end(ctx);-
306 bn_check_top(rr);-
307 return (ret);
executed 1 time by 1 test: return (ret);
Executed by:
  • dsatest
1
308}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2