Imported Upstream version 1.6.1
[platform/upstream/libksba.git] / src / asn1-parse.c
index 821a504..4886345 100644 (file)
@@ -94,9 +94,6 @@
 /* #define YYDEBUG 1 */
 #define MAX_STRING_LENGTH 129
 
-/* Dummy print so that yytoknum will be defined.  */
-#define YYPRINT(F, N, L)  do { } while (0);
-
 
 /* constants used in the grammar */
 enum {
@@ -115,7 +112,7 @@ struct parser_control_s {
 #define PARSECTL ((struct parser_control_s *)parm)
 
 
-#line 119 "asn1-parse.c" /* yacc.c:337  */
+#line 116 "asn1-parse.c" /* yacc.c:337  */
 # ifndef YY_NULLPTR
 #  if defined __cplusplus
 #   if 201103L <= __cplusplus
@@ -202,13 +199,13 @@ extern int yydebug;
 
 union YYSTYPE
 {
-#line 97 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:352  */
+#line 94 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:352  */
 
   unsigned int constant;
   char str[MAX_STRING_LENGTH];
   AsnNode node;
 
-#line 212 "asn1-parse.c" /* yacc.c:352  */
+#line 209 "asn1-parse.c" /* yacc.c:352  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -223,7 +220,7 @@ int yyparse (void *parm);
 
 
 /* Second part of user prologue.  */
-#line 103 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:354  */
+#line 100 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:354  */
 
 static AsnNode new_node (struct parser_control_s *parsectl, node_type_t type);
 #define NEW_NODE(a)  (new_node (PARSECTL, (a)))
@@ -238,7 +235,7 @@ static void set_down (AsnNode node, AsnNode down);
 static int yylex (YYSTYPE *lvalp, void *parm);
 static void yyerror (void *parm, const char *s);
 
-#line 242 "asn1-parse.c" /* yacc.c:354  */
+#line 239 "asn1-parse.c" /* yacc.c:354  */
 
 #ifdef short
 # undef short
@@ -531,18 +528,18 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   184,   184,   185,   188,   189,   192,   199,   200,   203,
-     204,   207,   208,   211,   216,   224,   225,   250,   255,   263,
-     265,   272,   273,   274,   277,   283,   291,   293,   298,   305,
-     310,   315,   322,   326,   332,   343,   349,   353,   359,   365,
-     374,   378,   384,   388,   396,   397,   404,   405,   412,   414,
-     421,   423,   430,   431,   438,   440,   447,   448,   457,   458,
-     459,   460,   461,   462,   463,   469,   477,   481,   488,   492,
-     500,   508,   514,   519,   526,   527,   528,   529,   530,   531,
-     532,   533,   534,   535,   536,   537,   538,   544,   548,   559,
-     563,   570,   577,   584,   586,   593,   598,   603,   612,   617,
-     622,   631,   638,   642,   654,   661,   668,   677,   686,   687,
-     690,   692,   699,   708,   724,   725,   728
+       0,   179,   179,   180,   183,   184,   187,   194,   195,   198,
+     199,   202,   203,   206,   211,   219,   220,   245,   250,   258,
+     260,   267,   268,   269,   272,   278,   286,   288,   293,   300,
+     305,   310,   317,   321,   327,   338,   344,   348,   354,   360,
+     369,   373,   379,   383,   391,   392,   399,   400,   407,   409,
+     416,   418,   425,   426,   433,   435,   442,   443,   452,   453,
+     454,   455,   456,   457,   458,   464,   472,   476,   483,   487,
+     495,   503,   509,   514,   521,   522,   523,   524,   525,   526,
+     527,   528,   529,   530,   531,   532,   533,   539,   543,   554,
+     558,   565,   572,   579,   581,   588,   593,   598,   607,   612,
+     617,   626,   633,   637,   649,   656,   663,   672,   681,   682,
+     685,   687,   694,   703,   719,   720,   723
 };
 #endif
 
@@ -1480,239 +1477,239 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-#line 188 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 183 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { strcpy((yyval.str),(yyvsp[0].str)); }
-#line 1486 "asn1-parse.c" /* yacc.c:1652  */
+#line 1483 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 5:
-#line 189 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 184 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { strcpy((yyval.str),(yyvsp[0].str)); }
-#line 1492 "asn1-parse.c" /* yacc.c:1652  */
+#line 1489 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 6:
-#line 193 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 188 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                   strcpy((yyval.str),"-");
                   strcat((yyval.str),(yyvsp[0].str));
                 }
-#line 1501 "asn1-parse.c" /* yacc.c:1652  */
+#line 1498 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 7:
-#line 199 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 194 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { strcpy((yyval.str),(yyvsp[0].str)); }
-#line 1507 "asn1-parse.c" /* yacc.c:1652  */
+#line 1504 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 8:
-#line 200 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 195 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { strcpy((yyval.str),(yyvsp[0].str)); }
-#line 1513 "asn1-parse.c" /* yacc.c:1652  */
+#line 1510 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 9:
-#line 203 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 198 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {strcpy((yyval.str),(yyvsp[0].str));}
-#line 1519 "asn1-parse.c" /* yacc.c:1652  */
+#line 1516 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 10:
-#line 204 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 199 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {strcpy((yyval.str),(yyvsp[0].str));}
-#line 1525 "asn1-parse.c" /* yacc.c:1652  */
+#line 1522 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 11:
-#line 207 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 202 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {strcpy((yyval.str),(yyvsp[0].str));}
-#line 1531 "asn1-parse.c" /* yacc.c:1652  */
+#line 1528 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 12:
-#line 208 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 203 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {strcpy((yyval.str),(yyvsp[0].str));}
-#line 1537 "asn1-parse.c" /* yacc.c:1652  */
+#line 1534 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 13:
-#line 212 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 207 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                           (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                           set_str_value ((yyval.node), (yyvsp[-1].str));
                         }
