Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | int | - |
5 | EC_GROUP_get_basis_type(const EC_GROUP * group) | - |
6 | { | - |
7 | int i = 0; | - |
8 | | - |
9 | if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) !=TRUE | never evaluated | FALSE | never evaluated |
| 0 |
10 | 407TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
11 | | - |
12 | return never executed: return 0; 0;never executed: return 0; | 0 |
13 | | - |
14 | while (group->poly[i] != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
15 | i++; never executed: i++; | 0 |
16 | | - |
17 | if (i == 4TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
18 | return never executed: return 683; 683;never executed: return 683; | 0 |
19 | else if (i == 2TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
20 | return never executed: return 682; 682;never executed: return 682; | 0 |
21 | else | - |
22 | | - |
23 | return never executed: return 0; 0;never executed: return 0; | 0 |
24 | } | - |
25 | | - |
26 | | - |
27 | int | - |
28 | EC_GROUP_get_trinomial_basis(const EC_GROUP * group, unsigned int *k) | - |
29 | { | - |
30 | if (group == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
31 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
32 | ) | - |
33 | return never executed: return 0; 0;never executed: return 0; | 0 |
34 | | - |
35 | if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) !=TRUE | never evaluated | FALSE | never evaluated |
| 0 |
36 | 407TRUE | never evaluated | FALSE | never evaluated |
| 0 |
37 | || !((TRUE | never evaluated | FALSE | never evaluated |
group->poly[0] != 0)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
group->poly[1] != 0)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
group->poly[2] == 0)TRUE | never evaluated | FALSE | never evaluated |
)) { | 0 |
38 | ERR_put_error(16,(0xfff),((2|64)),__FILE__,100); | - |
39 | return never executed: return 0; 0;never executed: return 0; | 0 |
40 | } | - |
41 | if (kTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
42 | * never executed: *k = group->poly[1]; k = group->poly[1];never executed: *k = group->poly[1]; | 0 |
43 | | - |
44 | return never executed: return 1; 1;never executed: return 1; | 0 |
45 | } | - |
46 | | - |
47 | int | - |
48 | EC_GROUP_get_pentanomial_basis(const EC_GROUP * group, unsigned int *k1, | - |
49 | unsigned int *k2, unsigned int *k3) | - |
50 | { | - |
51 | if (group == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
52 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
53 | ) | - |
54 | return never executed: return 0; 0;never executed: return 0; | 0 |
55 | | - |
56 | if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) !=TRUE | never evaluated | FALSE | never evaluated |
| 0 |
57 | 407TRUE | never evaluated | FALSE | never evaluated |
| 0 |
58 | || !((TRUE | never evaluated | FALSE | never evaluated |
group->poly[0] != 0)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
group->poly[1] != 0)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
group->poly[2] != 0)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
group->poly[3] != 0)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
group->poly[4] == 0)TRUE | never evaluated | FALSE | never evaluated |
)) { | 0 |
59 | ERR_put_error(16,(0xfff),((2|64)),__FILE__,119); | - |
60 | return never executed: return 0; 0;never executed: return 0; | 0 |
61 | } | - |
62 | if (k1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
63 | * never executed: *k1 = group->poly[3]; k1 = group->poly[3];never executed: *k1 = group->poly[3]; | 0 |
64 | if (k2TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
65 | * never executed: *k2 = group->poly[2]; k2 = group->poly[2];never executed: *k2 = group->poly[2]; | 0 |
66 | if (k3TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
67 | * never executed: *k3 = group->poly[1]; k3 = group->poly[1];never executed: *k3 = group->poly[1]; | 0 |
68 | | - |
69 | return never executed: return 1; 1;never executed: return 1; | 0 |
70 | } | - |
71 | | - |
72 | | - |
73 | | - |
74 | typedef struct x9_62_pentanomial_st { | - |
75 | long k1; | - |
76 | long k2; | - |
77 | long k3; | - |
78 | } X9_62_PENTANOMIAL; | - |
79 | | - |
80 | typedef struct x9_62_characteristic_two_st { | - |
81 | long m; | - |
82 | ASN1_OBJECT *type; | - |
83 | union { | - |
84 | char *ptr; | - |
85 | | - |
86 | ASN1_NULL *onBasis; | - |
87 | | - |
88 | ASN1_INTEGER *tpBasis; | - |
89 | | - |
90 | X9_62_PENTANOMIAL *ppBasis; | - |
91 | | - |
92 | ASN1_TYPE *other; | - |
93 | } p; | - |
94 | } X9_62_CHARACTERISTIC_TWO; | - |
95 | | - |
96 | typedef struct x9_62_fieldid_st { | - |
97 | ASN1_OBJECT *fieldType; | - |
98 | union { | - |
99 | char *ptr; | - |
100 | | - |
101 | ASN1_INTEGER *prime; | - |
102 | | - |
103 | X9_62_CHARACTERISTIC_TWO *char_two; | - |
104 | | - |
105 | ASN1_TYPE *other; | - |
106 | } p; | - |
107 | } X9_62_FIELDID; | - |
108 | | - |
109 | typedef struct x9_62_curve_st { | - |
110 | ASN1_OCTET_STRING *a; | - |
111 | ASN1_OCTET_STRING *b; | - |
112 | ASN1_BIT_STRING *seed; | - |
113 | } X9_62_CURVE; | - |
114 | | - |
115 | typedef struct ec_parameters_st { | - |
116 | long version; | - |
117 | X9_62_FIELDID *fieldID; | - |
118 | X9_62_CURVE *curve; | - |
119 | ASN1_OCTET_STRING *base; | - |
120 | ASN1_INTEGER *order; | - |
121 | ASN1_INTEGER *cofactor; | - |
122 | } ECPARAMETERS; | - |
123 | | - |
124 | struct ecpk_parameters_st { | - |
125 | int type; | - |
126 | union { | - |
127 | ASN1_OBJECT *named_curve; | - |
128 | ECPARAMETERS *parameters; | - |
129 | ASN1_NULL *implicitlyCA; | - |
130 | } value; | - |
131 | } ; | - |
132 | | - |
133 | | - |
134 | typedef struct ec_privatekey_st { | - |
135 | long version; | - |
136 | ASN1_OCTET_STRING *privateKey; | - |
137 | ECPKPARAMETERS *parameters; | - |
138 | ASN1_BIT_STRING *publicKey; | - |
139 | } EC_PRIVATEKEY; | - |
140 | | - |
141 | | - |
142 | static const ASN1_TEMPLATE X9_62_PENTANOMIAL_seq_tt[] = { | - |
143 | { | - |
144 | .flags = 0, | - |
145 | .tag = 0, | - |
146 | .offset = | - |
147 | __builtin_offsetof ( | - |
148 | X9_62_PENTANOMIAL | - |
149 | , | - |
150 | k1 | - |
151 | ) | - |
152 | , | - |
153 | .field_name = "k1", | - |
154 | .item = &LONG_it, | - |
155 | }, | - |
156 | { | - |
157 | .flags = 0, | - |
158 | .tag = 0, | - |
159 | .offset = | - |
160 | __builtin_offsetof ( | - |
161 | X9_62_PENTANOMIAL | - |
162 | , | - |
163 | k2 | - |
164 | ) | - |
165 | , | - |
166 | .field_name = "k2", | - |
167 | .item = &LONG_it, | - |
168 | }, | - |
169 | { | - |
170 | .flags = 0, | - |
171 | .tag = 0, | - |
172 | .offset = | - |
173 | __builtin_offsetof ( | - |
174 | X9_62_PENTANOMIAL | - |
175 | , | - |
176 | k3 | - |
177 | ) | - |
178 | , | - |
179 | .field_name = "k3", | - |
180 | .item = &LONG_it, | - |
181 | }, | - |
182 | }; | - |
183 | | - |
184 | const ASN1_ITEM X9_62_PENTANOMIAL_it = { | - |
185 | .itype = 0x1, | - |
186 | .utype = 16, | - |
187 | .templates = X9_62_PENTANOMIAL_seq_tt, | - |
188 | .tcount = sizeof(X9_62_PENTANOMIAL_seq_tt) / sizeof(ASN1_TEMPLATE), | - |
189 | .funcs = | - |
190 | ((void *)0) | - |
191 | , | - |
192 | .size = sizeof(X9_62_PENTANOMIAL), | - |
193 | .sname = "X9_62_PENTANOMIAL", | - |
194 | }; | - |
195 | | - |
196 | X9_62_PENTANOMIAL *X9_62_PENTANOMIAL_new(void); | - |
197 | void X9_62_PENTANOMIAL_free(X9_62_PENTANOMIAL *a); | - |
198 | | - |
199 | X9_62_PENTANOMIAL * | - |
200 | X9_62_PENTANOMIAL_new(void) | - |
201 | { | - |
202 | return never executed: return (X9_62_PENTANOMIAL*)ASN1_item_new(&X9_62_PENTANOMIAL_it); (X9_62_PENTANOMIAL*)ASN1_item_new(&X9_62_PENTANOMIAL_it);never executed: return (X9_62_PENTANOMIAL*)ASN1_item_new(&X9_62_PENTANOMIAL_it); | 0 |
203 | } | - |
204 | | - |
205 | void | - |
206 | X9_62_PENTANOMIAL_free(X9_62_PENTANOMIAL *a) | - |
207 | { | - |
208 | ASN1_item_free((ASN1_VALUE *)a, &X9_62_PENTANOMIAL_it); | - |
209 | } never executed: end of block | 0 |
210 | | - |
211 | static const ASN1_TEMPLATE char_two_def_tt = { | - |
212 | .flags = 0, | - |
213 | .tag = 0, | - |
214 | .offset = | - |
215 | __builtin_offsetof ( | - |
216 | X9_62_CHARACTERISTIC_TWO | - |
217 | , | - |
218 | p.other | - |
219 | ) | - |
220 | , | - |
221 | .field_name = "p.other", | - |
222 | .item = &ASN1_ANY_it, | - |
223 | }; | - |
224 | | - |
225 | static const ASN1_ADB_TABLE X9_62_CHARACTERISTIC_TWO_adbtbl[] = { | - |
226 | { | - |
227 | .value = 681, | - |
228 | .tt = { | - |
229 | .flags = 0, | - |
230 | .tag = 0, | - |
231 | .offset = | - |
232 | __builtin_offsetof ( | - |
233 | X9_62_CHARACTERISTIC_TWO | - |
234 | , | - |
235 | p.onBasis | - |
236 | ) | - |
237 | , | - |
238 | .field_name = "p.onBasis", | - |
239 | .item = &ASN1_NULL_it, | - |
240 | }, | - |
241 | | - |
242 | }, | - |
243 | { | - |
244 | .value = 682, | - |
245 | .tt = { | - |
246 | .flags = 0, | - |
247 | .tag = 0, | - |
248 | .offset = | - |
249 | __builtin_offsetof ( | - |
250 | X9_62_CHARACTERISTIC_TWO | - |
251 | , | - |
252 | p.tpBasis | - |
253 | ) | - |
254 | , | - |
255 | .field_name = "p.tpBasis", | - |
256 | .item = &ASN1_INTEGER_it, | - |
257 | }, | - |
258 | | - |
259 | }, | - |
260 | { | - |
261 | .value = 683, | - |
262 | .tt = { | - |
263 | .flags = 0, | - |
264 | .tag = 0, | - |
265 | .offset = | - |
266 | __builtin_offsetof ( | - |
267 | X9_62_CHARACTERISTIC_TWO | - |
268 | , | - |
269 | p.ppBasis | - |
270 | ) | - |
271 | , | - |
272 | .field_name = "p.ppBasis", | - |
273 | .item = &X9_62_PENTANOMIAL_it, | - |
274 | }, | - |
275 | | - |
276 | }, | - |
277 | }; | - |
278 | | - |
279 | static const ASN1_ADB X9_62_CHARACTERISTIC_TWO_adb = { | - |
280 | .flags = 0, | - |
281 | .offset = | - |
282 | __builtin_offsetof ( | - |
283 | X9_62_CHARACTERISTIC_TWO | - |
284 | , | - |
285 | type | - |
286 | ) | - |
287 | , | - |
288 | .app_items = 0, | - |
289 | .tbl = X9_62_CHARACTERISTIC_TWO_adbtbl, | - |
290 | .tblcount = sizeof(X9_62_CHARACTERISTIC_TWO_adbtbl) / sizeof(ASN1_ADB_TABLE), | - |
291 | .default_tt = &char_two_def_tt, | - |
292 | .null_tt = | - |
293 | ((void *)0) | - |
294 | , | - |
295 | }; | - |
296 | | - |
297 | static const ASN1_TEMPLATE X9_62_CHARACTERISTIC_TWO_seq_tt[] = { | - |
298 | { | - |
299 | .flags = 0, | - |
300 | .tag = 0, | - |
301 | .offset = | - |
302 | __builtin_offsetof ( | - |
303 | X9_62_CHARACTERISTIC_TWO | - |
304 | , | - |
305 | m | - |
306 | ) | - |
307 | , | - |
308 | .field_name = "m", | - |
309 | .item = &LONG_it, | - |
310 | }, | - |
311 | { | - |
312 | .flags = 0, | - |
313 | .tag = 0, | - |
314 | .offset = | - |
315 | __builtin_offsetof ( | - |
316 | X9_62_CHARACTERISTIC_TWO | - |
317 | , | - |
318 | type | - |
319 | ) | - |
320 | , | - |
321 | .field_name = "type", | - |
322 | .item = &ASN1_OBJECT_it, | - |
323 | }, | - |
324 | { | - |
325 | .flags = (0x1<<8), | - |
326 | .tag = -1, | - |
327 | .offset = 0, | - |
328 | .field_name = "X9_62_CHARACTERISTIC_TWO", | - |
329 | .item = (const ASN1_ITEM *)&X9_62_CHARACTERISTIC_TWO_adb, | - |
330 | }, | - |
331 | }; | - |
332 | | - |
333 | const ASN1_ITEM X9_62_CHARACTERISTIC_TWO_it = { | - |
334 | .itype = 0x1, | - |
335 | .utype = 16, | - |
336 | .templates = X9_62_CHARACTERISTIC_TWO_seq_tt, | - |
337 | .tcount = sizeof(X9_62_CHARACTERISTIC_TWO_seq_tt) / sizeof(ASN1_TEMPLATE), | - |
338 | .funcs = | - |
339 | ((void *)0) | - |
340 | , | - |
341 | .size = sizeof(X9_62_CHARACTERISTIC_TWO), | - |
342 | .sname = "X9_62_CHARACTERISTIC_TWO", | - |
343 | }; | - |
344 | | - |
345 | X9_62_CHARACTERISTIC_TWO *X9_62_CHARACTERISTIC_TWO_new(void); | - |
346 | void X9_62_CHARACTERISTIC_TWO_free(X9_62_CHARACTERISTIC_TWO *a); | - |
347 | | - |
348 | X9_62_CHARACTERISTIC_TWO * | - |
349 | X9_62_CHARACTERISTIC_TWO_new(void) | - |
350 | { | - |
351 | return never executed: return (X9_62_CHARACTERISTIC_TWO*)ASN1_item_new(&X9_62_CHARACTERISTIC_TWO_it); (X9_62_CHARACTERISTIC_TWO*)ASN1_item_new(&X9_62_CHARACTERISTIC_TWO_it);never executed: return (X9_62_CHARACTERISTIC_TWO*)ASN1_item_new(&X9_62_CHARACTERISTIC_TWO_it); | 0 |
352 | } | - |
353 | | - |
354 | void | - |
355 | X9_62_CHARACTERISTIC_TWO_free(X9_62_CHARACTERISTIC_TWO *a) | - |
356 | { | - |
357 | ASN1_item_free((ASN1_VALUE *)a, &X9_62_CHARACTERISTIC_TWO_it); | - |
358 | } never executed: end of block | 0 |
359 | | - |
360 | static const ASN1_TEMPLATE fieldID_def_tt = { | - |
361 | .flags = 0, | - |
362 | .tag = 0, | - |
363 | .offset = | - |
364 | __builtin_offsetof ( | - |
365 | X9_62_FIELDID | - |
366 | , | - |
367 | p.other | - |
368 | ) | - |
369 | , | - |
370 | .field_name = "p.other", | - |
371 | .item = &ASN1_ANY_it, | - |
372 | }; | - |
373 | | - |
374 | static const ASN1_ADB_TABLE X9_62_FIELDID_adbtbl[] = { | - |
375 | { | - |
376 | .value = 406, | - |
377 | .tt = { | - |
378 | .flags = 0, | - |
379 | .tag = 0, | - |
380 | .offset = | - |
381 | __builtin_offsetof ( | - |
382 | X9_62_FIELDID | - |
383 | , | - |
384 | p.prime | - |
385 | ) | - |
386 | , | - |
387 | .field_name = "p.prime", | - |
388 | .item = &ASN1_INTEGER_it, | - |
389 | }, | - |
390 | | - |
391 | }, | - |
392 | { | - |
393 | .value = 407, | - |
394 | .tt = { | - |
395 | .flags = 0, | - |
396 | .tag = 0, | - |
397 | .offset = | - |
398 | __builtin_offsetof ( | - |
399 | X9_62_FIELDID | - |
400 | , | - |
401 | p.char_two | - |
402 | ) | - |
403 | , | - |
404 | .field_name = "p.char_two", | - |
405 | .item = &X9_62_CHARACTERISTIC_TWO_it, | - |
406 | }, | - |
407 | | - |
408 | }, | - |
409 | }; | - |
410 | | - |
411 | static const ASN1_ADB X9_62_FIELDID_adb = { | - |
412 | .flags = 0, | - |
413 | .offset = | - |
414 | __builtin_offsetof ( | - |
415 | X9_62_FIELDID | - |
416 | , | - |
417 | fieldType | - |
418 | ) | - |
419 | , | - |
420 | .app_items = 0, | - |
421 | .tbl = X9_62_FIELDID_adbtbl, | - |
422 | .tblcount = sizeof(X9_62_FIELDID_adbtbl) / sizeof(ASN1_ADB_TABLE), | - |
423 | .default_tt = &fieldID_def_tt, | - |
424 | .null_tt = | - |
425 | ((void *)0) | - |
426 | , | - |
427 | }; | - |
428 | | - |
429 | static const ASN1_TEMPLATE X9_62_FIELDID_seq_tt[] = { | - |
430 | { | - |
431 | .flags = 0, | - |
432 | .tag = 0, | - |
433 | .offset = | - |
434 | __builtin_offsetof ( | - |
435 | X9_62_FIELDID | - |
436 | , | - |
437 | fieldType | - |
438 | ) | - |
439 | , | - |
440 | .field_name = "fieldType", | - |
441 | .item = &ASN1_OBJECT_it, | - |
442 | }, | - |
443 | { | - |
444 | .flags = (0x1<<8), | - |
445 | .tag = -1, | - |
446 | .offset = 0, | - |
447 | .field_name = "X9_62_FIELDID", | - |
448 | .item = (const ASN1_ITEM *)&X9_62_FIELDID_adb, | - |
449 | }, | - |
450 | }; | - |
451 | | - |
452 | const ASN1_ITEM X9_62_FIELDID_it = { | - |
453 | .itype = 0x1, | - |
454 | .utype = 16, | - |
455 | .templates = X9_62_FIELDID_seq_tt, | - |
456 | .tcount = sizeof(X9_62_FIELDID_seq_tt) / sizeof(ASN1_TEMPLATE), | - |
457 | .funcs = | - |
458 | ((void *)0) | - |
459 | , | - |
460 | .size = sizeof(X9_62_FIELDID), | - |
461 | .sname = "X9_62_FIELDID", | - |
462 | }; | - |
463 | | - |
464 | static const ASN1_TEMPLATE X9_62_CURVE_seq_tt[] = { | - |
465 | { | - |
466 | .flags = 0, | - |
467 | .tag = 0, | - |
468 | .offset = | - |
469 | __builtin_offsetof ( | - |
470 | X9_62_CURVE | - |
471 | , | - |
472 | a | - |
473 | ) | - |
474 | , | - |
475 | .field_name = "a", | - |
476 | .item = &ASN1_OCTET_STRING_it, | - |
477 | }, | - |
478 | { | - |
479 | .flags = 0, | - |
480 | .tag = 0, | - |
481 | .offset = | - |
482 | __builtin_offsetof ( | - |
483 | X9_62_CURVE | - |
484 | , | - |
485 | b | - |
486 | ) | - |
487 | , | - |
488 | .field_name = "b", | - |
489 | .item = &ASN1_OCTET_STRING_it, | - |
490 | }, | - |
491 | { | - |
492 | .flags = (0x1), | - |
493 | .tag = 0, | - |
494 | .offset = | - |
495 | __builtin_offsetof ( | - |
496 | X9_62_CURVE | - |
497 | , | - |
498 | seed | - |
499 | ) | - |
500 | , | - |
501 | .field_name = "seed", | - |
502 | .item = &ASN1_BIT_STRING_it, | - |
503 | }, | - |
504 | }; | - |
505 | | - |
506 | const ASN1_ITEM X9_62_CURVE_it = { | - |
507 | .itype = 0x1, | - |
508 | .utype = 16, | - |
509 | .templates = X9_62_CURVE_seq_tt, | - |
510 | .tcount = sizeof(X9_62_CURVE_seq_tt) / sizeof(ASN1_TEMPLATE), | - |
511 | .funcs = | - |
512 | ((void *)0) | - |
513 | , | - |
514 | .size = sizeof(X9_62_CURVE), | - |
515 | .sname = "X9_62_CURVE", | - |
516 | }; | - |
517 | | - |
518 | static const ASN1_TEMPLATE ECPARAMETERS_seq_tt[] = { | - |
519 | { | - |
520 | .flags = 0, | - |
521 | .tag = 0, | - |
522 | .offset = | - |
523 | __builtin_offsetof ( | - |
524 | ECPARAMETERS | - |
525 | , | - |
526 | version | - |
527 | ) | - |
528 | , | - |
529 | .field_name = "version", | - |
530 | .item = &LONG_it, | - |
531 | }, | - |
532 | { | - |
533 | .flags = 0, | - |
534 | .tag = 0, | - |
535 | .offset = | - |
536 | __builtin_offsetof ( | - |
537 | ECPARAMETERS | - |
538 | , | - |
539 | fieldID | - |
540 | ) | - |
541 | , | - |
542 | .field_name = "fieldID", | - |
543 | .item = &X9_62_FIELDID_it, | - |
544 | }, | - |
545 | { | - |
546 | .flags = 0, | - |
547 | .tag = 0, | - |
548 | .offset = | - |
549 | __builtin_offsetof ( | - |
550 | ECPARAMETERS | - |
551 | , | - |
552 | curve | - |
553 | ) | - |
554 | , | - |
555 | .field_name = "curve", | - |
556 | .item = &X9_62_CURVE_it, | - |
557 | }, | - |
558 | { | - |
559 | .flags = 0, | - |
560 | .tag = 0, | - |
561 | .offset = | - |
562 | __builtin_offsetof ( | - |
563 | ECPARAMETERS | - |
564 | , | - |
565 | base | - |
566 | ) | - |
567 | , | - |
568 | .field_name = "base", | - |
569 | .item = &ASN1_OCTET_STRING_it, | - |
570 | }, | - |
571 | { | - |
572 | .flags = 0, | - |
573 | .tag = 0, | - |
574 | .offset = | - |
575 | __builtin_offsetof ( | - |
576 | ECPARAMETERS | - |
577 | , | - |
578 | order | - |
579 | ) | - |
580 | , | - |
581 | .field_name = "order", | - |
582 | .item = &ASN1_INTEGER_it, | - |
583 | }, | - |
584 | { | - |
585 | .flags = (0x1), | - |
586 | .tag = 0, | - |
587 | .offset = | - |
588 | __builtin_offsetof ( | - |
589 | ECPARAMETERS | - |
590 | , | - |
591 | cofactor | - |
592 | ) | - |
593 | , | - |
594 | .field_name = "cofactor", | - |
595 | .item = &ASN1_INTEGER_it, | - |
596 | }, | - |
597 | }; | - |
598 | | - |
599 | const ASN1_ITEM ECPARAMETERS_it = { | - |
600 | .itype = 0x1, | - |
601 | .utype = 16, | - |
602 | .templates = ECPARAMETERS_seq_tt, | - |
603 | .tcount = sizeof(ECPARAMETERS_seq_tt) / sizeof(ASN1_TEMPLATE), | - |
604 | .funcs = | - |
605 | ((void *)0) | - |
606 | , | - |
607 | .size = sizeof(ECPARAMETERS), | - |
608 | .sname = "ECPARAMETERS", | - |
609 | }; | - |
610 | | - |
611 | ECPARAMETERS *ECPARAMETERS_new(void); | - |
612 | void ECPARAMETERS_free(ECPARAMETERS *a); | - |
613 | | - |
614 | ECPARAMETERS * | - |
615 | ECPARAMETERS_new(void) | - |
616 | { | - |
617 | return never executed: return (ECPARAMETERS*)ASN1_item_new(&ECPARAMETERS_it); (ECPARAMETERS*)ASN1_item_new(&ECPARAMETERS_it);never executed: return (ECPARAMETERS*)ASN1_item_new(&ECPARAMETERS_it); | 0 |
618 | } | - |
619 | | - |
620 | void | - |
621 | ECPARAMETERS_free(ECPARAMETERS *a) | - |
622 | { | - |
623 | ASN1_item_free((ASN1_VALUE *)a, &ECPARAMETERS_it); | - |
624 | } never executed: end of block | 0 |
625 | | - |
626 | static const ASN1_TEMPLATE ECPKPARAMETERS_ch_tt[] = { | - |
627 | { | - |
628 | .flags = 0, | - |
629 | .tag = 0, | - |
630 | .offset = | - |
631 | __builtin_offsetof ( | - |
632 | ECPKPARAMETERS | - |
633 | , | - |
634 | value.named_curve | - |
635 | ) | - |
636 | , | - |
637 | .field_name = "value.named_curve", | - |
638 | .item = &ASN1_OBJECT_it, | - |
639 | }, | - |
640 | { | - |
641 | .flags = 0, | - |
642 | .tag = 0, | - |
643 | .offset = | - |
644 | __builtin_offsetof ( | - |
645 | ECPKPARAMETERS | - |
646 | , | - |
647 | value.parameters | - |
648 | ) | - |
649 | , | - |
650 | .field_name = "value.parameters", | - |
651 | .item = &ECPARAMETERS_it, | - |
652 | }, | - |
653 | { | - |
654 | .flags = 0, | - |
655 | .tag = 0, | - |
656 | .offset = | - |
657 | __builtin_offsetof ( | - |
658 | ECPKPARAMETERS | - |
659 | , | - |
660 | value.implicitlyCA | - |
661 | ) | - |
662 | , | - |
663 | .field_name = "value.implicitlyCA", | - |
664 | .item = &ASN1_NULL_it, | - |
665 | }, | - |
666 | }; | - |
667 | | - |
668 | const ASN1_ITEM ECPKPARAMETERS_it = { | - |
669 | .itype = 0x2, | - |
670 | .utype = | - |
671 | __builtin_offsetof ( | - |
672 | ECPKPARAMETERS | - |
673 | , | - |
674 | type | - |
675 | ) | - |
676 | , | - |
677 | .templates = ECPKPARAMETERS_ch_tt, | - |
678 | .tcount = sizeof(ECPKPARAMETERS_ch_tt) / sizeof(ASN1_TEMPLATE), | - |
679 | .funcs = | - |
680 | ((void *)0) | - |
681 | , | - |
682 | .size = sizeof(ECPKPARAMETERS), | - |
683 | .sname = "ECPKPARAMETERS", | - |
684 | }; | - |
685 | | - |
686 | ECPKPARAMETERS *ECPKPARAMETERS_new(void); | - |
687 | void ECPKPARAMETERS_free(ECPKPARAMETERS *a); | - |
688 | ECPKPARAMETERS *d2i_ECPKPARAMETERS(ECPKPARAMETERS **a, const unsigned char **in, long len); | - |
689 | int i2d_ECPKPARAMETERS(const ECPKPARAMETERS *a, unsigned char **out); | - |
690 | | - |
691 | ECPKPARAMETERS * | - |
692 | d2i_ECPKPARAMETERS(ECPKPARAMETERS **a, const unsigned char **in, long len) | - |
693 | { | - |
694 | return never executed: return (ECPKPARAMETERS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &ECPKPARAMETERS_it); (ECPKPARAMETERS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,never executed: return (ECPKPARAMETERS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &ECPKPARAMETERS_it); | 0 |
695 | &ECPKPARAMETERS_it); never executed: return (ECPKPARAMETERS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &ECPKPARAMETERS_it); | 0 |
696 | } | - |
697 | | - |
698 | int | - |
699 | i2d_ECPKPARAMETERS(const ECPKPARAMETERS *a, unsigned char **out) | - |
700 | { | - |
701 | return never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &ECPKPARAMETERS_it); ASN1_item_i2d((ASN1_VALUE *)a, out, &ECPKPARAMETERS_it);never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &ECPKPARAMETERS_it); | 0 |
702 | } | - |
703 | | - |
704 | ECPKPARAMETERS * | - |
705 | ECPKPARAMETERS_new(void) | - |
706 | { | - |
707 | return never executed: return (ECPKPARAMETERS *)ASN1_item_new(&ECPKPARAMETERS_it); (ECPKPARAMETERS *)ASN1_item_new(&ECPKPARAMETERS_it);never executed: return (ECPKPARAMETERS *)ASN1_item_new(&ECPKPARAMETERS_it); | 0 |
708 | } | - |
709 | | - |
710 | void | - |
711 | ECPKPARAMETERS_free(ECPKPARAMETERS *a) | - |
712 | { | - |
713 | ASN1_item_free((ASN1_VALUE *)a, &ECPKPARAMETERS_it); | - |
714 | } never executed: end of block | 0 |
715 | | - |
716 | static const ASN1_TEMPLATE EC_PRIVATEKEY_seq_tt[] = { | - |
717 | { | - |
718 | .flags = 0, | - |
719 | .tag = 0, | - |
720 | .offset = | - |
721 | __builtin_offsetof ( | - |
722 | EC_PRIVATEKEY | - |
723 | , | - |
724 | version | - |
725 | ) | - |
726 | , | - |
727 | .field_name = "version", | - |
728 | .item = &LONG_it, | - |
729 | }, | - |
730 | { | - |
731 | .flags = 0, | - |
732 | .tag = 0, | - |
733 | .offset = | - |
734 | __builtin_offsetof ( | - |
735 | EC_PRIVATEKEY | - |
736 | , | - |
737 | privateKey | - |
738 | ) | - |
739 | , | - |
740 | .field_name = "privateKey", | - |
741 | .item = &ASN1_OCTET_STRING_it, | - |
742 | }, | - |
743 | { | - |
744 | .flags = (0x2 << 3)|(0x2<<6) | (0x1), | - |
745 | .tag = 0, | - |
746 | .offset = | - |
747 | __builtin_offsetof ( | - |
748 | EC_PRIVATEKEY | - |
749 | , | - |
750 | parameters | - |
751 | ) | - |
752 | , | - |
753 | .field_name = "parameters", | - |
754 | .item = &ECPKPARAMETERS_it, | - |
755 | }, | - |
756 | { | - |
757 | .flags = (0x2 << 3)|(0x2<<6) | (0x1), | - |
758 | .tag = 1, | - |
759 | .offset = | - |
760 | __builtin_offsetof ( | - |
761 | EC_PRIVATEKEY | - |
762 | , | - |
763 | publicKey | - |
764 | ) | - |
765 | , | - |
766 | .field_name = "publicKey", | - |
767 | .item = &ASN1_BIT_STRING_it, | - |
768 | }, | - |
769 | }; | - |
770 | | - |
771 | const ASN1_ITEM EC_PRIVATEKEY_it = { | - |
772 | .itype = 0x1, | - |
773 | .utype = 16, | - |
774 | .templates = EC_PRIVATEKEY_seq_tt, | - |
775 | .tcount = sizeof(EC_PRIVATEKEY_seq_tt) / sizeof(ASN1_TEMPLATE), | - |
776 | .funcs = | - |
777 | ((void *)0) | - |
778 | , | - |
779 | .size = sizeof(EC_PRIVATEKEY), | - |
780 | .sname = "EC_PRIVATEKEY", | - |
781 | }; | - |
782 | | - |
783 | EC_PRIVATEKEY *EC_PRIVATEKEY_new(void); | - |
784 | void EC_PRIVATEKEY_free(EC_PRIVATEKEY *a); | - |
785 | EC_PRIVATEKEY *d2i_EC_PRIVATEKEY(EC_PRIVATEKEY **a, const unsigned char **in, long len); | - |
786 | int i2d_EC_PRIVATEKEY(const EC_PRIVATEKEY *a, unsigned char **out); | - |
787 | | - |
788 | EC_PRIVATEKEY * | - |
789 | d2i_EC_PRIVATEKEY(EC_PRIVATEKEY **a, const unsigned char **in, long len) | - |
790 | { | - |
791 | return never executed: return (EC_PRIVATEKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &EC_PRIVATEKEY_it); (EC_PRIVATEKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len,never executed: return (EC_PRIVATEKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &EC_PRIVATEKEY_it); | 0 |
792 | &EC_PRIVATEKEY_it); never executed: return (EC_PRIVATEKEY *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &EC_PRIVATEKEY_it); | 0 |
793 | } | - |
794 | | - |
795 | int | - |
796 | i2d_EC_PRIVATEKEY(const EC_PRIVATEKEY *a, unsigned char **out) | - |
797 | { | - |
798 | return never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &EC_PRIVATEKEY_it); ASN1_item_i2d((ASN1_VALUE *)a, out, &EC_PRIVATEKEY_it);never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, &EC_PRIVATEKEY_it); | 0 |
799 | } | - |
800 | | - |
801 | EC_PRIVATEKEY * | - |
802 | EC_PRIVATEKEY_new(void) | - |
803 | { | - |
804 | return never executed: return (EC_PRIVATEKEY *)ASN1_item_new(&EC_PRIVATEKEY_it); (EC_PRIVATEKEY *)ASN1_item_new(&EC_PRIVATEKEY_it);never executed: return (EC_PRIVATEKEY *)ASN1_item_new(&EC_PRIVATEKEY_it); | 0 |
805 | } | - |
806 | | - |
807 | void | - |
808 | EC_PRIVATEKEY_free(EC_PRIVATEKEY *a) | - |
809 | { | - |
810 | ASN1_item_free((ASN1_VALUE *)a, &EC_PRIVATEKEY_it); | - |
811 | } never executed: end of block | 0 |
812 | | - |
813 | | - |
814 | | - |
815 | | - |
816 | static int ec_asn1_group2fieldid(const EC_GROUP *, X9_62_FIELDID *); | - |
817 | | - |
818 | static int ec_asn1_group2curve(const EC_GROUP *, X9_62_CURVE *); | - |
819 | | - |
820 | | - |
821 | static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *); | - |
822 | | - |
823 | | - |
824 | static ECPARAMETERS *ec_asn1_group2parameters(const EC_GROUP *, ECPARAMETERS *); | - |
825 | | - |
826 | | - |
827 | static EC_GROUP *ec_asn1_pkparameters2group(const ECPKPARAMETERS *); | - |
828 | | - |
829 | | - |
830 | static ECPKPARAMETERS *ec_asn1_group2pkparameters(const EC_GROUP *, | - |
831 | ECPKPARAMETERS *); | - |
832 | | - |
833 | | - |
834 | | - |
835 | static int | - |
836 | ec_asn1_group2fieldid(const EC_GROUP * group, X9_62_FIELDID * field) | - |
837 | { | - |
838 | int ok = 0, nid; | - |
839 | BIGNUM *tmp = | - |
840 | ((void *)0) | - |
841 | ; | - |
842 | | - |
843 | if (group == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
844 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
845 | || field == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
846 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
847 | ) | - |
848 | return never executed: return 0; 0;never executed: return 0; | 0 |
849 | | - |
850 | | - |
851 | if (field->fieldType != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
852 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
853 | ) | - |
854 | ASN1_OBJECT_free(field->fieldType); never executed: ASN1_OBJECT_free(field->fieldType); | 0 |
855 | if (field->p.other != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
856 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
857 | ) | - |
858 | ASN1_TYPE_free(field->p.other); never executed: ASN1_TYPE_free(field->p.other); | 0 |
859 | | - |
860 | nid = EC_METHOD_get_field_type(EC_GROUP_method_of(group)); | - |
861 | | - |
862 | if ((TRUE | never evaluated | FALSE | never evaluated |
field->fieldType = OBJ_nid2obj(nid)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
863 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
864 | ) { | - |
865 | ERR_put_error(16,(0xfff),(8),__FILE__,703); | - |
866 | goto never executed: goto err; err;never executed: goto err; | 0 |
867 | } | - |
868 | if (nid == 406TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
869 | if ((TRUE | never evaluated | FALSE | never evaluated |
tmp = BN_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
870 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
871 | ) { | - |
872 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,708); | - |
873 | goto never executed: goto err; err;never executed: goto err; | 0 |
874 | } | - |
875 | | - |
876 | if (!EC_GROUP_get_curve_GFp(group, tmp, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
877 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
878 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
879 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
880 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
881 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
882 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
883 | ERR_put_error(16,(0xfff),(16),__FILE__,713); | - |
884 | goto never executed: goto err; err;never executed: goto err; | 0 |
885 | } | - |
886 | | - |
887 | field->p.prime = BN_to_ASN1_INTEGER(tmp, | - |
888 | ((void *)0) | - |
889 | ); | - |
890 | if (field->p.prime == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
891 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
892 | ) { | - |
893 | ERR_put_error(16,(0xfff),(13),__FILE__,719); | - |
894 | goto never executed: goto err; err;never executed: goto err; | 0 |
895 | } | - |
896 | } never executed: end of block else | 0 |
897 | | - |
898 | | - |
899 | | - |
900 | | - |
901 | | - |
902 | | - |
903 | { | - |
904 | int field_type; | - |
905 | X9_62_CHARACTERISTIC_TWO *char_two; | - |
906 | | - |
907 | field->p.char_two = X9_62_CHARACTERISTIC_TWO_new(); | - |
908 | char_two = field->p.char_two; | - |
909 | | - |
910 | if (char_two == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
911 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
912 | ) { | - |
913 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,737); | - |
914 | goto never executed: goto err; err;never executed: goto err; | 0 |
915 | } | - |
916 | char_two->m = (long) EC_GROUP_get_degree(group); | - |
917 | | - |
918 | field_type = EC_GROUP_get_basis_type(group); | - |
919 | | - |
920 | if (field_type == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
921 | ERR_put_error(16,(0xfff),(16),__FILE__,745); | - |
922 | goto never executed: goto err; err;never executed: goto err; | 0 |
923 | } | - |
924 | | - |
925 | if ((TRUE | never evaluated | FALSE | never evaluated |
char_two->type = OBJ_nid2obj(field_type)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
926 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
927 | ) { | - |
928 | ERR_put_error(16,(0xfff),(8),__FILE__,750); | - |
929 | goto never executed: goto err; err;never executed: goto err; | 0 |
930 | } | - |
931 | if (field_type == 682TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
932 | unsigned int k; | - |
933 | | - |
934 | if (!EC_GROUP_get_trinomial_basis(group, &k)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
935 | goto never executed: goto err; err;never executed: goto err; | 0 |
936 | | - |
937 | char_two->p.tpBasis = ASN1_INTEGER_new(); | - |
938 | if (!char_two->p.tpBasisTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
939 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,761); | - |
940 | goto never executed: goto err; err;never executed: goto err; | 0 |
941 | } | - |
942 | if (!ASN1_INTEGER_set(char_two->p.tpBasis, (long) k)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
943 | ERR_put_error(16,(0xfff),(13),__FILE__,765); | - |
944 | goto never executed: goto err; err;never executed: goto err; | 0 |
945 | } | - |
946 | } never executed: end of block else if (field_type == 683TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
947 | unsigned int k1, k2, k3; | - |
948 | | - |
949 | if (!EC_GROUP_get_pentanomial_basis(group, &k1, &k2, &k3)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
950 | goto never executed: goto err; err;never executed: goto err; | 0 |
951 | | - |
952 | char_two->p.ppBasis = X9_62_PENTANOMIAL_new(); | - |
953 | if (!char_two->p.ppBasisTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
954 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,776); | - |
955 | goto never executed: goto err; err;never executed: goto err; | 0 |
956 | } | - |
957 | | - |
958 | char_two->p.ppBasis->k1 = (long) k1; | - |
959 | char_two->p.ppBasis->k2 = (long) k2; | - |
960 | char_two->p.ppBasis->k3 = (long) k3; | - |
961 | } never executed: end of block else { | 0 |
962 | | - |
963 | char_two->p.onBasis = ASN1_NULL_new(); | - |
964 | if (!char_two->p.onBasisTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
965 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,787); | - |
966 | goto never executed: goto err; err;never executed: goto err; | 0 |
967 | } | - |
968 | } never executed: end of block | 0 |
969 | } | - |
970 | | - |
971 | | - |
972 | ok = 1; | - |
973 | | - |
974 | err: code before this statement never executed: err: | 0 |
975 | BN_free(tmp); | - |
976 | return never executed: return (ok); (ok);never executed: return (ok); | 0 |
977 | } | - |
978 | | - |
979 | static int | - |
980 | ec_asn1_group2curve(const EC_GROUP * group, X9_62_CURVE * curve) | - |
981 | { | - |
982 | int ok = 0, nid; | - |
983 | BIGNUM *tmp_1 = | - |
984 | ((void *)0) | - |
985 | , *tmp_2 = | - |
986 | ((void *)0) | - |
987 | ; | - |
988 | unsigned char *buffer_1 = | - |
989 | ((void *)0) | - |
990 | , *buffer_2 = | - |
991 | ((void *)0) | - |
992 | , *a_buf = | - |
993 | ((void *)0) | - |
994 | , | - |
995 | *b_buf = | - |
996 | ((void *)0) | - |
997 | ; | - |
998 | size_t len_1, len_2; | - |
999 | unsigned char char_zero = 0; | - |
1000 | | - |
1001 | if (!groupTRUE | never evaluated | FALSE | never evaluated |
|| !curveTRUE | never evaluated | FALSE | never evaluated |
|| !curve->aTRUE | never evaluated | FALSE | never evaluated |
|| !curve->bTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1002 | return never executed: return 0; 0;never executed: return 0; | 0 |
1003 | | - |
1004 | if ((TRUE | never evaluated | FALSE | never evaluated |
tmp_1 = BN_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1005 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1006 | || (TRUE | never evaluated | FALSE | never evaluated |
tmp_2 = BN_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1007 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1008 | ) { | - |
1009 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,815); | - |
1010 | goto never executed: goto err; err;never executed: goto err; | 0 |
1011 | } | - |
1012 | nid = EC_METHOD_get_field_type(EC_GROUP_method_of(group)); | - |
1013 | | - |
1014 | | - |
1015 | if (nid == 406TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1016 | if (!EC_GROUP_get_curve_GFp(group, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1017 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1018 | , tmp_1, tmp_2, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1019 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1020 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1021 | ERR_put_error(16,(0xfff),(16),__FILE__,823); | - |
1022 | goto never executed: goto err; err;never executed: goto err; | 0 |
1023 | } | - |
1024 | } never executed: end of block | 0 |
1025 | | - |
1026 | else { | - |
1027 | if (!EC_GROUP_get_curve_GF2m(group, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1028 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1029 | , tmp_1, tmp_2, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1030 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1031 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1032 | ERR_put_error(16,(0xfff),(16),__FILE__,830); | - |
1033 | goto never executed: goto err; err;never executed: goto err; | 0 |
1034 | } | - |
1035 | } never executed: end of block | 0 |
1036 | | - |
1037 | len_1 = (size_t) ((BN_num_bits(tmp_1)+7)/8); | - |
1038 | len_2 = (size_t) ((BN_num_bits(tmp_2)+7)/8); | - |
1039 | | - |
1040 | if (len_1 == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1041 | | - |
1042 | a_buf = &char_zero; | - |
1043 | len_1 = 1; | - |
1044 | } never executed: end of block else { | 0 |
1045 | if ((TRUE | never evaluated | FALSE | never evaluated |
buffer_1 = malloc(len_1)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1046 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1047 | ) { | - |
1048 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,844); | - |
1049 | goto never executed: goto err; err;never executed: goto err; | 0 |
1050 | } | - |
1051 | if ((TRUE | never evaluated | FALSE | never evaluated |
len_1 = BN_bn2bin(tmp_1, buffer_1)) == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1052 | ERR_put_error(16,(0xfff),(3),__FILE__,848); | - |
1053 | goto never executed: goto err; err;never executed: goto err; | 0 |
1054 | } | - |
1055 | a_buf = buffer_1; | - |
1056 | } never executed: end of block | 0 |
1057 | | - |
1058 | if (len_2 == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1059 | | - |
1060 | b_buf = &char_zero; | - |
1061 | len_2 = 1; | - |
1062 | } never executed: end of block else { | 0 |
1063 | if ((TRUE | never evaluated | FALSE | never evaluated |
buffer_2 = malloc(len_2)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1064 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1065 | ) { | - |
1066 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,860); | - |
1067 | goto never executed: goto err; err;never executed: goto err; | 0 |
1068 | } | - |
1069 | if ((TRUE | never evaluated | FALSE | never evaluated |
len_2 = BN_bn2bin(tmp_2, buffer_2)) == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1070 | ERR_put_error(16,(0xfff),(3),__FILE__,864); | - |
1071 | goto never executed: goto err; err;never executed: goto err; | 0 |
1072 | } | - |
1073 | b_buf = buffer_2; | - |
1074 | } never executed: end of block | 0 |
1075 | | - |
1076 | | - |
1077 | if (!ASN1_STRING_set(curve->a, a_buf, len_1)TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1078 | !ASN1_STRING_set(curve->b, b_buf, len_2)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1079 | ERR_put_error(16,(0xfff),(13),__FILE__,873); | - |
1080 | goto never executed: goto err; err;never executed: goto err; | 0 |
1081 | } | - |
1082 | | - |
1083 | if (group->seedTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1084 | if (!curve->seedTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1085 | if ((TRUE | never evaluated | FALSE | never evaluated |
curve->seed = ASN1_BIT_STRING_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1086 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1087 | ) { | - |
1088 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,880); | - |
1089 | goto never executed: goto err; err;never executed: goto err; | 0 |
1090 | } | - |
1091 | curve->seed->flags &= ~(0x08 | 0x07); | - |
1092 | curve->seed->flags |= 0x08; | - |
1093 | if (!ASN1_BIT_STRING_set(curve->seed, group->seed,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1094 | (int) group->seed_len)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1095 | ERR_put_error(16,(0xfff),(13),__FILE__,887); | - |
1096 | goto never executed: goto err; err;never executed: goto err; | 0 |
1097 | } | - |
1098 | } never executed: end of block else { | 0 |
1099 | if (curve->seedTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1100 | ASN1_BIT_STRING_free(curve->seed); | - |
1101 | curve->seed = | - |
1102 | ((void *)0) | - |
1103 | ; | - |
1104 | } never executed: end of block | 0 |
1105 | } never executed: end of block | 0 |
1106 | | - |
1107 | ok = 1; | - |
1108 | | - |
1109 | err: code before this statement never executed: err: | 0 |
1110 | free(buffer_1); | - |
1111 | free(buffer_2); | - |
1112 | BN_free(tmp_1); | - |
1113 | BN_free(tmp_2); | - |
1114 | return never executed: return (ok); (ok);never executed: return (ok); | 0 |
1115 | } | - |
1116 | | - |
1117 | static ECPARAMETERS * | - |
1118 | ec_asn1_group2parameters(const EC_GROUP * group, ECPARAMETERS * param) | - |
1119 | { | - |
1120 | int ok = 0; | - |
1121 | size_t len = 0; | - |
1122 | ECPARAMETERS *ret = | - |
1123 | ((void *)0) | - |
1124 | ; | - |
1125 | BIGNUM *tmp = | - |
1126 | ((void *)0) | - |
1127 | ; | - |
1128 | unsigned char *buffer = | - |
1129 | ((void *)0) | - |
1130 | ; | - |
1131 | const EC_POINT *point = | - |
1132 | ((void *)0) | - |
1133 | ; | - |
1134 | point_conversion_form_t form; | - |
1135 | | - |
1136 | if ((TRUE | never evaluated | FALSE | never evaluated |
tmp = BN_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1137 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1138 | ) { | - |
1139 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,919); | - |
1140 | goto never executed: goto err; err;never executed: goto err; | 0 |
1141 | } | - |
1142 | if (param == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1143 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1144 | ) { | - |
1145 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret = ECPARAMETERS_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1146 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1147 | ) { | - |
1148 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,924); | - |
1149 | goto never executed: goto err; err;never executed: goto err; | 0 |
1150 | } | - |
1151 | } never executed: end of block else | 0 |
1152 | ret = param; never executed: ret = param; | 0 |
1153 | | - |
1154 | | - |
1155 | ret->version = (long) 0x1; | - |
1156 | | - |
1157 | | - |
1158 | if (!ec_asn1_group2fieldid(group, ret->fieldID)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1159 | ERR_put_error(16,(0xfff),(16),__FILE__,935); | - |
1160 | goto never executed: goto err; err;never executed: goto err; | 0 |
1161 | } | - |
1162 | | - |
1163 | if (!ec_asn1_group2curve(group, ret->curve)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1164 | ERR_put_error(16,(0xfff),(16),__FILE__,940); | - |
1165 | goto never executed: goto err; err;never executed: goto err; | 0 |
1166 | } | - |
1167 | | - |
1168 | if ((TRUE | never evaluated | FALSE | never evaluated |
point = EC_GROUP_get0_generator(group)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1169 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1170 | ) { | - |
1171 | ERR_put_error(16,(0xfff),(113),__FILE__,945); | - |
1172 | goto never executed: goto err; err;never executed: goto err; | 0 |
1173 | } | - |
1174 | form = EC_GROUP_get_point_conversion_form(group); | - |
1175 | | - |
1176 | len = EC_POINT_point2oct(group, point, form, | - |
1177 | ((void *)0) | - |
1178 | , len, | - |
1179 | ((void *)0) | - |
1180 | ); | - |
1181 | if (len == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1182 | ERR_put_error(16,(0xfff),(16),__FILE__,952); | - |
1183 | goto never executed: goto err; err;never executed: goto err; | 0 |
1184 | } | - |
1185 | if ((TRUE | never evaluated | FALSE | never evaluated |
buffer = malloc(len)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1186 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1187 | ) { | - |
1188 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,956); | - |
1189 | goto never executed: goto err; err;never executed: goto err; | 0 |
1190 | } | - |
1191 | if (!EC_POINT_point2oct(group, point, form, buffer, len, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1192 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1193 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1194 | ERR_put_error(16,(0xfff),(16),__FILE__,960); | - |
1195 | goto never executed: goto err; err;never executed: goto err; | 0 |
1196 | } | - |
1197 | if (ret->base == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1198 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1199 | && (TRUE | never evaluated | FALSE | never evaluated |
ret->base = ASN1_OCTET_STRING_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1200 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1201 | ) { | - |
1202 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,964); | - |
1203 | goto never executed: goto err; err;never executed: goto err; | 0 |
1204 | } | - |
1205 | if (!ASN1_OCTET_STRING_set(ret->base, buffer, len)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1206 | ERR_put_error(16,(0xfff),(13),__FILE__,968); | - |
1207 | goto never executed: goto err; err;never executed: goto err; | 0 |
1208 | } | - |
1209 | | - |
1210 | if (!EC_GROUP_get_order(group, tmp, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1211 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1212 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1213 | ERR_put_error(16,(0xfff),(16),__FILE__,973); | - |
1214 | goto never executed: goto err; err;never executed: goto err; | 0 |
1215 | } | - |
1216 | ret->order = BN_to_ASN1_INTEGER(tmp, ret->order); | - |
1217 | if (ret->order == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1218 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1219 | ) { | - |
1220 | ERR_put_error(16,(0xfff),(13),__FILE__,978); | - |
1221 | goto never executed: goto err; err;never executed: goto err; | 0 |
1222 | } | - |
1223 | | - |
1224 | if (EC_GROUP_get_cofactor(group, tmp, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1225 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1226 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1227 | ret->cofactor = BN_to_ASN1_INTEGER(tmp, ret->cofactor); | - |
1228 | if (ret->cofactor == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1229 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1230 | ) { | - |
1231 | ERR_put_error(16,(0xfff),(13),__FILE__,985); | - |
1232 | goto never executed: goto err; err;never executed: goto err; | 0 |
1233 | } | - |
1234 | } never executed: end of block | 0 |
1235 | ok = 1; | - |
1236 | | - |
1237 | err: code before this statement never executed: err: | 0 |
1238 | if (!okTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1239 | if (retTRUE | never evaluated | FALSE | never evaluated |
&& !paramTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1240 | ECPARAMETERS_free(ret); never executed: ECPARAMETERS_free(ret); | 0 |
1241 | ret = | - |
1242 | ((void *)0) | - |
1243 | ; | - |
1244 | } never executed: end of block | 0 |
1245 | BN_free(tmp); | - |
1246 | free(buffer); | - |
1247 | return never executed: return (ret); (ret);never executed: return (ret); | 0 |
1248 | } | - |
1249 | | - |
1250 | ECPKPARAMETERS * | - |
1251 | ec_asn1_group2pkparameters(const EC_GROUP * group, ECPKPARAMETERS * params) | - |
1252 | { | - |
1253 | int ok = 1, tmp; | - |
1254 | ECPKPARAMETERS *ret = params; | - |
1255 | | - |
1256 | if (ret == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1257 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1258 | ) { | - |
1259 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret = ECPKPARAMETERS_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1260 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1261 | ) { | - |
1262 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1010); | - |
1263 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1264 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1265 | ; never executed: return ((void *)0) ; | 0 |
1266 | } | - |
1267 | } never executed: end of block else { | 0 |
1268 | if (ret->type == 0TRUE | never evaluated | FALSE | never evaluated |
&& ret->value.named_curveTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1269 | ASN1_OBJECT_free(ret->value.named_curve); never executed: ASN1_OBJECT_free(ret->value.named_curve); | 0 |
1270 | else if (ret->type == 1TRUE | never evaluated | FALSE | never evaluated |
&& ret->value.parametersTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1271 | ECPARAMETERS_free(ret->value.parameters); never executed: ECPARAMETERS_free(ret->value.parameters); | 0 |
1272 | } never executed: end of block | 0 |
1273 | | - |
1274 | if (EC_GROUP_get_asn1_flag(group)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1275 | | - |
1276 | | - |
1277 | | - |
1278 | | - |
1279 | tmp = EC_GROUP_get_curve_name(group); | - |
1280 | if (tmpTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1281 | ret->type = 0; | - |
1282 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret->value.named_curve = OBJ_nid2obj(tmp)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1283 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1284 | ) | - |
1285 | ok = 0; never executed: ok = 0; | 0 |
1286 | } never executed: end of block else | 0 |
1287 | | - |
1288 | ok = 0; never executed: ok = 0; | 0 |
1289 | } else { | - |
1290 | | - |
1291 | ret->type = 1; | - |
1292 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret->value.parameters = ec_asn1_group2parameters(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1293 | group, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1294 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1295 | )) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1296 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1297 | ) | - |
1298 | ok = 0; never executed: ok = 0; | 0 |
1299 | } never executed: end of block | 0 |
1300 | | - |
1301 | if (!okTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1302 | ECPKPARAMETERS_free(ret); | - |
1303 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1304 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1305 | ; never executed: return ((void *)0) ; | 0 |
1306 | } | - |
1307 | return never executed: return ret; ret;never executed: return ret; | 0 |
1308 | } | - |
1309 | | - |
1310 | static EC_GROUP * | - |
1311 | ec_asn1_parameters2group(const ECPARAMETERS * params) | - |
1312 | { | - |
1313 | int ok = 0, tmp; | - |
1314 | EC_GROUP *ret = | - |
1315 | ((void *)0) | - |
1316 | ; | - |
1317 | BIGNUM *p = | - |
1318 | ((void *)0) | - |
1319 | , *a = | - |
1320 | ((void *)0) | - |
1321 | , *b = | - |
1322 | ((void *)0) | - |
1323 | ; | - |
1324 | EC_POINT *point = | - |
1325 | ((void *)0) | - |
1326 | ; | - |
1327 | long field_bits; | - |
1328 | | - |
1329 | if (!params->fieldIDTRUE | never evaluated | FALSE | never evaluated |
|| !params->fieldID->fieldTypeTRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1330 | !params->fieldID->p.ptrTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1331 | ERR_put_error(16,(0xfff),(115),__FILE__,1059); | - |
1332 | goto never executed: goto err; err;never executed: goto err; | 0 |
1333 | } | - |
1334 | | - |
1335 | if (!params->curveTRUE | never evaluated | FALSE | never evaluated |
|| !params->curve->aTRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1336 | !params->curve->a->dataTRUE | never evaluated | FALSE | never evaluated |
|| !params->curve->bTRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1337 | !params->curve->b->dataTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1338 | ERR_put_error(16,(0xfff),(115),__FILE__,1066); | - |
1339 | goto never executed: goto err; err;never executed: goto err; | 0 |
1340 | } | - |
1341 | a = BN_bin2bn(params->curve->a->data, params->curve->a->length, | - |
1342 | ((void *)0) | - |
1343 | ); | - |
1344 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1345 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1346 | ) { | - |
1347 | ERR_put_error(16,(0xfff),(3),__FILE__,1071); | - |
1348 | goto never executed: goto err; err;never executed: goto err; | 0 |
1349 | } | - |
1350 | b = BN_bin2bn(params->curve->b->data, params->curve->b->length, | - |
1351 | ((void *)0) | - |
1352 | ); | - |
1353 | if (b == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1354 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1355 | ) { | - |
1356 | ERR_put_error(16,(0xfff),(3),__FILE__,1076); | - |
1357 | goto never executed: goto err; err;never executed: goto err; | 0 |
1358 | } | - |
1359 | | - |
1360 | tmp = OBJ_obj2nid(params->fieldID->fieldType); | - |
1361 | if (tmp == 407TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1362 | | - |
1363 | | - |
1364 | | - |
1365 | | - |
1366 | | - |
1367 | | - |
1368 | { | - |
1369 | X9_62_CHARACTERISTIC_TWO *char_two; | - |
1370 | | - |
1371 | char_two = params->fieldID->p.char_two; | - |
1372 | | - |
1373 | field_bits = char_two->m; | - |
1374 | if (field_bits > 661TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1375 | ERR_put_error(16,(0xfff),(143),__FILE__,1095); | - |
1376 | goto never executed: goto err; err;never executed: goto err; | 0 |
1377 | } | - |
1378 | if ((TRUE | never evaluated | FALSE | never evaluated |
p = BN_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1379 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1380 | ) { | - |
1381 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1099); | - |
1382 | goto never executed: goto err; err;never executed: goto err; | 0 |
1383 | } | - |
1384 | | - |
1385 | tmp = OBJ_obj2nid(char_two->type); | - |
1386 | | - |
1387 | if (tmp == 682TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1388 | long tmp_long; | - |
1389 | | - |
1390 | if (!char_two->p.tpBasisTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1391 | ERR_put_error(16,(0xfff),(115),__FILE__,1109); | - |
1392 | goto never executed: goto err; err;never executed: goto err; | 0 |
1393 | } | - |
1394 | tmp_long = ASN1_INTEGER_get(char_two->p.tpBasis); | - |
1395 | | - |
1396 | if (!(char_two->m > tmp_longTRUE | never evaluated | FALSE | never evaluated |
&& tmp_long > 0TRUE | never evaluated | FALSE | never evaluated |
)) { | 0 |
1397 | ERR_put_error(16,(0xfff),(137),__FILE__,1115); | - |
1398 | goto never executed: goto err; err;never executed: goto err; | 0 |
1399 | } | - |
1400 | | - |
1401 | if (!BN_set_bit(p, (int) char_two->m)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1402 | goto never executed: goto err; err;never executed: goto err; | 0 |
1403 | if (!BN_set_bit(p, (int) tmp_long)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1404 | goto never executed: goto err; err;never executed: goto err; | 0 |
1405 | if (!BN_set_bit(p, 0)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1406 | goto never executed: goto err; err;never executed: goto err; | 0 |
1407 | } never executed: end of block else if (tmp == 683TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1408 | X9_62_PENTANOMIAL *penta; | - |
1409 | | - |
1410 | penta = char_two->p.ppBasis; | - |
1411 | if (!pentaTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1412 | ERR_put_error(16,(0xfff),(115),__FILE__,1130); | - |
1413 | goto never executed: goto err; err;never executed: goto err; | 0 |
1414 | } | - |
1415 | if (!(char_two->m > penta->k3TRUE | never evaluated | FALSE | never evaluated |
&& penta->k3 > penta->k2TRUE | never evaluated | FALSE | never evaluated |
&& penta->k2 > penta->k1TRUE | never evaluated | FALSE | never evaluated |
&& penta->k1 > 0TRUE | never evaluated | FALSE | never evaluated |
)) { | 0 |
1416 | ERR_put_error(16,(0xfff),(132),__FILE__,1134); | - |
1417 | goto never executed: goto err; err;never executed: goto err; | 0 |
1418 | } | - |
1419 | | - |
1420 | if (!BN_set_bit(p, (int) char_two->m)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1421 | goto never executed: goto err; err;never executed: goto err; | 0 |
1422 | if (!BN_set_bit(p, (int) penta->k1)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1423 | goto never executed: goto err; err;never executed: goto err; | 0 |
1424 | if (!BN_set_bit(p, (int) penta->k2)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1425 | goto never executed: goto err; err;never executed: goto err; | 0 |
1426 | if (!BN_set_bit(p, (int) penta->k3)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1427 | goto never executed: goto err; err;never executed: goto err; | 0 |
1428 | if (!BN_set_bit(p, 0)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1429 | goto never executed: goto err; err;never executed: goto err; | 0 |
1430 | } never executed: end of block else if (tmp == 681TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1431 | ERR_put_error(16,(0xfff),(126),__FILE__,1149); | - |
1432 | goto never executed: goto err; err;never executed: goto err; | 0 |
1433 | } else { | - |
1434 | ERR_put_error(16,(0xfff),(115),__FILE__,1152); | - |
1435 | goto never executed: goto err; err;never executed: goto err; | 0 |
1436 | } | - |
1437 | | - |
1438 | | - |
1439 | ret = EC_GROUP_new_curve_GF2m(p, a, b, | - |
1440 | ((void *)0) | - |
1441 | ); | - |
1442 | } never executed: end of block | 0 |
1443 | | - |
1444 | else if (tmp == 406TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1445 | | - |
1446 | | - |
1447 | if (!params->fieldID->p.primeTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1448 | ERR_put_error(16,(0xfff),(115),__FILE__,1164); | - |
1449 | goto never executed: goto err; err;never executed: goto err; | 0 |
1450 | } | - |
1451 | p = ASN1_INTEGER_to_BN(params->fieldID->p.prime, | - |
1452 | ((void *)0) | - |
1453 | ); | - |
1454 | if (p == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1455 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1456 | ) { | - |
1457 | ERR_put_error(16,(0xfff),(13),__FILE__,1169); | - |
1458 | goto never executed: goto err; err;never executed: goto err; | 0 |
1459 | } | - |
1460 | if (((TRUE | never evaluated | FALSE | never evaluated |
p)->neg != 0)TRUE | never evaluated | FALSE | never evaluated |
|| ((TRUE | never evaluated | FALSE | never evaluated |
p)->top == 0)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1461 | ERR_put_error(16,(0xfff),(103),__FILE__,1173); | - |
1462 | goto never executed: goto err; err;never executed: goto err; | 0 |
1463 | } | - |
1464 | field_bits = BN_num_bits(p); | - |
1465 | if (field_bits > 661TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1466 | ERR_put_error(16,(0xfff),(143),__FILE__,1178); | - |
1467 | goto never executed: goto err; err;never executed: goto err; | 0 |
1468 | } | - |
1469 | | - |
1470 | ret = EC_GROUP_new_curve_GFp(p, a, b, | - |
1471 | ((void *)0) | - |
1472 | ); | - |
1473 | } never executed: end of block else { | 0 |
1474 | ERR_put_error(16,(0xfff),(103),__FILE__,1184); | - |
1475 | goto never executed: goto err; err;never executed: goto err; | 0 |
1476 | } | - |
1477 | | - |
1478 | if (ret == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1479 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1480 | ) { | - |
1481 | ERR_put_error(16,(0xfff),(16),__FILE__,1189); | - |
1482 | goto never executed: goto err; err;never executed: goto err; | 0 |
1483 | } | - |
1484 | | - |
1485 | if (params->curve->seed != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1486 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1487 | ) { | - |
1488 | free(ret->seed); | - |
1489 | if (!(ret->seed = malloc(params->curve->seed->length))TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1490 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1196); | - |
1491 | goto never executed: goto err; err;never executed: goto err; | 0 |
1492 | } | - |
1493 | memcpy(ret->seed, params->curve->seed->data, | - |
1494 | params->curve->seed->length); | - |
1495 | ret->seed_len = params->curve->seed->length; | - |
1496 | } never executed: end of block | 0 |
1497 | if (!params->orderTRUE | never evaluated | FALSE | never evaluated |
|| !params->baseTRUE | never evaluated | FALSE | never evaluated |
|| !params->base->dataTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1498 | ERR_put_error(16,(0xfff),(115),__FILE__,1204); | - |
1499 | goto never executed: goto err; err;never executed: goto err; | 0 |
1500 | } | - |
1501 | if ((TRUE | never evaluated | FALSE | never evaluated |
point = EC_POINT_new(ret)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1502 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1503 | ) | - |
1504 | goto never executed: goto err; err;never executed: goto err; | 0 |
1505 | | - |
1506 | | - |
1507 | EC_GROUP_set_point_conversion_form(ret, (point_conversion_form_t) | - |
1508 | (params->base->data[0] & ~0x01)); | - |
1509 | | - |
1510 | | - |
1511 | if (!EC_POINT_oct2point(ret, point, params->base->data,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1512 | params->base->length, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1513 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1514 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1515 | ERR_put_error(16,(0xfff),(16),__FILE__,1217); | - |
1516 | goto never executed: goto err; err;never executed: goto err; | 0 |
1517 | } | - |
1518 | | - |
1519 | if ((TRUE | never evaluated | FALSE | never evaluated |
a = ASN1_INTEGER_to_BN(params->order, a)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1520 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1521 | ) { | - |
1522 | ERR_put_error(16,(0xfff),(13),__FILE__,1222); | - |
1523 | goto never executed: goto err; err;never executed: goto err; | 0 |
1524 | } | - |
1525 | if (((TRUE | never evaluated | FALSE | never evaluated |
a)->neg != 0)TRUE | never evaluated | FALSE | never evaluated |
|| ((TRUE | never evaluated | FALSE | never evaluated |
a)->top == 0)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1526 | ERR_put_error(16,(0xfff),(122),__FILE__,1226); | - |
1527 | goto never executed: goto err; err;never executed: goto err; | 0 |
1528 | } | - |
1529 | if (BN_num_bits(a) > (int) field_bits + 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1530 | ERR_put_error(16,(0xfff),(122),__FILE__,1230); | - |
1531 | goto never executed: goto err; err;never executed: goto err; | 0 |
1532 | } | - |
1533 | | - |
1534 | if (params->cofactor == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1535 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1536 | ) { | - |
1537 | BN_free(b); | - |
1538 | b = | - |
1539 | ((void *)0) | - |
1540 | ; | - |
1541 | } never executed: end of block else if ((TRUE | never evaluated | FALSE | never evaluated |
b = ASN1_INTEGER_to_BN(params->cofactor, b)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1542 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1543 | ) { | - |
1544 | ERR_put_error(16,(0xfff),(13),__FILE__,1238); | - |
1545 | goto never executed: goto err; err;never executed: goto err; | 0 |
1546 | } | - |
1547 | | - |
1548 | if (!EC_GROUP_set_generator(ret, point, a, b)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1549 | ERR_put_error(16,(0xfff),(16),__FILE__,1243); | - |
1550 | goto never executed: goto err; err;never executed: goto err; | 0 |
1551 | } | - |
1552 | ok = 1; | - |
1553 | | - |
1554 | err: code before this statement never executed: err: | 0 |
1555 | if (!okTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1556 | EC_GROUP_clear_free(ret); | - |
1557 | ret = | - |
1558 | ((void *)0) | - |
1559 | ; | - |
1560 | } never executed: end of block | 0 |
1561 | BN_free(p); | - |
1562 | BN_free(a); | - |
1563 | BN_free(b); | - |
1564 | EC_POINT_free(point); | - |
1565 | return never executed: return (ret); (ret);never executed: return (ret); | 0 |
1566 | } | - |
1567 | | - |
1568 | EC_GROUP * | - |
1569 | ec_asn1_pkparameters2group(const ECPKPARAMETERS * params) | - |
1570 | { | - |
1571 | EC_GROUP *ret = | - |
1572 | ((void *)0) | - |
1573 | ; | - |
1574 | int tmp = 0; | - |
1575 | | - |
1576 | if (params == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1577 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1578 | ) { | - |
1579 | ERR_put_error(16,(0xfff),(124),__FILE__,1267); | - |
1580 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1581 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1582 | ; never executed: return ((void *)0) ; | 0 |
1583 | } | - |
1584 | if (params->type == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1585 | tmp = OBJ_obj2nid(params->value.named_curve); | - |
1586 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret = EC_GROUP_new_by_curve_name(tmp)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1587 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1588 | ) { | - |
1589 | ERR_put_error(16,(0xfff),(119),__FILE__,1273); | - |
1590 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1591 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1592 | ; never executed: return ((void *)0) ; | 0 |
1593 | } | - |
1594 | EC_GROUP_set_asn1_flag(ret, 0x001); | - |
1595 | } never executed: end of block else if (params->type == 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1596 | | - |
1597 | ret = ec_asn1_parameters2group(params->value.parameters); | - |
1598 | if (!retTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1599 | ERR_put_error(16,(0xfff),(16),__FILE__,1281); | - |
1600 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1601 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1602 | ; never executed: return ((void *)0) ; | 0 |
1603 | } | - |
1604 | EC_GROUP_set_asn1_flag(ret, 0x0); | - |
1605 | } never executed: end of block else if (params->type == 2TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1606 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1607 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1608 | ; never executed: return ((void *)0) ; | 0 |
1609 | } else { | - |
1610 | ERR_put_error(16,(0xfff),(115),__FILE__,1288); | - |
1611 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1612 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1613 | ; never executed: return ((void *)0) ; | 0 |
1614 | } | - |
1615 | | - |
1616 | return never executed: return ret; ret;never executed: return ret; | 0 |
1617 | } | - |
1618 | | - |
1619 | | - |
1620 | | - |
1621 | EC_GROUP * | - |
1622 | d2i_ECPKParameters(EC_GROUP ** a, const unsigned char **in, long len) | - |
1623 | { | - |
1624 | EC_GROUP *group = | - |
1625 | ((void *)0) | - |
1626 | ; | - |
1627 | ECPKPARAMETERS *params = | - |
1628 | ((void *)0) | - |
1629 | ; | - |
1630 | | - |
1631 | if ((TRUE | never evaluated | FALSE | never evaluated |
params = d2i_ECPKPARAMETERS(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1632 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1633 | , in, len)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1634 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1635 | ) { | - |
1636 | ERR_put_error(16,(0xfff),(117),__FILE__,1304); | - |
1637 | goto never executed: goto err; err;never executed: goto err; | 0 |
1638 | } | - |
1639 | if ((TRUE | never evaluated | FALSE | never evaluated |
group = ec_asn1_pkparameters2group(params)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1640 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1641 | ) { | - |
1642 | ERR_put_error(16,(0xfff),(127),__FILE__,1308); | - |
1643 | goto never executed: goto err; err;never executed: goto err; | 0 |
1644 | } | - |
1645 | | - |
1646 | if (a != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1647 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1648 | ) { | - |
1649 | EC_GROUP_clear_free(*a); | - |
1650 | *a = group; | - |
1651 | } never executed: end of block | 0 |
1652 | | - |
1653 | err: code before this statement never executed: err: | 0 |
1654 | ECPKPARAMETERS_free(params); | - |
1655 | return never executed: return (group); (group);never executed: return (group); | 0 |
1656 | } | - |
1657 | | - |
1658 | int | - |
1659 | i2d_ECPKParameters(const EC_GROUP * a, unsigned char **out) | - |
1660 | { | - |
1661 | int ret = 0; | - |
1662 | ECPKPARAMETERS *tmp = ec_asn1_group2pkparameters(a, | - |
1663 | ((void *)0) | - |
1664 | ); | - |
1665 | if (tmp == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1666 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1667 | ) { | - |
1668 | ERR_put_error(16,(0xfff),(120),__FILE__,1328); | - |
1669 | return never executed: return 0; 0;never executed: return 0; | 0 |
1670 | } | - |
1671 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret = i2d_ECPKPARAMETERS(tmp, out)) == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1672 | ERR_put_error(16,(0xfff),(121),__FILE__,1332); | - |
1673 | ECPKPARAMETERS_free(tmp); | - |
1674 | return never executed: return 0; 0;never executed: return 0; | 0 |
1675 | } | - |
1676 | ECPKPARAMETERS_free(tmp); | - |
1677 | return never executed: return (ret); (ret);never executed: return (ret); | 0 |
1678 | } | - |
1679 | | - |
1680 | | - |
1681 | | - |
1682 | EC_KEY * | - |
1683 | d2i_ECPrivateKey(EC_KEY ** a, const unsigned char **in, long len) | - |
1684 | { | - |
1685 | EC_KEY *ret = | - |
1686 | ((void *)0) | - |
1687 | ; | - |
1688 | EC_PRIVATEKEY *priv_key = | - |
1689 | ((void *)0) | - |
1690 | ; | - |
1691 | | - |
1692 | if ((TRUE | never evaluated | FALSE | never evaluated |
priv_key = EC_PRIVATEKEY_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1693 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1694 | ) { | - |
1695 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1349); | - |
1696 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1697 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1698 | ; never executed: return ((void *)0) ; | 0 |
1699 | } | - |
1700 | if ((TRUE | never evaluated | FALSE | never evaluated |
priv_key = d2i_EC_PRIVATEKEY(&priv_key, in, len)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1701 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1702 | ) { | - |
1703 | ERR_put_error(16,(0xfff),(16),__FILE__,1353); | - |
1704 | EC_PRIVATEKEY_free(priv_key); | - |
1705 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1706 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1707 | ; never executed: return ((void *)0) ; | 0 |
1708 | } | - |
1709 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1710 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1711 | || *TRUE | never evaluated | FALSE | never evaluated |
a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1712 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1713 | ) { | - |
1714 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret = EC_KEY_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1715 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1716 | ) { | - |
1717 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1359); | - |
1718 | goto never executed: goto err; err;never executed: goto err; | 0 |
1719 | } | - |
1720 | } never executed: end of block else | 0 |
1721 | ret = *a; never executed: ret = *a; | 0 |
1722 | | - |
1723 | if (priv_key->parametersTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1724 | EC_GROUP_clear_free(ret->group); | - |
1725 | ret->group = ec_asn1_pkparameters2group(priv_key->parameters); | - |
1726 | } never executed: end of block | 0 |
1727 | if (ret->group == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1728 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1729 | ) { | - |
1730 | ERR_put_error(16,(0xfff),(16),__FILE__,1370); | - |
1731 | goto never executed: goto err; err;never executed: goto err; | 0 |
1732 | } | - |
1733 | ret->version = priv_key->version; | - |
1734 | | - |
1735 | if (priv_key->privateKeyTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1736 | ret->priv_key = BN_bin2bn( | - |
1737 | ASN1_STRING_data(priv_key->privateKey), | - |
1738 | ASN1_STRING_length(priv_key->privateKey), | - |
1739 | ret->priv_key); | - |
1740 | if (ret->priv_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1741 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1742 | ) { | - |
1743 | ERR_put_error(16,(0xfff),(3),__FILE__,1381); | - |
1744 | goto never executed: goto err; err;never executed: goto err; | 0 |
1745 | } | - |
1746 | } never executed: end of block else { | 0 |
1747 | ERR_put_error(16,(0xfff),(125),__FILE__,1385); | - |
1748 | goto never executed: goto err; err;never executed: goto err; | 0 |
1749 | } | - |
1750 | | - |
1751 | if (ret->pub_keyTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1752 | EC_POINT_clear_free(ret->pub_key); never executed: EC_POINT_clear_free(ret->pub_key); | 0 |
1753 | ret->pub_key = EC_POINT_new(ret->group); | - |
1754 | if (ret->pub_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1755 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1756 | ) { | - |
1757 | ERR_put_error(16,(0xfff),(16),__FILE__,1393); | - |
1758 | goto never executed: goto err; err;never executed: goto err; | 0 |
1759 | } | - |
1760 | | - |
1761 | if (priv_key->publicKeyTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1762 | const unsigned char *pub_oct; | - |
1763 | size_t pub_oct_len; | - |
1764 | | - |
1765 | pub_oct = ASN1_STRING_data(priv_key->publicKey); | - |
1766 | pub_oct_len = ASN1_STRING_length(priv_key->publicKey); | - |
1767 | if (pub_oct == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1768 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1769 | || pub_oct_len <= 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1770 | ERR_put_error(16,(0xfff),(100),__FILE__,1404); | - |
1771 | goto never executed: goto err; err;never executed: goto err; | 0 |
1772 | } | - |
1773 | | - |
1774 | | - |
1775 | ret->conv_form = (point_conversion_form_t) (pub_oct[0] & ~0x01); | - |
1776 | if (!EC_POINT_oct2point(ret->group, ret->pub_key,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1777 | pub_oct, pub_oct_len, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1778 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1779 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1780 | ERR_put_error(16,(0xfff),(16),__FILE__,1412); | - |
1781 | goto never executed: goto err; err;never executed: goto err; | 0 |
1782 | } | - |
1783 | } never executed: end of block else { | 0 |
1784 | if (!EC_POINT_mul(ret->group, ret->pub_key, ret->priv_key,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1785 | TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1786 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1787 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1788 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1789 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1790 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1791 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1792 | ERR_put_error(16,(0xfff),(16),__FILE__,1418); | - |
1793 | goto never executed: goto err; err;never executed: goto err; | 0 |
1794 | } | - |
1795 | | - |
1796 | ret->enc_flag |= 0x002; | - |
1797 | } never executed: end of block | 0 |
1798 | | - |
1799 | EC_PRIVATEKEY_free(priv_key); | - |
1800 | if (a != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1801 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1802 | ) | - |
1803 | * never executed: *a = ret; a = ret;never executed: *a = ret; | 0 |
1804 | return never executed: return (ret); (ret);never executed: return (ret); | 0 |
1805 | | - |
1806 | err: | - |
1807 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1808 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1809 | || *TRUE | never evaluated | FALSE | never evaluated |
a != retTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1810 | EC_KEY_free(ret); never executed: EC_KEY_free(ret); | 0 |
1811 | if (priv_keyTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1812 | EC_PRIVATEKEY_free(priv_key); never executed: EC_PRIVATEKEY_free(priv_key); | 0 |
1813 | | - |
1814 | return never executed: return ( ((void *)0) ); (never executed: return ( ((void *)0) ); | 0 |
1815 | ((void *)0) never executed: return ( ((void *)0) ); | 0 |
1816 | ); never executed: return ( ((void *)0) ); | 0 |
1817 | } | - |
1818 | | - |
1819 | int | - |
1820 | i2d_ECPrivateKey(EC_KEY * a, unsigned char **out) | - |
1821 | { | - |
1822 | int ret = 0, ok = 0; | - |
1823 | unsigned char *buffer = | - |
1824 | ((void *)0) | - |
1825 | ; | - |
1826 | size_t buf_len = 0, tmp_len; | - |
1827 | EC_PRIVATEKEY *priv_key = | - |
1828 | ((void *)0) | - |
1829 | ; | - |
1830 | | - |
1831 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1832 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1833 | || a->group == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1834 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1835 | || a->priv_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1836 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1837 | || | - |
1838 | (!(a->enc_flag & 0x002)TRUE | never evaluated | FALSE | never evaluated |
&& a->pub_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1839 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1840 | )) { | - |
1841 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,1449); | - |
1842 | goto never executed: goto err; err;never executed: goto err; | 0 |
1843 | } | - |
1844 | if ((TRUE | never evaluated | FALSE | never evaluated |
priv_key = EC_PRIVATEKEY_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1845 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1846 | ) { | - |
1847 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1453); | - |
1848 | goto never executed: goto err; err;never executed: goto err; | 0 |
1849 | } | - |
1850 | priv_key->version = a->version; | - |
1851 | | - |
1852 | buf_len = (size_t) ((BN_num_bits(a->priv_key)+7)/8); | - |
1853 | buffer = malloc(buf_len); | - |
1854 | if (buffer == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1855 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1856 | ) { | - |
1857 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1461); | - |
1858 | goto never executed: goto err; err;never executed: goto err; | 0 |
1859 | } | - |
1860 | if (!BN_bn2bin(a->priv_key, buffer)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1861 | ERR_put_error(16,(0xfff),(3),__FILE__,1465); | - |
1862 | goto never executed: goto err; err;never executed: goto err; | 0 |
1863 | } | - |
1864 | if (!ASN1_STRING_set(priv_key->privateKey, buffer, buf_len)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1865 | ERR_put_error(16,(0xfff),(13),__FILE__,1469); | - |
1866 | goto never executed: goto err; err;never executed: goto err; | 0 |
1867 | } | - |
1868 | if (!(a->enc_flag & 0x001)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1869 | if ((TRUE | never evaluated | FALSE | never evaluated |
priv_key->parameters = ec_asn1_group2pkparameters(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1870 | a->group, priv_key->parameters)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1871 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1872 | ) { | - |
1873 | ERR_put_error(16,(0xfff),(16),__FILE__,1475); | - |
1874 | goto never executed: goto err; err;never executed: goto err; | 0 |
1875 | } | - |
1876 | } never executed: end of block | 0 |
1877 | if (!(a->enc_flag & 0x002)TRUE | never evaluated | FALSE | never evaluated |
&& a->pub_key != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1878 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1879 | ) { | - |
1880 | priv_key->publicKey = ASN1_BIT_STRING_new(); | - |
1881 | if (priv_key->publicKey == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1882 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1883 | ) { | - |
1884 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1482); | - |
1885 | goto never executed: goto err; err;never executed: goto err; | 0 |
1886 | } | - |
1887 | tmp_len = EC_POINT_point2oct(a->group, a->pub_key, | - |
1888 | a->conv_form, | - |
1889 | ((void *)0) | - |
1890 | , 0, | - |
1891 | ((void *)0) | - |
1892 | ); | - |
1893 | | - |
1894 | if (tmp_len > buf_lenTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1895 | unsigned char *tmp_buffer = realloc(buffer, tmp_len); | - |
1896 | if (!tmp_bufferTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1897 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1491); | - |
1898 | goto never executed: goto err; err;never executed: goto err; | 0 |
1899 | } | - |
1900 | buffer = tmp_buffer; | - |
1901 | buf_len = tmp_len; | - |
1902 | } never executed: end of block | 0 |
1903 | if (!EC_POINT_point2oct(a->group, a->pub_key,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1904 | a->conv_form, buffer, buf_len, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1905 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1906 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1907 | ERR_put_error(16,(0xfff),(16),__FILE__,1499); | - |
1908 | goto never executed: goto err; err;never executed: goto err; | 0 |
1909 | } | - |
1910 | priv_key->publicKey->flags &= ~(0x08 | 0x07); | - |
1911 | priv_key->publicKey->flags |= 0x08; | - |
1912 | if (!ASN1_STRING_set(priv_key->publicKey, buffer,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1913 | buf_len)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1914 | ERR_put_error(16,(0xfff),(13),__FILE__,1506); | - |
1915 | goto never executed: goto err; err;never executed: goto err; | 0 |
1916 | } | - |
1917 | } never executed: end of block | 0 |
1918 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret = i2d_EC_PRIVATEKEY(priv_key, out)) == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1919 | ERR_put_error(16,(0xfff),(16),__FILE__,1511); | - |
1920 | goto never executed: goto err; err;never executed: goto err; | 0 |
1921 | } | - |
1922 | ok = 1; | - |
1923 | err: code before this statement never executed: err: | 0 |
1924 | free(buffer); | - |
1925 | if (priv_keyTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1926 | EC_PRIVATEKEY_free(priv_key); never executed: EC_PRIVATEKEY_free(priv_key); | 0 |
1927 | return never executed: return (ok ? ret : 0); (okTRUE | never evaluated | FALSE | never evaluated |
? ret : 0);never executed: return (ok ? ret : 0); | 0 |
1928 | } | - |
1929 | | - |
1930 | int | - |
1931 | i2d_ECParameters(EC_KEY * a, unsigned char **out) | - |
1932 | { | - |
1933 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1934 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1935 | ) { | - |
1936 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,1526); | - |
1937 | return never executed: return 0; 0;never executed: return 0; | 0 |
1938 | } | - |
1939 | return never executed: return i2d_ECPKParameters(a->group, out); i2d_ECPKParameters(a->group, out);never executed: return i2d_ECPKParameters(a->group, out); | 0 |
1940 | } | - |
1941 | | - |
1942 | EC_KEY * | - |
1943 | d2i_ECParameters(EC_KEY ** a, const unsigned char **in, long len) | - |
1944 | { | - |
1945 | EC_KEY *ret; | - |
1946 | | - |
1947 | if (in == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1948 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1949 | || *TRUE | never evaluated | FALSE | never evaluated |
in == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1950 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1951 | ) { | - |
1952 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,1538); | - |
1953 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1954 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1955 | ; never executed: return ((void *)0) ; | 0 |
1956 | } | - |
1957 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1958 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1959 | || *TRUE | never evaluated | FALSE | never evaluated |
a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1960 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1961 | ) { | - |
1962 | if ((TRUE | never evaluated | FALSE | never evaluated |
ret = EC_KEY_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1963 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1964 | ) { | - |
1965 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1543); | - |
1966 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1967 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1968 | ; never executed: return ((void *)0) ; | 0 |
1969 | } | - |
1970 | } never executed: end of block else | 0 |
1971 | ret = *a; never executed: ret = *a; | 0 |
1972 | | - |
1973 | if (!d2i_ECPKParameters(&ret->group, in, len)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1974 | ERR_put_error(16,(0xfff),(16),__FILE__,1550); | - |
1975 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1976 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1977 | || *TRUE | never evaluated | FALSE | never evaluated |
a != retTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1978 | EC_KEY_free(ret); never executed: EC_KEY_free(ret); | 0 |
1979 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1980 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1981 | ; never executed: return ((void *)0) ; | 0 |
1982 | } | - |
1983 | | - |
1984 | if (a != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1985 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1986 | ) | - |
1987 | * never executed: *a = ret; a = ret;never executed: *a = ret; | 0 |
1988 | return never executed: return ret; ret;never executed: return ret; | 0 |
1989 | } | - |
1990 | | - |
1991 | EC_KEY * | - |
1992 | o2i_ECPublicKey(EC_KEY ** a, const unsigned char **in, long len) | - |
1993 | { | - |
1994 | EC_KEY *ret = | - |
1995 | ((void *)0) | - |
1996 | ; | - |
1997 | | - |
1998 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1999 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2000 | || (*TRUE | never evaluated | FALSE | never evaluated |
a) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2001 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2002 | || (*TRUE | never evaluated | FALSE | never evaluated |
a)->group == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2003 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2004 | ) { | - |
2005 | | - |
2006 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,1568); | - |
2007 | return never executed: return 0; 0;never executed: return 0; | 0 |
2008 | } | - |
2009 | ret = *a; | - |
2010 | if (ret->pub_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2011 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2012 | && | - |
2013 | (TRUE | never evaluated | FALSE | never evaluated |
ret->pub_key = EC_POINT_new(ret->group)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2014 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2015 | ) { | - |
2016 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1574); | - |
2017 | return never executed: return 0; 0;never executed: return 0; | 0 |
2018 | } | - |
2019 | if (!EC_POINT_oct2point(ret->group, ret->pub_key, *in, len, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2020 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2021 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2022 | ERR_put_error(16,(0xfff),(16),__FILE__,1578); | - |
2023 | return never executed: return 0; 0;never executed: return 0; | 0 |
2024 | } | - |
2025 | | - |
2026 | ret->conv_form = (point_conversion_form_t) (*in[0] & ~0x01); | - |
2027 | *in += len; | - |
2028 | return never executed: return ret; ret;never executed: return ret; | 0 |
2029 | } | - |
2030 | | - |
2031 | int | - |
2032 | i2o_ECPublicKey(const EC_KEY * a, unsigned char **out) | - |
2033 | { | - |
2034 | size_t buf_len = 0; | - |
2035 | int new_buffer = 0; | - |
2036 | | - |
2037 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2038 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2039 | ) { | - |
2040 | ERR_put_error(16,(0xfff),((3|64)),__FILE__,1594); | - |
2041 | return never executed: return 0; 0;never executed: return 0; | 0 |
2042 | } | - |
2043 | buf_len = EC_POINT_point2oct(a->group, a->pub_key, | - |
2044 | a->conv_form, | - |
2045 | ((void *)0) | - |
2046 | , 0, | - |
2047 | ((void *)0) | - |
2048 | ); | - |
2049 | | - |
2050 | if (out == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2051 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2052 | || buf_len == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2053 | | - |
2054 | return never executed: return buf_len; buf_len;never executed: return buf_len; | 0 |
2055 | | - |
2056 | if (*TRUE | never evaluated | FALSE | never evaluated |
out == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2057 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2058 | ) { | - |
2059 | if ((*TRUE | never evaluated | FALSE | never evaluated |
out = malloc(buf_len)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2060 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2061 | ) { | - |
2062 | ERR_put_error(16,(0xfff),((1|64)),__FILE__,1606); | - |
2063 | return never executed: return 0; 0;never executed: return 0; | 0 |
2064 | } | - |
2065 | new_buffer = 1; | - |
2066 | } never executed: end of block | 0 |
2067 | if (!EC_POINT_point2oct(a->group, a->pub_key, a->conv_form,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2068 | *out, buf_len, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2069 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2070 | )TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2071 | ERR_put_error(16,(0xfff),(16),__FILE__,1613); | - |
2072 | if (new_bufferTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2073 | free(*out); | - |
2074 | *out = | - |
2075 | ((void *)0) | - |
2076 | ; | - |
2077 | } never executed: end of block | 0 |
2078 | return never executed: return 0; 0;never executed: return 0; | 0 |
2079 | } | - |
2080 | if (!new_bufferTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2081 | * never executed: *out += buf_len; out += buf_len;never executed: *out += buf_len; | 0 |
2082 | return never executed: return buf_len; buf_len;never executed: return buf_len; | 0 |
2083 | } | - |
| | |