OpenCoverage

ec2_mult.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/ec/ec2_mult.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3static int-
4gf2m_Mdouble(const EC_GROUP *group, BIGNUM *x, BIGNUM *z, BN_CTX *ctx)-
5{-
6 BIGNUM *t1;-
7 int ret = 0;-
8-
9-
10 BN_CTX_start(ctx);-
11 if ((
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
t1 = BN_CTX_get(ctx)) ==
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
12 ((void *)0)
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
13 )-
14 goto
never executed: goto err;
err;
never executed: goto err;
0
15-
16 if (!group->meth->field_sqr(group, x, x, ctx)
!group->meth->...up, x, x, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
17 goto
never executed: goto err;
err;
never executed: goto err;
0
18 if (!group->meth->field_sqr(group, t1, z, ctx)
!group->meth->...p, t1, z, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
19 goto
never executed: goto err;
err;
never executed: goto err;
0
20 if (!group->meth->field_mul(group, z, x, t1, ctx)
!group->meth->...z, x, t1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
21 goto
never executed: goto err;
err;
never executed: goto err;
0
22 if (!group->meth->field_sqr(group, x, x, ctx)
!group->meth->...up, x, x, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
23 goto
never executed: goto err;
err;
never executed: goto err;
0
24 if (!group->meth->field_sqr(group, t1, t1, ctx)
!group->meth->..., t1, t1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
25 goto
never executed: goto err;
err;
never executed: goto err;
0
26 if (!group->meth->field_mul(group, t1, &group->b, t1, ctx)
!group->meth->...p->b, t1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
27 goto
never executed: goto err;
err;
never executed: goto err;
0
28 if (!BN_GF2m_add(x, x, t1)
!BN_GF2m_add(x, x, t1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
29 goto
never executed: goto err;
err;
never executed: goto err;
0
30-
31 ret = 1;-
32-
33 err:
code before this statement never executed: err:
0
34 BN_CTX_end(ctx);-
35 return
never executed: return ret;
ret;
never executed: return ret;
0
36}-
37-
38-
39-
40-
41-
42-
43-
44static int-
45gf2m_Madd(const EC_GROUP *group, const BIGNUM *x, BIGNUM *x1, BIGNUM *z1,-
46 const BIGNUM *x2, const BIGNUM *z2, BN_CTX *ctx)-
47{-
48 BIGNUM *t1, *t2;-
49 int ret = 0;-
50-
51-
52 BN_CTX_start(ctx);-
53 if ((
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
t1 = BN_CTX_get(ctx)) ==
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
54 ((void *)0)
(t1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
55 )-
56 goto
never executed: goto err;
err;
never executed: goto err;
0
57 if ((
(t2 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
t2 = BN_CTX_get(ctx)) ==
(t2 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
58 ((void *)0)
(t2 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
59 )-
60 goto
never executed: goto err;
err;
never executed: goto err;
0
61-
62 if (!BN_copy(t1, x)
!BN_copy(t1, x)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
63 goto
never executed: goto err;
err;
never executed: goto err;
0
64 if (!group->meth->field_mul(group, x1, x1, z2, ctx)
!group->meth->..., x1, z2, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
65 goto
never executed: goto err;
err;
never executed: goto err;
0
66 if (!group->meth->field_mul(group, z1, z1, x2, ctx)
!group->meth->..., z1, x2, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
67 goto
never executed: goto err;
err;
never executed: goto err;
0
68 if (!group->meth->field_mul(group, t2, x1, z1, ctx)
!group->meth->..., x1, z1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
69 goto
never executed: goto err;
err;
never executed: goto err;
0
70 if (!BN_GF2m_add(z1, z1, x1)
!BN_GF2m_add(z1, z1, x1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
71 goto
never executed: goto err;
err;
never executed: goto err;
0
72 if (!group->meth->field_sqr(group, z1, z1, ctx)
!group->meth->..., z1, z1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
73 goto
never executed: goto err;
err;
never executed: goto err;
0
74 if (!group->meth->field_mul(group, x1, z1, t1, ctx)
!group->meth->..., z1, t1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
75 goto
never executed: goto err;
err;
never executed: goto err;
0
76 if (!BN_GF2m_add(x1, x1, t2)
!BN_GF2m_add(x1, x1, t2)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
77 goto
never executed: goto err;
err;
never executed: goto err;
0
78-
79 ret = 1;-
80-
81 err:
code before this statement never executed: err:
0
82 BN_CTX_end(ctx);-
83 return
never executed: return ret;
ret;
never executed: return ret;
0
84}-
85static int-
86gf2m_Mxy(const EC_GROUP *group, const BIGNUM *x, const BIGNUM *y, BIGNUM *x1,-
87 BIGNUM *z1, BIGNUM *x2, BIGNUM *z2, BN_CTX *ctx)-
88{-
89 BIGNUM *t3, *t4, *t5;-
90 int ret = 0;-
91-
92 if (((
((z1)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
z1)->top == 0)
((z1)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
93 (BN_set_word((x2),0));-
94 (BN_set_word((z2),0));-
95 return
never executed: return 1;
1;
never executed: return 1;
0
96 }-
97 if (((
((z2)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
z2)->top == 0)
((z2)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
98 if (!BN_copy(x2, x)
!BN_copy(x2, x)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
99 return
never executed: return 0;
0;
never executed: return 0;
0
100 if (!BN_GF2m_add(z2, x, y)
!BN_GF2m_add(z2, x, y)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
101 return
never executed: return 0;
0;
never executed: return 0;
0
102 return
never executed: return 2;
2;
never executed: return 2;
0
103 }-
104-
105 BN_CTX_start(ctx);-
106 if ((
(t3 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
t3 = BN_CTX_get(ctx)) ==
(t3 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
107 ((void *)0)
(t3 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
108 )-
109 goto
never executed: goto err;
err;
never executed: goto err;
0
110 if ((
(t4 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
t4 = BN_CTX_get(ctx)) ==
(t4 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
111 ((void *)0)
(t4 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
112 )-
113 goto
never executed: goto err;
err;
never executed: goto err;
0
114 if ((
(t5 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
t5 = BN_CTX_get(ctx)) ==
(t5 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
115 ((void *)0)
(t5 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
116 )-
117 goto
never executed: goto err;
err;
never executed: goto err;
0
118-
119 if (!(BN_set_word((t5),1))
!(BN_set_word((t5),1))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
120 goto
never executed: goto err;
err;
never executed: goto err;
0
121-
122 if (!group->meth->field_mul(group, t3, z1, z2, ctx)
!group->meth->..., z1, z2, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
123 goto
never executed: goto err;
err;
never executed: goto err;
0
124-
125 if (!group->meth->field_mul(group, z1, z1, x, ctx)
!group->meth->...1, z1, x, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
126 goto
never executed: goto err;
err;
never executed: goto err;
0
127 if (!BN_GF2m_add(z1, z1, x1)
!BN_GF2m_add(z1, z1, x1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
128 goto
never executed: goto err;
err;
never executed: goto err;
0
129 if (!group->meth->field_mul(group, z2, z2, x, ctx)
!group->meth->...2, z2, x, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
130 goto
never executed: goto err;
err;
never executed: goto err;
0
131 if (!group->meth->field_mul(group, x1, z2, x1, ctx)
!group->meth->..., z2, x1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
132 goto
never executed: goto err;
err;
never executed: goto err;
0
133 if (!BN_GF2m_add(z2, z2, x2)
!BN_GF2m_add(z2, z2, x2)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
134 goto
never executed: goto err;
err;
never executed: goto err;
0
135-
136 if (!group->meth->field_mul(group, z2, z2, z1, ctx)
!group->meth->..., z2, z1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
137 goto
never executed: goto err;
err;
never executed: goto err;
0
138 if (!group->meth->field_sqr(group, t4, x, ctx)
!group->meth->...p, t4, x, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
139 goto
never executed: goto err;
err;
never executed: goto err;
0
140 if (!BN_GF2m_add(t4, t4, y)
!BN_GF2m_add(t4, t4, y)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
141 goto
never executed: goto err;
err;
never executed: goto err;
0
142 if (!group->meth->field_mul(group, t4, t4, t3, ctx)
!group->meth->..., t4, t3, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
143 goto
never executed: goto err;
err;
never executed: goto err;
0
144 if (!BN_GF2m_add(t4, t4, z2)
!BN_GF2m_add(t4, t4, z2)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
145 goto
never executed: goto err;
err;
never executed: goto err;
0
146-
147 if (!group->meth->field_mul(group, t3, t3, x, ctx)
!group->meth->...3, t3, x, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
148 goto
never executed: goto err;
err;
never executed: goto err;
0
149 if (!group->meth->field_div(group, t3, t5, t3, ctx)
!group->meth->..., t5, t3, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
150 goto
never executed: goto err;
err;
never executed: goto err;
0
151 if (!group->meth->field_mul(group, t4, t3, t4, ctx)
!group->meth->..., t3, t4, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
152 goto
never executed: goto err;
err;
never executed: goto err;
0
153 if (!group->meth->field_mul(group, x2, x1, t3, ctx)
!group->meth->..., x1, t3, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
154 goto
never executed: goto err;
err;
never executed: goto err;
0
155 if (!BN_GF2m_add(z2, x2, x)
!BN_GF2m_add(z2, x2, x)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
156 goto
never executed: goto err;
err;
never executed: goto err;
0
157-
158 if (!group->meth->field_mul(group, z2, z2, t4, ctx)
!group->meth->..., z2, t4, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
159 goto
never executed: goto err;
err;
never executed: goto err;
0
160 if (!BN_GF2m_add(z2, z2, y)
!BN_GF2m_add(z2, z2, y)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
161 goto
never executed: goto err;
err;
never executed: goto err;
0
162-
163 ret = 2;-
164-
165 err:
code before this statement never executed: err:
0
166 BN_CTX_end(ctx);-
167 return
never executed: return ret;
ret;
never executed: return ret;
0
168}-
169static int-
170ec_GF2m_montgomery_point_multiply(const EC_GROUP *group, EC_POINT *r,-
171 const BIGNUM *scalar, const EC_POINT *point, BN_CTX *ctx)-
172{-
173 BIGNUM *x1, *x2, *z1, *z2;-
174 int ret = 0, i;-
175 unsigned long mask, word;-
176-
177 if (r == point
r == pointDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
178 ERR_put_error(16,(0xfff),(112),__FILE__,271);-
179 return
never executed: return 0;
0;
never executed: return 0;
0
180 }-
181-
182 if ((
(scalar == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
scalar ==
(scalar == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
183 ((void *)0)
(scalar == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
184 )
(scalar == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
|| ((
((scalar)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
scalar)->top == 0)
((scalar)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(point == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
point ==
(point == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
185 ((void *)0)
(point == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
186 )
(point == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
||
0
187 EC_POINT_is_at_infinity(group, point) > 0
EC_POINT_is_at...up, point) > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
188 return
never executed: return EC_POINT_set_to_infinity(group, r);
EC_POINT_set_to_infinity(group, r);
never executed: return EC_POINT_set_to_infinity(group, r);
0
189 }-
190-
191 if (!point->Z_is_one
!point->Z_is_oneDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
192 return
never executed: return 0;
0;
never executed: return 0;
0
193-
194-
195 BN_CTX_start(ctx);-
196 if ((
(x1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
x1 = BN_CTX_get(ctx)) ==
(x1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
197 ((void *)0)
(x1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
198 )-
199 goto
never executed: goto err;
err;
never executed: goto err;
0
200 if ((
(z1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
z1 = BN_CTX_get(ctx)) ==
(z1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
201 ((void *)0)
(z1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
202 )-
203 goto
never executed: goto err;
err;
never executed: goto err;
0
204-
205 x2 = &r->X;-
206 z2 = &r->Y;-
207-
208 if (!(((
((group->field...<= (x1)->dmax)Description
TRUEnever evaluated
FALSEnever evaluated
group->field.top) <= (x1)->dmax)
((group->field...<= (x1)->dmax)Description
TRUEnever evaluated
FALSEnever evaluated
?(x1):bn_expand2((x1),(group->field.top)))
!(((group->fie...->field.top)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
209 goto
never executed: goto err;
err;
never executed: goto err;
0
210 if (!(((
((group->field...<= (z1)->dmax)Description
TRUEnever evaluated
FALSEnever evaluated
group->field.top) <= (z1)->dmax)
((group->field...<= (z1)->dmax)Description
TRUEnever evaluated
FALSEnever evaluated
?(z1):bn_expand2((z1),(group->field.top)))
!(((group->fie...->field.top)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
211 goto
never executed: goto err;
err;
never executed: goto err;
0
212 if (!(((
((group->field...<= (x2)->dmax)Description
TRUEnever evaluated
FALSEnever evaluated
group->field.top) <= (x2)->dmax)
((group->field...<= (x2)->dmax)Description
TRUEnever evaluated
FALSEnever evaluated
?(x2):bn_expand2((x2),(group->field.top)))
!(((group->fie...->field.top)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
213 goto
never executed: goto err;
err;
never executed: goto err;
0
214 if (!(((
((group->field...<= (z2)->dmax)Description
TRUEnever evaluated
FALSEnever evaluated
group->field.top) <= (z2)->dmax)
((group->field...<= (z2)->dmax)Description
TRUEnever evaluated
FALSEnever evaluated
?(z2):bn_expand2((z2),(group->field.top)))
!(((group->fie...->field.top)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
215 goto
never executed: goto err;
err;
never executed: goto err;
0
216-
217 if (!BN_GF2m_mod_arr(x1, &point->X, group->poly)
!BN_GF2m_mod_a..., group->poly)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
218 goto
never executed: goto err;
err;
never executed: goto err;
0
219 if (!(BN_set_word((z1),1))
!(BN_set_word((z1),1))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
220 goto
never executed: goto err;
err;
never executed: goto err;
0
221 if (!group->meth->field_sqr(group, z2, x1, ctx)
!group->meth->..., z2, x1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
222 goto
never executed: goto err;
err;
never executed: goto err;
0
223 if (!group->meth->field_sqr(group, x2, z2, ctx)
!group->meth->..., x2, z2, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
224 goto
never executed: goto err;
err;
never executed: goto err;
0
225 if (!BN_GF2m_add(x2, x2, &group->b)
!BN_GF2m_add(x...x2, &group->b)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
226 goto
never executed: goto err;
err;
never executed: goto err;
0
227-
228-
229 i = scalar->top - 1;-
230 mask = (0x8000000000000000L);-
231 word = scalar->d[i];-
232 while (!(word & mask)
!(word & mask)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
233 mask >>= 1;
never executed: mask >>= 1;
0
234 mask >>= 1;-
235-
236 if (!mask
!maskDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
237 i--;-
238 mask = (0x8000000000000000L);-
239 }
never executed: end of block
0
240 for (; i >= 0
i >= 0Description
TRUEnever evaluated
FALSEnever evaluated
; i--) {
0
241 word = scalar->d[i];-
242 while (mask
maskDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
243 if (!BN_swap_ct(word & mask, x1, x2, group->field.top)
!BN_swap_ct(wo...up->field.top)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
244 goto
never executed: goto err;
err;
never executed: goto err;
0
245 if (!BN_swap_ct(word & mask, z1, z2, group->field.top)
!BN_swap_ct(wo...up->field.top)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
246 goto
never executed: goto err;
err;
never executed: goto err;
0
247 if (!gf2m_Madd(group, &point->X, x2, z2, x1, z1, ctx)
!gf2m_Madd(gro..., x1, z1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
248 goto
never executed: goto err;
err;
never executed: goto err;
0
249 if (!gf2m_Mdouble(group, x1, z1, ctx)
!gf2m_Mdouble(..., x1, z1, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
250 goto
never executed: goto err;
err;
never executed: goto err;
0
251 if (!BN_swap_ct(word & mask, x1, x2, group->field.top)
!BN_swap_ct(wo...up->field.top)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
252 goto
never executed: goto err;
err;
never executed: goto err;
0
253 if (!BN_swap_ct(word & mask, z1, z2, group->field.top)
!BN_swap_ct(wo...up->field.top)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
254 goto
never executed: goto err;
err;
never executed: goto err;
0
255 mask >>= 1;-
256 }
never executed: end of block
0
257 mask = (0x8000000000000000L);-
258 }
never executed: end of block
0
259-
260-
261 i = gf2m_Mxy(group, &point->X, &point->Y, x1, z1, x2, z2, ctx);-
262 if (i == 0
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
263 goto
never executed: goto err;
err;
never executed: goto err;
0
264 else if (i == 1
i == 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
265 if (!EC_POINT_set_to_infinity(group, r)
!EC_POINT_set_...nity(group, r)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
266 goto
never executed: goto err;
err;
never executed: goto err;
0
267 }
never executed: end of block
else {
0
268 if (!(BN_set_word((&r->Z),1))
!(BN_set_word((&r->Z),1))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
269 goto
never executed: goto err;
err;
never executed: goto err;
0
270 r->Z_is_one = 1;-
271 }
never executed: end of block
0
272-
273-
274 BN_set_negative(&r->X, 0);-
275 BN_set_negative(&r->Y, 0);-
276-
277 ret = 1;-
278-
279 err:
code before this statement never executed: err:
0
280 BN_CTX_end(ctx);-
281 return
never executed: return ret;
ret;
never executed: return ret;
0
282}-
283-
284-
285-
286-
287-
288-
289int-
290ec_GF2m_simple_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,-
291 size_t num, const EC_POINT *points[], const BIGNUM *scalars[], BN_CTX *ctx)-
292{-
293 BN_CTX *new_ctx = -
294 ((void *)0)-
295 ;-
296 int ret = 0;-
297 size_t i;-
298 EC_POINT *p = -
299 ((void *)0)-
300 ;-
301 EC_POINT *acc = -
302 ((void *)0)-
303 ;-
304-
305 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
306 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
307 ) {-
308 ctx = new_ctx = BN_CTX_new();-
309 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
310 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
311 )-
312 return
never executed: return 0;
0;
never executed: return 0;
0
313 }
never executed: end of block
0
314-
315-
316-
317-
318-
319-
320 if ((scalar
scalarDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(num > 1)Description
TRUEnever evaluated
FALSEnever evaluated
num > 1)
(num > 1)Description
TRUEnever evaluated
FALSEnever evaluated
) || (
(num > 2)Description
TRUEnever evaluated
FALSEnever evaluated
num > 2)
(num > 2)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
321 (num == 0
num == 0Description
TRUEnever evaluated
FALSEnever evaluated
&& EC_GROUP_have_precompute_mult(group)
EC_GROUP_have_...te_mult(group)Description
TRUEnever evaluated
FALSEnever evaluated
)) {
0
322 ret = ec_wNAF_mul(group, r, scalar, num, points, scalars, ctx);-
323 goto
never executed: goto err;
err;
never executed: goto err;
0
324 }-
325 if ((
(p = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p = EC_POINT_new(group)) ==
(p = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
326 ((void *)0)
(p = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
327 )-
328 goto
never executed: goto err;
err;
never executed: goto err;
0
329 if ((
(acc = EC_POIN...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
acc = EC_POINT_new(group)) ==
(acc = EC_POIN...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
330 ((void *)0)
(acc = EC_POIN...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
331 )-
332 goto
never executed: goto err;
err;
never executed: goto err;
0
333-
334 if (!EC_POINT_set_to_infinity(group, acc)
!EC_POINT_set_...ty(group, acc)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
335 goto
never executed: goto err;
err;
never executed: goto err;
0
336-
337 if (scalar
scalarDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
338 if (!ec_GF2m_montgomery_point_multiply(group, p, scalar, group->generator, ctx)
!ec_GF2m_montg...enerator, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
339 goto
never executed: goto err;
err;
never executed: goto err;
0
340 if (((
((scalar)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
scalar)->neg != 0)
((scalar)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
341 if (!group->meth->invert(group, p, ctx)
!group->meth->...group, p, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
342 goto
never executed: goto err;
err;
never executed: goto err;
0
343 if (!group->meth->add(group, acc, acc, p, ctx)
!group->meth->..., acc, p, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
344 goto
never executed: goto err;
err;
never executed: goto err;
0
345 }
never executed: end of block
0
346 for (i = 0; i < num
i < numDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
347 if (!ec_GF2m_montgomery_point_multiply(group, p, scalars[i], points[i], ctx)
!ec_GF2m_montg...oints[i], ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
348 goto
never executed: goto err;
err;
never executed: goto err;
0
349 if (((
((scalars[i])->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
scalars[i])->neg != 0)
((scalars[i])->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
350 if (!group->meth->invert(group, p, ctx)
!group->meth->...group, p, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
351 goto
never executed: goto err;
err;
never executed: goto err;
0
352 if (!group->meth->add(group, acc, acc, p, ctx)
!group->meth->..., acc, p, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
353 goto
never executed: goto err;
err;
never executed: goto err;
0
354 }
never executed: end of block
0
355-
356 if (!EC_POINT_copy(r, acc)
!EC_POINT_copy(r, acc)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
357 goto
never executed: goto err;
err;
never executed: goto err;
0
358-
359 ret = 1;-
360-
361 err:
code before this statement never executed: err:
0
362 EC_POINT_free(p);-
363 EC_POINT_free(acc);-
364 BN_CTX_free(new_ctx);-
365 return
never executed: return ret;
ret;
never executed: return ret;
0
366}-
367-
368-
369-
370-
371-
372int-
373ec_GF2m_precompute_mult(EC_GROUP * group, BN_CTX * ctx)-
374{-
375 return
executed 10 times by 1 test: return ec_wNAF_precompute_mult(group, ctx);
Executed by:
  • ectest
ec_wNAF_precompute_mult(group, ctx);
executed 10 times by 1 test: return ec_wNAF_precompute_mult(group, ctx);
Executed by:
  • ectest
10
376}-
377-
378int-
379ec_GF2m_have_precompute_mult(const EC_GROUP * group)-
380{-
381 return
never executed: return ec_wNAF_have_precompute_mult(group);
ec_wNAF_have_precompute_mult(group);
never executed: return ec_wNAF_have_precompute_mult(group);
0
382}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2