-#line 1546 "asn1-parse.c" /* yacc.c:1652  */
+#line 1543 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 14:
-#line 217 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 212 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                           (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                           set_name ((yyval.node), (yyvsp[-3].str));
                           set_str_value ((yyval.node), (yyvsp[-1].str));
                         }
-#line 1556 "asn1-parse.c" /* yacc.c:1652  */
+#line 1553 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 15:
-#line 224 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 219 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node)=(yyvsp[0].node); }
-#line 1562 "asn1-parse.c" /* yacc.c:1652  */
+#line 1559 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 16:
-#line 226 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 221 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                     (yyval.node) = (yyvsp[-2].node);
                     append_right ((yyvsp[-2].node), (yyvsp[0].node));
                   }
-#line 1571 "asn1-parse.c" /* yacc.c:1652  */
+#line 1568 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 17:
-#line 251 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 246 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                    set_str_value ((yyval.node), (yyvsp[0].str));
                  }
-#line 1580 "asn1-parse.c" /* yacc.c:1652  */
+#line 1577 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 18:
-#line 256 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 251 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                    set_name ((yyval.node), (yyvsp[-3].str));
                    set_str_value ((yyval.node), (yyvsp[-1].str));
                  }
-#line 1590 "asn1-parse.c" /* yacc.c:1652  */
+#line 1587 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 19:
-#line 264 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 259 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node)=(yyvsp[0].node);}
-#line 1596 "asn1-parse.c" /* yacc.c:1652  */
+#line 1593 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 20:
-#line 266 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 261 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                           (yyval.node)=(yyvsp[-1].node);
                           append_right ((yyval.node), (yyvsp[0].node));
                         }
