Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/ec/ec_key.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||
4 | EC_KEY * | - | ||||||||||||||||||||||||
5 | EC_KEY_new(void) | - | ||||||||||||||||||||||||
6 | { | - | ||||||||||||||||||||||||
7 | EC_KEY *ret; | - | ||||||||||||||||||||||||
8 | - | |||||||||||||||||||||||||
9 | ret = malloc(sizeof(EC_KEY)); | - | ||||||||||||||||||||||||
10 | if (ret ==
| 0-319 | ||||||||||||||||||||||||
11 | ((void *)0)
| 0-319 | ||||||||||||||||||||||||
12 | ) { | - | ||||||||||||||||||||||||
13 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,78); | - | ||||||||||||||||||||||||
14 | return never executed: (return ( ((void *)0) ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
15 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
16 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
17 | } | - | ||||||||||||||||||||||||
18 | ret->version = 1; | - | ||||||||||||||||||||||||
19 | ret->flags = 0; | - | ||||||||||||||||||||||||
20 | ret->group = | - | ||||||||||||||||||||||||
21 | ((void *)0) | - | ||||||||||||||||||||||||
22 | ; | - | ||||||||||||||||||||||||
23 | ret->pub_key = | - | ||||||||||||||||||||||||
24 | ((void *)0) | - | ||||||||||||||||||||||||
25 | ; | - | ||||||||||||||||||||||||
26 | ret->priv_key = | - | ||||||||||||||||||||||||
27 | ((void *)0) | - | ||||||||||||||||||||||||
28 | ; | - | ||||||||||||||||||||||||
29 | ret->enc_flag = 0; | - | ||||||||||||||||||||||||
30 | ret->conv_form = POINT_CONVERSION_UNCOMPRESSED; | - | ||||||||||||||||||||||||
31 | ret->references = 1; | - | ||||||||||||||||||||||||
32 | ret->method_data = | - | ||||||||||||||||||||||||
33 | ((void *)0) | - | ||||||||||||||||||||||||
34 | ; | - | ||||||||||||||||||||||||
35 | return executed 319 times by 3 tests: (ret);return (ret); Executed by:
executed 319 times by 3 tests: return (ret); Executed by:
| 319 | ||||||||||||||||||||||||
36 | } | - | ||||||||||||||||||||||||
37 | - | |||||||||||||||||||||||||
38 | EC_KEY * | - | ||||||||||||||||||||||||
39 | EC_KEY_new_by_curve_name(int nid) | - | ||||||||||||||||||||||||
40 | { | - | ||||||||||||||||||||||||
41 | EC_KEY *ret = EC_KEY_new(); | - | ||||||||||||||||||||||||
42 | if (ret ==
| 0-108 | ||||||||||||||||||||||||
43 | ((void *)0)
| 0-108 | ||||||||||||||||||||||||
44 | ) | - | ||||||||||||||||||||||||
45 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
46 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
47 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
48 | ret->group = EC_GROUP_new_by_curve_name(nid); | - | ||||||||||||||||||||||||
49 | if (ret->group ==
| 0-108 | ||||||||||||||||||||||||
50 | ((void *)0)
| 0-108 | ||||||||||||||||||||||||
51 | ) { | - | ||||||||||||||||||||||||
52 | EC_KEY_free(ret); | - | ||||||||||||||||||||||||
53 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
54 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
55 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
56 | } | - | ||||||||||||||||||||||||
57 | return executed 108 times by 2 tests: ret;return ret; Executed by:
executed 108 times by 2 tests: return ret; Executed by:
| 108 | ||||||||||||||||||||||||
58 | } | - | ||||||||||||||||||||||||
59 | - | |||||||||||||||||||||||||
60 | void | - | ||||||||||||||||||||||||
61 | EC_KEY_free(EC_KEY * r) | - | ||||||||||||||||||||||||
62 | { | - | ||||||||||||||||||||||||
63 | int i; | - | ||||||||||||||||||||||||
64 | - | |||||||||||||||||||||||||
65 | if (r ==
| 319-1454 | ||||||||||||||||||||||||
66 | ((void *)0)
| 319-1454 | ||||||||||||||||||||||||
67 | ) | - | ||||||||||||||||||||||||
68 | return; executed 1454 times by 15 tests: return; Executed by:
| 1454 | ||||||||||||||||||||||||
69 | - | |||||||||||||||||||||||||
70 | i = CRYPTO_add_lock(&r->references,-1,33,__FILE__,115); | - | ||||||||||||||||||||||||
71 | if (i > 0
| 0-319 | ||||||||||||||||||||||||
72 | return; never executed: return; | 0 | ||||||||||||||||||||||||
73 | - | |||||||||||||||||||||||||
74 | EC_GROUP_free(r->group); | - | ||||||||||||||||||||||||
75 | EC_POINT_free(r->pub_key); | - | ||||||||||||||||||||||||
76 | BN_clear_free(r->priv_key); | - | ||||||||||||||||||||||||
77 | - | |||||||||||||||||||||||||
78 | EC_EX_DATA_free_all_data(&r->method_data); | - | ||||||||||||||||||||||||
79 | - | |||||||||||||||||||||||||
80 | freezero(r, sizeof(EC_KEY)); | - | ||||||||||||||||||||||||
81 | } executed 319 times by 3 tests: end of block Executed by:
| 319 | ||||||||||||||||||||||||
82 | - | |||||||||||||||||||||||||
83 | EC_KEY * | - | ||||||||||||||||||||||||
84 | EC_KEY_copy(EC_KEY * dest, const EC_KEY * src) | - | ||||||||||||||||||||||||
85 | { | - | ||||||||||||||||||||||||
86 | EC_EXTRA_DATA *d; | - | ||||||||||||||||||||||||
87 | - | |||||||||||||||||||||||||
88 | if (dest ==
| 0 | ||||||||||||||||||||||||
89 | ((void *)0)
| 0 | ||||||||||||||||||||||||
90 | || src ==
| 0 | ||||||||||||||||||||||||
91 | ((void *)0)
| 0 | ||||||||||||||||||||||||
92 | ) { | - | ||||||||||||||||||||||||
93 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,134); | - | ||||||||||||||||||||||||
94 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
95 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
96 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
97 | } | - | ||||||||||||||||||||||||
98 | - | |||||||||||||||||||||||||
99 | if (src->group
| 0 | ||||||||||||||||||||||||
100 | const EC_METHOD *meth = EC_GROUP_method_of(src->group); | - | ||||||||||||||||||||||||
101 | - | |||||||||||||||||||||||||
102 | EC_GROUP_free(dest->group); | - | ||||||||||||||||||||||||
103 | dest->group = EC_GROUP_new(meth); | - | ||||||||||||||||||||||||
104 | if (dest->group ==
| 0 | ||||||||||||||||||||||||
105 | ((void *)0)
| 0 | ||||||||||||||||||||||||
106 | ) | - | ||||||||||||||||||||||||
107 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
108 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
109 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
110 | if (!EC_GROUP_copy(dest->group, src->group)
| 0 | ||||||||||||||||||||||||
111 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
112 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
113 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
114 | } never executed: end of block | 0 | ||||||||||||||||||||||||
115 | - | |||||||||||||||||||||||||
116 | if (src->pub_key
| 0 | ||||||||||||||||||||||||
117 | EC_POINT_free(dest->pub_key); | - | ||||||||||||||||||||||||
118 | dest->pub_key = EC_POINT_new(src->group); | - | ||||||||||||||||||||||||
119 | if (dest->pub_key ==
| 0 | ||||||||||||||||||||||||
120 | ((void *)0)
| 0 | ||||||||||||||||||||||||
121 | ) | - | ||||||||||||||||||||||||
122 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
123 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
124 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
125 | if (!EC_POINT_copy(dest->pub_key, src->pub_key)
| 0 | ||||||||||||||||||||||||
126 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
127 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
128 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
129 | } never executed: end of block | 0 | ||||||||||||||||||||||||
130 | - | |||||||||||||||||||||||||
131 | if (src->priv_key
| 0 | ||||||||||||||||||||||||
132 | if (dest->priv_key ==
| 0 | ||||||||||||||||||||||||
133 | ((void *)0)
| 0 | ||||||||||||||||||||||||
134 | ) { | - | ||||||||||||||||||||||||
135 | dest->priv_key = BN_new(); | - | ||||||||||||||||||||||||
136 | if (dest->priv_key ==
| 0 | ||||||||||||||||||||||||
137 | ((void *)0)
| 0 | ||||||||||||||||||||||||
138 | ) | - | ||||||||||||||||||||||||
139 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
140 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
141 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
142 | } never executed: end of block | 0 | ||||||||||||||||||||||||
143 | if (!BN_copy(dest->priv_key, src->priv_key)
| 0 | ||||||||||||||||||||||||
144 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
145 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
146 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
147 | } never executed: end of block | 0 | ||||||||||||||||||||||||
148 | - | |||||||||||||||||||||||||
149 | EC_EX_DATA_free_all_data(&dest->method_data); | - | ||||||||||||||||||||||||
150 | - | |||||||||||||||||||||||||
151 | for (d = src->method_data; d !=
| 0 | ||||||||||||||||||||||||
152 | ((void *)0)
| 0 | ||||||||||||||||||||||||
153 | ; d = d->next) { | - | ||||||||||||||||||||||||
154 | void *t = d->dup_func(d->data); | - | ||||||||||||||||||||||||
155 | - | |||||||||||||||||||||||||
156 | if (t ==
| 0 | ||||||||||||||||||||||||
157 | ((void *)0)
| 0 | ||||||||||||||||||||||||
158 | ) | - | ||||||||||||||||||||||||
159 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
160 | if (!EC_EX_DATA_set_data(&dest->method_data, t, d->dup_func,
| 0 | ||||||||||||||||||||||||
161 | d->free_func, d->clear_free_func)
| 0 | ||||||||||||||||||||||||
162 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
163 | } never executed: end of block | 0 | ||||||||||||||||||||||||
164 | - | |||||||||||||||||||||||||
165 | - | |||||||||||||||||||||||||
166 | dest->enc_flag = src->enc_flag; | - | ||||||||||||||||||||||||
167 | dest->conv_form = src->conv_form; | - | ||||||||||||||||||||||||
168 | dest->version = src->version; | - | ||||||||||||||||||||||||
169 | dest->flags = src->flags; | - | ||||||||||||||||||||||||
170 | - | |||||||||||||||||||||||||
171 | return never executed: dest;return dest; never executed: return dest; | 0 | ||||||||||||||||||||||||
172 | } | - | ||||||||||||||||||||||||
173 | - | |||||||||||||||||||||||||
174 | EC_KEY * | - | ||||||||||||||||||||||||
175 | EC_KEY_dup(const EC_KEY * ec_key) | - | ||||||||||||||||||||||||
176 | { | - | ||||||||||||||||||||||||
177 | EC_KEY *ret = EC_KEY_new(); | - | ||||||||||||||||||||||||
178 | if (ret ==
| 0 | ||||||||||||||||||||||||
179 | ((void *)0)
| 0 | ||||||||||||||||||||||||
180 | ) | - | ||||||||||||||||||||||||
181 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
182 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
183 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
184 | if (EC_KEY_copy(ret, ec_key) ==
| 0 | ||||||||||||||||||||||||
185 | ((void *)0)
| 0 | ||||||||||||||||||||||||
186 | ) { | - | ||||||||||||||||||||||||
187 | EC_KEY_free(ret); | - | ||||||||||||||||||||||||
188 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
189 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
190 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
191 | } | - | ||||||||||||||||||||||||
192 | return never executed: ret;return ret; never executed: return ret; | 0 | ||||||||||||||||||||||||
193 | } | - | ||||||||||||||||||||||||
194 | - | |||||||||||||||||||||||||
195 | int | - | ||||||||||||||||||||||||
196 | EC_KEY_up_ref(EC_KEY * r) | - | ||||||||||||||||||||||||
197 | { | - | ||||||||||||||||||||||||
198 | int i = CRYPTO_add_lock(&r->references,1,33,__FILE__,205); | - | ||||||||||||||||||||||||
199 | return never executed: ((return ((i > 1) ? 1 : 0);
never executed: return ((i > 1) ? 1 : 0); | 0 | ||||||||||||||||||||||||
200 | } | - | ||||||||||||||||||||||||
201 | - | |||||||||||||||||||||||||
202 | int | - | ||||||||||||||||||||||||
203 | EC_KEY_generate_key(EC_KEY * eckey) | - | ||||||||||||||||||||||||
204 | { | - | ||||||||||||||||||||||||
205 | int ok = 0; | - | ||||||||||||||||||||||||
206 | BN_CTX *ctx = | - | ||||||||||||||||||||||||
207 | ((void *)0) | - | ||||||||||||||||||||||||
208 | ; | - | ||||||||||||||||||||||||
209 | BIGNUM *priv_key = | - | ||||||||||||||||||||||||
210 | ((void *)0) | - | ||||||||||||||||||||||||
211 | , *order = | - | ||||||||||||||||||||||||
212 | ((void *)0) | - | ||||||||||||||||||||||||
213 | ; | - | ||||||||||||||||||||||||
214 | EC_POINT *pub_key = | - | ||||||||||||||||||||||||
215 | ((void *)0) | - | ||||||||||||||||||||||||
216 | ; | - | ||||||||||||||||||||||||
217 | - | |||||||||||||||||||||||||
218 | if (!eckey
| 0-228 | ||||||||||||||||||||||||
219 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,218); | - | ||||||||||||||||||||||||
220 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
221 | } | - | ||||||||||||||||||||||||
222 | if ((
| 0-228 | ||||||||||||||||||||||||
223 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
224 | ) | - | ||||||||||||||||||||||||
225 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
226 | if ((
| 0-228 | ||||||||||||||||||||||||
227 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
228 | ) | - | ||||||||||||||||||||||||
229 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
230 | - | |||||||||||||||||||||||||
231 | if (eckey->priv_key ==
| 0-228 | ||||||||||||||||||||||||
232 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
233 | ) { | - | ||||||||||||||||||||||||
234 | priv_key = BN_new(); | - | ||||||||||||||||||||||||
235 | if (priv_key ==
| 0-228 | ||||||||||||||||||||||||
236 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
237 | ) | - | ||||||||||||||||||||||||
238 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
239 | } executed 228 times by 3 tests: elseend of block Executed by:
| 228 | ||||||||||||||||||||||||
240 | priv_key = eckey->priv_key; never executed: priv_key = eckey->priv_key; | 0 | ||||||||||||||||||||||||
241 | - | |||||||||||||||||||||||||
242 | if (!EC_GROUP_get_order(eckey->group, order, ctx)
| 0-228 | ||||||||||||||||||||||||
243 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
244 | - | |||||||||||||||||||||||||
245 | do | - | ||||||||||||||||||||||||
246 | if (!BN_rand_range(priv_key, order)
| 0-228 | ||||||||||||||||||||||||
247 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
248 | while (((
| 0-228 | ||||||||||||||||||||||||
249 | - | |||||||||||||||||||||||||
250 | if (eckey->pub_key ==
| 0-228 | ||||||||||||||||||||||||
251 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
252 | ) { | - | ||||||||||||||||||||||||
253 | pub_key = EC_POINT_new(eckey->group); | - | ||||||||||||||||||||||||
254 | if (pub_key ==
| 0-228 | ||||||||||||||||||||||||
255 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
256 | ) | - | ||||||||||||||||||||||||
257 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
258 | } executed 228 times by 3 tests: elseend of block Executed by:
| 228 | ||||||||||||||||||||||||
259 | pub_key = eckey->pub_key; never executed: pub_key = eckey->pub_key; | 0 | ||||||||||||||||||||||||
260 | - | |||||||||||||||||||||||||
261 | if (!EC_POINT_mul(eckey->group, pub_key, priv_key,
| 0-228 | ||||||||||||||||||||||||
262 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
263 | ,
| 0-228 | ||||||||||||||||||||||||
264 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
265 | , ctx)
| 0-228 | ||||||||||||||||||||||||
266 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
267 | - | |||||||||||||||||||||||||
268 | eckey->priv_key = priv_key; | - | ||||||||||||||||||||||||
269 | eckey->pub_key = pub_key; | - | ||||||||||||||||||||||||
270 | - | |||||||||||||||||||||||||
271 | ok = 1; | - | ||||||||||||||||||||||||
272 | - | |||||||||||||||||||||||||
273 | err: code before this statement executed 228 times by 3 tests: err: Executed by:
| 228 | ||||||||||||||||||||||||
274 | BN_free(order); | - | ||||||||||||||||||||||||
275 | if (pub_key !=
| 0-228 | ||||||||||||||||||||||||
276 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
277 | && eckey->pub_key ==
| 0-228 | ||||||||||||||||||||||||
278 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
279 | ) | - | ||||||||||||||||||||||||
280 | EC_POINT_free(pub_key); never executed: EC_POINT_free(pub_key); | 0 | ||||||||||||||||||||||||
281 | if (priv_key !=
| 0-228 | ||||||||||||||||||||||||
282 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
283 | && eckey->priv_key ==
| 0-228 | ||||||||||||||||||||||||
284 | ((void *)0)
| 0-228 | ||||||||||||||||||||||||
285 | ) | - | ||||||||||||||||||||||||
286 | BN_free(priv_key); never executed: BN_free(priv_key); | 0 | ||||||||||||||||||||||||
287 | BN_CTX_free(ctx); | - | ||||||||||||||||||||||||
288 | return executed 228 times by 3 tests: (ok);return (ok); Executed by:
executed 228 times by 3 tests: return (ok); Executed by:
| 228 | ||||||||||||||||||||||||
289 | } | - | ||||||||||||||||||||||||
290 | - | |||||||||||||||||||||||||
291 | int | - | ||||||||||||||||||||||||
292 | EC_KEY_check_key(const EC_KEY * eckey) | - | ||||||||||||||||||||||||
293 | { | - | ||||||||||||||||||||||||
294 | int ok = 0; | - | ||||||||||||||||||||||||
295 | BN_CTX *ctx = | - | ||||||||||||||||||||||||
296 | ((void *)0) | - | ||||||||||||||||||||||||
297 | ; | - | ||||||||||||||||||||||||
298 | const BIGNUM *order = | - | ||||||||||||||||||||||||
299 | ((void *)0) | - | ||||||||||||||||||||||||
300 | ; | - | ||||||||||||||||||||||||
301 | EC_POINT *point = | - | ||||||||||||||||||||||||
302 | ((void *)0) | - | ||||||||||||||||||||||||
303 | ; | - | ||||||||||||||||||||||||
304 | - | |||||||||||||||||||||||||
305 | if (!eckey
| 0-76 | ||||||||||||||||||||||||
306 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,275); | - | ||||||||||||||||||||||||
307 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
308 | } | - | ||||||||||||||||||||||||
309 | if (EC_POINT_is_at_infinity(eckey->group, eckey->pub_key) > 0
| 0-76 | ||||||||||||||||||||||||
310 | ERR_put_error(16,(0xfff),(106),__FILE__,279); | - | ||||||||||||||||||||||||
311 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
312 | } | - | ||||||||||||||||||||||||
313 | if ((
| 0-76 | ||||||||||||||||||||||||
314 | ((void *)0)
| 0-76 | ||||||||||||||||||||||||
315 | ) | - | ||||||||||||||||||||||||
316 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
317 | if ((
| 0-76 | ||||||||||||||||||||||||
318 | ((void *)0)
| 0-76 | ||||||||||||||||||||||||
319 | ) | - | ||||||||||||||||||||||||
320 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
321 | - | |||||||||||||||||||||||||
322 | - | |||||||||||||||||||||||||
323 | if (EC_POINT_is_on_curve(eckey->group, eckey->pub_key, ctx) <= 0
| 0-76 | ||||||||||||||||||||||||
324 | ERR_put_error(16,(0xfff),(107),__FILE__,289); | - | ||||||||||||||||||||||||
325 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
326 | } | - | ||||||||||||||||||||||||
327 | - | |||||||||||||||||||||||||
328 | order = &eckey->group->order; | - | ||||||||||||||||||||||||
329 | if (((
| 0-76 | ||||||||||||||||||||||||
330 | ERR_put_error(16,(0xfff),(122),__FILE__,295); | - | ||||||||||||||||||||||||
331 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
332 | } | - | ||||||||||||||||||||||||
333 | if (!EC_POINT_mul(eckey->group, point,
| 0-76 | ||||||||||||||||||||||||
334 | ((void *)0)
| 0-76 | ||||||||||||||||||||||||
335 | , eckey->pub_key, order, ctx)
| 0-76 | ||||||||||||||||||||||||
336 | ERR_put_error(16,(0xfff),(16),__FILE__,299); | - | ||||||||||||||||||||||||
337 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
338 | } | - | ||||||||||||||||||||||||
339 | if (EC_POINT_is_at_infinity(eckey->group, point) <= 0
| 0-76 | ||||||||||||||||||||||||
340 | ERR_put_error(16,(0xfff),(130),__FILE__,303); | - | ||||||||||||||||||||||||
341 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
342 | } | - | ||||||||||||||||||||||||
343 | - | |||||||||||||||||||||||||
344 | - | |||||||||||||||||||||||||
345 | - | |||||||||||||||||||||||||
346 | - | |||||||||||||||||||||||||
347 | if (eckey->priv_key
| 0-76 | ||||||||||||||||||||||||
348 | if (BN_cmp(eckey->priv_key, order) >= 0
| 0-76 | ||||||||||||||||||||||||
349 | ERR_put_error(16,(0xfff),(130),__FILE__,312); | - | ||||||||||||||||||||||||
350 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
351 | } | - | ||||||||||||||||||||||||
352 | if (!EC_POINT_mul(eckey->group, point, eckey->priv_key,
| 0-76 | ||||||||||||||||||||||||
353 |
| 0-76 | ||||||||||||||||||||||||
354 | ((void *)0)
| 0-76 | ||||||||||||||||||||||||
355 | ,
| 0-76 | ||||||||||||||||||||||||
356 | ((void *)0)
| 0-76 | ||||||||||||||||||||||||
357 | , ctx)
| 0-76 | ||||||||||||||||||||||||
358 | ERR_put_error(16,(0xfff),(16),__FILE__,317); | - | ||||||||||||||||||||||||
359 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
360 | } | - | ||||||||||||||||||||||||
361 | if (EC_POINT_cmp(eckey->group, point, eckey->pub_key,
| 0-76 | ||||||||||||||||||||||||
362 | ctx) != 0
| 0-76 | ||||||||||||||||||||||||
363 | ERR_put_error(16,(0xfff),(123),__FILE__,322); | - | ||||||||||||||||||||||||
364 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
365 | } | - | ||||||||||||||||||||||||
366 | } executed 76 times by 1 test: end of block Executed by:
| 76 | ||||||||||||||||||||||||
367 | ok = 1; | - | ||||||||||||||||||||||||
368 | err: code before this statement executed 76 times by 1 test: err: Executed by:
| 76 | ||||||||||||||||||||||||
369 | BN_CTX_free(ctx); | - | ||||||||||||||||||||||||
370 | EC_POINT_free(point); | - | ||||||||||||||||||||||||
371 | return executed 76 times by 1 test: (ok);return (ok); Executed by:
executed 76 times by 1 test: return (ok); Executed by:
| 76 | ||||||||||||||||||||||||
372 | } | - | ||||||||||||||||||||||||
373 | - | |||||||||||||||||||||||||
374 | int | - | ||||||||||||||||||||||||
375 | EC_KEY_set_public_key_affine_coordinates(EC_KEY * key, BIGNUM * x, BIGNUM * y) | - | ||||||||||||||||||||||||
376 | { | - | ||||||||||||||||||||||||
377 | BN_CTX *ctx = | - | ||||||||||||||||||||||||
378 | ((void *)0) | - | ||||||||||||||||||||||||
379 | ; | - | ||||||||||||||||||||||||
380 | BIGNUM *tx, *ty; | - | ||||||||||||||||||||||||
381 | EC_POINT *point = | - | ||||||||||||||||||||||||
382 | ((void *)0) | - | ||||||||||||||||||||||||
383 | ; | - | ||||||||||||||||||||||||
384 | int ok = 0, tmp_nid, is_char_two = 0; | - | ||||||||||||||||||||||||
385 | - | |||||||||||||||||||||||||
386 | if (!key
| 0 | ||||||||||||||||||||||||
387 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,342); | - | ||||||||||||||||||||||||
388 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
389 | } | - | ||||||||||||||||||||||||
390 | ctx = BN_CTX_new(); | - | ||||||||||||||||||||||||
391 | if (!ctx
| 0 | ||||||||||||||||||||||||
392 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
393 | - | |||||||||||||||||||||||||
394 | point = EC_POINT_new(key->group); | - | ||||||||||||||||||||||||
395 | - | |||||||||||||||||||||||||
396 | if (!point
| 0 | ||||||||||||||||||||||||
397 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
398 | - | |||||||||||||||||||||||||
399 | tmp_nid = EC_METHOD_get_field_type(EC_GROUP_method_of(key->group)); | - | ||||||||||||||||||||||||
400 | - | |||||||||||||||||||||||||
401 | if (tmp_nid == 407
| 0 | ||||||||||||||||||||||||
402 | is_char_two = 1; never executed: is_char_two = 1; | 0 | ||||||||||||||||||||||||
403 | - | |||||||||||||||||||||||||
404 | if ((
| 0 | ||||||||||||||||||||||||
405 | ((void *)0)
| 0 | ||||||||||||||||||||||||
406 | ) | - | ||||||||||||||||||||||||
407 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
408 | if ((
| 0 | ||||||||||||||||||||||||
409 | ((void *)0)
| 0 | ||||||||||||||||||||||||
410 | ) | - | ||||||||||||||||||||||||
411 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
412 | - | |||||||||||||||||||||||||
413 | - | |||||||||||||||||||||||||
414 | if (is_char_two
| 0 | ||||||||||||||||||||||||
415 | if (!EC_POINT_set_affine_coordinates_GF2m(key->group, point,
| 0 | ||||||||||||||||||||||||
416 | x, y, ctx)
| 0 | ||||||||||||||||||||||||
417 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
418 | if (!EC_POINT_get_affine_coordinates_GF2m(key->group, point,
| 0 | ||||||||||||||||||||||||
419 | tx, ty, ctx)
| 0 | ||||||||||||||||||||||||
420 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
421 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
422 | - | |||||||||||||||||||||||||
423 | { | - | ||||||||||||||||||||||||
424 | if (!EC_POINT_set_affine_coordinates_GFp(key->group, point,
| 0 | ||||||||||||||||||||||||
425 | x, y, ctx)
| 0 | ||||||||||||||||||||||||
426 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
427 | if (!EC_POINT_get_affine_coordinates_GFp(key->group, point,
| 0 | ||||||||||||||||||||||||
428 | tx, ty, ctx)
| 0 | ||||||||||||||||||||||||
429 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
430 | } never executed: end of block | 0 | ||||||||||||||||||||||||
431 | - | |||||||||||||||||||||||||
432 | - | |||||||||||||||||||||||||
433 | - | |||||||||||||||||||||||||
434 | - | |||||||||||||||||||||||||
435 | if (BN_cmp(x, tx)
| 0 | ||||||||||||||||||||||||
436 | ERR_put_error(16,(0xfff),(146),__FILE__,387); | - | ||||||||||||||||||||||||
437 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
438 | } | - | ||||||||||||||||||||||||
439 | if (!EC_KEY_set_public_key(key, point)
| 0 | ||||||||||||||||||||||||
440 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
441 | - | |||||||||||||||||||||||||
442 | if (EC_KEY_check_key(key) == 0
| 0 | ||||||||||||||||||||||||
443 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||||||||
444 | - | |||||||||||||||||||||||||
445 | ok = 1; | - | ||||||||||||||||||||||||
446 | - | |||||||||||||||||||||||||
447 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||||||||
448 | BN_CTX_free(ctx); | - | ||||||||||||||||||||||||
449 | EC_POINT_free(point); | - | ||||||||||||||||||||||||
450 | return never executed: ok;return ok; never executed: return ok; | 0 | ||||||||||||||||||||||||
451 | - | |||||||||||||||||||||||||
452 | } | - | ||||||||||||||||||||||||
453 | - | |||||||||||||||||||||||||
454 | const EC_GROUP * | - | ||||||||||||||||||||||||
455 | EC_KEY_get0_group(const EC_KEY * key) | - | ||||||||||||||||||||||||
456 | { | - | ||||||||||||||||||||||||
457 | return executed 1072 times by 3 tests: key->group;return key->group; Executed by:
executed 1072 times by 3 tests: return key->group; Executed by:
| 1072 | ||||||||||||||||||||||||
458 | } | - | ||||||||||||||||||||||||
459 | - | |||||||||||||||||||||||||
460 | int | - | ||||||||||||||||||||||||
461 | EC_KEY_set_group(EC_KEY * key, const EC_GROUP * group) | - | ||||||||||||||||||||||||
462 | { | - | ||||||||||||||||||||||||
463 | EC_GROUP_free(key->group); | - | ||||||||||||||||||||||||
464 | key->group = EC_GROUP_dup(group); | - | ||||||||||||||||||||||||
465 | return executed 211 times by 2 tests: (return (key->group == ((void *)0) ) ? 0 : 1; Executed by:
executed 211 times by 2 tests: return (key->group == ((void *)0) ) ? 0 : 1; Executed by:
| 0-211 | ||||||||||||||||||||||||
466 | ((void *)0)
executed 211 times by 2 tests: return (key->group == ((void *)0) ) ? 0 : 1; Executed by:
| 0-211 | ||||||||||||||||||||||||
467 | )
executed 211 times by 2 tests: return (key->group == ((void *)0) ) ? 0 : 1; Executed by:
| 0-211 | ||||||||||||||||||||||||
468 | } | - | ||||||||||||||||||||||||
469 | - | |||||||||||||||||||||||||
470 | const BIGNUM * | - | ||||||||||||||||||||||||
471 | EC_KEY_get0_private_key(const EC_KEY * key) | - | ||||||||||||||||||||||||
472 | { | - | ||||||||||||||||||||||||
473 | return executed 181 times by 3 tests: key->priv_key;return key->priv_key; Executed by:
executed 181 times by 3 tests: return key->priv_key; Executed by:
| 181 | ||||||||||||||||||||||||
474 | } | - | ||||||||||||||||||||||||
475 | - | |||||||||||||||||||||||||
476 | int | - | ||||||||||||||||||||||||
477 | EC_KEY_set_private_key(EC_KEY * key, const BIGNUM * priv_key) | - | ||||||||||||||||||||||||
478 | { | - | ||||||||||||||||||||||||
479 | BN_clear_free(key->priv_key); | - | ||||||||||||||||||||||||
480 | key->priv_key = BN_dup(priv_key); | - | ||||||||||||||||||||||||
481 | return executed 6 times by 1 test: (return (key->priv_key == ((void *)0) ) ? 0 : 1; Executed by:
executed 6 times by 1 test: return (key->priv_key == ((void *)0) ) ? 0 : 1; Executed by:
| 0-6 | ||||||||||||||||||||||||
482 | ((void *)0)
executed 6 times by 1 test: return (key->priv_key == ((void *)0) ) ? 0 : 1; Executed by:
| 0-6 | ||||||||||||||||||||||||
483 | )
executed 6 times by 1 test: return (key->priv_key == ((void *)0) ) ? 0 : 1; Executed by:
| 0-6 | ||||||||||||||||||||||||
484 | } | - | ||||||||||||||||||||||||
485 | - | |||||||||||||||||||||||||
486 | const EC_POINT * | - | ||||||||||||||||||||||||
487 | EC_KEY_get0_public_key(const EC_KEY * key) | - | ||||||||||||||||||||||||
488 | { | - | ||||||||||||||||||||||||
489 | return executed 538 times by 3 tests: key->pub_key;return key->pub_key; Executed by:
executed 538 times by 3 tests: return key->pub_key; Executed by:
| 538 | ||||||||||||||||||||||||
490 | } | - | ||||||||||||||||||||||||
491 | - | |||||||||||||||||||||||||
492 | int | - | ||||||||||||||||||||||||
493 | EC_KEY_set_public_key(EC_KEY * key, const EC_POINT * pub_key) | - | ||||||||||||||||||||||||
494 | { | - | ||||||||||||||||||||||||
495 | EC_POINT_free(key->pub_key); | - | ||||||||||||||||||||||||
496 | key->pub_key = EC_POINT_dup(pub_key, key->group); | - | ||||||||||||||||||||||||
497 | return executed 29 times by 2 tests: (return (key->pub_key == ((void *)0) ) ? 0 : 1; Executed by:
executed 29 times by 2 tests: return (key->pub_key == ((void *)0) ) ? 0 : 1; Executed by:
| 0-29 | ||||||||||||||||||||||||
498 | ((void *)0)
executed 29 times by 2 tests: return (key->pub_key == ((void *)0) ) ? 0 : 1; Executed by:
| 0-29 | ||||||||||||||||||||||||
499 | )
executed 29 times by 2 tests: return (key->pub_key == ((void *)0) ) ? 0 : 1; Executed by:
| 0-29 | ||||||||||||||||||||||||
500 | } | - | ||||||||||||||||||||||||
501 | - | |||||||||||||||||||||||||
502 | unsigned int | - | ||||||||||||||||||||||||
503 | EC_KEY_get_enc_flags(const EC_KEY * key) | - | ||||||||||||||||||||||||
504 | { | - | ||||||||||||||||||||||||
505 | return never executed: key->enc_flag;return key->enc_flag; never executed: return key->enc_flag; | 0 | ||||||||||||||||||||||||
506 | } | - | ||||||||||||||||||||||||
507 | - | |||||||||||||||||||||||||
508 | void | - | ||||||||||||||||||||||||
509 | EC_KEY_set_enc_flags(EC_KEY * key, unsigned int flags) | - | ||||||||||||||||||||||||
510 | { | - | ||||||||||||||||||||||||
511 | key->enc_flag = flags; | - | ||||||||||||||||||||||||
512 | } never executed: end of block | 0 | ||||||||||||||||||||||||
513 | - | |||||||||||||||||||||||||
514 | point_conversion_form_t | - | ||||||||||||||||||||||||
515 | EC_KEY_get_conv_form(const EC_KEY * key) | - | ||||||||||||||||||||||||
516 | { | - | ||||||||||||||||||||||||
517 | return never executed: key->conv_form;return key->conv_form; never executed: return key->conv_form; | 0 | ||||||||||||||||||||||||
518 | } | - | ||||||||||||||||||||||||
519 | - | |||||||||||||||||||||||||
520 | void | - | ||||||||||||||||||||||||
521 | EC_KEY_set_conv_form(EC_KEY * key, point_conversion_form_t cform) | - | ||||||||||||||||||||||||
522 | { | - | ||||||||||||||||||||||||
523 | key->conv_form = cform; | - | ||||||||||||||||||||||||
524 | if (key->group !=
| 0 | ||||||||||||||||||||||||
525 | ((void *)0)
| 0 | ||||||||||||||||||||||||
526 | ) | - | ||||||||||||||||||||||||
527 | EC_GROUP_set_point_conversion_form(key->group, cform); never executed: EC_GROUP_set_point_conversion_form(key->group, cform); | 0 | ||||||||||||||||||||||||
528 | } never executed: end of block | 0 | ||||||||||||||||||||||||
529 | - | |||||||||||||||||||||||||
530 | void * | - | ||||||||||||||||||||||||
531 | EC_KEY_get_key_method_data(EC_KEY *key, | - | ||||||||||||||||||||||||
532 | void *(*dup_func) (void *), | - | ||||||||||||||||||||||||
533 | void (*free_func) (void *), | - | ||||||||||||||||||||||||
534 | void (*clear_free_func) (void *)) | - | ||||||||||||||||||||||||
535 | { | - | ||||||||||||||||||||||||
536 | void *ret; | - | ||||||||||||||||||||||||
537 | - | |||||||||||||||||||||||||
538 | CRYPTO_lock(1|4,33,__FILE__,481); | - | ||||||||||||||||||||||||
539 | ret = EC_EX_DATA_get_data(key->method_data, dup_func, free_func, clear_free_func); | - | ||||||||||||||||||||||||
540 | CRYPTO_lock(2|4,33,__FILE__,483); | - | ||||||||||||||||||||||||
541 | - | |||||||||||||||||||||||||
542 | return executed 690 times by 3 tests: ret;return ret; Executed by:
executed 690 times by 3 tests: return ret; Executed by:
| 690 | ||||||||||||||||||||||||
543 | } | - | ||||||||||||||||||||||||
544 | - | |||||||||||||||||||||||||
545 | void * | - | ||||||||||||||||||||||||
546 | EC_KEY_insert_key_method_data(EC_KEY * key, void *data, | - | ||||||||||||||||||||||||
547 | void *(*dup_func) (void *), | - | ||||||||||||||||||||||||
548 | void (*free_func) (void *), | - | ||||||||||||||||||||||||
549 | void (*clear_free_func) (void *)) | - | ||||||||||||||||||||||||
550 | { | - | ||||||||||||||||||||||||
551 | EC_EXTRA_DATA *ex_data; | - | ||||||||||||||||||||||||
552 | - | |||||||||||||||||||||||||
553 | CRYPTO_lock(1|8,33,__FILE__,496); | - | ||||||||||||||||||||||||
554 | ex_data = EC_EX_DATA_get_data(key->method_data, dup_func, free_func, clear_free_func); | - | ||||||||||||||||||||||||
555 | if (ex_data ==
| 0-234 | ||||||||||||||||||||||||
556 | ((void *)0)
| 0-234 | ||||||||||||||||||||||||
557 | ) | - | ||||||||||||||||||||||||
558 | EC_EX_DATA_set_data(&key->method_data, data, dup_func, free_func, clear_free_func); executed 234 times by 3 tests: EC_EX_DATA_set_data(&key->method_data, data, dup_func, free_func, clear_free_func); Executed by:
| 234 | ||||||||||||||||||||||||
559 | CRYPTO_lock(2|8,33,__FILE__,500); | - | ||||||||||||||||||||||||
560 | - | |||||||||||||||||||||||||
561 | return executed 234 times by 3 tests: ex_data;return ex_data; Executed by:
executed 234 times by 3 tests: return ex_data; Executed by:
| 234 | ||||||||||||||||||||||||
562 | } | - | ||||||||||||||||||||||||
563 | - | |||||||||||||||||||||||||
564 | void | - | ||||||||||||||||||||||||
565 | EC_KEY_set_asn1_flag(EC_KEY * key, int flag) | - | ||||||||||||||||||||||||
566 | { | - | ||||||||||||||||||||||||
567 | if (key->group !=
| 0 | ||||||||||||||||||||||||
568 | ((void *)0)
| 0 | ||||||||||||||||||||||||
569 | ) | - | ||||||||||||||||||||||||
570 | EC_GROUP_set_asn1_flag(key->group, flag); never executed: EC_GROUP_set_asn1_flag(key->group, flag); | 0 | ||||||||||||||||||||||||
571 | } never executed: end of block | 0 | ||||||||||||||||||||||||
572 | - | |||||||||||||||||||||||||
573 | int | - | ||||||||||||||||||||||||
574 | EC_KEY_precompute_mult(EC_KEY * key, BN_CTX * ctx) | - | ||||||||||||||||||||||||
575 | { | - | ||||||||||||||||||||||||
576 | if (key->group ==
| 0 | ||||||||||||||||||||||||
577 | ((void *)0)
| 0 | ||||||||||||||||||||||||
578 | ) | - | ||||||||||||||||||||||||
579 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
580 | return never executed: EC_GROUP_precompute_mult(key->group, ctx);return EC_GROUP_precompute_mult(key->group, ctx); never executed: return EC_GROUP_precompute_mult(key->group, ctx); | 0 | ||||||||||||||||||||||||
581 | } | - | ||||||||||||||||||||||||
582 | - | |||||||||||||||||||||||||
583 | int | - | ||||||||||||||||||||||||
584 | EC_KEY_get_flags(const EC_KEY * key) | - | ||||||||||||||||||||||||
585 | { | - | ||||||||||||||||||||||||
586 | return never executed: key->flags;return key->flags; never executed: return key->flags; | 0 | ||||||||||||||||||||||||
587 | } | - | ||||||||||||||||||||||||
588 | - | |||||||||||||||||||||||||
589 | void | - | ||||||||||||||||||||||||
590 | EC_KEY_set_flags(EC_KEY * key, int flags) | - | ||||||||||||||||||||||||
591 | { | - | ||||||||||||||||||||||||
592 | key->flags |= flags; | - | ||||||||||||||||||||||||
593 | } never executed: end of block | 0 | ||||||||||||||||||||||||
594 | - | |||||||||||||||||||||||||
595 | void | - | ||||||||||||||||||||||||
596 | EC_KEY_clear_flags(EC_KEY * key, int flags) | - | ||||||||||||||||||||||||
597 | { | - | ||||||||||||||||||||||||
598 | key->flags &= ~flags; | - | ||||||||||||||||||||||||
599 | } never executed: end of block | 0 | ||||||||||||||||||||||||
Switch to Source code | Preprocessed file |