Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/ec/ec2_mult.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||||||||
3 | static int | - | ||||||||||||||||||||||||||||||
4 | gf2m_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 ((
| 0 | ||||||||||||||||||||||||||||||
12 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
13 | ) | - | ||||||||||||||||||||||||||||||
14 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
15 | - | |||||||||||||||||||||||||||||||
16 | if (!group->meth->field_sqr(group, x, x, ctx)
| 0 | ||||||||||||||||||||||||||||||
17 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
18 | if (!group->meth->field_sqr(group, t1, z, ctx)
| 0 | ||||||||||||||||||||||||||||||
19 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
20 | if (!group->meth->field_mul(group, z, x, t1, ctx)
| 0 | ||||||||||||||||||||||||||||||
21 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
22 | if (!group->meth->field_sqr(group, x, x, ctx)
| 0 | ||||||||||||||||||||||||||||||
23 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
24 | if (!group->meth->field_sqr(group, t1, t1, ctx)
| 0 | ||||||||||||||||||||||||||||||
25 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
26 | if (!group->meth->field_mul(group, t1, &group->b, t1, ctx)
| 0 | ||||||||||||||||||||||||||||||
27 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
28 | if (!BN_GF2m_add(x, x, t1)
| 0 | ||||||||||||||||||||||||||||||
29 | goto never executed: err;goto 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||||||||
36 | } | - | ||||||||||||||||||||||||||||||
37 | - | |||||||||||||||||||||||||||||||
38 | - | |||||||||||||||||||||||||||||||
39 | - | |||||||||||||||||||||||||||||||
40 | - | |||||||||||||||||||||||||||||||
41 | - | |||||||||||||||||||||||||||||||
42 | - | |||||||||||||||||||||||||||||||
43 | - | |||||||||||||||||||||||||||||||
44 | static int | - | ||||||||||||||||||||||||||||||
45 | gf2m_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 ((
| 0 | ||||||||||||||||||||||||||||||
54 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
55 | ) | - | ||||||||||||||||||||||||||||||
56 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
57 | if ((
| 0 | ||||||||||||||||||||||||||||||
58 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
59 | ) | - | ||||||||||||||||||||||||||||||
60 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
61 | - | |||||||||||||||||||||||||||||||
62 | if (!BN_copy(t1, x)
| 0 | ||||||||||||||||||||||||||||||
63 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
64 | if (!group->meth->field_mul(group, x1, x1, z2, ctx)
| 0 | ||||||||||||||||||||||||||||||
65 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
66 | if (!group->meth->field_mul(group, z1, z1, x2, ctx)
| 0 | ||||||||||||||||||||||||||||||
67 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
68 | if (!group->meth->field_mul(group, t2, x1, z1, ctx)
| 0 | ||||||||||||||||||||||||||||||
69 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
70 | if (!BN_GF2m_add(z1, z1, x1)
| 0 | ||||||||||||||||||||||||||||||
71 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
72 | if (!group->meth->field_sqr(group, z1, z1, ctx)
| 0 | ||||||||||||||||||||||||||||||
73 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
74 | if (!group->meth->field_mul(group, x1, z1, t1, ctx)
| 0 | ||||||||||||||||||||||||||||||
75 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
76 | if (!BN_GF2m_add(x1, x1, t2)
| 0 | ||||||||||||||||||||||||||||||
77 | goto never executed: err;goto 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||||||||
84 | } | - | ||||||||||||||||||||||||||||||
85 | static int | - | ||||||||||||||||||||||||||||||
86 | gf2m_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 (((
| 0 | ||||||||||||||||||||||||||||||
93 | (BN_set_word((x2),0)); | - | ||||||||||||||||||||||||||||||
94 | (BN_set_word((z2),0)); | - | ||||||||||||||||||||||||||||||
95 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||||||||||||||
96 | } | - | ||||||||||||||||||||||||||||||
97 | if (((
| 0 | ||||||||||||||||||||||||||||||
98 | if (!BN_copy(x2, x)
| 0 | ||||||||||||||||||||||||||||||
99 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||||||||
100 | if (!BN_GF2m_add(z2, x, y)
| 0 | ||||||||||||||||||||||||||||||
101 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||||||||
102 | return never executed: 2;return 2; never executed: return 2; | 0 | ||||||||||||||||||||||||||||||
103 | } | - | ||||||||||||||||||||||||||||||
104 | - | |||||||||||||||||||||||||||||||
105 | BN_CTX_start(ctx); | - | ||||||||||||||||||||||||||||||
106 | if ((
| 0 | ||||||||||||||||||||||||||||||
107 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
108 | ) | - | ||||||||||||||||||||||||||||||
109 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
110 | if ((
| 0 | ||||||||||||||||||||||||||||||
111 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
112 | ) | - | ||||||||||||||||||||||||||||||
113 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
114 | if ((
| 0 | ||||||||||||||||||||||||||||||
115 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
116 | ) | - | ||||||||||||||||||||||||||||||
117 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
118 | - | |||||||||||||||||||||||||||||||
119 | if (!(BN_set_word((t5),1))
| 0 | ||||||||||||||||||||||||||||||
120 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
121 | - | |||||||||||||||||||||||||||||||
122 | if (!group->meth->field_mul(group, t3, z1, z2, ctx)
| 0 | ||||||||||||||||||||||||||||||
123 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
124 | - | |||||||||||||||||||||||||||||||
125 | if (!group->meth->field_mul(group, z1, z1, x, ctx)
| 0 | ||||||||||||||||||||||||||||||
126 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
127 | if (!BN_GF2m_add(z1, z1, x1)
| 0 | ||||||||||||||||||||||||||||||
128 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
129 | if (!group->meth->field_mul(group, z2, z2, x, ctx)
| 0 | ||||||||||||||||||||||||||||||
130 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
131 | if (!group->meth->field_mul(group, x1, z2, x1, ctx)
| 0 | ||||||||||||||||||||||||||||||
132 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
133 | if (!BN_GF2m_add(z2, z2, x2)
| 0 | ||||||||||||||||||||||||||||||
134 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
135 | - | |||||||||||||||||||||||||||||||
136 | if (!group->meth->field_mul(group, z2, z2, z1, ctx)
| 0 | ||||||||||||||||||||||||||||||
137 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
138 | if (!group->meth->field_sqr(group, t4, x, ctx)
| 0 | ||||||||||||||||||||||||||||||
139 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
140 | if (!BN_GF2m_add(t4, t4, y)
| 0 | ||||||||||||||||||||||||||||||
141 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
142 | if (!group->meth->field_mul(group, t4, t4, t3, ctx)
| 0 | ||||||||||||||||||||||||||||||
143 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
144 | if (!BN_GF2m_add(t4, t4, z2)
| 0 | ||||||||||||||||||||||||||||||
145 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
146 | - | |||||||||||||||||||||||||||||||
147 | if (!group->meth->field_mul(group, t3, t3, x, ctx)
| 0 | ||||||||||||||||||||||||||||||
148 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
149 | if (!group->meth->field_div(group, t3, t5, t3, ctx)
| 0 | ||||||||||||||||||||||||||||||
150 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
151 | if (!group->meth->field_mul(group, t4, t3, t4, ctx)
| 0 | ||||||||||||||||||||||||||||||
152 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
153 | if (!group->meth->field_mul(group, x2, x1, t3, ctx)
| 0 | ||||||||||||||||||||||||||||||
154 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
155 | if (!BN_GF2m_add(z2, x2, x)
| 0 | ||||||||||||||||||||||||||||||
156 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
157 | - | |||||||||||||||||||||||||||||||
158 | if (!group->meth->field_mul(group, z2, z2, t4, ctx)
| 0 | ||||||||||||||||||||||||||||||
159 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
160 | if (!BN_GF2m_add(z2, z2, y)
| 0 | ||||||||||||||||||||||||||||||
161 | goto never executed: err;goto 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||||||||
168 | } | - | ||||||||||||||||||||||||||||||
169 | static int | - | ||||||||||||||||||||||||||||||
170 | ec_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
| 0 | ||||||||||||||||||||||||||||||
178 | ERR_put_error(16,(0xfff),(112),__FILE__,271); | - | ||||||||||||||||||||||||||||||
179 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||||||||
180 | } | - | ||||||||||||||||||||||||||||||
181 | - | |||||||||||||||||||||||||||||||
182 | if ((
| 0 | ||||||||||||||||||||||||||||||
183 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
184 | )
| 0 | ||||||||||||||||||||||||||||||
185 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
186 | )
| 0 | ||||||||||||||||||||||||||||||
187 | EC_POINT_is_at_infinity(group, point) > 0
| 0 | ||||||||||||||||||||||||||||||
188 | return never executed: EC_POINT_set_to_infinity(group, r);return 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
| 0 | ||||||||||||||||||||||||||||||
192 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||||||||
193 | - | |||||||||||||||||||||||||||||||
194 | - | |||||||||||||||||||||||||||||||
195 | BN_CTX_start(ctx); | - | ||||||||||||||||||||||||||||||
196 | if ((
| 0 | ||||||||||||||||||||||||||||||
197 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
198 | ) | - | ||||||||||||||||||||||||||||||
199 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
200 | if ((
| 0 | ||||||||||||||||||||||||||||||
201 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
202 | ) | - | ||||||||||||||||||||||||||||||
203 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
204 | - | |||||||||||||||||||||||||||||||
205 | x2 = &r->X; | - | ||||||||||||||||||||||||||||||
206 | z2 = &r->Y; | - | ||||||||||||||||||||||||||||||
207 | - | |||||||||||||||||||||||||||||||
208 | if (!(((
| 0 | ||||||||||||||||||||||||||||||
209 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
210 | if (!(((
| 0 | ||||||||||||||||||||||||||||||
211 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
212 | if (!(((
| 0 | ||||||||||||||||||||||||||||||
213 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
214 | if (!(((
| 0 | ||||||||||||||||||||||||||||||
215 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
216 | - | |||||||||||||||||||||||||||||||
217 | if (!BN_GF2m_mod_arr(x1, &point->X, group->poly)
| 0 | ||||||||||||||||||||||||||||||
218 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
219 | if (!(BN_set_word((z1),1))
| 0 | ||||||||||||||||||||||||||||||
220 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
221 | if (!group->meth->field_sqr(group, z2, x1, ctx)
| 0 | ||||||||||||||||||||||||||||||
222 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
223 | if (!group->meth->field_sqr(group, x2, z2, ctx)
| 0 | ||||||||||||||||||||||||||||||
224 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
225 | if (!BN_GF2m_add(x2, x2, &group->b)
| 0 | ||||||||||||||||||||||||||||||
226 | goto never executed: err;goto 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)
| 0 | ||||||||||||||||||||||||||||||
233 | mask >>= 1; never executed: mask >>= 1; | 0 | ||||||||||||||||||||||||||||||
234 | mask >>= 1; | - | ||||||||||||||||||||||||||||||
235 | - | |||||||||||||||||||||||||||||||
236 | if (!mask
| 0 | ||||||||||||||||||||||||||||||
237 | i--; | - | ||||||||||||||||||||||||||||||
238 | mask = (0x8000000000000000L); | - | ||||||||||||||||||||||||||||||
239 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
240 | for (; i >= 0
| 0 | ||||||||||||||||||||||||||||||
241 | word = scalar->d[i]; | - | ||||||||||||||||||||||||||||||
242 | while (mask
| 0 | ||||||||||||||||||||||||||||||
243 | if (!BN_swap_ct(word & mask, x1, x2, group->field.top)
| 0 | ||||||||||||||||||||||||||||||
244 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
245 | if (!BN_swap_ct(word & mask, z1, z2, group->field.top)
| 0 | ||||||||||||||||||||||||||||||
246 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
247 | if (!gf2m_Madd(group, &point->X, x2, z2, x1, z1, ctx)
| 0 | ||||||||||||||||||||||||||||||
248 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
249 | if (!gf2m_Mdouble(group, x1, z1, ctx)
| 0 | ||||||||||||||||||||||||||||||
250 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
251 | if (!BN_swap_ct(word & mask, x1, x2, group->field.top)
| 0 | ||||||||||||||||||||||||||||||
252 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
253 | if (!BN_swap_ct(word & mask, z1, z2, group->field.top)
| 0 | ||||||||||||||||||||||||||||||
254 | goto never executed: err;goto 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
| 0 | ||||||||||||||||||||||||||||||
263 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
264 | else if (i == 1
| 0 | ||||||||||||||||||||||||||||||
265 | if (!EC_POINT_set_to_infinity(group, r)
| 0 | ||||||||||||||||||||||||||||||
266 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
267 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||||||||
268 | if (!(BN_set_word((&r->Z),1))
| 0 | ||||||||||||||||||||||||||||||
269 | goto never executed: err;goto 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||||||||
282 | } | - | ||||||||||||||||||||||||||||||
283 | - | |||||||||||||||||||||||||||||||
284 | - | |||||||||||||||||||||||||||||||
285 | - | |||||||||||||||||||||||||||||||
286 | - | |||||||||||||||||||||||||||||||
287 | - | |||||||||||||||||||||||||||||||
288 | - | |||||||||||||||||||||||||||||||
289 | int | - | ||||||||||||||||||||||||||||||
290 | ec_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 ==
| 0 | ||||||||||||||||||||||||||||||
306 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
307 | ) { | - | ||||||||||||||||||||||||||||||
308 | ctx = new_ctx = BN_CTX_new(); | - | ||||||||||||||||||||||||||||||
309 | if (ctx ==
| 0 | ||||||||||||||||||||||||||||||
310 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
311 | ) | - | ||||||||||||||||||||||||||||||
312 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||||||||
313 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
314 | - | |||||||||||||||||||||||||||||||
315 | - | |||||||||||||||||||||||||||||||
316 | - | |||||||||||||||||||||||||||||||
317 | - | |||||||||||||||||||||||||||||||
318 | - | |||||||||||||||||||||||||||||||
319 | - | |||||||||||||||||||||||||||||||
320 | if ((scalar
| 0 | ||||||||||||||||||||||||||||||
321 | (num == 0
| 0 | ||||||||||||||||||||||||||||||
322 | ret = ec_wNAF_mul(group, r, scalar, num, points, scalars, ctx); | - | ||||||||||||||||||||||||||||||
323 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
324 | } | - | ||||||||||||||||||||||||||||||
325 | if ((
| 0 | ||||||||||||||||||||||||||||||
326 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
327 | ) | - | ||||||||||||||||||||||||||||||
328 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
329 | if ((
| 0 | ||||||||||||||||||||||||||||||
330 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
331 | ) | - | ||||||||||||||||||||||||||||||
332 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
333 | - | |||||||||||||||||||||||||||||||
334 | if (!EC_POINT_set_to_infinity(group, acc)
| 0 | ||||||||||||||||||||||||||||||
335 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
336 | - | |||||||||||||||||||||||||||||||
337 | if (scalar
| 0 | ||||||||||||||||||||||||||||||
338 | if (!ec_GF2m_montgomery_point_multiply(group, p, scalar, group->generator, ctx)
| 0 | ||||||||||||||||||||||||||||||
339 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
340 | if (((
| 0 | ||||||||||||||||||||||||||||||
341 | if (!group->meth->invert(group, p, ctx)
| 0 | ||||||||||||||||||||||||||||||
342 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
343 | if (!group->meth->add(group, acc, acc, p, ctx)
| 0 | ||||||||||||||||||||||||||||||
344 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
345 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
346 | for (i = 0; i < num
| 0 | ||||||||||||||||||||||||||||||
347 | if (!ec_GF2m_montgomery_point_multiply(group, p, scalars[i], points[i], ctx)
| 0 | ||||||||||||||||||||||||||||||
348 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
349 | if (((
| 0 | ||||||||||||||||||||||||||||||
350 | if (!group->meth->invert(group, p, ctx)
| 0 | ||||||||||||||||||||||||||||||
351 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
352 | if (!group->meth->add(group, acc, acc, p, ctx)
| 0 | ||||||||||||||||||||||||||||||
353 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
354 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
355 | - | |||||||||||||||||||||||||||||||
356 | if (!EC_POINT_copy(r, acc)
| 0 | ||||||||||||||||||||||||||||||
357 | goto never executed: err;goto 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: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||||||||
366 | } | - | ||||||||||||||||||||||||||||||
367 | - | |||||||||||||||||||||||||||||||
368 | - | |||||||||||||||||||||||||||||||
369 | - | |||||||||||||||||||||||||||||||
370 | - | |||||||||||||||||||||||||||||||
371 | - | |||||||||||||||||||||||||||||||
372 | int | - | ||||||||||||||||||||||||||||||
373 | ec_GF2m_precompute_mult(EC_GROUP * group, BN_CTX * ctx) | - | ||||||||||||||||||||||||||||||
374 | { | - | ||||||||||||||||||||||||||||||
375 | return executed 10 times by 1 test: ec_wNAF_precompute_mult(group, ctx);return ec_wNAF_precompute_mult(group, ctx); Executed by:
executed 10 times by 1 test: return ec_wNAF_precompute_mult(group, ctx); Executed by:
| 10 | ||||||||||||||||||||||||||||||
376 | } | - | ||||||||||||||||||||||||||||||
377 | - | |||||||||||||||||||||||||||||||
378 | int | - | ||||||||||||||||||||||||||||||
379 | ec_GF2m_have_precompute_mult(const EC_GROUP * group) | - | ||||||||||||||||||||||||||||||
380 | { | - | ||||||||||||||||||||||||||||||
381 | return never executed: ec_wNAF_have_precompute_mult(group);return ec_wNAF_have_precompute_mult(group); never executed: return ec_wNAF_have_precompute_mult(group); | 0 | ||||||||||||||||||||||||||||||
382 | } | - | ||||||||||||||||||||||||||||||
Switch to Source code | Preprocessed file |