-#line 1605 "asn1-parse.c" /* yacc.c:1652  */
+#line 1602 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 21:
-#line 272 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 267 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CLASS_UNIVERSAL;   }
-#line 1611 "asn1-parse.c" /* yacc.c:1652  */
+#line 1608 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 22:
-#line 273 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 268 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CLASS_PRIVATE;     }
-#line 1617 "asn1-parse.c" /* yacc.c:1652  */
+#line 1614 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 23:
-#line 274 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 269 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CLASS_APPLICATION; }
-#line 1623 "asn1-parse.c" /* yacc.c:1652  */
+#line 1620 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 24:
-#line 278 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 273 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                   (yyval.node) = NEW_NODE (TYPE_TAG);
                   (yyval.node)->flags.class = CLASS_CONTEXT;
                   set_ulong_value ((yyval.node), (yyvsp[-1].str));
                 }
-#line 1633 "asn1-parse.c" /* yacc.c:1652  */
+#line 1630 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 25:
-#line 284 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 279 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                   (yyval.node) = NEW_NODE (TYPE_TAG);
                   (yyval.node)->flags.class = (yyvsp[-2].constant);
                   set_ulong_value ((yyval.node), (yyvsp[-1].str));
                 }
-#line 1643 "asn1-parse.c" /* yacc.c:1652  */
+#line 1640 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 26:
-#line 292 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 287 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = (yyvsp[0].node); }
-#line 1649 "asn1-parse.c" /* yacc.c:1652  */
+#line 1646 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 27:
-#line 294 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 289 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
            (yyval.node) = (yyvsp[-1].node);
            (yyval.node)->flags.explicit = 1;
          }
-#line 1658 "asn1-parse.c" /* yacc.c:1652  */
+#line 1655 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 28:
-#line 299 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 294 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
            (yyval.node) = (yyvsp[-1].node);
            (yyval.node)->flags.implicit = 1;
          }
-#line 1667 "asn1-parse.c" /* yacc.c:1652  */
+#line 1664 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 29:
-#line 306 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 301 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_DEFAULT);
                  set_str_value ((yyval.node), (yyvsp[0].str));
                }
-#line 1676 "asn1-parse.c" /* yacc.c:1652  */
+#line 1673 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 30:
-#line 311 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 306 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_DEFAULT);
                  (yyval.node)->flags.is_true = 1;
                }
-#line 1685 "asn1-parse.c" /* yacc.c:1652  */
+#line 1682 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 31:
-#line 316 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 311 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_DEFAULT);
                  (yyval.node)->flags.is_false = 1;
                }
-#line 1694 "asn1-parse.c" /* yacc.c:1652  */
+#line 1691 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 32:
-#line 323 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 318 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_INTEGER);
                }
-#line 1702 "asn1-parse.c" /* yacc.c:1652  */
+#line 1699 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 33:
-#line 327 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 322 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_INTEGER);
                  (yyval.node)->flags.has_list = 1;
                  set_down ((yyval.node), (yyvsp[-1].node));
                }
-#line 1712 "asn1-parse.c" /* yacc.c:1652  */
+#line 1709 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 34:
-#line 333 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 328 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_INTEGER);
                  (yyval.node)->flags.has_min_max = 1;
@@ -1721,367 +1718,367 @@ yyreduce:
                  set_str_value ((yyval.node)->down, (yyvsp[-1].str));
                  set_name ((yyval.node)->down, (yyvsp[-4].str));
                }
-#line 1725 "asn1-parse.c" /* yacc.c:1652  */
+#line 1722 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 35:
-#line 344 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 339 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                 (yyval.node) = NEW_NODE (TYPE_BOOLEAN);
               }
-#line 1733 "asn1-parse.c" /* yacc.c:1652  */
+#line 1730 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 36:
-#line 350 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 345 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
             (yyval.node) = NEW_NODE (TYPE_UTC_TIME);
           }
-#line 1741 "asn1-parse.c" /* yacc.c:1652  */
+#line 1738 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 37:
-#line 354 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 349 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
             (yyval.node) = NEW_NODE (TYPE_GENERALIZED_TIME);
           }
