OpenCoverage

bn_prime.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bn/bn_prime.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1,-
5 const BIGNUM *a1_odd, int k, BN_CTX *ctx, BN_MONT_CTX *mont);-
6static int probable_prime(BIGNUM *rnd, int bits);-
7static int probable_prime_dh(BIGNUM *rnd, int bits,-
8 const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx);-
9static int probable_prime_dh_safe(BIGNUM *rnd, int bits,-
10 const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx);-
11-
12int-
13BN_GENCB_call(BN_GENCB *cb, int a, int b)-
14{-
15-
16 if (!cb
!cbDescription
TRUEevaluated 1587 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
  • mont
FALSEevaluated 983 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
)
983-1587
17 return
executed 1587 times by 4 tests: return 1;
Executed by:
  • bntest
  • dhtest
  • ectest
  • mont
1;
executed 1587 times by 4 tests: return 1;
Executed by:
  • bntest
  • dhtest
  • ectest
  • mont
1587
18 switch (cb->ver) {-
19 case
never executed: case 1:
1:
never executed: case 1:
0
20-
21 if (!cb->cb.cb_1
!cb->cb.cb_1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
22 return
never executed: return 1;
1;
never executed: return 1;
0
23 cb->cb.cb_1(a, b, cb->arg);-
24 return
never executed: return 1;
1;
never executed: return 1;
0
25 case
executed 983 times by 4 tests: case 2:
Executed by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
2:
executed 983 times by 4 tests: case 2:
Executed by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
983
26-
27 return
executed 983 times by 4 tests: return cb->cb.cb_2(a, b, cb);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
cb->cb.cb_2(a, b, cb);
executed 983 times by 4 tests: return cb->cb.cb_2(a, b, cb);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
983
28 default
never executed: default:
:
never executed: default:
0
29 break;
never executed: break;
0
30 }-
31-
32 return
never executed: return 0;
0;
never executed: return 0;
0
33}-
34-
35int-
36BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add,-
37 const BIGNUM *rem, BN_GENCB *cb)-
38{-
39 BIGNUM *t;-
40 int found = 0;-
41 int i, j, c1 = 0;-
42 BN_CTX *ctx;-
43 int checks;-
44-
45 if (bits < 2
bits < 2Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
|| (bits == 2
bits == 2Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
&& safe
safeDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0-30
46-
47-
48-
49-
50 ERR_put_error(3,(0xfff),(117),__FILE__,176);-
51 return
never executed: return 0;
0;
never executed: return 0;
0
52 }-
53-
54 ctx = BN_CTX_new();-
55 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
0-30
56 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
0-30
57 )-
58 goto
never executed: goto err;
err;
never executed: goto err;
0
59 BN_CTX_start(ctx);-
60 if ((
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
t = BN_CTX_get(ctx)) ==
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
0-30
61 ((void *)0)
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
0-30
62 )-
63 goto
never executed: goto err;
err;
never executed: goto err;
0
64-
65 checks = ((
(bits) >= 1300Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
bits) >= 1300
(bits) >= 1300Description
TRUEnever evaluated
FALSEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
? 2 : (
(bits) >= 850Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 28 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 850
(bits) >= 850Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 28 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 3 : (
(bits) >= 650Description
TRUEnever evaluated
FALSEevaluated 28 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 650
(bits) >= 650Description
TRUEnever evaluated
FALSEevaluated 28 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 4 : (
(bits) >= 550Description
TRUEnever evaluated
FALSEevaluated 28 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 550
(bits) >= 550Description
TRUEnever evaluated
FALSEevaluated 28 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 5 : (
(bits) >= 450Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • bntest
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 450
(bits) >= 450Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • bntest
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 6 : (
(bits) >= 400Description
TRUEnever evaluated
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 400
(bits) >= 400Description
TRUEnever evaluated
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 7 : (
(bits) >= 350Description
TRUEnever evaluated
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 350
(bits) >= 350Description
TRUEnever evaluated
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 8 : (
(bits) >= 300Description
TRUEnever evaluated
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 300
(bits) >= 300Description
TRUEnever evaluated
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 9 : (
(bits) >= 250Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 19 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 250
(bits) >= 250Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 19 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 12 : (
(bits) >= 200Description
TRUEnever evaluated
FALSEevaluated 19 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 200
(bits) >= 200Description
TRUEnever evaluated
FALSEevaluated 19 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 15 : (
(bits) >= 150Description
TRUEnever evaluated
FALSEevaluated 19 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
bits) >= 150
(bits) >= 150Description
TRUEnever evaluated
FALSEevaluated 19 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
? 18 : 27);
0-30
66-
67loop:
code before this statement executed 30 times by 4 tests: loop:
Executed by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
30
68-
69 if (add ==
add == ((void *)0)Description
TRUEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 94 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
24-94
70 ((void *)0)
add == ((void *)0)Description
TRUEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 94 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
24-94
71 ) {-
72 if (!probable_prime(ret, bits)
!probable_prime(ret, bits)Description
TRUEnever evaluated
FALSEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
)
0-24
73 goto
never executed: goto err;
err;
never executed: goto err;
0
74 }
executed 24 times by 2 tests: end of block
Executed by:
  • bntest
  • libcrypto.so.44.0.1
else {
24
75 if (safe
safeDescription
TRUEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
) {
42-52
76 if (!probable_prime_dh_safe(ret, bits, add, rem, ctx)
!probable_prim...add, rem, ctx)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
77 goto
never executed: goto err;
err;
never executed: goto err;
0
78 }
executed 42 times by 2 tests: end of block
Executed by:
  • dhtest
  • mont
else {
42
79 if (!probable_prime_dh(ret, bits, add, rem, ctx)
!probable_prim...add, rem, ctx)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
)
0-52
80 goto
never executed: goto err;
err;
never executed: goto err;
0
81 }
executed 52 times by 1 test: end of block
Executed by:
  • bntest
52
82 }-
83-
84 if (!BN_GENCB_call(cb, 0, c1++)
!BN_GENCB_call(cb, 0, c1++)Description
TRUEnever evaluated
FALSEevaluated 118 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
)
0-118
85-
86 goto
never executed: goto err;
err;
never executed: goto err;
0
87-
88 if (!safe
!safeDescription
TRUEevaluated 76 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
) {
42-76
89 i = BN_is_prime_fasttest_ex(ret, checks, ctx, 0, cb);-
90 if (i == -1
i == -1Description
TRUEnever evaluated
FALSEevaluated 76 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
)
0-76
91 goto
never executed: goto err;
err;
never executed: goto err;
0
92 if (i == 0
i == 0Description
TRUEevaluated 64 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 12 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
)
12-64
93 goto
executed 64 times by 2 tests: goto loop;
Executed by:
  • bntest
  • libcrypto.so.44.0.1
loop;
executed 64 times by 2 tests: goto loop;
Executed by:
  • bntest
  • libcrypto.so.44.0.1
64
94 }
executed 12 times by 2 tests: end of block
Executed by:
  • bntest
  • libcrypto.so.44.0.1
else {
12
95-
96-
97-
98-
99 if (!BN_rshift1(t, ret)
!BN_rshift1(t, ret)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
100 goto
never executed: goto err;
err;
never executed: goto err;
0
101-
102 for (i = 0; i < checks
i < checksDescription
TRUEevaluated 510 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 18 times by 2 tests
Evaluated by:
  • dhtest
  • mont
; i++) {
18-510
103 j = BN_is_prime_fasttest_ex(ret, 1, ctx, 0, cb);-
104 if (j == -1
j == -1Description
TRUEnever evaluated
FALSEevaluated 510 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-510
105 goto
never executed: goto err;
err;
never executed: goto err;
0
106 if (j == 0
j == 0Description
TRUEevaluated 17 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 493 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
17-493
107 goto
executed 17 times by 2 tests: goto loop;
Executed by:
  • dhtest
  • mont
loop;
executed 17 times by 2 tests: goto loop;
Executed by:
  • dhtest
  • mont
17
108-
109 j = BN_is_prime_fasttest_ex(t, 1, ctx, 0, cb);-
110 if (j == -1
j == -1Description
TRUEnever evaluated
FALSEevaluated 493 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-493
111 goto
never executed: goto err;
err;
never executed: goto err;
0
112 if (j == 0
j == 0Description
TRUEevaluated 7 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 486 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
7-486
113 goto
executed 7 times by 2 tests: goto loop;
Executed by:
  • dhtest
  • mont
loop;
executed 7 times by 2 tests: goto loop;
Executed by:
  • dhtest
  • mont
7
114-
115 if (!BN_GENCB_call(cb, 2, c1 - 1)
!BN_GENCB_call(cb, 2, c1 - 1)Description
TRUEnever evaluated
FALSEevaluated 486 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-486
116 goto
never executed: goto err;
err;
never executed: goto err;
0
117-
118 }
executed 486 times by 2 tests: end of block
Executed by:
  • dhtest
  • mont
486
119 }
executed 18 times by 2 tests: end of block
Executed by:
  • dhtest
  • mont
18
120-
121 found = 1;-
122-
123err:
code before this statement executed 30 times by 4 tests: err:
Executed by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
30
124 if (ctx !=
ctx != ((void *)0)Description
TRUEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
0-30
125 ((void *)0)
ctx != ((void *)0)Description
TRUEevaluated 30 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
0-30
126 ) {-
127 BN_CTX_end(ctx);-
128 BN_CTX_free(ctx);-
129 }
executed 30 times by 4 tests: end of block
Executed by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
30
130 ;-
131 return
executed 30 times by 4 tests: return found;
Executed by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
found;
executed 30 times by 4 tests: return found;
Executed by:
  • bntest
  • dhtest
  • libcrypto.so.44.0.1
  • mont
30
132}-
133-
134int-
135BN_is_prime_ex(const BIGNUM *a, int checks, BN_CTX *ctx_passed, BN_GENCB *cb)-
136{-
137 return
executed 8 times by 2 tests: return BN_is_prime_fasttest_ex(a, checks, ctx_passed, 0, cb);
Executed by:
  • dhtest
  • ectest
BN_is_prime_fasttest_ex(a, checks, ctx_passed, 0, cb);
executed 8 times by 2 tests: return BN_is_prime_fasttest_ex(a, checks, ctx_passed, 0, cb);
Executed by:
  • dhtest
  • ectest
8
138}-
139-
140int-
141BN_is_prime_fasttest_ex(const BIGNUM *a, int checks, BN_CTX *ctx_passed,-
142 int do_trial_division, BN_GENCB *cb)-
143{-
144 int i, j, ret = -1;-
145 int k;-
146 BN_CTX *ctx = -
147 ((void *)0)-
148 ;-
149 BIGNUM *A1, *A1_odd, *check;-
150 BN_MONT_CTX *mont = -
151 ((void *)0)-
152 ;-
153 const BIGNUM *A = -
154 ((void *)0)-
155 ;-
156-
157 if (BN_cmp(a, BN_value_one()) <= 0
BN_cmp(a, BN_value_one()) <= 0Description
TRUEnever evaluated
FALSEevaluated 1536 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1536
158 return
never executed: return 0;
0;
never executed: return 0;
0
159-
160 if (checks == 0
checks == 0Description
TRUEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
FALSEevaluated 1528 times by 5 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
)
8-1528
161 checks = ((
(BN_num_bits(a)) >= 1300Description
TRUEnever evaluated
FALSEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 1300
(BN_num_bits(a)) >= 1300Description
TRUEnever evaluated
FALSEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 2 : (
(BN_num_bits(a)) >= 850Description
TRUEnever evaluated
FALSEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 850
(BN_num_bits(a)) >= 850Description
TRUEnever evaluated
FALSEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 3 : (
(BN_num_bits(a)) >= 650Description
TRUEnever evaluated
FALSEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 650
(BN_num_bits(a)) >= 650Description
TRUEnever evaluated
FALSEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 4 : (
(BN_num_bits(a)) >= 550Description
TRUEnever evaluated
FALSEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 550
(BN_num_bits(a)) >= 550Description
TRUEnever evaluated
FALSEevaluated 8 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 5 : (
(BN_num_bits(a)) >= 450Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • ectest
FALSEevaluated 7 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 450
(BN_num_bits(a)) >= 450Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • ectest
FALSEevaluated 7 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 6 : (
(BN_num_bits(a)) >= 400Description
TRUEnever evaluated
FALSEevaluated 7 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 400
(BN_num_bits(a)) >= 400Description
TRUEnever evaluated
FALSEevaluated 7 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 7 : (
(BN_num_bits(a)) >= 350Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • ectest
FALSEevaluated 6 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 350
(BN_num_bits(a)) >= 350Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • ectest
FALSEevaluated 6 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 8 : (
(BN_num_bits(a)) >= 300Description
TRUEnever evaluated
FALSEevaluated 6 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 300
(BN_num_bits(a)) >= 300Description
TRUEnever evaluated
FALSEevaluated 6 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 9 : (
(BN_num_bits(a)) >= 250Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • ectest
FALSEevaluated 5 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 250
(BN_num_bits(a)) >= 250Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • ectest
FALSEevaluated 5 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 12 : (
(BN_num_bits(a)) >= 200Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • ectest
FALSEevaluated 4 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
BN_num_bits(a)) >= 200
(BN_num_bits(a)) >= 200Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • ectest
FALSEevaluated 4 times by 2 tests
Evaluated by:
  • dhtest
  • ectest
? 15 : (
(BN_num_bits(a)) >= 150Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • ectest
FALSEevaluated 2 times by 1 test
Evaluated by:
  • dhtest
BN_num_bits(a)) >= 150
(BN_num_bits(a)) >= 150Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • ectest
FALSEevaluated 2 times by 1 test
Evaluated by:
  • dhtest
? 18 : 27);
executed 8 times by 2 tests: checks = ((BN_num_bits(a)) >= 1300 ? 2 : (BN_num_bits(a)) >= 850 ? 3 : (BN_num_bits(a)) >= 650 ? 4 : (BN_num_bits(a)) >= 550 ? 5 : (BN_num_bits(a)) >= 450 ? 6 : (BN_num_bits(a)) >= 400 ? 7 : (BN_num_bits(a)) >= 350 ? 8 : (BN_num_bits(a)) >= 300 ? 9 : (BN_num_bits(a)) >= 250 ? 12 : (BN_num_bits(a)) >= 200 ? 15 : (BN_num_bits(a)) >= 150 ? 18 : 27);
Executed by:
  • dhtest
  • ectest
0-8
162-
163-
164 if (!(((
((a)->top > 0)Description
TRUEevaluated 1536 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
a)->top > 0)
((a)->top > 0)Description
TRUEevaluated 1536 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
&& ((
((a)->d[0] & 1)Description
TRUEevaluated 1532 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 4 times by 1 test
Evaluated by:
  • dhtest
a)->d[0] & 1)
((a)->d[0] & 1)Description
TRUEevaluated 1532 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 4 times by 1 test
Evaluated by:
  • dhtest
))
0-1536
165-
166 return
executed 4 times by 1 test: return ((((((a))->top == 1) && (((a))->d[0] == (unsigned long)((2)))) || ((((2)) == 0) && (((a))->top == 0))) && (!(2) || !(a)->neg));
Executed by:
  • dhtest
((((((
(((a))->top == 1)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • dhtest
FALSEnever evaluated
a))->top == 1)
(((a))->top == 1)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • dhtest
FALSEnever evaluated
&& (((
(((a))->d[0] =...ed long)((2)))Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • dhtest
a))->d[0] == (unsigned long)((2)))
(((a))->d[0] =...ed long)((2)))Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • dhtest
) || ((((
(((2)) == 0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • dhtest
2)) == 0)
(((2)) == 0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • dhtest
&& (((
(((a))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
a))->top == 0)
(((a))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
)) && (!(2) || !(a)->neg
!(a)->negDescription
TRUEnever evaluated
FALSEnever evaluated
));
executed 4 times by 1 test: return ((((((a))->top == 1) && (((a))->d[0] == (unsigned long)((2)))) || ((((2)) == 0) && (((a))->top == 0))) && (!(2) || !(a)->neg));
Executed by:
  • dhtest
0-4
167 if (do_trial_division
do_trial_divisionDescription
TRUEevaluated 448 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 1084 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
) {
448-1084
168 for (i = 1; i < 2048
i < 2048Description
TRUEevaluated 112372 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 46 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
; i++) {
46-112372
169 unsigned long mod = BN_mod_word(a, primes[i]);-
170 if (mod == (unsigned long)-1
mod == (unsigned long)-1Description
TRUEnever evaluated
FALSEevaluated 112372 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
)
0-112372
171 goto
never executed: goto err;
err;
never executed: goto err;
0
172 if (mod == 0
mod == 0Description
TRUEevaluated 402 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 111970 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
)
402-111970
173 return
executed 402 times by 2 tests: return 0;
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
0;
executed 402 times by 2 tests: return 0;
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
402
174 }
executed 111970 times by 2 tests: end of block
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
111970
175 if (!BN_GENCB_call(cb, 1, -1)
!BN_GENCB_call(cb, 1, -1)Description
TRUEnever evaluated
FALSEevaluated 46 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
)
0-46
176 goto
never executed: goto err;
err;
never executed: goto err;
0
177 }
executed 46 times by 2 tests: end of block
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
46
178-
179 if (ctx_passed !=
ctx_passed != ((void *)0)Description
TRUEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
0-1130
180 ((void *)0)
ctx_passed != ((void *)0)Description
TRUEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
0-1130
181 )-
182 ctx = ctx_passed;
executed 1130 times by 6 tests: ctx = ctx_passed;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1130
183 else if ((
(ctx = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ctx = BN_CTX_new()) ==
(ctx = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
184 ((void *)0)
(ctx = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
185 )-
186 goto
never executed: goto err;
err;
never executed: goto err;
0
187 BN_CTX_start(ctx);-
188-
189-
190 if (a->neg
a->negDescription
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
) {
0-1130
191 BIGNUM *t;-
192 if ((
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
t = BN_CTX_get(ctx)) ==
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
193 ((void *)0)
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
194 )-
195 goto
never executed: goto err;
err;
never executed: goto err;
0
196 BN_copy(t, a);-
197 t->neg = 0;-
198 A = t;-
199 }
never executed: end of block
else
0
200 A = a;
executed 1130 times by 6 tests: A = a;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1130
201 if ((
(A1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
A1 = BN_CTX_get(ctx)) ==
(A1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
202 ((void *)0)
(A1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
203 )-
204 goto
never executed: goto err;
err;
never executed: goto err;
0
205 if ((
(A1_odd = BN_C...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
A1_odd = BN_CTX_get(ctx)) ==
(A1_odd = BN_C...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
206 ((void *)0)
(A1_odd = BN_C...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
207 )-
208 goto
never executed: goto err;
err;
never executed: goto err;
0
209 if ((
(check = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
check = BN_CTX_get(ctx)) ==
(check = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
210 ((void *)0)
(check = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
211 )-
212 goto
never executed: goto err;
err;
never executed: goto err;
0
213-
214-
215 if (!BN_copy(A1, A)
!BN_copy(A1, A)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1130
216 goto
never executed: goto err;
err;
never executed: goto err;
0
217 if (!BN_sub_word(A1, 1)
!BN_sub_word(A1, 1)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1130
218 goto
never executed: goto err;
err;
never executed: goto err;
0
219 if (((
((A1)->top == 0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
A1)->top == 0)
((A1)->top == 0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
) {
0-1130
220 ret = 0;-
221 goto
never executed: goto err;
err;
never executed: goto err;
0
222 }-
223-
224-
225 k = 1;-
226 while (!BN_is_bit_set(A1, k)
!BN_is_bit_set(A1, k)Description
TRUEevaluated 1394 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
1130-1394
227 k++;
executed 1394 times by 6 tests: k++;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1394
228 if (!BN_rshift(A1_odd, A1, k)
!BN_rshift(A1_odd, A1, k)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1130
229 goto
never executed: goto err;
err;
never executed: goto err;
0
230-
231-
232 mont = BN_MONT_CTX_new();-
233 if (mont ==
mont == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
234 ((void *)0)
mont == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
235 )-
236 goto
never executed: goto err;
err;
never executed: goto err;
0
237 if (!BN_MONT_CTX_set(mont, A, ctx)
!BN_MONT_CTX_set(mont, A, ctx)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1130
238 goto
never executed: goto err;
err;
never executed: goto err;
0
239-
240 for (i = 0; i < checks
i < checksDescription
TRUEevaluated 1572 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 1003 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
; i++) {
1003-1572
241 if (!BN_pseudo_rand_range(check, A1)
!BN_pseudo_ran...nge(check, A1)Description
TRUEnever evaluated
FALSEevaluated 1572 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1572
242 goto
never executed: goto err;
err;
never executed: goto err;
0
243 if (!BN_add_word(check, 1)
!BN_add_word(check, 1)Description
TRUEnever evaluated
FALSEevaluated 1572 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1572
244 goto
never executed: goto err;
err;
never executed: goto err;
0
245-
246-
247 j = witness(check, A, A1, A1_odd, k, ctx, mont);-
248 if (j == -1
j == -1Description
TRUEnever evaluated
FALSEevaluated 1572 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1572
249 goto
never executed: goto err;
err;
never executed: goto err;
0
250 if (j
jDescription
TRUEevaluated 127 times by 5 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 1445 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
) {
127-1445
251 ret = 0;-
252 goto
executed 127 times by 5 tests: goto err;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
err;
executed 127 times by 5 tests: goto err;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
127
253 }-
254 if (!BN_GENCB_call(cb, 1, i)
!BN_GENCB_call(cb, 1, i)Description
TRUEnever evaluated
FALSEevaluated 1445 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1445
255 goto
never executed: goto err;
err;
never executed: goto err;
0
256 }
executed 1445 times by 6 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1445
257 ret = 1;-
258-
259err:
code before this statement executed 1003 times by 6 tests: err:
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1003
260 if (ctx !=
ctx != ((void *)0)Description
TRUEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
0-1130
261 ((void *)0)
ctx != ((void *)0)Description
TRUEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
0-1130
262 ) {-
263 BN_CTX_end(ctx);-
264 if (ctx_passed ==
ctx_passed == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
265 ((void *)0)
ctx_passed == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1130 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0-1130
266 )-
267 BN_CTX_free(ctx);
never executed: BN_CTX_free(ctx);
0
268 }
executed 1130 times by 6 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1130
269 BN_MONT_CTX_free(mont);-
270-
271 return
executed 1130 times by 6 tests: return (ret);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
(ret);
executed 1130 times by 6 tests: return (ret);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1130
272}-
273-
274static int-
275witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1, const BIGNUM *a1_odd,-
276 int k, BN_CTX *ctx, BN_MONT_CTX *mont)-
277{-
278 if (!BN_mod_exp_mont_ct(w, w, a1_odd, a, ctx, mont)
!BN_mod_exp_mo... a, ctx, mont)Description
TRUEnever evaluated
FALSEevaluated 1572 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-1572
279-
280 return
never executed: return -1;
-1;
never executed: return -1;
0
281 if (((((((
(((w))->top == 1)Description
TRUEevaluated 1243 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 329 times by 4 tests
Evaluated by:
  • bntest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
w))->top == 1)
(((w))->top == 1)Description
TRUEevaluated 1243 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 329 times by 4 tests
Evaluated by:
  • bntest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
&& (((
(((w))->d[0] =...gned long)(1))Description
TRUEevaluated 512 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 731 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
w))->d[0] == (unsigned long)(1))
(((w))->d[0] =...gned long)(1))Description
TRUEevaluated 512 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 731 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • mont
) || (((
((1) == 0)Description
TRUEnever evaluated
FALSEevaluated 1060 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1) == 0)
((1) == 0)Description
TRUEnever evaluated
FALSEevaluated 1060 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
&& (((
(((w))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
w))->top == 0)
(((w))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
)) && !(w)->neg
!(w)->negDescription
TRUEevaluated 512 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEnever evaluated
))
0-1243
282 return
executed 512 times by 6 tests: return 0;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0;
executed 512 times by 6 tests: return 0;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
512
283 if (BN_cmp(w, a1) == 0
BN_cmp(w, a1) == 0Description
TRUEevaluated 493 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 567 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
493-567
284 return
executed 493 times by 6 tests: return 0;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
0;
executed 493 times by 6 tests: return 0;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
493
285 while (--
--kDescription
TRUEevaluated 2670 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 127 times by 5 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
k
--kDescription
TRUEevaluated 2670 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 127 times by 5 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
) {
127-2670
286 if (!BN_mod_mul(w, w, w, a, ctx)
!BN_mod_mul(w, w, w, a, ctx)Description
TRUEnever evaluated
FALSEevaluated 2670 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
0-2670
287 return
never executed: return -1;
-1;
never executed: return -1;
0
288 if (((((((
(((w))->top == 1)Description
TRUEevaluated 936 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 1734 times by 4 tests
Evaluated by:
  • bntest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
w))->top == 1)
(((w))->top == 1)Description
TRUEevaluated 936 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 1734 times by 4 tests
Evaluated by:
  • bntest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
&& (((
(((w))->d[0] =...gned long)(1))Description
TRUEnever evaluated
FALSEevaluated 936 times by 2 tests
Evaluated by:
  • dhtest
  • mont
w))->d[0] == (unsigned long)(1))
(((w))->d[0] =...gned long)(1))Description
TRUEnever evaluated
FALSEevaluated 936 times by 2 tests
Evaluated by:
  • dhtest
  • mont
) || (((
((1) == 0)Description
TRUEnever evaluated
FALSEevaluated 2670 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1) == 0)
((1) == 0)Description
TRUEnever evaluated
FALSEevaluated 2670 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
&& (((
(((w))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
w))->top == 0)
(((w))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
)) && !(w)->neg
!(w)->negDescription
TRUEnever evaluated
FALSEnever evaluated
))
0-2670
289 return
never executed: return 1;
1;
never executed: return 1;
0
290-
291 if (BN_cmp(w, a1) == 0
BN_cmp(w, a1) == 0Description
TRUEevaluated 440 times by 5 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • mont
FALSEevaluated 2230 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
)
440-2230
292 return
executed 440 times by 5 tests: return 0;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • mont
0;
executed 440 times by 5 tests: return 0;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • mont
440
293 }
executed 2230 times by 6 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
2230
294-
295-
296 ;-
297 return
executed 127 times by 5 tests: return 1;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
1;
executed 127 times by 5 tests: return 1;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
127
298}-
299-
300static int-
301probable_prime(BIGNUM *rnd, int bits)-
302{-
303 int i;-
304 prime_t mods[2048];-
305 unsigned long delta, maxdelta;-
306-
307again:
code before this statement executed 24 times by 2 tests: again:
Executed by:
  • bntest
  • libcrypto.so.44.0.1
24
308 if (!BN_rand(rnd, bits, 1, 1)
!BN_rand(rnd, bits, 1, 1)Description
TRUEnever evaluated
FALSEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
)
0-24
309 return
never executed: return (0);
(0);
never executed: return (0);
0
310-
311 for (i = 1; i < 2048
i < 2048Description
TRUEevaluated 49128 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
; i++) {
24-49128
312 unsigned long mod = BN_mod_word(rnd, (unsigned long)primes[i]);-
313 if (mod == (unsigned long)-1
mod == (unsigned long)-1Description
TRUEnever evaluated
FALSEevaluated 49128 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
)
0-49128
314 return
never executed: return (0);
(0);
never executed: return (0);
0
315 mods[i] = (prime_t)mod;-
316 }
executed 49128 times by 2 tests: end of block
Executed by:
  • bntest
  • libcrypto.so.44.0.1
49128
317 maxdelta = (0xffffffffffffffffL) - primes[2048 - 1];-
318 delta = 0;-
319loop:
code before this statement executed 24 times by 2 tests: loop:
Executed by:
  • bntest
  • libcrypto.so.44.0.1
24
320 for (i = 1; i < 2048
i < 2048Description
TRUEevaluated 76031 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
; i++) {
24-76031
321-
322-
323 if (((
((mods[i] + de...rimes[i]) <= 1Description
TRUEevaluated 2686 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 73345 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
mods[i] + delta) % primes[i]) <= 1
((mods[i] + de...rimes[i]) <= 1Description
TRUEevaluated 2686 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 73345 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
) {
2686-73345
324 delta += 2;-
325 if (delta > maxdelta
delta > maxdeltaDescription
TRUEnever evaluated
FALSEevaluated 2686 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
)
0-2686
326 goto
never executed: goto again;
again;
never executed: goto again;
0
327 goto
executed 2686 times by 2 tests: goto loop;
Executed by:
  • bntest
  • libcrypto.so.44.0.1
loop;
executed 2686 times by 2 tests: goto loop;
Executed by:
  • bntest
  • libcrypto.so.44.0.1
2686
328 }-
329 }
executed 73345 times by 2 tests: end of block
Executed by:
  • bntest
  • libcrypto.so.44.0.1
73345
330 if (!BN_add_word(rnd, delta)
!BN_add_word(rnd, delta)Description
TRUEnever evaluated
FALSEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
)
0-24
331 return
never executed: return (0);
(0);
never executed: return (0);
0
332 ;-
333 return
executed 24 times by 2 tests: return (1);
Executed by:
  • bntest
  • libcrypto.so.44.0.1
(1);
executed 24 times by 2 tests: return (1);
Executed by:
  • bntest
  • libcrypto.so.44.0.1
24
334}-
335-
336static int-
337probable_prime_dh(BIGNUM *rnd, int bits, const BIGNUM *add, const BIGNUM *rem,-
338 BN_CTX *ctx)-
339{-
340 int i, ret = 0;-
341 BIGNUM *t1;-
342-
343 BN_CTX_start(ctx);-
344 if ((
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
t1 = BN_CTX_get(ctx)) ==
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
0-52
345 ((void *)0)
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
0-52
346 )-
347 goto
never executed: goto err;
err;
never executed: goto err;
0
348-
349 if (!BN_rand(rnd, bits, 0, 1)
!BN_rand(rnd, bits, 0, 1)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
)
0-52
350 goto
never executed: goto err;
err;
never executed: goto err;
0
351-
352-
353-
354 if (!BN_div_ct(
!BN_div_ct( ((...),(add),(ctx))Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
0-52
355 ((void *)0)
!BN_div_ct( ((...),(add),(ctx))Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
0-52
356 ,(t1),(rnd),(add),(ctx))
!BN_div_ct( ((...),(add),(ctx))Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
)
0-52
357 goto
never executed: goto err;
err;
never executed: goto err;
0
358 if (!BN_sub(rnd, rnd, t1)
!BN_sub(rnd, rnd, t1)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
)
0-52
359 goto
never executed: goto err;
err;
never executed: goto err;
0
360 if (rem ==
rem == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
0-52
361 ((void *)0)
rem == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
0-52
362 ) {-
363 if (!BN_add_word(rnd, 1)
!BN_add_word(rnd, 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
364 goto
never executed: goto err;
err;
never executed: goto err;
0
365 }
never executed: end of block
else {
0
366 if (!BN_add(rnd, rnd, rem)
!BN_add(rnd, rnd, rem)Description
TRUEnever evaluated
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
)
0-52
367 goto
never executed: goto err;
err;
never executed: goto err;
0
368 }
executed 52 times by 1 test: end of block
Executed by:
  • bntest
52
369-
370-
371-
372loop:
code before this statement executed 52 times by 1 test: loop:
Executed by:
  • bntest
52
373 for (i = 1; i < 2048
i < 2048Description
TRUEevaluated 150158 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 52 times by 1 test
Evaluated by:
  • bntest
; i++) {
52-150158
374-
375 long mod = BN_mod_word(rnd, (unsigned long)primes[i]);-
376 if (mod == (unsigned long)-1
mod == (unsigned long)-1Description
TRUEnever evaluated
FALSEevaluated 150158 times by 1 test
Evaluated by:
  • bntest
)
0-150158
377 goto
never executed: goto err;
err;
never executed: goto err;
0
378 if (mod <= 1
mod <= 1Description
TRUEevaluated 5364 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 144794 times by 1 test
Evaluated by:
  • bntest
) {
5364-144794
379 if (!BN_add(rnd, rnd, add)
!BN_add(rnd, rnd, add)Description
TRUEnever evaluated
FALSEevaluated 5364 times by 1 test
Evaluated by:
  • bntest
)
0-5364
380 goto
never executed: goto err;
err;
never executed: goto err;
0
381 goto
executed 5364 times by 1 test: goto loop;
Executed by:
  • bntest
loop;
executed 5364 times by 1 test: goto loop;
Executed by:
  • bntest
5364
382 }-
383 }
executed 144794 times by 1 test: end of block
Executed by:
  • bntest
144794
384 ret = 1;-
385-
386err:
code before this statement executed 52 times by 1 test: err:
Executed by:
  • bntest
52
387 BN_CTX_end(ctx);-
388 ;-
389 return
executed 52 times by 1 test: return (ret);
Executed by:
  • bntest
(ret);
executed 52 times by 1 test: return (ret);
Executed by:
  • bntest
52
390}-
391-
392static int-
393probable_prime_dh_safe(BIGNUM *p, int bits, const BIGNUM *padd,-
394 const BIGNUM *rem, BN_CTX *ctx)-
395{-
396 int i, ret = 0;-
397 BIGNUM *t1, *qadd, *q;-
398-
399 bits--;-
400 BN_CTX_start(ctx);-
401 if ((
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
t1 = BN_CTX_get(ctx)) ==
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
402 ((void *)0)
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
403 )-
404 goto
never executed: goto err;
err;
never executed: goto err;
0
405 if ((
(q = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
q = BN_CTX_get(ctx)) ==
(q = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
406 ((void *)0)
(q = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
407 )-
408 goto
never executed: goto err;
err;
never executed: goto err;
0
409 if ((
(qadd = BN_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
qadd = BN_CTX_get(ctx)) ==
(qadd = BN_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
410 ((void *)0)
(qadd = BN_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
411 )-
412 goto
never executed: goto err;
err;
never executed: goto err;
0
413-
414 if (!BN_rshift1(qadd, padd)
!BN_rshift1(qadd, padd)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
415 goto
never executed: goto err;
err;
never executed: goto err;
0
416-
417 if (!BN_rand(q, bits, 0, 1)
!BN_rand(q, bits, 0, 1)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
418 goto
never executed: goto err;
err;
never executed: goto err;
0
419-
420-
421 if (!BN_div_ct(
!BN_div_ct( ((...,(qadd),(ctx))Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
422 ((void *)0)
!BN_div_ct( ((...,(qadd),(ctx))Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
423 ,(t1),(q),(qadd),(ctx))
!BN_div_ct( ((...,(qadd),(ctx))Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
424 goto
never executed: goto err;
err;
never executed: goto err;
0
425 if (!BN_sub(q, q, t1)
!BN_sub(q, q, t1)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
426 goto
never executed: goto err;
err;
never executed: goto err;
0
427 if (rem ==
rem == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
428 ((void *)0)
rem == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
0-42
429 ) {-
430 if (!BN_add_word(q, 1)
!BN_add_word(q, 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
431 goto
never executed: goto err;
err;
never executed: goto err;
0
432 }
never executed: end of block
else {
0
433 if (!BN_rshift1(t1, rem)
!BN_rshift1(t1, rem)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
434 goto
never executed: goto err;
err;
never executed: goto err;
0
435 if (!BN_add(q, q, t1)
!BN_add(q, q, t1)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
436 goto
never executed: goto err;
err;
never executed: goto err;
0
437 }
executed 42 times by 2 tests: end of block
Executed by:
  • dhtest
  • mont
42
438-
439-
440 if (!BN_lshift1(p, q)
!BN_lshift1(p, q)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
441 goto
never executed: goto err;
err;
never executed: goto err;
0
442 if (!BN_add_word(p, 1)
!BN_add_word(p, 1)Description
TRUEnever evaluated
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-42
443 goto
never executed: goto err;
err;
never executed: goto err;
0
444-
445loop:
code before this statement executed 42 times by 2 tests: loop:
Executed by:
  • dhtest
  • mont
42
446 for (i = 1; i < 2048
i < 2048Description
TRUEevaluated 122532 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 42 times by 2 tests
Evaluated by:
  • dhtest
  • mont
; i++) {
42-122532
447-
448-
449-
450 unsigned long pmod = BN_mod_word(p, (unsigned long)primes[i]);-
451 unsigned long qmod = BN_mod_word(q, (unsigned long)primes[i]);-
452 if (pmod == (unsigned long)-1
pmod == (unsigned long)-1Description
TRUEnever evaluated
FALSEevaluated 122532 times by 2 tests
Evaluated by:
  • dhtest
  • mont
|| qmod == (unsigned long)-1
qmod == (unsigned long)-1Description
TRUEnever evaluated
FALSEevaluated 122532 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-122532
453 goto
never executed: goto err;
err;
never executed: goto err;
0
454 if (pmod == 0
pmod == 0Description
TRUEevaluated 797 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 121735 times by 2 tests
Evaluated by:
  • dhtest
  • mont
|| qmod == 0
qmod == 0Description
TRUEevaluated 787 times by 2 tests
Evaluated by:
  • dhtest
  • mont
FALSEevaluated 120948 times by 2 tests
Evaluated by:
  • dhtest
  • mont
) {
787-121735
455 if (!BN_add(p, p, padd)
!BN_add(p, p, padd)Description
TRUEnever evaluated
FALSEevaluated 1584 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-1584
456 goto
never executed: goto err;
err;
never executed: goto err;
0
457 if (!BN_add(q, q, qadd)
!BN_add(q, q, qadd)Description
TRUEnever evaluated
FALSEevaluated 1584 times by 2 tests
Evaluated by:
  • dhtest
  • mont
)
0-1584
458 goto
never executed: goto err;
err;
never executed: goto err;
0
459 goto
executed 1584 times by 2 tests: goto loop;
Executed by:
  • dhtest
  • mont
loop;
executed 1584 times by 2 tests: goto loop;
Executed by:
  • dhtest
  • mont
1584
460 }-
461 }
executed 120948 times by 2 tests: end of block
Executed by:
  • dhtest
  • mont
120948
462 ret = 1;-
463-
464err:
code before this statement executed 42 times by 2 tests: err:
Executed by:
  • dhtest
  • mont
42
465 BN_CTX_end(ctx);-
466 ;-
467 return
executed 42 times by 2 tests: return (ret);
Executed by:
  • dhtest
  • mont
(ret);
executed 42 times by 2 tests: return (ret);
Executed by:
  • dhtest
  • mont
42
468}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2