OpenCoverage

ec_asn1.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/ec/ec_asn1.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4int-
5EC_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)) !=
EC_METHOD_get_...group)) != 407Description
TRUEnever evaluated
FALSEnever evaluated
0
10 407
EC_METHOD_get_...group)) != 407Description
TRUEnever evaluated
FALSEnever evaluated
)
0
11-
12 return
never executed: return 0;
0;
never executed: return 0;
0
13-
14 while (group->poly[i] != 0
group->poly[i] != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
15 i++;
never executed: i++;
0
16-
17 if (i == 4
i == 4Description
TRUEnever evaluated
FALSEnever evaluated
)
0
18 return
never executed: return 683;
683;
never executed: return 683;
0
19 else if (i == 2
i == 2Description
TRUEnever evaluated
FALSEnever 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-
27int-
28EC_GROUP_get_trinomial_basis(const EC_GROUP * group, unsigned int *k)-
29{-
30 if (group ==
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
31 ((void *)0)
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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)) !=
EC_METHOD_get_...group)) != 407Description
TRUEnever evaluated
FALSEnever evaluated
0
36 407
EC_METHOD_get_...group)) != 407Description
TRUEnever evaluated
FALSEnever evaluated
0
37 || !((
(group->poly[0] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
group->poly[0] != 0)
(group->poly[0] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(group->poly[1] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
group->poly[1] != 0)
(group->poly[1] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(group->poly[2] == 0)Description
TRUEnever evaluated
FALSEnever evaluated
group->poly[2] == 0)
(group->poly[2] == 0)Description
TRUEnever evaluated
FALSEnever 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 (k
kDescription
TRUEnever evaluated
FALSEnever 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-
47int-
48EC_GROUP_get_pentanomial_basis(const EC_GROUP * group, unsigned int *k1,-
49 unsigned int *k2, unsigned int *k3)-
50{-
51 if (group ==
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
52 ((void *)0)
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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)) !=
EC_METHOD_get_...group)) != 407Description
TRUEnever evaluated
FALSEnever evaluated
0
57 407
EC_METHOD_get_...group)) != 407Description
TRUEnever evaluated
FALSEnever evaluated
0
58 || !((
(group->poly[0] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
group->poly[0] != 0)
(group->poly[0] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(group->poly[1] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
group->poly[1] != 0)
(group->poly[1] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(group->poly[2] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
group->poly[2] != 0)
(group->poly[2] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(group->poly[3] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
group->poly[3] != 0)
(group->poly[3] != 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(group->poly[4] == 0)Description
TRUEnever evaluated
FALSEnever evaluated
group->poly[4] == 0)
(group->poly[4] == 0)Description
TRUEnever evaluated
FALSEnever 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 (k1
k1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
63 *
never executed: *k1 = group->poly[3];
k1 = group->poly[3];
never executed: *k1 = group->poly[3];
0
64 if (k2
k2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
65 *
never executed: *k2 = group->poly[2];
k2 = group->poly[2];
never executed: *k2 = group->poly[2];
0
66 if (k3
k3Description
TRUEnever evaluated
FALSEnever 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-
74typedef struct x9_62_pentanomial_st {-
75 long k1;-
76 long k2;-
77 long k3;-
78} X9_62_PENTANOMIAL;-
79-
80typedef 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-
96typedef 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-
109typedef 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-
115typedef 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-
124struct 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-
134typedef 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-
142static 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-
184const 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-
196X9_62_PENTANOMIAL *X9_62_PENTANOMIAL_new(void);-
197void X9_62_PENTANOMIAL_free(X9_62_PENTANOMIAL *a);-
198-
199X9_62_PENTANOMIAL *-
200X9_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-
205void-
206X9_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-
211static 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-
225static 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-
279static 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-
297static 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-
333const 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-
345X9_62_CHARACTERISTIC_TWO *X9_62_CHARACTERISTIC_TWO_new(void);-
346void X9_62_CHARACTERISTIC_TWO_free(X9_62_CHARACTERISTIC_TWO *a);-
347-
348X9_62_CHARACTERISTIC_TWO *-
349X9_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-
354void-
355X9_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-
360static 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-
374static 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-
411static 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-
429static 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-
452const 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-
464static 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-
506const 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-
518static 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-
599const 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-
611ECPARAMETERS *ECPARAMETERS_new(void);-
612void ECPARAMETERS_free(ECPARAMETERS *a);-
613-
614ECPARAMETERS *-
615ECPARAMETERS_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-
620void-
621ECPARAMETERS_free(ECPARAMETERS *a)-
622{-
623 ASN1_item_free((ASN1_VALUE *)a, &ECPARAMETERS_it);-
624}
never executed: end of block
0
625-
626static 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-
668const 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-
686ECPKPARAMETERS *ECPKPARAMETERS_new(void);-
687void ECPKPARAMETERS_free(ECPKPARAMETERS *a);-
688ECPKPARAMETERS *d2i_ECPKPARAMETERS(ECPKPARAMETERS **a, const unsigned char **in, long len);-
689int i2d_ECPKPARAMETERS(const ECPKPARAMETERS *a, unsigned char **out);-
690-
691ECPKPARAMETERS *-
692d2i_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-
698int-
699i2d_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-
704ECPKPARAMETERS *-
705ECPKPARAMETERS_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-
710void-
711ECPKPARAMETERS_free(ECPKPARAMETERS *a)-
712{-
713 ASN1_item_free((ASN1_VALUE *)a, &ECPKPARAMETERS_it);-
714}
never executed: end of block
0
715-
716static 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-
771const 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-
783EC_PRIVATEKEY *EC_PRIVATEKEY_new(void);-
784void EC_PRIVATEKEY_free(EC_PRIVATEKEY *a);-
785EC_PRIVATEKEY *d2i_EC_PRIVATEKEY(EC_PRIVATEKEY **a, const unsigned char **in, long len);-
786int i2d_EC_PRIVATEKEY(const EC_PRIVATEKEY *a, unsigned char **out);-
787-
788EC_PRIVATEKEY *-
789d2i_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-
795int-
796i2d_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-
801EC_PRIVATEKEY *-
802EC_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-
807void-
808EC_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-
816static int ec_asn1_group2fieldid(const EC_GROUP *, X9_62_FIELDID *);-
817-
818static int ec_asn1_group2curve(const EC_GROUP *, X9_62_CURVE *);-
819-
820-
821static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *);-
822-
823-
824static ECPARAMETERS *ec_asn1_group2parameters(const EC_GROUP *, ECPARAMETERS *);-
825-
826-
827static EC_GROUP *ec_asn1_pkparameters2group(const ECPKPARAMETERS *);-
828-
829-
830static ECPKPARAMETERS *ec_asn1_group2pkparameters(const EC_GROUP *,-
831 ECPKPARAMETERS *);-
832-
833-
834-
835static int-
836ec_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 ==
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
844 ((void *)0)
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
845 || field ==
field == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
846 ((void *)0)
field == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
847 )-
848 return
never executed: return 0;
0;
never executed: return 0;
0
849-
850-
851 if (field->fieldType !=
field->fieldTy...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
852 ((void *)0)
field->fieldTy...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
853 )-
854 ASN1_OBJECT_free(field->fieldType);
never executed: ASN1_OBJECT_free(field->fieldType);
0
855 if (field->p.other !=
field->p.other != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
856 ((void *)0)
field->p.other != ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ((
(field->fieldT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
field->fieldType = OBJ_nid2obj(nid)) ==
(field->fieldT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
863 ((void *)0)
(field->fieldT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 406
nid == 406Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
869 if ((
(tmp = BN_new(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tmp = BN_new()) ==
(tmp = BN_new(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
870 ((void *)0)
(tmp = BN_new(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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,
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
877 ((void *)0)
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
878 ,
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
879 ((void *)0)
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
880 ,
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
881 ((void *)0)
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
882 )
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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 ==
field->p.prime == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
891 ((void *)0)
field->p.prime == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
char_two == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
911 ((void *)0)
char_two == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 0
field_type == 0Description
TRUEnever evaluated
FALSEnever 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 ((
(char_two->typ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
char_two->type = OBJ_nid2obj(field_type)) ==
(char_two->typ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
926 ((void *)0)
(char_two->typ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 682
field_type == 682Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
932 unsigned int k;-
933-
934 if (!EC_GROUP_get_trinomial_basis(group, &k)
!EC_GROUP_get_...sis(group, &k)Description
TRUEnever evaluated
FALSEnever 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.tpBasis
!char_two->p.tpBasisDescription
TRUEnever evaluated
FALSEnever 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)
!ASN1_INTEGER_...sis, (long) k)Description
TRUEnever evaluated
FALSEnever 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 == 683
field_type == 683Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
947 unsigned int k1, k2, k3;-
948-
949 if (!EC_GROUP_get_pentanomial_basis(group, &k1, &k2, &k3)
!EC_GROUP_get_...&k1, &k2, &k3)Description
TRUEnever evaluated
FALSEnever 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.ppBasis
!char_two->p.ppBasisDescription
TRUEnever evaluated
FALSEnever 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.onBasis
!char_two->p.onBasisDescription
TRUEnever evaluated
FALSEnever 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-
979static int-
980ec_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 (!group
!groupDescription
TRUEnever evaluated
FALSEnever evaluated
|| !curve
!curveDescription
TRUEnever evaluated
FALSEnever evaluated
|| !curve->a
!curve->aDescription
TRUEnever evaluated
FALSEnever evaluated
|| !curve->b
!curve->bDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1002 return
never executed: return 0;
0;
never executed: return 0;
0
1003-
1004 if ((
(tmp_1 = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tmp_1 = BN_new()) ==
(tmp_1 = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1005 ((void *)0)
(tmp_1 = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1006 || (
(tmp_2 = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tmp_2 = BN_new()) ==
(tmp_2 = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1007 ((void *)0)
(tmp_2 = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 406
nid == 406Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1016 if (!EC_GROUP_get_curve_GFp(group,
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1017 ((void *)0)
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1018 , tmp_1, tmp_2,
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1019 ((void *)0)
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1020 )
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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,
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1028 ((void *)0)
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1029 , tmp_1, tmp_2,
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1030 ((void *)0)
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1031 )
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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 == 0
len_1 == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1041-
1042 a_buf = &char_zero;-
1043 len_1 = 1;-
1044 }
never executed: end of block
else {
0
1045 if ((
(buffer_1 = ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
buffer_1 = malloc(len_1)) ==
(buffer_1 = ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1046 ((void *)0)
(buffer_1 = ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ((
(len_1 = BN_bn...uffer_1)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
len_1 = BN_bn2bin(tmp_1, buffer_1)) == 0
(len_1 = BN_bn...uffer_1)) == 0Description
TRUEnever evaluated
FALSEnever 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 == 0
len_2 == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1059-
1060 b_buf = &char_zero;-
1061 len_2 = 1;-
1062 }
never executed: end of block
else {
0
1063 if ((
(buffer_2 = ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
buffer_2 = malloc(len_2)) ==
(buffer_2 = ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1064 ((void *)0)
(buffer_2 = ma...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ((
(len_2 = BN_bn...uffer_2)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
len_2 = BN_bn2bin(tmp_2, buffer_2)) == 0
(len_2 = BN_bn...uffer_2)) == 0Description
TRUEnever evaluated
FALSEnever 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)
!ASN1_STRING_s... a_buf, len_1)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1078 !ASN1_STRING_set(curve->b, b_buf, len_2)
!ASN1_STRING_s... b_buf, len_2)Description
TRUEnever evaluated
FALSEnever 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->seed
group->seedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1084 if (!curve->seed
!curve->seedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1085 if ((
(curve->seed =...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
curve->seed = ASN1_BIT_STRING_new()) ==
(curve->seed =...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1086 ((void *)0)
(curve->seed =...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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,
!ASN1_BIT_STRI...oup->seed_len)Description
TRUEnever evaluated
FALSEnever evaluated
0
1094 (int) group->seed_len)
!ASN1_BIT_STRI...oup->seed_len)Description
TRUEnever evaluated
FALSEnever 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->seed
curve->seedDescription
TRUEnever evaluated
FALSEnever 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-
1117static ECPARAMETERS *-
1118ec_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 ((
(tmp = BN_new(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tmp = BN_new()) ==
(tmp = BN_new(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1137 ((void *)0)
(tmp = BN_new(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
param == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1143 ((void *)0)
param == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1144 ) {-
1145 if ((
(ret = ECPARAM...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = ECPARAMETERS_new()) ==
(ret = ECPARAM...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1146 ((void *)0)
(ret = ECPARAM...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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)
!ec_asn1_group... ret->fieldID)Description
TRUEnever evaluated
FALSEnever 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)
!ec_asn1_group...p, ret->curve)Description
TRUEnever evaluated
FALSEnever 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 ((
(point = EC_GR...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
point = EC_GROUP_get0_generator(group)) ==
(point = EC_GR...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1169 ((void *)0)
(point = EC_GR...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 0
len == 0Description
TRUEnever evaluated
FALSEnever 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 ((
(buffer = mall...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
buffer = malloc(len)) ==
(buffer = mall...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1186 ((void *)0)
(buffer = mall...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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,
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1192 ((void *)0)
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1193 )
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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 ==
ret->base == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1198 ((void *)0)
ret->base == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1199 && (
(ret->base = A...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret->base = ASN1_OCTET_STRING_new()) ==
(ret->base = A...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1200 ((void *)0)
(ret->base = A...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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)
!ASN1_OCTET_ST..., buffer, len)Description
TRUEnever evaluated
FALSEnever 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,
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1211 ((void *)0)
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1212 )
!EC_GROUP_get_... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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 ==
ret->order == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1218 ((void *)0)
ret->order == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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,
EC_GROUP_get_c... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1225 ((void *)0)
EC_GROUP_get_c... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1226 )
EC_GROUP_get_c... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1227 ret->cofactor = BN_to_ASN1_INTEGER(tmp, ret->cofactor);-
1228 if (ret->cofactor ==
ret->cofactor == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1229 ((void *)0)
ret->cofactor == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 (!ok
!okDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1239 if (ret
retDescription
TRUEnever evaluated
FALSEnever evaluated
&& !param
!paramDescription
TRUEnever evaluated
FALSEnever 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-
1250ECPKPARAMETERS *-
1251ec_asn1_group2pkparameters(const EC_GROUP * group, ECPKPARAMETERS * params)-
1252{-
1253 int ok = 1, tmp;-
1254 ECPKPARAMETERS *ret = params;-
1255-
1256 if (ret ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1257 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1258 ) {-
1259 if ((
(ret = ECPKPAR...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = ECPKPARAMETERS_new()) ==
(ret = ECPKPAR...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1260 ((void *)0)
(ret = ECPKPAR...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 0
ret->type == 0Description
TRUEnever evaluated
FALSEnever evaluated
&& ret->value.named_curve
ret->value.named_curveDescription
TRUEnever evaluated
FALSEnever 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 == 1
ret->type == 1Description
TRUEnever evaluated
FALSEnever evaluated
&& ret->value.parameters
ret->value.parametersDescription
TRUEnever evaluated
FALSEnever 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)
EC_GROUP_get_asn1_flag(group)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1275-
1276-
1277-
1278-
1279 tmp = EC_GROUP_get_curve_name(group);-
1280 if (tmp
tmpDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1281 ret->type = 0;-
1282 if ((
(ret->value.na...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret->value.named_curve = OBJ_nid2obj(tmp)) ==
(ret->value.na...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1283 ((void *)0)
(ret->value.na...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ((
(ret->value.pa...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret->value.parameters = ec_asn1_group2parameters(
(ret->value.pa...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1293 group,
(ret->value.pa...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1294 ((void *)0)
(ret->value.pa...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1295 )) ==
(ret->value.pa...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1296 ((void *)0)
(ret->value.pa...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1297 )-
1298 ok = 0;
never executed: ok = 0;
0
1299 }
never executed: end of block
0
1300-
1301 if (!ok
!okDescription
TRUEnever evaluated
FALSEnever 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-
1310static EC_GROUP *-
1311ec_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->fieldID
!params->fieldIDDescription
TRUEnever evaluated
FALSEnever evaluated
|| !params->fieldID->fieldType
!params->fieldID->fieldTypeDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
1330 !params->fieldID->p.ptr
!params->fieldID->p.ptrDescription
TRUEnever evaluated
FALSEnever 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->curve
!params->curveDescription
TRUEnever evaluated
FALSEnever evaluated
|| !params->curve->a
!params->curve->aDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
1336 !params->curve->a->data
!params->curve->a->dataDescription
TRUEnever evaluated
FALSEnever evaluated
|| !params->curve->b
!params->curve->bDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
1337 !params->curve->b->data
!params->curve->b->dataDescription
TRUEnever evaluated
FALSEnever 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 ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1345 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
b == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1354 ((void *)0)
b == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 407
tmp == 407Description
TRUEnever evaluated
FALSEnever 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 > 661
field_bits > 661Description
TRUEnever evaluated
FALSEnever 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 ((
(p = BN_new()) == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p = BN_new()) ==
(p = BN_new()) == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1379 ((void *)0)
(p = BN_new()) == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 682
tmp == 682Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1388 long tmp_long;-
1389-
1390 if (!char_two->p.tpBasis
!char_two->p.tpBasisDescription
TRUEnever evaluated
FALSEnever 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_long
char_two->m > tmp_longDescription
TRUEnever evaluated
FALSEnever evaluated
&& tmp_long > 0
tmp_long > 0Description
TRUEnever evaluated
FALSEnever 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)
!BN_set_bit(p,...) char_two->m)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1402 goto
never executed: goto err;
err;
never executed: goto err;
0
1403 if (!BN_set_bit(p, (int) tmp_long)
!BN_set_bit(p, (int) tmp_long)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1404 goto
never executed: goto err;
err;
never executed: goto err;
0
1405 if (!BN_set_bit(p, 0)
!BN_set_bit(p, 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1406 goto
never executed: goto err;
err;
never executed: goto err;
0
1407 }
never executed: end of block
else if (tmp == 683
tmp == 683Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1408 X9_62_PENTANOMIAL *penta;-
1409-
1410 penta = char_two->p.ppBasis;-
1411 if (!penta
!pentaDescription
TRUEnever evaluated
FALSEnever 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->k3
char_two->m > penta->k3Description
TRUEnever evaluated
FALSEnever evaluated
&& penta->k3 > penta->k2
penta->k3 > penta->k2Description
TRUEnever evaluated
FALSEnever evaluated
&& penta->k2 > penta->k1
penta->k2 > penta->k1Description
TRUEnever evaluated
FALSEnever evaluated
&& penta->k1 > 0
penta->k1 > 0Description
TRUEnever evaluated
FALSEnever 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)
!BN_set_bit(p,...) char_two->m)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1421 goto
never executed: goto err;
err;
never executed: goto err;
0
1422 if (!BN_set_bit(p, (int) penta->k1)
!BN_set_bit(p,...nt) penta->k1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1423 goto
never executed: goto err;
err;
never executed: goto err;
0
1424 if (!BN_set_bit(p, (int) penta->k2)
!BN_set_bit(p,...nt) penta->k2)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1425 goto
never executed: goto err;
err;
never executed: goto err;
0
1426 if (!BN_set_bit(p, (int) penta->k3)
!BN_set_bit(p,...nt) penta->k3)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1427 goto
never executed: goto err;
err;
never executed: goto err;
0
1428 if (!BN_set_bit(p, 0)
!BN_set_bit(p, 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1429 goto
never executed: goto err;
err;
never executed: goto err;
0
1430 }
never executed: end of block
else if (tmp == 681
tmp == 681Description
TRUEnever evaluated
FALSEnever 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 == 406
tmp == 406Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1445-
1446-
1447 if (!params->fieldID->p.prime
!params->fieldID->p.primeDescription
TRUEnever evaluated
FALSEnever 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 ==
p == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1455 ((void *)0)
p == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 (((
((p)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
p)->neg != 0)
((p)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| ((
((p)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
p)->top == 0)
((p)->top == 0)Description
TRUEnever evaluated
FALSEnever 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 > 661
field_bits > 661Description
TRUEnever evaluated
FALSEnever 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 ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1479 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 !=
params->curve-...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1486 ((void *)0)
params->curve-...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1487 ) {-
1488 free(ret->seed);-
1489 if (!(ret->seed = malloc(params->curve->seed->length))
!(ret->seed = ...seed->length))Description
TRUEnever evaluated
FALSEnever 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->order
!params->orderDescription
TRUEnever evaluated
FALSEnever evaluated
|| !params->base
!params->baseDescription
TRUEnever evaluated
FALSEnever evaluated
|| !params->base->data
!params->base->dataDescription
TRUEnever evaluated
FALSEnever 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 ((
(point = EC_PO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
point = EC_POINT_new(ret)) ==
(point = EC_PO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1502 ((void *)0)
(point = EC_PO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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,
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1512 params->base->length,
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1513 ((void *)0)
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1514 )
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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 ((
(a = ASN1_INTE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
a = ASN1_INTEGER_to_BN(params->order, a)) ==
(a = ASN1_INTE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1520 ((void *)0)
(a = ASN1_INTE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 (((
((a)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
a)->neg != 0)
((a)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| ((
((a)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
a)->top == 0)
((a)->top == 0)Description
TRUEnever evaluated
FALSEnever 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 + 1
BN_num_bits(a)...field_bits + 1Description
TRUEnever evaluated
FALSEnever 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 ==
params->cofact...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1535 ((void *)0)
params->cofact...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1536 ) {-
1537 BN_free(b);-
1538 b = -
1539 ((void *)0)-
1540 ;-
1541 }
never executed: end of block
else if ((
(b = ASN1_INTE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
b = ASN1_INTEGER_to_BN(params->cofactor, b)) ==
(b = ASN1_INTE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1542 ((void *)0)
(b = ASN1_INTE...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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)
!EC_GROUP_set_..., point, a, b)Description
TRUEnever evaluated
FALSEnever 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 (!ok
!okDescription
TRUEnever evaluated
FALSEnever 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-
1568EC_GROUP *-
1569ec_asn1_pkparameters2group(const ECPKPARAMETERS * params)-
1570{-
1571 EC_GROUP *ret = -
1572 ((void *)0)-
1573 ;-
1574 int tmp = 0;-
1575-
1576 if (params ==
params == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1577 ((void *)0)
params == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 0
params->type == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1585 tmp = OBJ_obj2nid(params->value.named_curve);-
1586 if ((
(ret = EC_GROU...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = EC_GROUP_new_by_curve_name(tmp)) ==
(ret = EC_GROU...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1587 ((void *)0)
(ret = EC_GROU...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 == 1
params->type == 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1596-
1597 ret = ec_asn1_parameters2group(params->value.parameters);-
1598 if (!ret
!retDescription
TRUEnever evaluated
FALSEnever 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 == 2
params->type == 2Description
TRUEnever evaluated
FALSEnever 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-
1621EC_GROUP *-
1622d2i_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 ((
(params = d2i_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
params = d2i_ECPKPARAMETERS(
(params = d2i_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1632 ((void *)0)
(params = d2i_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1633 , in, len)) ==
(params = d2i_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1634 ((void *)0)
(params = d2i_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ((
(group = ec_as...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
group = ec_asn1_pkparameters2group(params)) ==
(group = ec_as...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1640 ((void *)0)
(group = ec_as...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 !=
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1647 ((void *)0)
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever 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-
1658int-
1659i2d_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 ==
tmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1666 ((void *)0)
tmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ((
(ret = i2d_ECP...mp, out)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
ret = i2d_ECPKPARAMETERS(tmp, out)) == 0
(ret = i2d_ECP...mp, out)) == 0Description
TRUEnever evaluated
FALSEnever 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-
1682EC_KEY *-
1683d2i_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 ((
(priv_key = EC...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
priv_key = EC_PRIVATEKEY_new()) ==
(priv_key = EC...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1693 ((void *)0)
(priv_key = EC...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ((
(priv_key = d2...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
priv_key = d2i_EC_PRIVATEKEY(&priv_key, in, len)) ==
(priv_key = d2...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1701 ((void *)0)
(priv_key = d2...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1710 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1711 || *
*a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
a ==
*a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1712 ((void *)0)
*a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1713 ) {-
1714 if ((
(ret = EC_KEY_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = EC_KEY_new()) ==
(ret = EC_KEY_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1715 ((void *)0)
(ret = EC_KEY_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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->parameters
priv_key->parametersDescription
TRUEnever evaluated
FALSEnever 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 ==
ret->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1728 ((void *)0)
ret->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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->privateKey
priv_key->privateKeyDescription
TRUEnever evaluated
FALSEnever 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 ==
ret->priv_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1741 ((void *)0)
ret->priv_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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_key
ret->pub_keyDescription
TRUEnever evaluated
FALSEnever 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 ==
ret->pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1755 ((void *)0)
ret->pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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->publicKey
priv_key->publicKeyDescription
TRUEnever evaluated
FALSEnever 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 ==
pub_oct == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1768 ((void *)0)
pub_oct == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1769 || pub_oct_len <= 0
pub_oct_len <= 0Description
TRUEnever evaluated
FALSEnever 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,
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1777 pub_oct, pub_oct_len,
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1778 ((void *)0)
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1779 )
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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,
!EC_POINT_mul(... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1785
!EC_POINT_mul(... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1786 ((void *)0)
!EC_POINT_mul(... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1787 ,
!EC_POINT_mul(... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1788 ((void *)0)
!EC_POINT_mul(... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1789 ,
!EC_POINT_mul(... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1790 ((void *)0)
!EC_POINT_mul(... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1791 )
!EC_POINT_mul(... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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 !=
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1801 ((void *)0)
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1808 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1809 || *
*a != retDescription
TRUEnever evaluated
FALSEnever evaluated
a != ret
*a != retDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1810 EC_KEY_free(ret);
never executed: EC_KEY_free(ret);
0
1811 if (priv_key
priv_keyDescription
TRUEnever evaluated
FALSEnever 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-
1819int-
1820i2d_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 ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1832 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1833 || a->group ==
a->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1834 ((void *)0)
a->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1835 || a->priv_key ==
a->priv_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1836 ((void *)0)
a->priv_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1837 ||-
1838 (!(a->enc_flag & 0x002)
!(a->enc_flag & 0x002)Description
TRUEnever evaluated
FALSEnever evaluated
&& a->pub_key ==
a->pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1839 ((void *)0)
a->pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ((
(priv_key = EC...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
priv_key = EC_PRIVATEKEY_new()) ==
(priv_key = EC...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1845 ((void *)0)
(priv_key = EC...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
buffer == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1855 ((void *)0)
buffer == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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)
!BN_bn2bin(a->...v_key, buffer)Description
TRUEnever evaluated
FALSEnever 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)
!ASN1_STRING_s...ffer, buf_len)Description
TRUEnever evaluated
FALSEnever 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)
!(a->enc_flag & 0x001)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1869 if ((
(priv_key->par...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
priv_key->parameters = ec_asn1_group2pkparameters(
(priv_key->par...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1870 a->group, priv_key->parameters)) ==
(priv_key->par...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1871 ((void *)0)
(priv_key->par...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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)
!(a->enc_flag & 0x002)Description
TRUEnever evaluated
FALSEnever evaluated
&& a->pub_key !=
a->pub_key != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1878 ((void *)0)
a->pub_key != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1879 ) {-
1880 priv_key->publicKey = ASN1_BIT_STRING_new();-
1881 if (priv_key->publicKey ==
priv_key->publ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1882 ((void *)0)
priv_key->publ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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_len
tmp_len > buf_lenDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1895 unsigned char *tmp_buffer = realloc(buffer, tmp_len);-
1896 if (!tmp_buffer
!tmp_bufferDescription
TRUEnever evaluated
FALSEnever 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,
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1904 a->conv_form, buffer, buf_len,
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1905 ((void *)0)
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1906 )
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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,
!ASN1_STRING_s...ffer, buf_len)Description
TRUEnever evaluated
FALSEnever evaluated
0
1913 buf_len)
!ASN1_STRING_s...ffer, buf_len)Description
TRUEnever evaluated
FALSEnever 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 ((
(ret = i2d_EC_...ey, out)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
ret = i2d_EC_PRIVATEKEY(priv_key, out)) == 0
(ret = i2d_EC_...ey, out)) == 0Description
TRUEnever evaluated
FALSEnever 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_key
priv_keyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1926 EC_PRIVATEKEY_free(priv_key);
never executed: EC_PRIVATEKEY_free(priv_key);
0
1927 return
never executed: return (ok ? ret : 0);
(ok
okDescription
TRUEnever evaluated
FALSEnever evaluated
? ret : 0);
never executed: return (ok ? ret : 0);
0
1928}-
1929-
1930int-
1931i2d_ECParameters(EC_KEY * a, unsigned char **out)-
1932{-
1933 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1934 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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-
1942EC_KEY *-
1943d2i_ECParameters(EC_KEY ** a, const unsigned char **in, long len)-
1944{-
1945 EC_KEY *ret;-
1946-
1947 if (in ==
in == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1948 ((void *)0)
in == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1949 || *
*in == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
in ==
*in == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1950 ((void *)0)
*in == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1958 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1959 || *
*a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
a ==
*a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1960 ((void *)0)
*a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1961 ) {-
1962 if ((
(ret = EC_KEY_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret = EC_KEY_new()) ==
(ret = EC_KEY_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1963 ((void *)0)
(ret = EC_KEY_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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)
!d2i_ECPKParam...roup, in, len)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1974 ERR_put_error(16,(0xfff),(16),__FILE__,1550);-
1975 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1976 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1977 || *
*a != retDescription
TRUEnever evaluated
FALSEnever evaluated
a != ret
*a != retDescription
TRUEnever evaluated
FALSEnever 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 !=
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1985 ((void *)0)
a != ((void *)0)Description
TRUEnever evaluated
FALSEnever 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-
1991EC_KEY *-
1992o2i_ECPublicKey(EC_KEY ** a, const unsigned char **in, long len)-
1993{-
1994 EC_KEY *ret = -
1995 ((void *)0)-
1996 ;-
1997-
1998 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1999 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2000 || (*
(*a) == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
a) ==
(*a) == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2001 ((void *)0)
(*a) == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2002 || (*
(*a)->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
a)->group ==
(*a)->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2003 ((void *)0)
(*a)->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
ret->pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2011 ((void *)0)
ret->pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2012 &&-
2013 (
(ret->pub_key ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret->pub_key = EC_POINT_new(ret->group)) ==
(ret->pub_key ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2014 ((void *)0)
(ret->pub_key ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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,
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
2020 ((void *)0)
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
2021 )
!EC_POINT_oct2... ((void *)0) )Description
TRUEnever evaluated
FALSEnever 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-
2031int-
2032i2o_ECPublicKey(const EC_KEY * a, unsigned char **out)-
2033{-
2034 size_t buf_len = 0;-
2035 int new_buffer = 0;-
2036-
2037 if (a ==
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2038 ((void *)0)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever 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 ==
out == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2051 ((void *)0)
out == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2052 || buf_len == 0
buf_len == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2053-
2054 return
never executed: return buf_len;
buf_len;
never executed: return buf_len;
0
2055-
2056 if (*
*out == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
out ==
*out == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2057 ((void *)0)
*out == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2058 ) {-
2059 if ((*
(*out = malloc...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
out = malloc(buf_len)) ==
(*out = malloc...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2060 ((void *)0)
(*out = malloc...== ((void *)0)Description
TRUEnever evaluated
FALSEnever 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,
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
2068 *out, buf_len,
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
2069 ((void *)0)
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
2070 )
!EC_POINT_poin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2071 ERR_put_error(16,(0xfff),(16),__FILE__,1613);-
2072 if (new_buffer
new_bufferDescription
TRUEnever evaluated
FALSEnever 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_buffer
!new_bufferDescription
TRUEnever evaluated
FALSEnever 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}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2