-#line 1749 "asn1-parse.c" /* yacc.c:1652  */
+#line 1746 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 38:
-#line 360 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 355 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SIZE);
                (yyval.node)->flags.one_param = 1;
                set_str_value ((yyval.node), (yyvsp[-1].str));
              }
-#line 1759 "asn1-parse.c" /* yacc.c:1652  */
+#line 1756 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 39:
-#line 366 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 361 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SIZE);
                (yyval.node)->flags.has_min_max = 1;
                set_str_value ((yyval.node), (yyvsp[-4].str));
                set_name ((yyval.node), (yyvsp[-1].str));
              }
-#line 1770 "asn1-parse.c" /* yacc.c:1652  */
+#line 1767 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 40:
-#line 375 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 370 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node)=(yyvsp[0].node);
              }
-#line 1778 "asn1-parse.c" /* yacc.c:1652  */
+#line 1775 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 41:
-#line 379 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 374 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node)=(yyvsp[-1].node);
              }
-#line 1786 "asn1-parse.c" /* yacc.c:1652  */
+#line 1783 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 42:
-#line 385 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 380 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_OCTET_STRING);
                      }
-#line 1794 "asn1-parse.c" /* yacc.c:1652  */
+#line 1791 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 43:
-#line 389 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 384 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_OCTET_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1804 "asn1-parse.c" /* yacc.c:1652  */
+#line 1801 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 44:
-#line 396 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 391 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_UTF8_STRING); }
-#line 1810 "asn1-parse.c" /* yacc.c:1652  */
+#line 1807 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 45:
-#line 398 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 393 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_UTF8_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1820 "asn1-parse.c" /* yacc.c:1652  */
+#line 1817 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 46:
-#line 404 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 399 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_NUMERIC_STRING); }
-#line 1826 "asn1-parse.c" /* yacc.c:1652  */
+#line 1823 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 47:
-#line 406 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 401 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_NUMERIC_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1836 "asn1-parse.c" /* yacc.c:1652  */
+#line 1833 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 48:
-#line 413 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 408 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_PRINTABLE_STRING); }
-#line 1842 "asn1-parse.c" /* yacc.c:1652  */
+#line 1839 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 49:
-#line 415 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 410 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                           (yyval.node) = NEW_NODE (TYPE_PRINTABLE_STRING);
                           (yyval.node)->flags.has_size = 1;
                           set_down ((yyval.node),(yyvsp[0].node));
                         }
-#line 1852 "asn1-parse.c" /* yacc.c:1652  */
+#line 1849 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 50:
-#line 422 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 417 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_TELETEX_STRING); }
-#line 1858 "asn1-parse.c" /* yacc.c:1652  */
+#line 1855 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 51:
-#line 424 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 419 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_TELETEX_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1868 "asn1-parse.c" /* yacc.c:1652  */
+#line 1865 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 52:
-#line 430 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 425 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_IA5_STRING); }
-#line 1874 "asn1-parse.c" /* yacc.c:1652  */
+#line 1871 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 53:
-#line 432 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 427 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_IA5_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1884 "asn1-parse.c" /* yacc.c:1652  */
+#line 1881 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 54:
-#line 439 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 434 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_UNIVERSAL_STRING); }
-#line 1890 "asn1-parse.c" /* yacc.c:1652  */
+#line 1887 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 55:
-#line 441 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 436 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                            (yyval.node) = NEW_NODE (TYPE_UNIVERSAL_STRING);
                            (yyval.node)->flags.has_size = 1;
                            set_down ((yyval.node),(yyvsp[0].node));
                          }
-#line 1900 "asn1-parse.c" /* yacc.c:1652  */
+#line 1897 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 56:
-#line 447 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 442 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_BMP_STRING); }
-#line 1906 "asn1-parse.c" /* yacc.c:1652  */
+#line 1903 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 57:
-#line 449 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 444 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_BMP_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1916 "asn1-parse.c" /* yacc.c:1652  */
+#line 1913 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 65:
-#line 470 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 465 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                    set_name ((yyval.node), (yyvsp[-3].str));
                    set_str_value ((yyval.node), (yyvsp[-1].str));
                  }
