aboutsummaryrefslogtreecommitdiff
path: root/src/daemon/https/minitasn1/element.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon/https/minitasn1/element.c')
-rw-r--r--src/daemon/https/minitasn1/element.c123
1 files changed, 64 insertions, 59 deletions
diff --git a/src/daemon/https/minitasn1/element.c b/src/daemon/https/minitasn1/element.c
index 4e29772e..7cda2174 100644
--- a/src/daemon/https/minitasn1/element.c
+++ b/src/daemon/https/minitasn1/element.c
@@ -76,7 +76,7 @@ MHD__asn1_hierarchical_name (node_asn * node, char *name, int name_size)
76/******************************************************************/ 76/******************************************************************/
77MHD__asn1_retCode 77MHD__asn1_retCode
78MHD__asn1_convert_integer (const char *value, unsigned char *value_out, 78MHD__asn1_convert_integer (const char *value, unsigned char *value_out,
79 int value_out_size, int *len) 79 int value_out_size, int *len)
80{ 80{
81 char negative; 81 char negative;
82 unsigned char val[SIZEOF_UNSIGNED_LONG_INT]; 82 unsigned char val[SIZEOF_UNSIGNED_LONG_INT];
@@ -117,7 +117,8 @@ MHD__asn1_convert_integer (const char *value, unsigned char *value_out,
117 117
118 118
119#ifdef LIBTASN1_DEBUG_INTEGER 119#ifdef LIBTASN1_DEBUG_INTEGER
120 MHD__libtasn1_log ("MHD__asn1_convert_integer: valueIn=%s, lenOut=%d", value, *len); 120 MHD__libtasn1_log ("MHD__asn1_convert_integer: valueIn=%s, lenOut=%d",
121 value, *len);
121 for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT; k++) 122 for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT; k++)
122 MHD__libtasn1_log (", vOut[%d]=%d", k, value_out[k]); 123 MHD__libtasn1_log (", vOut[%d]=%d", k, value_out[k]);
123 MHD__libtasn1_log ("\n"); 124 MHD__libtasn1_log ("\n");
@@ -276,7 +277,7 @@ MHD__asn1_append_sequence_set (node_asn * node)
276 **/ 277 **/
277MHD__asn1_retCode 278MHD__asn1_retCode
278MHD__asn1_write_value (ASN1_TYPE node_root, const char *name, 279MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
279 const void *ivalue, int len) 280 const void *ivalue, int len)
280{ 281{
281 node_asn *node, *p, *p2; 282 node_asn *node, *p, *p2;
282 unsigned char *temp, *value_temp = NULL, *default_temp = NULL; 283 unsigned char *temp, *value_temp = NULL, *default_temp = NULL;
@@ -355,7 +356,7 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
355 return ASN1_MEM_ALLOC_ERROR; 356 return ASN1_MEM_ALLOC_ERROR;
356 357
357 MHD__asn1_convert_integer (value, value_temp, 358 MHD__asn1_convert_integer (value, value_temp,
358 SIZEOF_UNSIGNED_LONG_INT, &len); 359 SIZEOF_UNSIGNED_LONG_INT, &len);
359 } 360 }
360 else 361 else
361 { /* is an identifier like v1 */ 362 { /* is an identifier like v1 */
@@ -374,10 +375,10 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
374 if (value_temp == NULL) 375 if (value_temp == NULL)
375 return ASN1_MEM_ALLOC_ERROR; 376 return ASN1_MEM_ALLOC_ERROR;
376 377
377 MHD__asn1_convert_integer ((const char*) p->value, 378 MHD__asn1_convert_integer ((const char *) p->value,
378 value_temp, 379 value_temp,
379 SIZEOF_UNSIGNED_LONG_INT, 380 SIZEOF_UNSIGNED_LONG_INT,
380 &len); 381 &len);
381 break; 382 break;
382 } 383 }
383 } 384 }
@@ -420,10 +421,10 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
420 MHD__asn1_length_der (len - k, NULL, &len2); 421 MHD__asn1_length_der (len - k, NULL, &len2);
421 temp = (unsigned char *) MHD__asn1_alloca (len - k + len2); 422 temp = (unsigned char *) MHD__asn1_alloca (len - k + len2);
422 if (temp == NULL) 423 if (temp == NULL)
423 { 424 {
424 MHD__asn1_afree (value_temp); 425 MHD__asn1_afree (value_temp);
425 return ASN1_MEM_ALLOC_ERROR; 426 return ASN1_MEM_ALLOC_ERROR;
426 } 427 }
427 428
428 MHD__asn1_octet_der (value_temp + k, len - k, temp, &len2); 429 MHD__asn1_octet_der (value_temp + k, len - k, temp, &len2);
429 MHD__asn1_set_value (node, temp, len2); 430 MHD__asn1_set_value (node, temp, len2);
@@ -441,51 +442,53 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
441 default_temp = 442 default_temp =
442 (unsigned char *) MHD__asn1_alloca (SIZEOF_UNSIGNED_LONG_INT); 443 (unsigned char *) MHD__asn1_alloca (SIZEOF_UNSIGNED_LONG_INT);
443 if (default_temp == NULL) 444 if (default_temp == NULL)
444 { 445 {
445 MHD__asn1_afree (value_temp); 446 MHD__asn1_afree (value_temp);
446 return ASN1_MEM_ALLOC_ERROR; 447 return ASN1_MEM_ALLOC_ERROR;
447 } 448 }
448 449
449 MHD__asn1_convert_integer ((const char*) p->value, default_temp, 450 MHD__asn1_convert_integer ((const char *) p->value,
450 SIZEOF_UNSIGNED_LONG_INT, &len2); 451 default_temp,
452 SIZEOF_UNSIGNED_LONG_INT, &len2);
451 } 453 }
452 else 454 else
453 { /* is an identifier like v1 */ 455 { /* is an identifier like v1 */
454 if (!(node->type & CONST_LIST)) 456 if (!(node->type & CONST_LIST))
455 { 457 {
456 MHD__asn1_afree (value_temp); 458 MHD__asn1_afree (value_temp);
457 return ASN1_VALUE_NOT_VALID; 459 return ASN1_VALUE_NOT_VALID;
458 } 460 }
459 p2 = node->down; 461 p2 = node->down;
460 while (p2) 462 while (p2)
461 { 463 {
462 if (type_field (p2->type) == TYPE_CONSTANT) 464 if (type_field (p2->type) == TYPE_CONSTANT)
463 { 465 {
464 if ((p2->name) && (!strcmp (p2->name,(const char*) p->value))) 466 if ((p2->name)
467 && (!strcmp (p2->name, (const char *) p->value)))
465 { 468 {
466 default_temp = 469 default_temp =
467 (unsigned char *) 470 (unsigned char *)
468 MHD__asn1_alloca (SIZEOF_UNSIGNED_LONG_INT); 471 MHD__asn1_alloca (SIZEOF_UNSIGNED_LONG_INT);
469 if (default_temp == NULL) 472 if (default_temp == NULL)
470 { 473 {
471 MHD__asn1_afree (value_temp); 474 MHD__asn1_afree (value_temp);
472 return ASN1_MEM_ALLOC_ERROR; 475 return ASN1_MEM_ALLOC_ERROR;
473 } 476 }
474 477
475 MHD__asn1_convert_integer ((const char*) p2->value, 478 MHD__asn1_convert_integer ((const char *) p2->value,
476 default_temp, 479 default_temp,
477 SIZEOF_UNSIGNED_LONG_INT, 480 SIZEOF_UNSIGNED_LONG_INT,
478 &len2); 481 &len2);
479 break; 482 break;
480 } 483 }
481 } 484 }
482 p2 = p2->right; 485 p2 = p2->right;
483 } 486 }
484 if (p2 == NULL) 487 if (p2 == NULL)
485 { 488 {
486 MHD__asn1_afree (value_temp); 489 MHD__asn1_afree (value_temp);
487 return ASN1_VALUE_NOT_VALID; 490 return ASN1_VALUE_NOT_VALID;
488 } 491 }
489 } 492 }
490 493
491 494
@@ -512,7 +515,7 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
512 p = node->down; 515 p = node->down;
513 while (type_field (p->type) != TYPE_DEFAULT) 516 while (type_field (p->type) != TYPE_DEFAULT)
514 p = p->right; 517 p = p->right;
515 if (!strcmp (value,(const char*) p->value)) 518 if (!strcmp (value, (const char *) p->value))
516 { 519 {
517 MHD__asn1_set_value (node, NULL, 0); 520 MHD__asn1_set_value (node, NULL, 0);
518 break; 521 break;
@@ -574,7 +577,7 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
574 if (temp == NULL) 577 if (temp == NULL)
575 return ASN1_MEM_ALLOC_ERROR; 578 return ASN1_MEM_ALLOC_ERROR;
576 579
577 MHD__asn1_octet_der ((const unsigned char*) value, len, temp, &len2); 580 MHD__asn1_octet_der ((const unsigned char *) value, len, temp, &len2);
578 MHD__asn1_set_value (node, temp, len2); 581 MHD__asn1_set_value (node, temp, len2);
579 MHD__asn1_afree (temp); 582 MHD__asn1_afree (temp);
580 break; 583 break;
@@ -586,7 +589,7 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
586 if (temp == NULL) 589 if (temp == NULL)
587 return ASN1_MEM_ALLOC_ERROR; 590 return ASN1_MEM_ALLOC_ERROR;
588 591
589 MHD__asn1_octet_der ((const unsigned char*)value, len, temp, &len2); 592 MHD__asn1_octet_der ((const unsigned char *) value, len, temp, &len2);
590 MHD__asn1_set_value (node, temp, len2); 593 MHD__asn1_set_value (node, temp, len2);
591 MHD__asn1_afree (temp); 594 MHD__asn1_afree (temp);
592 break; 595 break;
@@ -598,7 +601,7 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
598 if (temp == NULL) 601 if (temp == NULL)
599 return ASN1_MEM_ALLOC_ERROR; 602 return ASN1_MEM_ALLOC_ERROR;
600 603
601 MHD__asn1_bit_der ((const unsigned char*)value, len, temp, &len2); 604 MHD__asn1_bit_der ((const unsigned char *) value, len, temp, &len2);
602 MHD__asn1_set_value (node, temp, len2); 605 MHD__asn1_set_value (node, temp, len2);
603 MHD__asn1_afree (temp); 606 MHD__asn1_afree (temp);
604 break; 607 break;
@@ -632,7 +635,7 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
632 if (temp == NULL) 635 if (temp == NULL)
633 return ASN1_MEM_ALLOC_ERROR; 636 return ASN1_MEM_ALLOC_ERROR;
634 637
635 MHD__asn1_octet_der ((const unsigned char*)value, len, temp, &len2); 638 MHD__asn1_octet_der ((const unsigned char *) value, len, temp, &len2);
636 MHD__asn1_set_value (node, temp, len2); 639 MHD__asn1_set_value (node, temp, len2);
637 MHD__asn1_afree (temp); 640 MHD__asn1_afree (temp);
638 break; 641 break;
@@ -744,7 +747,8 @@ MHD__asn1_write_value (ASN1_TYPE node_root, const char *name,
744 * 747 *
745 **/ 748 **/
746MHD__asn1_retCode 749MHD__asn1_retCode
747MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len) 750MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue,
751 int *len)
748{ 752{
749 node_asn *node, *p, *p2; 753 node_asn *node, *p, *p2;
750 int len2, len3; 754 int len2, len3;
@@ -801,7 +805,8 @@ MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
801 || (p->value[0] == '+')) 805 || (p->value[0] == '+'))
802 { 806 {
803 if (MHD__asn1_convert_integer 807 if (MHD__asn1_convert_integer
804 ((const char*) p->value, (unsigned char*) value, value_size, len) != ASN1_SUCCESS) 808 ((const char *) p->value, (unsigned char *) value,
809 value_size, len) != ASN1_SUCCESS)
805 return ASN1_MEM_ERROR; 810 return ASN1_MEM_ERROR;
806 } 811 }
807 else 812 else
@@ -811,10 +816,12 @@ MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
811 { 816 {
812 if (type_field (p2->type) == TYPE_CONSTANT) 817 if (type_field (p2->type) == TYPE_CONSTANT)
813 { 818 {
814 if ((p2->name) && (!strcmp (p2->name, (const char*) p->value))) 819 if ((p2->name)
820 && (!strcmp (p2->name, (const char *) p->value)))
815 { 821 {
816 if (MHD__asn1_convert_integer 822 if (MHD__asn1_convert_integer
817 ((const char*) p2->value, (unsigned char*) value, value_size, 823 ((const char *) p2->value,
824 (unsigned char *) value, value_size,
818 len) != ASN1_SUCCESS) 825 len) != ASN1_SUCCESS)
819 return ASN1_MEM_ERROR; 826 return ASN1_MEM_ERROR;
820 break; 827 break;
@@ -828,8 +835,8 @@ MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
828 { 835 {
829 len2 = -1; 836 len2 = -1;
830 if (MHD__asn1_get_octet_der 837 if (MHD__asn1_get_octet_der
831 (node->value, node->value_len, &len2, (unsigned char*) value, value_size, 838 (node->value, node->value_len, &len2, (unsigned char *) value,
832 len) != ASN1_SUCCESS) 839 value_size, len) != ASN1_SUCCESS)
833 return ASN1_MEM_ERROR; 840 return ASN1_MEM_ERROR;
834 } 841 }
835 break; 842 break;
@@ -842,7 +849,7 @@ MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
842 { 849 {
843 if (type_field (p->type) == TYPE_CONSTANT) 850 if (type_field (p->type) == TYPE_CONSTANT)
844 { 851 {
845 ADD_STR_VALUE (value, value_size, (const char*) p->value); 852 ADD_STR_VALUE (value, value_size, (const char *) p->value);
846 if (p->right) 853 if (p->right)
847 { 854 {
848 ADD_STR_VALUE (value, value_size, "."); 855 ADD_STR_VALUE (value, value_size, ".");
@@ -857,35 +864,35 @@ MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
857 p = node->down; 864 p = node->down;
858 while (type_field (p->type) != TYPE_DEFAULT) 865 while (type_field (p->type) != TYPE_DEFAULT)
859 p = p->right; 866 p = p->right;
860 PUT_STR_VALUE (value, value_size, (const char*) p->value); 867 PUT_STR_VALUE (value, value_size, (const char *) p->value);
861 } 868 }
862 else 869 else
863 { 870 {
864 PUT_STR_VALUE (value, value_size, (const char*) node->value); 871 PUT_STR_VALUE (value, value_size, (const char *) node->value);
865 } 872 }
866 break; 873 break;
867 case TYPE_TIME: 874 case TYPE_TIME:
868 PUT_STR_VALUE (value, value_size, (const char*) node->value); 875 PUT_STR_VALUE (value, value_size, (const char *) node->value);
869 break; 876 break;
870 case TYPE_OCTET_STRING: 877 case TYPE_OCTET_STRING:
871 len2 = -1; 878 len2 = -1;
872 if (MHD__asn1_get_octet_der 879 if (MHD__asn1_get_octet_der
873 (node->value, node->value_len, &len2, (unsigned char*) value, value_size, 880 (node->value, node->value_len, &len2, (unsigned char *) value,
874 len) != ASN1_SUCCESS) 881 value_size, len) != ASN1_SUCCESS)
875 return ASN1_MEM_ERROR; 882 return ASN1_MEM_ERROR;
876 break; 883 break;
877 case TYPE_GENERALSTRING: 884 case TYPE_GENERALSTRING:
878 len2 = -1; 885 len2 = -1;
879 if (MHD__asn1_get_octet_der 886 if (MHD__asn1_get_octet_der
880 (node->value, node->value_len, &len2, (unsigned char*) value, value_size, 887 (node->value, node->value_len, &len2, (unsigned char *) value,
881 len) != ASN1_SUCCESS) 888 value_size, len) != ASN1_SUCCESS)
882 return ASN1_MEM_ERROR; 889 return ASN1_MEM_ERROR;
883 break; 890 break;
884 case TYPE_BIT_STRING: 891 case TYPE_BIT_STRING:
885 len2 = -1; 892 len2 = -1;
886 if (MHD__asn1_get_bit_der 893 if (MHD__asn1_get_bit_der
887 (node->value, node->value_len, &len2, (unsigned char*) value, value_size, 894 (node->value, node->value_len, &len2, (unsigned char *) value,
888 len) != ASN1_SUCCESS) 895 value_size, len) != ASN1_SUCCESS)
889 return ASN1_MEM_ERROR; 896 return ASN1_MEM_ERROR;
890 break; 897 break;
891 case TYPE_CHOICE: 898 case TYPE_CHOICE:
@@ -904,5 +911,3 @@ MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
904 } 911 }
905 return ASN1_SUCCESS; 912 return ASN1_SUCCESS;
906} 913}
907
908