OpenCoverage

bn_recp.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bn/bn_recp.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4void-
5BN_RECP_CTX_init(BN_RECP_CTX *recp)-
6{-
7 BN_init(&(recp->N));-
8 BN_init(&(recp->Nr));-
9 recp->num_bits = 0;-
10 recp->flags = 0;-
11}
executed 304 times by 2 tests: end of block
Executed by:
  • bntest
  • exptest
304
12-
13BN_RECP_CTX *-
14BN_RECP_CTX_new(void)-
15{-
16 BN_RECP_CTX *ret;-
17-
18 if ((
(ret = malloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = malloc(sizeof(BN_RECP_CTX))) ==
(ret = malloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
19 ((void *)0)
(ret = malloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
20 )-
21 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
22 ((void *)0)
never executed: return ( ((void *)0) );
0
23 );
never executed: return ( ((void *)0) );
0
24-
25 BN_RECP_CTX_init(ret);-
26 ret->flags = 0x01;-
27 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
28}-
29-
30void-
31BN_RECP_CTX_free(BN_RECP_CTX *recp)-
32{-
33 if (recp ==
recp == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEevaluated 304 times by 2 tests
Evaluated by:
  • bntest
  • exptest
1-304
34 ((void *)0)
recp == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEevaluated 304 times by 2 tests
Evaluated by:
  • bntest
  • exptest
1-304
35 )-
36 return;
executed 1 time by 1 test: return;
Executed by:
  • freenull
1
37-
38 BN_free(&(recp->N));-
39 BN_free(&(recp->Nr));-
40 if (recp->flags & 0x01
recp->flags & 0x01Description
TRUEnever evaluated
FALSEevaluated 304 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-304
41 free(recp);
never executed: free(recp);
0
42}
executed 304 times by 2 tests: end of block
Executed by:
  • bntest
  • exptest
304
43-
44int-
45BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *d, BN_CTX *ctx)-
46{-
47 if (!BN_copy(&(recp->N), d)
!BN_copy(&(recp->N), d)Description
TRUEnever evaluated
FALSEevaluated 453 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-453
48 return
never executed: return 0;
0;
never executed: return 0;
0
49 (BN_set_word((&(recp->Nr)),0));-
50 recp->num_bits = BN_num_bits(d);-
51 recp->shift = 0;-
52 return
executed 453 times by 2 tests: return (1);
Executed by:
  • bntest
  • exptest
(1);
executed 453 times by 2 tests: return (1);
Executed by:
  • bntest
  • exptest
453
53}-
54-
55int-
56BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y,-
57 BN_RECP_CTX *recp, BN_CTX *ctx)-
58{-
59 int ret = 0;-
60 BIGNUM *a;-
61 const BIGNUM *ca;-
62-
63 BN_CTX_start(ctx);-
64 if ((
(a = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138216 times by 2 tests
Evaluated by:
  • bntest
  • exptest
a = BN_CTX_get(ctx)) ==
(a = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138216 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138216
65 ((void *)0)
(a = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138216 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138216
66 )-
67 goto
never executed: goto err;
err;
never executed: goto err;
0
68 if (y !=
y != ((void *)0)Description
TRUEevaluated 138216 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEnever evaluated
0-138216
69 ((void *)0)
y != ((void *)0)Description
TRUEevaluated 138216 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEnever evaluated
0-138216
70 ) {-
71 if (x == y
x == yDescription
TRUEevaluated 114484 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEevaluated 23732 times by 2 tests
Evaluated by:
  • bntest
  • exptest
) {
23732-114484
72 if (!BN_sqr(a, x, ctx)
!BN_sqr(a, x, ctx)Description
TRUEnever evaluated
FALSEevaluated 114484 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-114484
73 goto
never executed: goto err;
err;
never executed: goto err;
0
74 }
executed 114484 times by 2 tests: end of block
Executed by:
  • bntest
  • exptest
else {
114484
75 if (!BN_mul(a, x, y, ctx)
!BN_mul(a, x, y, ctx)Description
TRUEnever evaluated
FALSEevaluated 23732 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-23732
76 goto
never executed: goto err;
err;
never executed: goto err;
0
77 }
executed 23732 times by 2 tests: end of block
Executed by:
  • bntest
  • exptest
23732
78 ca = a;-
79 }
executed 138216 times by 2 tests: end of block
Executed by:
  • bntest
  • exptest
else
138216
80 ca = x;
never executed: ca = x;
0
81-
82 ret = BN_div_recp(-
83 ((void *)0)-
84 , r, ca, recp, ctx);-
85-
86err:
code before this statement executed 138216 times by 2 tests: err:
Executed by:
  • bntest
  • exptest
138216
87 BN_CTX_end(ctx);-
88 ;-
89 return
executed 138216 times by 2 tests: return (ret);
Executed by:
  • bntest
  • exptest
(ret);
executed 138216 times by 2 tests: return (ret);
Executed by:
  • bntest
  • exptest
138216
90}-
91-
92int-
93BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, BN_RECP_CTX *recp,-
94 BN_CTX *ctx)-
95{-
96 int i, j, ret = 0;-
97 BIGNUM *a, *b, *d, *r;-
98-
99 BN_CTX_start(ctx);-
100 a = BN_CTX_get(ctx);-
101 b = BN_CTX_get(ctx);-
102 if (dv !=
dv != ((void *)0)Description
TRUEevaluated 150 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 138216 times by 2 tests
Evaluated by:
  • bntest
  • exptest
150-138216
103 ((void *)0)
dv != ((void *)0)Description
TRUEevaluated 150 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 138216 times by 2 tests
Evaluated by:
  • bntest
  • exptest
150-138216
104 )-
105 d = dv;
executed 150 times by 1 test: d = dv;
Executed by:
  • bntest
150
106 else-
107 d = BN_CTX_get(ctx);
executed 138216 times by 2 tests: d = BN_CTX_get(ctx);
Executed by:
  • bntest
  • exptest
138216
108 if (rem !=
rem != ((void *)0)Description
TRUEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEnever evaluated
0-138366
109 ((void *)0)
rem != ((void *)0)Description
TRUEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEnever evaluated
0-138366
110 )-
111 r = rem;
executed 138366 times by 2 tests: r = rem;
Executed by:
  • bntest
  • exptest
138366
112 else-
113 r = BN_CTX_get(ctx);
never executed: r = BN_CTX_get(ctx);
0
114 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138366
115 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138366
116 || b ==
b == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138366
117 ((void *)0)
b == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138366
118 || d ==
d == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138366
119 ((void *)0)
d == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138366
120 || r ==
r == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138366
121 ((void *)0)
r == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 138366 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-138366
122 )-
123 goto
never executed: goto err;
err;
never executed: goto err;
0
124-
125 if (BN_ucmp(m, &(recp->N)) < 0
BN_ucmp(m, &(recp->N)) < 0Description
TRUEevaluated 343 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEevaluated 138023 times by 2 tests
Evaluated by:
  • bntest
  • exptest
) {
343-138023
126 (BN_set_word((d),0));-
127 if (!BN_copy(r, m)
!BN_copy(r, m)Description
TRUEnever evaluated
FALSEevaluated 343 times by 2 tests
Evaluated by:
  • bntest
  • exptest
) {
0-343
128 BN_CTX_end(ctx);-
129 return
never executed: return 0;
0;
never executed: return 0;
0
130 }-
131 BN_CTX_end(ctx);-
132 return
executed 343 times by 2 tests: return (1);
Executed by:
  • bntest
  • exptest
(1);
executed 343 times by 2 tests: return (1);
Executed by:
  • bntest
  • exptest
343
133 }-
134 i = BN_num_bits(m);-
135 j = recp->num_bits << 1;-
136 if (j > i
j > iDescription
TRUEevaluated 121962 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEevaluated 16061 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
16061-121962
137 i = j;
executed 121962 times by 2 tests: i = j;
Executed by:
  • bntest
  • exptest
121962
138-
139-
140 if (i != recp->shift
i != recp->shiftDescription
TRUEevaluated 450 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEevaluated 137573 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
450-137573
141 recp->shift = BN_reciprocal(&(recp->Nr), &(recp->N), i, ctx);
executed 450 times by 2 tests: recp->shift = BN_reciprocal(&(recp->Nr), &(recp->N), i, ctx);
Executed by:
  • bntest
  • exptest
450
142-
143-
144 if (recp->shift == -1
recp->shift == -1Description
TRUEnever evaluated
FALSEevaluated 138023 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-138023
145 goto
never executed: goto err;
err;
never executed: goto err;
0
146-
147-
148-
149-
150-
151-
152 if (!BN_rshift(a, m, recp->num_bits)
!BN_rshift(a, ...ecp->num_bits)Description
TRUEnever evaluated
FALSEevaluated 138023 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-138023
153 goto
never executed: goto err;
err;
never executed: goto err;
0
154 if (!BN_mul(b, a,&(recp->Nr), ctx)
!BN_mul(b, a,&(recp->Nr), ctx)Description
TRUEnever evaluated
FALSEevaluated 138023 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-138023
155 goto
never executed: goto err;
err;
never executed: goto err;
0
156 if (!BN_rshift(d, b, i - recp->num_bits)
!BN_rshift(d, ...ecp->num_bits)Description
TRUEnever evaluated
FALSEevaluated 138023 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-138023
157 goto
never executed: goto err;
err;
never executed: goto err;
0
158 d->neg = 0;-
159-
160 if (!BN_mul(b, &(recp->N), d, ctx)
!BN_mul(b, &(recp->N), d, ctx)Description
TRUEnever evaluated
FALSEevaluated 138023 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-138023
161 goto
never executed: goto err;
err;
never executed: goto err;
0
162 if (!BN_usub(r, m, b)
!BN_usub(r, m, b)Description
TRUEnever evaluated
FALSEevaluated 138023 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-138023
163 goto
never executed: goto err;
err;
never executed: goto err;
0
164 r->neg = 0;-
165-
166-
167 j = 0;-
168 while (BN_ucmp(r, &(recp->N)) >= 0
BN_ucmp(r, &(recp->N)) >= 0Description
TRUEevaluated 97174 times by 2 tests
Evaluated by:
  • bntest
  • exptest
FALSEevaluated 138023 times by 2 tests
Evaluated by:
  • bntest
  • exptest
) {
97174-138023
169 if (j++ > 2
j++ > 2Description
TRUEnever evaluated
FALSEevaluated 97174 times by 2 tests
Evaluated by:
  • bntest
  • exptest
) {
0-97174
170 ERR_put_error(3,(0xfff),(101),__FILE__,215);-
171 goto
never executed: goto err;
err;
never executed: goto err;
0
172 }-
173 if (!BN_usub(r, r, &(recp->N))
!BN_usub(r, r, &(recp->N))Description
TRUEnever evaluated
FALSEevaluated 97174 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-97174
174 goto
never executed: goto err;
err;
never executed: goto err;
0
175 if (!BN_add_word(d, 1)
!BN_add_word(d, 1)Description
TRUEnever evaluated
FALSEevaluated 97174 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-97174
176 goto
never executed: goto err;
err;
never executed: goto err;
0
177 }
executed 97174 times by 2 tests: end of block
Executed by:
  • bntest
  • exptest
97174
178-
179-
180 r->neg = ((
((r)->top == 0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • bntest
FALSEevaluated 138022 times by 2 tests
Evaluated by:
  • bntest
  • exptest
r)->top == 0)
((r)->top == 0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • bntest
FALSEevaluated 138022 times by 2 tests
Evaluated by:
  • bntest
  • exptest
? 0 : m->neg;
1-138022
181 d->neg = m->neg^recp->N.neg;-
182 ret = 1;-
183-
184err:
code before this statement executed 138023 times by 2 tests: err:
Executed by:
  • bntest
  • exptest
138023
185 BN_CTX_end(ctx);-
186 ;-
187 ;-
188 return
executed 138023 times by 2 tests: return (ret);
Executed by:
  • bntest
  • exptest
(ret);
executed 138023 times by 2 tests: return (ret);
Executed by:
  • bntest
  • exptest
138023
189}-
190-
191-
192-
193-
194-
195-
196int-
197BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx)-
198{-
199 int ret = -1;-
200 BIGNUM *t;-
201-
202 BN_CTX_start(ctx);-
203 if ((
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 450 times by 2 tests
Evaluated by:
  • bntest
  • exptest
t = BN_CTX_get(ctx)) ==
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 450 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-450
204 ((void *)0)
(t = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 450 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-450
205 )-
206 goto
never executed: goto err;
err;
never executed: goto err;
0
207-
208 if (!BN_set_bit(t, len)
!BN_set_bit(t, len)Description
TRUEnever evaluated
FALSEevaluated 450 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-450
209 goto
never executed: goto err;
err;
never executed: goto err;
0
210-
211 if (!BN_div_ct(r,
!BN_div_ct(r, ...0) , t,m, ctx)Description
TRUEnever evaluated
FALSEevaluated 450 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-450
212 ((void *)0)
!BN_div_ct(r, ...0) , t,m, ctx)Description
TRUEnever evaluated
FALSEevaluated 450 times by 2 tests
Evaluated by:
  • bntest
  • exptest
0-450
213 , t,m, ctx)
!BN_div_ct(r, ...0) , t,m, ctx)Description
TRUEnever evaluated
FALSEevaluated 450 times by 2 tests
Evaluated by:
  • bntest
  • exptest
)
0-450
214 goto
never executed: goto err;
err;
never executed: goto err;
0
215-
216 ret = len;-
217-
218err:
code before this statement executed 450 times by 2 tests: err:
Executed by:
  • bntest
  • exptest
450
219 ;-
220 BN_CTX_end(ctx);-
221 return
executed 450 times by 2 tests: return (ret);
Executed by:
  • bntest
  • exptest
(ret);
executed 450 times by 2 tests: return (ret);
Executed by:
  • bntest
  • exptest
450
222}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2