-#line 1926 "asn1-parse.c" /* yacc.c:1652  */
+#line 1923 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 66:
-#line 478 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 473 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                         (yyval.node)=(yyvsp[0].node);
                       }
-#line 1934 "asn1-parse.c" /* yacc.c:1652  */
+#line 1931 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 67:
-#line 482 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 477 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                         (yyval.node)=(yyvsp[-2].node);
                         append_right ((yyval.node), (yyvsp[0].node));
                       }
-#line 1943 "asn1-parse.c" /* yacc.c:1652  */
+#line 1940 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 68:
-#line 489 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 484 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_BIT_STRING);
                    }
-#line 1951 "asn1-parse.c" /* yacc.c:1652  */
+#line 1948 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 69:
-#line 493 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 488 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_BIT_STRING);
                      (yyval.node)->flags.has_list = 1;
                      set_down ((yyval.node), (yyvsp[-1].node));
                    }
-#line 1961 "asn1-parse.c" /* yacc.c:1652  */
+#line 1958 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 70:
-#line 501 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 496 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_ENUMERATED);
                      (yyval.node)->flags.has_list = 1;
                      set_down ((yyval.node), (yyvsp[-1].node));
                    }
-#line 1971 "asn1-parse.c" /* yacc.c:1652  */
+#line 1968 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 71:
-#line 509 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 504 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_OBJECT_ID);
                    }
-#line 1979 "asn1-parse.c" /* yacc.c:1652  */
+#line 1976 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 72:
-#line 515 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 510 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                       (yyval.node) = NEW_NODE (TYPE_IDENTIFIER);
                       set_str_value ((yyval.node), (yyvsp[0].str));
                     }
-#line 1988 "asn1-parse.c" /* yacc.c:1652  */
+#line 1985 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 73:
-#line 520 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 515 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                       (yyval.node) = NEW_NODE (TYPE_IDENTIFIER);
                       (yyval.node)->flags.has_size = 1;
                       set_str_value ((yyval.node), (yyvsp[-1].str));
                       set_down ((yyval.node), (yyvsp[0].node));
                     }
-#line 1999 "asn1-parse.c" /* yacc.c:1652  */
+#line 1996 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 74:
-#line 526 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 521 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2005 "asn1-parse.c" /* yacc.c:1652  */
+#line 2002 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 75:
-#line 527 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 522 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2011 "asn1-parse.c" /* yacc.c:1652  */
+#line 2008 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 76:
-#line 528 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 523 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2017 "asn1-parse.c" /* yacc.c:1652  */
+#line 2014 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 77:
-#line 529 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 524 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2023 "asn1-parse.c" /* yacc.c:1652  */
+#line 2020 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 79:
-#line 531 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 526 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2029 "asn1-parse.c" /* yacc.c:1652  */
+#line 2026 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 80:
-#line 532 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 527 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2035 "asn1-parse.c" /* yacc.c:1652  */
+#line 2032 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 81:
-#line 533 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 528 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2041 "asn1-parse.c" /* yacc.c:1652  */
+#line 2038 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 82:
-#line 534 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 529 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2047 "asn1-parse.c" /* yacc.c:1652  */
+#line 2044 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 83:
-#line 535 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 530 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2053 "asn1-parse.c" /* yacc.c:1652  */
+#line 2050 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 84:
-#line 536 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 531 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2059 "asn1-parse.c" /* yacc.c:1652  */
+#line 2056 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 85:
-#line 537 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 532 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2065 "asn1-parse.c" /* yacc.c:1652  */
+#line 2062 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 86:
-#line 539 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 534 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                       (yyval.node) = NEW_NODE(TYPE_NULL);
                     }
-#line 2073 "asn1-parse.c" /* yacc.c:1652  */
+#line 2070 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 87:
-#line 545 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 540 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                              (yyval.node) = (yyvsp[0].node);
                            }
-#line 2081 "asn1-parse.c" /* yacc.c:1652  */
+#line 2078 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 88:
-#line 549 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 544 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
 /*                               $2->flags.has_tag = 1; */
 /*                               $$ = $2; */
@@ -2090,138 +2087,138 @@ yyreduce:
                              (yyval.node) = (yyvsp[-1].node);
                              set_down ((yyval.node), (yyvsp[0].node));
                            }
-#line 2094 "asn1-parse.c" /* yacc.c:1652  */
+#line 2091 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 89:
-#line 560 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 555 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                                    (yyval.node) = (yyvsp[0].node);
                                  }
-#line 2102 "asn1-parse.c" /* yacc.c:1652  */
+#line 2099 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 90:
-#line 564 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 559 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                                    (yyvsp[-1].node)->flags.has_default = 1;
                                    (yyval.node) = (yyvsp[-1].node);
                                    set_right ((yyvsp[0].node), (yyval.node)->down);
                                    set_down ((yyval.node), (yyvsp[0].node));
                                  }
-#line 2113 "asn1-parse.c" /* yacc.c:1652  */
+#line 2110 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 91:
-#line 571 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 566 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                                    (yyvsp[-1].node)->flags.is_optional = 1;
                                    (yyval.node) = (yyvsp[-1].node);
                                  }
-#line 2122 "asn1-parse.c" /* yacc.c:1652  */
+#line 2119 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 92:
-#line 578 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 573 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  set_name ((yyvsp[0].node), (yyvsp[-1].str));
                  (yyval.node) = (yyvsp[0].node);
                }
-#line 2131 "asn1-parse.c" /* yacc.c:1652  */
+#line 2128 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 93:
-#line 585 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 580 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node)=(yyvsp[0].node); }
-#line 2137 "asn1-parse.c" /* yacc.c:1652  */
+#line 2134 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 94:
-#line 587 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 582 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                       (yyval.node)=(yyvsp[-2].node);
                       append_right ((yyval.node), (yyvsp[0].node));
                     }
-#line 2146 "asn1-parse.c" /* yacc.c:1652  */
+#line 2143 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 95:
-#line 594 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 589 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_SEQUENCE);
                    set_down ((yyval.node), (yyvsp[-1].node));
                  }
-#line 2155 "asn1-parse.c" /* yacc.c:1652  */
+#line 2152 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 96:
-#line 599 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 594 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_SEQUENCE_OF);
                    set_down ((yyval.node), (yyvsp[0].node));
                  }
-#line 2164 "asn1-parse.c" /* yacc.c:1652  */
+#line 2161 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 97:
-#line 604 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 599 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_SEQUENCE_OF);
                    (yyval.node)->flags.has_size = 1;
                    set_right ((yyvsp[-2].node),(yyvsp[0].node));
                    set_down ((yyval.node),(yyvsp[-2].node));
                  }
-#line 2175 "asn1-parse.c" /* yacc.c:1652  */
+#line 2172 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 98:
-#line 613 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 608 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SET);
                set_down ((yyval.node), (yyvsp[-1].node));
              }
-#line 2184 "asn1-parse.c" /* yacc.c:1652  */
+#line 2181 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 99:
-#line 618 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 613 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SET_OF);
                set_down ((yyval.node), (yyvsp[0].node));
              }
-#line 2193 "asn1-parse.c" /* yacc.c:1652  */
+#line 2190 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 100:
-#line 623 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 618 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SET_OF);
                (yyval.node)->flags.has_size = 1;
                set_right ((yyvsp[-2].node), (yyvsp[0].node));
                set_down ((yyval.node), (yyvsp[-2].node));
              }
-#line 2204 "asn1-parse.c" /* yacc.c:1652  */
+#line 2201 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 101:
-#line 632 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 627 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                   (yyval.node) = NEW_NODE (TYPE_CHOICE);
                   set_down ((yyval.node), (yyvsp[-1].node));
                 }
-#line 2213 "asn1-parse.c" /* yacc.c:1652  */
+#line 2210 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 102:
-#line 639 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 634 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_ANY);
              }
-#line 2221 "asn1-parse.c" /* yacc.c:1652  */
+#line 2218 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 103:
-#line 643 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 638 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                AsnNode node;
 
@@ -2231,31 +2228,31 @@ yyreduce:
                set_name (node, (yyvsp[0].str));
                set_down((yyval.node), node);
              }
-#line 2235 "asn1-parse.c" /* yacc.c:1652  */
+#line 2232 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 104:
-#line 655 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 650 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                set_name ((yyvsp[0].node), (yyvsp[-2].str));
                (yyval.node) = (yyvsp[0].node);
              }
-#line 2244 "asn1-parse.c" /* yacc.c:1652  */
+#line 2241 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 105:
-#line 662 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 657 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_OBJECT_ID);
                    (yyval.node)->flags.assignment = 1;
                    set_name ((yyval.node), (yyvsp[-6].str));
                    set_down ((yyval.node), (yyvsp[-1].node));
                  }
-#line 2255 "asn1-parse.c" /* yacc.c:1652  */
+#line 2252 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 106:
-#line 669 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 664 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_OBJECT_ID);
                    (yyval.node)->flags.assignment = 1;
@@ -2264,77 +2261,77 @@ yyreduce:
                    set_str_value ((yyval.node), (yyvsp[-4].str));
                    set_down ((yyval.node), (yyvsp[-1].node));
                  }
-#line 2268 "asn1-parse.c" /* yacc.c:1652  */
+#line 2265 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 107:
-#line 678 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 673 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_INTEGER);
                    (yyval.node)->flags.assignment = 1;
                    set_name ((yyval.node), (yyvsp[-3].str));
                    set_str_value ((yyval.node), (yyvsp[0].str));
                  }
-#line 2279 "asn1-parse.c" /* yacc.c:1652  */
+#line 2276 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 108:
-#line 686 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 681 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = (yyvsp[0].node); }
-#line 2285 "asn1-parse.c" /* yacc.c:1652  */
+#line 2282 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 109:
-#line 687 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 682 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = (yyvsp[0].node); }
-#line 2291 "asn1-parse.c" /* yacc.c:1652  */
+#line 2288 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 110:
-#line 691 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 686 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = (yyvsp[0].node); }
-#line 2297 "asn1-parse.c" /* yacc.c:1652  */
+#line 2294 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 111:
-#line 693 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 688 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                          (yyval.node) = (yyvsp[-1].node);
                          append_right ((yyval.node), (yyvsp[0].node));
                        }
-#line 2306 "asn1-parse.c" /* yacc.c:1652  */
+#line 2303 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 112:
-#line 700 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 695 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_OBJECT_ID);
                      set_down ((yyval.node), (yyvsp[-1].node));
                      set_name ((yyval.node), (yyvsp[-3].str));
                    }
-#line 2316 "asn1-parse.c" /* yacc.c:1652  */
+#line 2313 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 113:
-#line 708 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 703 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node)=NULL;}
-#line 2322 "asn1-parse.c" /* yacc.c:1652  */
+#line 2319 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 114:
-#line 724 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 719 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CONST_EXPLICIT; }
-#line 2328 "asn1-parse.c" /* yacc.c:1652  */
+#line 2325 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 115:
-#line 725 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 720 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CONST_IMPLICIT; }
-#line 2334 "asn1-parse.c" /* yacc.c:1652  */
+#line 2331 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 116:
-#line 731 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
+#line 726 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  AsnNode node;
 
@@ -2366,11 +2363,11 @@ yyreduce:
                  PARSECTL->result_parse = _ksba_asn_check_identifier((yyval.node));
                  PARSECTL->parse_tree=(yyval.node);
                }
-#line 2370 "asn1-parse.c" /* yacc.c:1652  */
+#line 2367 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
 
-#line 2374 "asn1-parse.c" /* yacc.c:1652  */
+#line 2371 "asn1-parse.c" /* yacc.c:1652  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2601,10 +2598,60 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 764 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1918  */
+#line 759 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1918  */
 
 
 \f
+struct token_table_s {
+  const char *word;
+  int token;
+};
+
+static struct token_table_s token_table[] = {
+  { "::=",             ASSIG           },
+  { "ANY",             ANY             },
+  { "APPLICATION",     APPLICATION     },
+  { "BEGIN",           ksba_BEGIN      },
+  { "BIT",             BIT             },
+  { "BMPString",       BMPSTRING       },
+  { "BOOLEAN",         ksba_BOOLEAN    },
+  { "BY",              BY              },
+  { "CHOICE",          CHOICE          },
+  { "DEFAULT",         DEFAULT         },
+  { "DEFINED",         DEFINED         },
+  { "DEFINITIONS",     DEFINITIONS     },
+  { "END",             ksba_END        },
+  { "ENUMERATED",      ENUMERATED      },
+  { "EXPLICIT",        EXPLICIT        },
+  { "FALSE",           ksba_FALSE      },
+  { "FROM",            FROM            },
+  { "GeneralizedTime", GeneralizedTime },
+  { "IA5String",       IA5STRING       },
+  { "IDENTIFIER",      STR_IDENTIFIER  },
+  { "IMPLICIT",        IMPLICIT        },
+  { "IMPORTS",         IMPORTS         },
+  { "INTEGER",         INTEGER         },
+  { "NULL",            TOKEN_NULL      },
+  { "NumericString",   NUMERICSTRING   },
+  { "OBJECT",          OBJECT          },
+  { "OCTET",           OCTET           },
+  { "OF",              OF              },
+  { "OPTIONAL",        OPTIONAL        },
+  { "PRIVATE",         PRIVATE         },
+  { "PrintableString", PRINTABLESTRING },
+  { "SEQUENCE",        SEQUENCE        },
+  { "SET",             SET             },
+  { "SIZE",            SIZE            },
+  { "STRING",          STRING          },
+  { "TAGS",            TAGS            },
+  { "TRUE",            ksba_TRUE       },
+  { "TeletexString",   TELETEXSTRING   },
+  { "UNIVERSAL",       UNIVERSAL       },
+  { "UTCTime",         UTCTime         },
+  { "UTF8String",      UTF8STRING      },
+  { "UniversalString", UNIVERSALSTRING },
+};
+
 /*************************************************************/
 /*  Function: yylex                                          */
 /*  Description: looks for tokens in file_asn1 pointer file. */
@@ -2616,7 +2663,6 @@ yylex (YYSTYPE *lvalp, void *parm)
 {
   int c,counter=0,k;
   char string[MAX_STRING_LENGTH];
-  size_t len;
   FILE *fp = PARSECTL->fp;
 
   if (!PARSECTL->lineno)
@@ -2693,13 +2739,10 @@ yylex (YYSTYPE *lvalp, void *parm)
         }
 
       /* Is STRING a keyword? */
-      len = strlen (string);
-      for (k = 0; k < YYNTOKENS; k++)
+      for (k = 0; k < DIM (token_table); k++)
         {
-          if (yytname[k] && yytname[k][0] == '\"'
-              && !strncmp (yytname[k] + 1, string, len)
-              && yytname[k][len + 1] == '\"' && !yytname[k][len + 2])
-            return yytoknum[k];
+          if (!strcmp (token_table[k].word, string))
+            return token_table[k].token;
         }
 
       /* STRING is an IDENTIFIER */