libtasn1-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libtasn1-commit] [SCM] GNU libtasn1 branch, master, updated. libtasn1_2


From: Simon Josefsson
Subject: [Libtasn1-commit] [SCM] GNU libtasn1 branch, master, updated. libtasn1_2_5-15-gf03292a
Date: Tue, 30 Mar 2010 15:50:04 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU libtasn1".

http://git.savannah.gnu.org/cgit/libtasn1.git/commit/?id=f03292a814680d47164c14d40c586138207c2109

The branch, master has been updated
       via  f03292a814680d47164c14d40c586138207c2109 (commit)
      from  0c3f2e71860f17ff9f95591856cedcc3f3dd809b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit f03292a814680d47164c14d40c586138207c2109
Author: Simon Josefsson <address@hidden>
Date:   Tue Mar 30 17:50:00 2010 +0200

    Remove generated file.

-----------------------------------------------------------------------

Summary of changes:
 doc/cyclo/cyclo-libtasn1.html | 8876 -----------------------------------------
 1 files changed, 0 insertions(+), 8876 deletions(-)
 delete mode 100644 doc/cyclo/cyclo-libtasn1.html

diff --git a/doc/cyclo/cyclo-libtasn1.html b/doc/cyclo/cyclo-libtasn1.html
deleted file mode 100644
index 9d69953..0000000
--- a/doc/cyclo/cyclo-libtasn1.html
+++ /dev/null
@@ -1,8876 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html401/loose.dtd";>
-<html>
-<!-- Generated by gnulib's pmccabe2html at 1236177370 -->
-<head>
-<title>Cyclomatic Complexity report for libtasn1</title>
-
-<meta name="description" content="Cyclomatic Complexity report for libtasn1">
-<meta name="keywords" content="Cyclomatic Complexity report for libtasn1">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
-<meta name="Generator" content="pmccabe2html">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<script language="javascript" type="text/javascript">
-function show_hide(idCapa, idButton, fuerzaVisibilidad){        var button = 
document.getElementById(idButton);        var capa = 
document.getElementById(idCapa);     if (capa)       {               if 
(fuerzaVisibilidad && fuerzaVisibilidad!="") {                       if 
(fuerzaVisibilidad=="visible") capa.style.display="";                        
else capa.style.display="none";         }               else            {       
                if (capa.style.display == "none") {                             
capa.style.display = "";                                button.innerHTML = 
"&uarr;";                    } else {                                
capa.style.display = "none";                                button.innerHTML = 
"&darr;";                        }               }       }}
-</script>
-<style type ="text/css" media="screen">
-<!--
-body {
-
-    font-family: Helvetica, sans-serif;
-
-}
-
-.page_title {
-
-    font: 18pt Georgia, serif;
-/*    font-size: 1.5em;
-    font-weight: bold; */
-    color: darkred;
-    border-bottom: 2px solid darkred;
-}
-
-.section_title {
-
-    font: 14pt Georgia, serif;
-    color: darkred;
-    border-bottom: 2px dashed darkred;
-}
-
-.report_timestamp {
-
-    color: darkred;
-    font-weight: bold;
-
-}
-
-.function_src {
-
-    text-align: left;
-    background: white;
-}
-
-.resume_table {
-
-}
-
-.resume_header_entry {
-    
-    color: black;
-}
-
-.resume_number_entry {
-
-    color: darkred;
-    font-weight: bold;
-    text-align: right;
-}
-
-.ranges_table {
-
-    border-spacing: 0px;
-    border-bottom: solid 2px black;
-    border-top: solid 2px black;
-    border-left: solid 2px black;
-    border-right: solid 2px black;
-}
-
-.ranges_header_entry {
-
-    padding: 5px;
-    border-bottom: solid 1px black;
-    font-size: 1em;
-    font-weight: bold;
-    color: darkred;
-    text-align: left;
-}
-
-.ranges_entry {
-
-}
-
-.ranges_entry_simple {
-
-    background: #87ff75; 
-
-}
-
-.ranges_entry_moderate {
-
-    background: #fffc60;
-
-}
-
-.ranges_entry_high {
-
-    background: #ff5a5d;
-
-}
-
-.ranges_entry_untestable {
-
-    background: #993300
-
-}
-
-
-.function_table {
-
-    border-spacing: 0px;
-    border-bottom: solid 2px black;
-    border-top: solid 2px black;
-    border-left: solid 2px black;
-    border-right: solid 2px black;
-}
-
-.function_table_caption {
-
-    font-size: 1.1em;
-    font-weight: bold;
-    color: black;
-    padding: 5px;
-}
-
-.function_table_header {
-    
-}
-
-
-.function_table_header_entry {
-
-    padding: 5px;
-    border-bottom: solid 1px black;
-    font-size: 1em;
-    font-weight: bold;
-    color: darkred;
-    text-align: left;
-}
-
-.function_entry {
-
-
-}
-
-
-.function_entry_simple {
-
-    background: #87ff75; 
-
-}
-
-.function_entry_moderate {
-
-    background: #fffc60;
-
-}
-
-.function_entry_high {
-
-    background: #ff5a5d;
-
-}
-
-.function_entry_untestable {
-
-    background: #993300
-
-}
-
-
-.function_entry_name {
-
-    font-size: 1em;
-    text-align: left;
-    font-weight: bold;
-    text-valign: top;
-
-    border-top: solid 1px black;
-    padding: 3px;
-}
-
-.function_entry_cyclo {
-
-    font-size: 1em;
-    text-align: right;
-    text-valign: top;
-
-    border-top: solid 1px black;
-    padding: 3px;
-}
-
-.function_entry_number {
-
-    font-size: 1em;
-    text-align: right;
-    text-valign: top;
-
-    border-top: solid 1px black;
-    padding: 3px;
-}
-
-.function_entry_filename {
-
-    font-size: 1em;
-    text-align: left;
-    text-valign: top;
-
-    border-top: solid 1px black;
-    padding: 3px;
-}
-
-.sidemenu {
-    
-    border: 1px black solid;
-    padding: 5px;
-
-}
-
-.sidemenuheader {
- 
-    color: darkred;
-    font-size: 1.1em;
-    font-weight: bold;
-    border-bottom: 1px dashed darkred;
-}
-
-.sidemenuentry {
-
-
-}
-
-.menu {
-
-}
-
--->
-</style />
-</head>
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" 
vlink="#800080" alink="#FF0000">
-<a href="http://josefsson.org/libtasn1/";>Back to libtasn1 
Homepage</a><br/><br/>
-<div class="page_title">libtasn1 Cyclomatic Complexity Report</div>
-<p>Report generated at: <span class="report_timestamp">Wed Mar 04 15:36:10 CET 
2009</div></p>
-<div class="section_title">Resume</div>
-<br/>
-<table class="resume_table">
-<tr>
-<td class="resume_header_entry">
-Total number of functions
-</td>
-<td class="resume_number_entry">
-98
-</td>
-</tr>
-<tr>
-<td class="resume_header_entry">
-Number of low risk functions
-</td>
-<td class="resume_number_entry">
-64
-</td>
-</tr>
-<tr>
-<td class="resume_header_entry">
-Number of moderate risk functions
-</td>
-<td class="resume_number_entry">
-17
-</td>
-</tr>
-<tr>
-<td class="resume_header_entry">
-Number of high risk functions
-</td>
-<td class="resume_number_entry">
-9
-</td>
-</tr>
-<tr>
-<td class="resume_header_entry">
-Number of untestable functions
-</td>
-<td class="resume_number_entry">
-8
-</td>
-</tr>
-</table>
-<br/>
-<div class="section_title">Details for all functions</div>
-<p>Used ranges:</p>
-<table class="ranges_table">
-<tr>
-<td class="ranges_header_entry">
-&nbsp;
-</td>
-<td class="ranges_header_entry">
-Cyclomatic Complexity
-</td>
-<td class="ranges_header_entry">
-Risk Evaluation
-</td>
-</tr>
-<tr>
-<td class="ranges_entry_simple">
-&nbsp;
-</td>
-<td class="ranges_entry">
-0 - 10
-</td>
-<td class="ranges_entry">
-Simple module, without much risk
-</td>
-</tr>
-<tr>
-<td class="ranges_entry_moderate">
-&nbsp;
-</td>
-<td class="ranges_entry">
-11 - 20
-</td>
-<td class="ranges_entry">
-More complex module, moderate risk
-</td>
-</tr>
-<tr>
-<td class="ranges_entry_high">
-&nbsp;
-</td>
-<td class="ranges_entry">
-21 - 50
-</td>
-<td class="ranges_entry">
-Complex module, high risk
-</td>
-</tr>
-<tr>
-<td class="ranges_entry_untestable">
-&nbsp;
-</td>
-<td class="ranges_entry">
-greater than 50
-</td>
-<td class="ranges_entry">
-Untestable module, very high risk
-</td>
-</tr>
-</table>
-<br/>
-<table width="90%" class="function_table" cellpadding="0" cellspacing="0">
-<tr class="function_table_header">
-<td class="function_table_header_entry">
-
-</td>
-<td class="function_table_header_entry">
-Function Name
-</td>
-<td class="function_table_header_entry">
-Cyclomatic
-<br/>
-Complexity
-</td>
-<td class="function_table_header_entry">
-Number of
-<br/>
-Statements
-</td>
-<td class="function_table_header_entry">
-Number of
-<br/>
-Lines
-</td>
-<td class="function_table_header_entry">
-Source File
-</td>
-</tr>
-<tr class="function_entry_untestable">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_der_decoding_element_src', 
'asn1_der_decoding_element_button')"><span 
id="asn1_der_decoding_element_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_der_decoding_element
-</td>
-<td class="function_entry_cyclo">
-154
-</td>
-<td class="function_entry_number">
-399
-</td>
-<td class="function_entry_number">
-738
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_der_decoding_element_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_der_decoding_element (ASN1_TYPE * structure, const char *elementName,
-                          const void *ider, int len, char *errorDescription)
-{
-  ASN1_TYPE node, p, p2, p3, nodeFound = ASN1_TYPE_EMPTY;
-  char temp[128], currentName[ASN1_MAX_NAME_SIZE * 10], *dot_p, *char_p;
-  int nameLen = ASN1_MAX_NAME_SIZE * 10 - 1, state;
-  int counter, len2, len3, len4, move, ris, tlen;
-  unsigned char class, *temp2;
-  unsigned long tag;
-  int indefinite, result;
-  const unsigned char *der = ider;
-
-  node = *structure;
-
-  if (node == ASN1_TYPE_EMPTY)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  if (elementName == NULL)
-    {
-      asn1_delete_structure (structure);
-      return ASN1_ELEMENT_NOT_FOUND;
-    }
-
-  if (node->type &amp; CONST_OPTION)
-    {
-      asn1_delete_structure (structure);
-      return ASN1_GENERIC_ERROR;
-    }
-
-  if ((*structure)->name)
-    {                          /* Has *structure got a name? */
-      nameLen -= strlen ((*structure)->name);
-      if (nameLen > 0)
-       strcpy (currentName, (*structure)->name);
-      else
-       {
-         asn1_delete_structure (structure);
-         return ASN1_MEM_ERROR;
-       }
-      if (!(strcmp (currentName, elementName)))
-       {
-         state = FOUND;
-         nodeFound = *structure;
-       }
-      else if (!memcmp (currentName, elementName, strlen (currentName)))
-       state = SAME_BRANCH;
-      else
-       state = OTHER_BRANCH;
-    }
-  else
-    {                          /* *structure doesn't have a name? */
-      currentName[0] = 0;
-      if (elementName[0] == 0)
-       {
-         state = FOUND;
-         nodeFound = *structure;
-       }
-      else
-       {
-         state = SAME_BRANCH;
-       }
-    }
-
-  counter = 0;
-  move = DOWN;
-  p = node;
-  while (1)
-    {
-
-      ris = ASN1_SUCCESS;
-
-      if (move != UP)
-       {
-         if (p->type &amp; CONST_SET)
-           {
-             p2 = _asn1_find_up (p);
-             len2 = strtol (p2->value, NULL, 10);
-             if (counter == len2)
-               {
-                 p = p2;
-                 move = UP;
-                 continue;
-               }
-             else if (counter > len2)
-               {
-                 asn1_delete_structure (structure);
-                 return ASN1_DER_ERROR;
-               }
-             p2 = p2->down;
-             while (p2)
-               {
-                 if ((p2->type &amp; CONST_SET) && (p2->type & CONST_NOT_USED))
-                   {
-                     if (type_field (p2->type) != TYPE_CHOICE)
-                       ris =
-                         _asn1_extract_tag_der (p2, der + counter,
-                                                len - counter, &amp;len2);
-                     else
-                       {
-                         p3 = p2->down;
-                         while (p3)
-                           {
-                             ris =
-                               _asn1_extract_tag_der (p3, der + counter,
-                                                      len - counter, 
&amp;len2);
-                             if (ris == ASN1_SUCCESS)
-                               break;
-                             p3 = p3->right;
-                           }
-                       }
-                     if (ris == ASN1_SUCCESS)
-                       {
-                         p2->type &amp;= ~CONST_NOT_USED;
-                         p = p2;
-                         break;
-                       }
-                   }
-                 p2 = p2->right;
-               }
-             if (p2 == NULL)
-               {
-                 asn1_delete_structure (structure);
-                 return ASN1_DER_ERROR;
-               }
-           }
-
-         if ((p->type &amp; CONST_OPTION) || (p->type & CONST_DEFAULT))
-           {
-             p2 = _asn1_find_up (p);
-             len2 = strtol (p2->value, NULL, 10);
-             if (counter == len2)
-               {
-                 if (p->right)
-                   {
-                     p2 = p->right;
-                     move = RIGHT;
-                   }
-                 else
-                   move = UP;
-
-                 if (p->type &amp; CONST_OPTION)
-                   asn1_delete_structure (&amp;p);
-
-                 p = p2;
-                 continue;
-               }
-           }
-
-         if (type_field (p->type) == TYPE_CHOICE)
-           {
-             while (p->down)
-               {
-                 if (counter < len)
-                   ris =
-                     _asn1_extract_tag_der (p->down, der + counter,
-                                            len - counter, &amp;len2);
-                 else
-                   ris = ASN1_DER_ERROR;
-                 if (ris == ASN1_SUCCESS)
-                   {
-                     while (p->down->right)
-                       {
-                         p2 = p->down->right;
-                         asn1_delete_structure (&amp;p2);
-                       }
-                     break;
-                   }
-                 else if (ris == ASN1_ERROR_TYPE_ANY)
-                   {
-                     asn1_delete_structure (structure);
-                     return ASN1_ERROR_TYPE_ANY;
-                   }
-                 else
-                   {
-                     p2 = p->down;
-                     asn1_delete_structure (&amp;p2);
-                   }
-               }
-
-             if (p->down == NULL)
-               {
-                 if (!(p->type &amp; CONST_OPTION))
-                   {
-                     asn1_delete_structure (structure);
-                     return ASN1_DER_ERROR;
-                   }
-               }
-             else
-               p = p->down;
-           }
-
-         if ((p->type &amp; CONST_OPTION) || (p->type & CONST_DEFAULT))
-           {
-             p2 = _asn1_find_up (p);
-             len2 = strtol (p2->value, NULL, 10);
-             if (counter > len2)
-               ris = ASN1_TAG_ERROR;
-           }
-
-         if (ris == ASN1_SUCCESS)
-           ris =
-             _asn1_extract_tag_der (p, der + counter, len - counter, 
&amp;len2);
-         if (ris != ASN1_SUCCESS)
-           {
-             if (p->type &amp; CONST_OPTION)
-               {
-                 p->type |= CONST_NOT_USED;
-                 move = RIGHT;
-               }
-             else if (p->type &amp; CONST_DEFAULT)
-               {
-                 _asn1_set_value (p, NULL, 0);
-                 move = RIGHT;
-               }
-             else
-               {
-                 if (errorDescription != NULL)
-                   _asn1_error_description_tag_error (p, errorDescription);
-
-                 asn1_delete_structure (structure);
-                 return ASN1_TAG_ERROR;
-               }
-           }
-         else
-           counter += len2;
-       }
-
-      if (ris == ASN1_SUCCESS)
-       {
-         switch (type_field (p->type))
-           {
-           case TYPE_NULL:
-             if (der[counter])
-               {
-                 asn1_delete_structure (structure);
-                 return ASN1_DER_ERROR;
-               }
-
-             if (p == nodeFound)
-               state = EXIT;
-
-             counter++;
-             move = RIGHT;
-             break;
-           case TYPE_BOOLEAN:
-             if (der[counter++] != 1)
-               {
-                 asn1_delete_structure (structure);
-                 return ASN1_DER_ERROR;
-               }
-
-             if (state == FOUND)
-               {
-                 if (der[counter++] == 0)
-                   _asn1_set_value (p, "F", 1);
-                 else
-                   _asn1_set_value (p, "T", 1);
-
-                 if (p == nodeFound)
-                   state = EXIT;
-
-               }
-             else
-               counter++;
-
-             move = RIGHT;
-             break;
-           case TYPE_INTEGER:
-           case TYPE_ENUMERATED:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             if (state == FOUND)
-               {
-                 if (len3 + len2 > len - counter)
-                   return ASN1_DER_ERROR;
-                 _asn1_set_value (p, der + counter, len3 + len2);
-
-                 if (p == nodeFound)
-                   state = EXIT;
-               }
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_OBJECT_ID:
-             if (state == FOUND)
-               {
-                 _asn1_get_objectid_der (der + counter, len - counter, 
&amp;len2,
-                                         temp, sizeof (temp));
-                 tlen = strlen (temp);
-
-                 if (tlen > 0)
-                   _asn1_set_value (p, temp, tlen + 1);
-
-                 if (p == nodeFound)
-                   state = EXIT;
-               }
-             else
-               {
-                 len2 =
-                   asn1_get_length_der (der + counter, len - counter, 
&amp;len3);
-                 if (len2 < 0)
-                   return ASN1_DER_ERROR;
-                 len2 += len3;
-               }
-
-             counter += len2;
-             move = RIGHT;
-             break;
-           case TYPE_TIME:
-             if (state == FOUND)
-               {
-                 result =
-                   _asn1_get_time_der (der + counter, len - counter, &amp;len2,
-                                       temp, sizeof (temp) - 1);
-                 if (result != ASN1_SUCCESS)
-                   {
-                     asn1_delete_structure (structure);
-                     return result;
-                   }
-
-                 tlen = strlen (temp);
-                 if (tlen > 0)
-                   _asn1_set_value (p, temp, tlen + 1);
-
-                 if (p == nodeFound)
-                   state = EXIT;
-               }
-             else
-               {
-                 len2 =
-                   asn1_get_length_der (der + counter, len - counter, 
&amp;len3);
-                 if (len2 < 0)
-                   return ASN1_DER_ERROR;
-                 len2 += len3;
-               }
-
-             counter += len2;
-             move = RIGHT;
-             break;
-           case TYPE_OCTET_STRING:
-             len3 = len - counter;
-             if (state == FOUND)
-               {
-                 ris = _asn1_get_octet_string (der + counter, p, &amp;len3);
-                 if (p == nodeFound)
-                   state = EXIT;
-               }
-             else
-               ris = _asn1_get_octet_string (der + counter, NULL, &amp;len3);
-
-             if (ris != ASN1_SUCCESS)
-               return ris;
-             counter += len3;
-             move = RIGHT;
-             break;
-           case TYPE_GENERALSTRING:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             if (state == FOUND)
-               {
-                 if (len3 + len2 > len - counter)
-                   return ASN1_DER_ERROR;
-                 _asn1_set_value (p, der + counter, len3 + len2);
-
-                 if (p == nodeFound)
-                   state = EXIT;
-               }
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_BIT_STRING:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             if (state == FOUND)
-               {
-                 if (len3 + len2 > len - counter)
-                   return ASN1_DER_ERROR;
-                 _asn1_set_value (p, der + counter, len3 + len2);
-
-                 if (p == nodeFound)
-                   state = EXIT;
-               }
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_SEQUENCE:
-           case TYPE_SET:
-             if (move == UP)
-               {
-                 len2 = strtol (p->value, NULL, 10);
-                 _asn1_set_value (p, NULL, 0);
-                 if (len2 == -1)
-                   {           /* indefinite length method */
-                     if ((der[counter]) || der[counter + 1])
-                       {
-                         asn1_delete_structure (structure);
-                         return ASN1_DER_ERROR;
-                       }
-                     counter += 2;
-                   }
-                 else
-                   {           /* definite length method */
-                     if (len2 != counter)
-                       {
-                         asn1_delete_structure (structure);
-                         return ASN1_DER_ERROR;
-                       }
-                   }
-                 if (p == nodeFound)
-                   state = EXIT;
-                 move = RIGHT;
-               }
-             else
-               {               /* move==DOWN || move==RIGHT */
-                 if (state == OTHER_BRANCH)
-                   {
-                     len3 =
-                       asn1_get_length_der (der + counter, len - counter,
-                                            &amp;len2);
-                     if (len3 < 0)
-                       return ASN1_DER_ERROR;
-                     counter += len2 + len3;
-                     move = RIGHT;
-                   }
-                 else
-                   {           /*  state==SAME_BRANCH or state==FOUND */
-                     len3 =
-                       asn1_get_length_der (der + counter, len - counter,
-                                            &amp;len2);
-                     if (len3 < 0)
-                       return ASN1_DER_ERROR;
-                     counter += len2;
-                     if (len3 > 0)
-                       {
-                         _asn1_ltostr (counter + len3, temp);
-                         tlen = strlen (temp);
-
-                         if (tlen > 0)
-                           _asn1_set_value (p, temp, tlen + 1);
-                         move = DOWN;
-                       }
-                     else if (len3 == 0)
-                       {
-                         p2 = p->down;
-                         while (p2)
-                           {
-                             if (type_field (p2->type) != TYPE_TAG)
-                               {
-                                 p3 = p2->right;
-                                 asn1_delete_structure (&amp;p2);
-                                 p2 = p3;
-                               }
-                             else
-                               p2 = p2->right;
-                           }
-                         move = RIGHT;
-                       }
-                     else
-                       {       /* indefinite length method */
-                         _asn1_set_value (p, "-1", 3);
-                         move = DOWN;
-                       }
-                   }
-               }
-             break;
-           case TYPE_SEQUENCE_OF:
-           case TYPE_SET_OF:
-             if (move == UP)
-               {
-                 len2 = strtol (p->value, NULL, 10);
-                 if (len2 > counter)
-                   {
-                     _asn1_append_sequence_set (p);
-                     p = p->down;
-                     while (p->right)
-                       p = p->right;
-                     move = RIGHT;
-                     continue;
-                   }
-                 _asn1_set_value (p, NULL, 0);
-                 if (len2 != counter)
-                   {
-                     asn1_delete_structure (structure);
-                     return ASN1_DER_ERROR;
-                   }
-
-                 if (p == nodeFound)
-                   state = EXIT;
-               }
-             else
-               {               /* move==DOWN || move==RIGHT */
-                 if (state == OTHER_BRANCH)
-                   {
-                     len3 =
-                       asn1_get_length_der (der + counter, len - counter,
-                                            &amp;len2);
-                     if (len3 < 0)
-                       return ASN1_DER_ERROR;
-                     counter += len2 + len3;
-                     move = RIGHT;
-                   }
-                 else
-                   {           /* state==FOUND or state==SAME_BRANCH */
-                     len3 =
-                       asn1_get_length_der (der + counter, len - counter,
-                                            &amp;len2);
-                     if (len3 < 0)
-                       return ASN1_DER_ERROR;
-                     counter += len2;
-                     if (len3)
-                       {
-                         _asn1_ltostr (counter + len3, temp);
-                         tlen = strlen (temp);
-
-                         if (tlen > 0)
-                           _asn1_set_value (p, temp, tlen + 1);
-                         p2 = p->down;
-                         while ((type_field (p2->type) == TYPE_TAG)
-                                || (type_field (p2->type) == TYPE_SIZE))
-                           p2 = p2->right;
-                         if (p2->right == NULL)
-                           _asn1_append_sequence_set (p);
-                         p = p2;
-                         state = FOUND;
-                       }
-                   }
-               }
-
-             break;
-           case TYPE_ANY:
-             if (asn1_get_tag_der
-                 (der + counter, len - counter, &amp;class, &len2,
-                  &amp;tag) != ASN1_SUCCESS)
-               return ASN1_DER_ERROR;
-             if (counter + len2 > len)
-               return ASN1_DER_ERROR;
-
-             len4 =
-               asn1_get_length_der (der + counter + len2,
-                                    len - counter - len2, &amp;len3);
-             if (len4 < -1)
-               return ASN1_DER_ERROR;
-
-             if (len4 != -1)
-               {
-                 len2 += len4;
-                 if (state == FOUND)
-                   {
-                     _asn1_set_value_octet (p, der+counter, len2+len3);
-                     temp2 = NULL;
-
-                     if (p == nodeFound)
-                       state = EXIT;
-                   }
-                 counter += len2 + len3;
-               }
-             else
-               {               /* indefinite length */
-                 /* Check indefinite lenth method in an EXPLICIT TAG */
-                 if ((p->type &amp; CONST_TAG) && (der[counter - 1] == 0x80))
-                   indefinite = 1;
-                 else
-                   indefinite = 0;
-
-                 len2 = len - counter;
-                 ris =
-                   _asn1_get_indefinite_length_string (der + counter, 
&amp;len2);
-                 if (ris != ASN1_SUCCESS)
-                   {
-                     asn1_delete_structure (structure);
-                     return ris;
-                   }
-
-                 if (state == FOUND)
-                   {
-                     _asn1_set_value_octet (p, der+counter, len2);
-
-                     if (p == nodeFound)
-                       state = EXIT;
-                   }
-
-                 counter += len2;
-
-                 /* Check if a couple of 0x00 are present due to an EXPLICIT 
TAG with
-                    an indefinite length method. */
-                 if (indefinite)
-                   {
-                     if (!der[counter] &amp;& !der[counter + 1])
-                       {
-                         counter += 2;
-                       }
-                     else
-                       {
-                         asn1_delete_structure (structure);
-                         return ASN1_DER_ERROR;
-                       }
-                   }
-               }
-             move = RIGHT;
-             break;
-
-           default:
-             move = (move == UP) ? RIGHT : DOWN;
-             break;
-           }
-       }
-
-      if ((p == node &amp;& move != DOWN) || (state == EXIT))
-       break;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           {
-             p = p->down;
-
-             if (state != FOUND)
-               {
-                 nameLen -= strlen (p->name) + 1;
-                 if (nameLen > 0)
-                   {
-                     if (currentName[0])
-                       strcat (currentName, ".");
-                     strcat (currentName, p->name);
-                   }
-                 else
-                   {
-                     asn1_delete_structure (structure);
-                     return ASN1_MEM_ERROR;
-                   }
-                 if (!(strcmp (currentName, elementName)))
-                   {
-                     state = FOUND;
-                     nodeFound = p;
-                   }
-                 else
-                   if (!memcmp
-                       (currentName, elementName, strlen (currentName)))
-                   state = SAME_BRANCH;
-                 else
-                   state = OTHER_BRANCH;
-               }
-           }
-         else
-           move = RIGHT;
-       }
-
-      if ((move == RIGHT) &amp;& !(p->type & CONST_SET))
-       {
-         if (p->right)
-           {
-             p = p->right;
-
-             if (state != FOUND)
-               {
-                 dot_p = char_p = currentName;
-                 while ((char_p = strchr (char_p, '.')))
-                   {
-                     dot_p = char_p++;
-                     dot_p++;
-                   }
-
-                 nameLen += strlen (currentName) - (dot_p - currentName);
-                 *dot_p = 0;
-
-                 nameLen -= strlen (p->name);
-                 if (nameLen > 0)
-                   strcat (currentName, p->name);
-                 else
-                   {
-                     asn1_delete_structure (structure);
-                     return ASN1_MEM_ERROR;
-                   }
-
-                 if (!(strcmp (currentName, elementName)))
-                   {
-                     state = FOUND;
-                     nodeFound = p;
-                   }
-                 else
-                   if (!memcmp
-                       (currentName, elementName, strlen (currentName)))
-                   state = SAME_BRANCH;
-                 else
-                   state = OTHER_BRANCH;
-               }
-           }
-         else
-           move = UP;
-       }
-
-      if (move == UP)
-       {
-         p = _asn1_find_up (p);
-
-         if (state != FOUND)
-           {
-             dot_p = char_p = currentName;
-             while ((char_p = strchr (char_p, '.')))
-               {
-                 dot_p = char_p++;
-                 dot_p++;
-               }
-
-             nameLen += strlen (currentName) - (dot_p - currentName);
-             *dot_p = 0;
-
-             if (!(strcmp (currentName, elementName)))
-               {
-                 state = FOUND;
-                 nodeFound = p;
-               }
-             else
-               if (!memcmp (currentName, elementName, strlen (currentName)))
-               state = SAME_BRANCH;
-             else
-               state = OTHER_BRANCH;
-           }
-       }
-    }
-
-  _asn1_delete_not_used (*structure);
-
-  if (counter > len)
-    {
-      asn1_delete_structure (structure);
-      return ASN1_DER_ERROR;
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_untestable">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_der_decoding_src', 
'asn1_der_decoding_button')"><span 
id="asn1_der_decoding_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_der_decoding
-</td>
-<td class="function_entry_cyclo">
-118
-</td>
-<td class="function_entry_number">
-301
-</td>
-<td class="function_entry_number">
-520
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_der_decoding_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_der_decoding (ASN1_TYPE * element, const void *ider, int len,
-                  char *errorDescription)
-{
-  ASN1_TYPE node, p, p2, p3;
-  char temp[128];
-  int counter, len2, len3, len4, move, ris, tlen;
-  unsigned char class;
-  unsigned long tag;
-  int indefinite, result;
-  const unsigned char *der = ider;
-
-  node = *element;
-
-  if (node == ASN1_TYPE_EMPTY)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  if (node->type &amp; CONST_OPTION)
-    {
-      asn1_delete_structure (element);
-      return ASN1_GENERIC_ERROR;
-    }
-
-  counter = 0;
-  move = DOWN;
-  p = node;
-  while (1)
-    {
-      ris = ASN1_SUCCESS;
-      if (move != UP)
-       {
-         if (p->type &amp; CONST_SET)
-           {
-             p2 = _asn1_find_up (p);
-             len2 = strtol (p2->value, NULL, 10);
-             if (len2 == -1)
-               {
-                 if (!der[counter] &amp;& !der[counter + 1])
-                   {
-                     p = p2;
-                     move = UP;
-                     counter += 2;
-                     continue;
-                   }
-               }
-             else if (counter == len2)
-               {
-                 p = p2;
-                 move = UP;
-                 continue;
-               }
-             else if (counter > len2)
-               {
-                 asn1_delete_structure (element);
-                 return ASN1_DER_ERROR;
-               }
-             p2 = p2->down;
-             while (p2)
-               {
-                 if ((p2->type &amp; CONST_SET) && (p2->type & CONST_NOT_USED))
-                   {
-                     if (type_field (p2->type) != TYPE_CHOICE)
-                       ris =
-                         _asn1_extract_tag_der (p2, der + counter,
-                                                len - counter, &amp;len2);
-                     else
-                       {
-                         p3 = p2->down;
-                         while (p3)
-                           {
-                             ris =
-                               _asn1_extract_tag_der (p3, der + counter,
-                                                      len - counter, 
&amp;len2);
-                             if (ris == ASN1_SUCCESS)
-                               break;
-                             p3 = p3->right;
-                           }
-                       }
-                     if (ris == ASN1_SUCCESS)
-                       {
-                         p2->type &amp;= ~CONST_NOT_USED;
-                         p = p2;
-                         break;
-                       }
-                   }
-                 p2 = p2->right;
-               }
-             if (p2 == NULL)
-               {
-                 asn1_delete_structure (element);
-                 return ASN1_DER_ERROR;
-               }
-           }
-
-         if ((p->type &amp; CONST_OPTION) || (p->type & CONST_DEFAULT))
-           {
-             p2 = _asn1_find_up (p);
-             len2 = strtol (p2->value, NULL, 10);
-             if (counter == len2)
-               {
-                 if (p->right)
-                   {
-                     p2 = p->right;
-                     move = RIGHT;
-                   }
-                 else
-                   move = UP;
-
-                 if (p->type &amp; CONST_OPTION)
-                   asn1_delete_structure (&amp;p);
-
-                 p = p2;
-                 continue;
-               }
-           }
-
-         if (type_field (p->type) == TYPE_CHOICE)
-           {
-             while (p->down)
-               {
-                 if (counter < len)
-                   ris =
-                     _asn1_extract_tag_der (p->down, der + counter,
-                                            len - counter, &amp;len2);
-                 else
-                   ris = ASN1_DER_ERROR;
-                 if (ris == ASN1_SUCCESS)
-                   {
-                     while (p->down->right)
-                       {
-                         p2 = p->down->right;
-                         asn1_delete_structure (&amp;p2);
-                       }
-                     break;
-                   }
-                 else if (ris == ASN1_ERROR_TYPE_ANY)
-                   {
-                     asn1_delete_structure (element);
-                     return ASN1_ERROR_TYPE_ANY;
-                   }
-                 else
-                   {
-                     p2 = p->down;
-                     asn1_delete_structure (&amp;p2);
-                   }
-               }
-
-             if (p->down == NULL)
-               {
-                 if (!(p->type &amp; CONST_OPTION))
-                   {
-                     asn1_delete_structure (element);
-                     return ASN1_DER_ERROR;
-                   }
-               }
-             else
-               p = p->down;
-           }
-
-         if ((p->type &amp; CONST_OPTION) || (p->type & CONST_DEFAULT))
-           {
-             p2 = _asn1_find_up (p);
-             len2 = strtol (p2->value, NULL, 10);
-             if ((len2 != -1) &amp;& (counter > len2))
-               ris = ASN1_TAG_ERROR;
-           }
-
-         if (ris == ASN1_SUCCESS)
-           ris =
-             _asn1_extract_tag_der (p, der + counter, len - counter, 
&amp;len2);
-         if (ris != ASN1_SUCCESS)
-           {
-             if (p->type &amp; CONST_OPTION)
-               {
-                 p->type |= CONST_NOT_USED;
-                 move = RIGHT;
-               }
-             else if (p->type &amp; CONST_DEFAULT)
-               {
-                 _asn1_set_value (p, NULL, 0);
-                 move = RIGHT;
-               }
-             else
-               {
-                 if (errorDescription != NULL)
-                   _asn1_error_description_tag_error (p, errorDescription);
-
-                 asn1_delete_structure (element);
-                 return ASN1_TAG_ERROR;
-               }
-           }
-         else
-           counter += len2;
-       }
-
-      if (ris == ASN1_SUCCESS)
-       {
-         switch (type_field (p->type))
-           {
-           case TYPE_NULL:
-             if (der[counter])
-               {
-                 asn1_delete_structure (element);
-                 return ASN1_DER_ERROR;
-               }
-             counter++;
-             move = RIGHT;
-             break;
-           case TYPE_BOOLEAN:
-             if (der[counter++] != 1)
-               {
-                 asn1_delete_structure (element);
-                 return ASN1_DER_ERROR;
-               }
-             if (der[counter++] == 0)
-               _asn1_set_value (p, "F", 1);
-             else
-               _asn1_set_value (p, "T", 1);
-             move = RIGHT;
-             break;
-           case TYPE_INTEGER:
-           case TYPE_ENUMERATED:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             if (len2 + len3 > len - counter)
-               return ASN1_DER_ERROR;
-             _asn1_set_value (p, der + counter, len3 + len2);
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_OBJECT_ID:
-             _asn1_get_objectid_der (der + counter, len - counter, &amp;len2,
-                                     temp, sizeof (temp));
-             tlen = strlen (temp);
-             if (tlen > 0)
-               _asn1_set_value (p, temp, tlen + 1);
-             counter += len2;
-             move = RIGHT;
-             break;
-           case TYPE_TIME:
-             result =
-               _asn1_get_time_der (der + counter, len - counter, &amp;len2, 
temp,
-                                   sizeof (temp) - 1);
-             if (result != ASN1_SUCCESS)
-               {
-                 asn1_delete_structure (element);
-                 return result;
-               }
-             tlen = strlen (temp);
-             if (tlen > 0)
-               _asn1_set_value (p, temp, tlen + 1);
-             counter += len2;
-             move = RIGHT;
-             break;
-           case TYPE_OCTET_STRING:
-             len3 = len - counter;
-             ris = _asn1_get_octet_string (der + counter, p, &amp;len3);
-             if (ris != ASN1_SUCCESS)
-               return ris;
-             counter += len3;
-             move = RIGHT;
-             break;
-           case TYPE_GENERALSTRING:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             if (len3 + len2 > len - counter)
-               return ASN1_DER_ERROR;
-             _asn1_set_value (p, der + counter, len3 + len2);
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_BIT_STRING:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             if (len3 + len2 > len - counter)
-               return ASN1_DER_ERROR;
-             _asn1_set_value (p, der + counter, len3 + len2);
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_SEQUENCE:
-           case TYPE_SET:
-             if (move == UP)
-               {
-                 len2 = strtol (p->value, NULL, 10);
-                 _asn1_set_value (p, NULL, 0);
-                 if (len2 == -1)
-                   {           /* indefinite length method */
-                     if (len - counter + 1 > 0)
-                       {
-                         if ((der[counter]) || der[counter + 1])
-                           {
-                             asn1_delete_structure (element);
-                             return ASN1_DER_ERROR;
-                           }
-                       }
-                     else
-                       return ASN1_DER_ERROR;
-                     counter += 2;
-                   }
-                 else
-                   {           /* definite length method */
-                     if (len2 != counter)
-                       {
-                         asn1_delete_structure (element);
-                         return ASN1_DER_ERROR;
-                       }
-                   }
-                 move = RIGHT;
-               }
-             else
-               {               /* move==DOWN || move==RIGHT */
-                 len3 =
-                   asn1_get_length_der (der + counter, len - counter, 
&amp;len2);
-                 if (len3 < -1)
-                   return ASN1_DER_ERROR;
-                 counter += len2;
-                 if (len3 > 0)
-                   {
-                     _asn1_ltostr (counter + len3, temp);
-                     tlen = strlen (temp);
-                     if (tlen > 0)
-                       _asn1_set_value (p, temp, tlen + 1);
-                     move = DOWN;
-                   }
-                 else if (len3 == 0)
-                   {
-                     p2 = p->down;
-                     while (p2)
-                       {
-                         if (type_field (p2->type) != TYPE_TAG)
-                           {
-                             p3 = p2->right;
-                             asn1_delete_structure (&amp;p2);
-                             p2 = p3;
-                           }
-                         else
-                           p2 = p2->right;
-                       }
-                     move = RIGHT;
-                   }
-                 else
-                   {           /* indefinite length method */
-                     _asn1_set_value (p, "-1", 3);
-                     move = DOWN;
-                   }
-               }
-             break;
-           case TYPE_SEQUENCE_OF:
-           case TYPE_SET_OF:
-             if (move == UP)
-               {
-                 len2 = strtol (p->value, NULL, 10);
-                 if (len2 == -1)
-                   {           /* indefinite length method */
-                     if ((counter + 2) > len)
-                       return ASN1_DER_ERROR;
-                     if ((der[counter]) || der[counter + 1])
-                       {
-                         _asn1_append_sequence_set (p);
-                         p = p->down;
-                         while (p->right)
-                           p = p->right;
-                         move = RIGHT;
-                         continue;
-                       }
-                     _asn1_set_value (p, NULL, 0);
-                     counter += 2;
-                   }
-                 else
-                   {           /* definite length method */
-                     if (len2 > counter)
-                       {
-                         _asn1_append_sequence_set (p);
-                         p = p->down;
-                         while (p->right)
-                           p = p->right;
-                         move = RIGHT;
-                         continue;
-                       }
-                     _asn1_set_value (p, NULL, 0);
-                     if (len2 != counter)
-                       {
-                         asn1_delete_structure (element);
-                         return ASN1_DER_ERROR;
-                       }
-                   }
-               }
-             else
-               {               /* move==DOWN || move==RIGHT */
-                 len3 =
-                   asn1_get_length_der (der + counter, len - counter, 
&amp;len2);
-                 if (len3 < -1)
-                   return ASN1_DER_ERROR;
-                 counter += len2;
-                 if (len3)
-                   {
-                     if (len3 > 0)
-                       {       /* definite length method */
-                         _asn1_ltostr (counter + len3, temp);
-                         tlen = strlen (temp);
-
-                         if (tlen > 0)
-                           _asn1_set_value (p, temp, tlen + 1);
-                       }
-                     else
-                       {       /* indefinite length method */
-                         _asn1_set_value (p, "-1", 3);
-                       }
-                     p2 = p->down;
-                     while ((type_field (p2->type) == TYPE_TAG)
-                            || (type_field (p2->type) == TYPE_SIZE))
-                       p2 = p2->right;
-                     if (p2->right == NULL)
-                       _asn1_append_sequence_set (p);
-                     p = p2;
-                   }
-               }
-             move = RIGHT;
-             break;
-           case TYPE_ANY:
-             if (asn1_get_tag_der
-                 (der + counter, len - counter, &amp;class, &len2,
-                  &amp;tag) != ASN1_SUCCESS)
-               return ASN1_DER_ERROR;
-             if (counter + len2 > len)
-               return ASN1_DER_ERROR;
-             len4 =
-               asn1_get_length_der (der + counter + len2,
-                                    len - counter - len2, &amp;len3);
-             if (len4 < -1)
-               return ASN1_DER_ERROR;
-             if (len4 > len - counter + len2 + len3)
-               return ASN1_DER_ERROR;
-             if (len4 != -1)
-               {
-                 len2 += len4;
-                 _asn1_set_value_octet (p, der+counter, len2+len3);
-                 counter += len2 + len3;
-               }
-             else
-               {               /* indefinite length */
-                 /* Check indefinite lenth method in an EXPLICIT TAG */
-                 if ((p->type &amp; CONST_TAG) && (der[counter - 1] == 0x80))
-                   indefinite = 1;
-                 else
-                   indefinite = 0;
-
-                 len2 = len - counter;
-                 ris =
-                   _asn1_get_indefinite_length_string (der + counter, 
&amp;len2);
-                 if (ris != ASN1_SUCCESS)
-                   {
-                     asn1_delete_structure (element);
-                     return ris;
-                   }
-
-                 _asn1_set_value_octet (p, der+counter, len2);
-                 counter += len2;
-
-                 /* Check if a couple of 0x00 are present due to an EXPLICIT 
TAG with
-                    an indefinite length method. */
-                 if (indefinite)
-                   {
-                     if (!der[counter] &amp;& !der[counter + 1])
-                       {
-                         counter += 2;
-                       }
-                     else
-                       {
-                         asn1_delete_structure (element);
-                         return ASN1_DER_ERROR;
-                       }
-                   }
-               }
-             move = RIGHT;
-             break;
-           default:
-             move = (move == UP) ? RIGHT : DOWN;
-             break;
-           }
-       }
-
-      if (p == node &amp;& move != DOWN)
-       break;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           p = p->down;
-         else
-           move = RIGHT;
-       }
-      if ((move == RIGHT) &amp;& !(p->type & CONST_SET))
-       {
-         if (p->right)
-           p = p->right;
-         else
-           move = UP;
-       }
-      if (move == UP)
-       p = _asn1_find_up (p);
-    }
-
-  _asn1_delete_not_used (*element);
-
-  if (counter != len)
-    {
-      asn1_delete_structure (element);
-      return ASN1_DER_ERROR;
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_untestable">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_write_value_src', 
'asn1_write_value_button')"><span id="asn1_write_value_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_write_value
-</td>
-<td class="function_entry_cyclo">
-111
-</td>
-<td class="function_entry_number">
-208
-</td>
-<td class="function_entry_number">
-343
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/element.c;hb=HEAD";>lib/element.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_write_value_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_write_value (ASN1_TYPE node_root, const char *name,
-                 const void *ivalue, int len)
-{
-  ASN1_TYPE node, p, p2;
-  unsigned char *temp, *value_temp = NULL, *default_temp = NULL;
-  int len2, k, k2, negative;
-  size_t i;
-  const unsigned char *value = ivalue;
-
-  node = asn1_find_node (node_root, name);
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  if ((node->type &amp; CONST_OPTION) && (value == NULL) && (len == 0))
-    {
-      asn1_delete_structure (&amp;node);
-      return ASN1_SUCCESS;
-    }
-
-  if ((type_field (node->type) == TYPE_SEQUENCE_OF) &amp;& (value == NULL)
-      &amp;& (len == 0))
-    {
-      p = node->down;
-      while ((type_field (p->type) == TYPE_TAG)
-            || (type_field (p->type) == TYPE_SIZE))
-       p = p->right;
-
-      while (p->right)
-       asn1_delete_structure (&amp;p->right);
-
-      return ASN1_SUCCESS;
-    }
-
-  switch (type_field (node->type))
-    {
-    case TYPE_BOOLEAN:
-      if (!strcmp (value, "TRUE"))
-       {
-         if (node->type &amp; CONST_DEFAULT)
-           {
-             p = node->down;
-             while (type_field (p->type) != TYPE_DEFAULT)
-               p = p->right;
-             if (p->type &amp; CONST_TRUE)
-               _asn1_set_value (node, NULL, 0);
-             else
-               _asn1_set_value (node, "T", 1);
-           }
-         else
-           _asn1_set_value (node, "T", 1);
-       }
-      else if (!strcmp (value, "FALSE"))
-       {
-         if (node->type &amp; CONST_DEFAULT)
-           {
-             p = node->down;
-             while (type_field (p->type) != TYPE_DEFAULT)
-               p = p->right;
-             if (p->type &amp; CONST_FALSE)
-               _asn1_set_value (node, NULL, 0);
-             else
-               _asn1_set_value (node, "F", 1);
-           }
-         else
-           _asn1_set_value (node, "F", 1);
-       }
-      else
-       return ASN1_VALUE_NOT_VALID;
-      break;
-    case TYPE_INTEGER:
-    case TYPE_ENUMERATED:
-      if (len == 0)
-       {
-         if ((isdigit (value[0])) || (value[0] == '-'))
-           {
-             value_temp =
-               (unsigned char *) _asn1_malloc (SIZEOF_UNSIGNED_LONG_INT);
-             if (value_temp == NULL)
-               return ASN1_MEM_ALLOC_ERROR;
-
-             _asn1_convert_integer (value, value_temp,
-                                    SIZEOF_UNSIGNED_LONG_INT, &amp;len);
-           }
-         else
-           {                   /* is an identifier like v1 */
-             if (!(node->type &amp; CONST_LIST))
-               return ASN1_VALUE_NOT_VALID;
-             p = node->down;
-             while (p)
-               {
-                 if (type_field (p->type) == TYPE_CONSTANT)
-                   {
-                     if ((p->name) &amp;& (!strcmp (p->name, value)))
-                       {
-                         value_temp =
-                           (unsigned char *)
-                           _asn1_malloc (SIZEOF_UNSIGNED_LONG_INT);
-                         if (value_temp == NULL)
-                           return ASN1_MEM_ALLOC_ERROR;
-
-                         _asn1_convert_integer (p->value,
-                                                value_temp,
-                                                SIZEOF_UNSIGNED_LONG_INT,
-                                                &amp;len);
-                         break;
-                       }
-                   }
-                 p = p->right;
-               }
-             if (p == NULL)
-               return ASN1_VALUE_NOT_VALID;
-           }
-       }
-      else
-       {                       /* len != 0 */
-         value_temp = (unsigned char *) _asn1_malloc (len);
-         if (value_temp == NULL)
-           return ASN1_MEM_ALLOC_ERROR;
-         memcpy (value_temp, value, len);
-       }
-
-
-      if (value_temp[0] &amp; 0x80)
-       negative = 1;
-      else
-       negative = 0;
-
-      if (negative &amp;& (type_field (node->type) == TYPE_ENUMERATED))
-       {
-         _asn1_free (value_temp);
-         return ASN1_VALUE_NOT_VALID;
-       }
-
-      for (k = 0; k < len - 1; k++)
-       if (negative &amp;& (value_temp[k] != 0xFF))
-         break;
-       else if (!negative &amp;& value_temp[k])
-         break;
-
-      if ((negative &amp;& !(value_temp[k] & 0x80)) ||
-         (!negative &amp;& (value_temp[k] & 0x80)))
-       k--;
-
-      _asn1_set_value_octet (node, value_temp+k, len-k);
-
-      if (node->type &amp; CONST_DEFAULT)
-       {
-         p = node->down;
-         while (type_field (p->type) != TYPE_DEFAULT)
-           p = p->right;
-         if ((isdigit (p->value[0])) || (p->value[0] == '-'))
-           {
-             default_temp =
-               (unsigned char *) _asn1_malloc (SIZEOF_UNSIGNED_LONG_INT);
-             if (default_temp == NULL)
-               {
-                 _asn1_free (value_temp);
-                 return ASN1_MEM_ALLOC_ERROR;
-               }
-
-             _asn1_convert_integer (p->value, default_temp,
-                                    SIZEOF_UNSIGNED_LONG_INT, &amp;len2);
-           }
-         else
-           {                   /* is an identifier like v1 */
-             if (!(node->type &amp; CONST_LIST))
-               {
-                 _asn1_free (value_temp);
-                 return ASN1_VALUE_NOT_VALID;
-               }
-             p2 = node->down;
-             while (p2)
-               {
-                 if (type_field (p2->type) == TYPE_CONSTANT)
-                   {
-                     if ((p2->name) &amp;& (!strcmp (p2->name, p->value)))
-                       {
-                         default_temp =
-                           (unsigned char *)
-                           _asn1_malloc (SIZEOF_UNSIGNED_LONG_INT);
-                         if (default_temp == NULL)
-                           {
-                             _asn1_free (value_temp);
-                             return ASN1_MEM_ALLOC_ERROR;
-                           }
-
-                         _asn1_convert_integer (p2->value,
-                                                default_temp,
-                                                SIZEOF_UNSIGNED_LONG_INT,
-                                                &amp;len2);
-                         break;
-                       }
-                   }
-                 p2 = p2->right;
-               }
-             if (p2 == NULL)
-               {
-                 _asn1_free (value_temp);
-                 return ASN1_VALUE_NOT_VALID;
-               }
-           }
-
-
-         if ((len - k) == len2)
-           {
-             for (k2 = 0; k2 < len2; k2++)
-               if (value_temp[k + k2] != default_temp[k2])
-                 {
-                   break;
-                 }
-             if (k2 == len2)
-               _asn1_set_value (node, NULL, 0);
-           }
-         _asn1_free (default_temp);
-       }
-      _asn1_free (value_temp);
-      break;
-    case TYPE_OBJECT_ID:
-      for (i = 0; i < strlen (value); i++)
-       if ((!isdigit (value[i])) &amp;& (value[i] != '.') && (value[i] != '+'))
-         return ASN1_VALUE_NOT_VALID;
-      if (node->type &amp; CONST_DEFAULT)
-       {
-         p = node->down;
-         while (type_field (p->type) != TYPE_DEFAULT)
-           p = p->right;
-         if (!strcmp (value, p->value))
-           {
-             _asn1_set_value (node, NULL, 0);
-             break;
-           }
-       }
-      _asn1_set_value (node, value, strlen (value) + 1);
-      break;
-    case TYPE_TIME:
-      if (node->type &amp; CONST_UTC)
-       {
-         if (strlen (value) < 11)
-           return ASN1_VALUE_NOT_VALID;
-         for (k = 0; k < 10; k++)
-           if (!isdigit (value[k]))
-             return ASN1_VALUE_NOT_VALID;
-         switch (strlen (value))
-           {
-           case 11:
-             if (value[10] != 'Z')
-               return ASN1_VALUE_NOT_VALID;
-             break;
-           case 13:
-             if ((!isdigit (value[10])) || (!isdigit (value[11])) ||
-                 (value[12] != 'Z'))
-               return ASN1_VALUE_NOT_VALID;
-             break;
-           case 15:
-             if ((value[10] != '+') &amp;& (value[10] != '-'))
-               return ASN1_VALUE_NOT_VALID;
-             for (k = 11; k < 15; k++)
-               if (!isdigit (value[k]))
-                 return ASN1_VALUE_NOT_VALID;
-             break;
-           case 17:
-             if ((!isdigit (value[10])) || (!isdigit (value[11])))
-               return ASN1_VALUE_NOT_VALID;
-             if ((value[12] != '+') &amp;& (value[12] != '-'))
-               return ASN1_VALUE_NOT_VALID;
-             for (k = 13; k < 17; k++)
-               if (!isdigit (value[k]))
-                 return ASN1_VALUE_NOT_VALID;
-             break;
-           default:
-             return ASN1_VALUE_NOT_FOUND;
-           }
-         _asn1_set_value (node, value, strlen (value) + 1);
-       }
-      else
-       {                       /* GENERALIZED TIME */
-         if (value)
-           _asn1_set_value (node, value, strlen (value) + 1);
-       }
-      break;
-    case TYPE_OCTET_STRING:
-      if (len == 0)
-       len = strlen (value);
-      _asn1_set_value_octet (node, value, len);
-      break;
-    case TYPE_GENERALSTRING:
-      if (len == 0)
-       len = strlen (value);
-      _asn1_set_value_octet (node, value, len);
-      break;
-    case TYPE_BIT_STRING:
-      if (len == 0)
-       len = strlen (value);
-      asn1_length_der ((len >> 3) + 2, NULL, &amp;len2);
-      temp = (unsigned char *) _asn1_malloc ((len >> 3) + 2 + len2);
-      if (temp == NULL)
-       return ASN1_MEM_ALLOC_ERROR;
-
-      asn1_bit_der (value, len, temp, &amp;len2);
-      _asn1_set_value_m (node, temp, len2);
-      temp = NULL;
-      break;
-    case TYPE_CHOICE:
-      p = node->down;
-      while (p)
-       {
-         if (!strcmp (p->name, value))
-           {
-             p2 = node->down;
-             while (p2)
-               {
-                 if (p2 != p)
-                   {
-                     asn1_delete_structure (&amp;p2);
-                     p2 = node->down;
-                   }
-                 else
-                   p2 = p2->right;
-               }
-             break;
-           }
-         p = p->right;
-       }
-      if (!p)
-       return ASN1_ELEMENT_NOT_FOUND;
-      break;
-    case TYPE_ANY:
-      _asn1_set_value_octet (node, value, len);
-      break;
-    case TYPE_SEQUENCE_OF:
-    case TYPE_SET_OF:
-      if (strcmp (value, "NEW"))
-       return ASN1_VALUE_NOT_VALID;
-      _asn1_append_sequence_set (node);
-      break;
-    default:
-      return ASN1_ELEMENT_NOT_FOUND;
-      break;
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_untestable">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_print_structure_src', 
'asn1_print_structure_button')"><span 
id="asn1_print_structure_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_print_structure
-</td>
-<td class="function_entry_cyclo">
-125
-</td>
-<td class="function_entry_number">
-235
-</td>
-<td class="function_entry_number">
-349
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_print_structure_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-void
-asn1_print_structure (FILE * out, ASN1_TYPE structure, const char *name,
-                     int mode)
-{
-  ASN1_TYPE p, root;
-  int k, indent = 0, len, len2, len3;
-
-  if (out == NULL)
-    return;
-
-  root = asn1_find_node (structure, name);
-
-  if (root == NULL)
-    return;
-
-  p = root;
-  while (p)
-    {
-      if (mode == ASN1_PRINT_ALL)
-       {
-         for (k = 0; k < indent; k++)
-           fprintf (out, " ");
-         fprintf (out, "name:");
-         if (p->name)
-           fprintf (out, "%s  ", p->name);
-         else
-           fprintf (out, "NULL  ");
-       }
-      else
-       {
-         switch (type_field (p->type))
-           {
-           case TYPE_CONSTANT:
-           case TYPE_TAG:
-           case TYPE_SIZE:
-             break;
-           default:
-             for (k = 0; k < indent; k++)
-               fprintf (out, " ");
-             fprintf (out, "name:");
-             if (p->name)
-               fprintf (out, "%s  ", p->name);
-             else
-               fprintf (out, "NULL  ");
-           }
-       }
-
-      if (mode != ASN1_PRINT_NAME)
-       {
-         switch (type_field (p->type))
-           {
-           case TYPE_CONSTANT:
-             if (mode == ASN1_PRINT_ALL)
-               fprintf (out, "type:CONST");
-             break;
-           case TYPE_TAG:
-             if (mode == ASN1_PRINT_ALL)
-               fprintf (out, "type:TAG");
-             break;
-           case TYPE_SIZE:
-             if (mode == ASN1_PRINT_ALL)
-               fprintf (out, "type:SIZE");
-             break;
-           case TYPE_DEFAULT:
-             fprintf (out, "type:DEFAULT");
-             break;
-           case TYPE_NULL:
-             fprintf (out, "type:NULL");
-             break;
-           case TYPE_IDENTIFIER:
-             fprintf (out, "type:IDENTIFIER");
-             break;
-           case TYPE_INTEGER:
-             fprintf (out, "type:INTEGER");
-             break;
-           case TYPE_ENUMERATED:
-             fprintf (out, "type:ENUMERATED");
-             break;
-           case TYPE_TIME:
-             fprintf (out, "type:TIME");
-             break;
-           case TYPE_BOOLEAN:
-             fprintf (out, "type:BOOLEAN");
-             break;
-           case TYPE_SEQUENCE:
-             fprintf (out, "type:SEQUENCE");
-             break;
-           case TYPE_BIT_STRING:
-             fprintf (out, "type:BIT_STR");
-             break;
-           case TYPE_OCTET_STRING:
-             fprintf (out, "type:OCT_STR");
-             break;
-           case TYPE_GENERALSTRING:
-             fprintf (out, "type:GENERALSTRING");
-             break;
-           case TYPE_SEQUENCE_OF:
-             fprintf (out, "type:SEQ_OF");
-             break;
-           case TYPE_OBJECT_ID:
-             fprintf (out, "type:OBJ_ID");
-             break;
-           case TYPE_ANY:
-             fprintf (out, "type:ANY");
-             break;
-           case TYPE_SET:
-             fprintf (out, "type:SET");
-             break;
-           case TYPE_SET_OF:
-             fprintf (out, "type:SET_OF");
-             break;
-           case TYPE_CHOICE:
-             fprintf (out, "type:CHOICE");
-             break;
-           case TYPE_DEFINITIONS:
-             fprintf (out, "type:DEFINITIONS");
-             break;
-           default:
-             break;
-           }
-       }
-
-      if ((mode == ASN1_PRINT_NAME_TYPE_VALUE) || (mode == ASN1_PRINT_ALL))
-       {
-         switch (type_field (p->type))
-           {
-           case TYPE_CONSTANT:
-             if (mode == ASN1_PRINT_ALL)
-               if (p->value)
-                 fprintf (out, "  value:%s", p->value);
-             break;
-           case TYPE_TAG:
-             if (mode == ASN1_PRINT_ALL)
-               if (p->value)
-                 fprintf (out, "  value:%s", p->value);
-             break;
-           case TYPE_SIZE:
-             if (mode == ASN1_PRINT_ALL)
-               if (p->value)
-                 fprintf (out, "  value:%s", p->value);
-             break;
-           case TYPE_DEFAULT:
-             if (p->value)
-               fprintf (out, "  value:%s", p->value);
-             else if (p->type &amp; CONST_TRUE)
-               fprintf (out, "  value:TRUE");
-             else if (p->type &amp; CONST_FALSE)
-               fprintf (out, "  value:FALSE");
-             break;
-           case TYPE_IDENTIFIER:
-             if (p->value)
-               fprintf (out, "  value:%s", p->value);
-             break;
-           case TYPE_INTEGER:
-             if (p->value)
-               {
-                 len2 = -1;
-                 len = asn1_get_length_der (p->value, p->value_len, &amp;len2);
-                 fprintf (out, "  value:0x");
-                 if (len > 0)
-                   for (k = 0; k < len; k++)
-                     fprintf (out, "%02x", (p->value)[k + len2]);
-               }
-             break;
-           case TYPE_ENUMERATED:
-             if (p->value)
-               {
-                 len2 = -1;
-                 len = asn1_get_length_der (p->value, p->value_len, &amp;len2);
-                 fprintf (out, "  value:0x");
-                 if (len > 0)
-                   for (k = 0; k < len; k++)
-                     fprintf (out, "%02x", (p->value)[k + len2]);
-               }
-             break;
-           case TYPE_TIME:
-             if (p->value)
-               fprintf (out, "  value:%s", p->value);
-             break;
-           case TYPE_BOOLEAN:
-             if (p->value)
-               {
-                 if (p->value[0] == 'T')
-                   fprintf (out, "  value:TRUE");
-                 else if (p->value[0] == 'F')
-                   fprintf (out, "  value:FALSE");
-               }
-             break;
-           case TYPE_BIT_STRING:
-             if (p->value)
-               {
-                 len2 = -1;
-                 len = asn1_get_length_der (p->value, p->value_len, &amp;len2);
-                 if (len > 0)
-                   {
-                     fprintf (out, "  value(%i):",
-                              (len - 1) * 8 - (p->value[len2]));
-                     for (k = 1; k < len; k++)
-                       fprintf (out, "%02x", (p->value)[k + len2]);
-                   }
-               }
-             break;
-           case TYPE_OCTET_STRING:
-             if (p->value)
-               {
-                 len2 = -1;
-                 len = asn1_get_length_der (p->value, p->value_len, &amp;len2);
-                 fprintf (out, "  value:");
-                 if (len > 0)
-                   for (k = 0; k < len; k++)
-                     fprintf (out, "%02x", (p->value)[k + len2]);
-               }
-             break;
-           case TYPE_GENERALSTRING:
-             if (p->value)
-               {
-                 len2 = -1;
-                 len = asn1_get_length_der (p->value, p->value_len, &amp;len2);
-                 fprintf (out, "  value:");
-                 if (len > 0)
-                   for (k = 0; k < len; k++)
-                     fprintf (out, "%02x", (p->value)[k + len2]);
-               }
-             break;
-           case TYPE_OBJECT_ID:
-             if (p->value)
-               fprintf (out, "  value:%s", p->value);
-             break;
-           case TYPE_ANY:
-             if (p->value)
-               {
-                 len3 = -1;
-                 len2 = asn1_get_length_der (p->value, p->value_len, 
&amp;len3);
-                 fprintf (out, "  value:");
-                 if (len2 > 0)
-                   for (k = 0; k < len2; k++)
-                     fprintf (out, "%02x", (p->value)[k + len3]);
-               }
-             break;
-           case TYPE_SET:
-           case TYPE_SET_OF:
-           case TYPE_CHOICE:
-           case TYPE_DEFINITIONS:
-           case TYPE_SEQUENCE_OF:
-           case TYPE_SEQUENCE:
-           case TYPE_NULL:
-             break;
-           default:
-             break;
-           }
-       }
-
-      if (mode == ASN1_PRINT_ALL)
-       {
-         if (p->type &amp; 0x1FFFFF00)
-           {
-             fprintf (out, "  attr:");
-             if (p->type &amp; CONST_UNIVERSAL)
-               fprintf (out, "UNIVERSAL,");
-             if (p->type &amp; CONST_PRIVATE)
-               fprintf (out, "PRIVATE,");
-             if (p->type &amp; CONST_APPLICATION)
-               fprintf (out, "APPLICATION,");
-             if (p->type &amp; CONST_EXPLICIT)
-               fprintf (out, "EXPLICIT,");
-             if (p->type &amp; CONST_IMPLICIT)
-               fprintf (out, "IMPLICIT,");
-             if (p->type &amp; CONST_TAG)
-               fprintf (out, "TAG,");
-             if (p->type &amp; CONST_DEFAULT)
-               fprintf (out, "DEFAULT,");
-             if (p->type &amp; CONST_TRUE)
-               fprintf (out, "TRUE,");
-             if (p->type &amp; CONST_FALSE)
-               fprintf (out, "FALSE,");
-             if (p->type &amp; CONST_LIST)
-               fprintf (out, "LIST,");
-             if (p->type &amp; CONST_MIN_MAX)
-               fprintf (out, "MIN_MAX,");
-             if (p->type &amp; CONST_OPTION)
-               fprintf (out, "OPTION,");
-             if (p->type &amp; CONST_1_PARAM)
-               fprintf (out, "1_PARAM,");
-             if (p->type &amp; CONST_SIZE)
-               fprintf (out, "SIZE,");
-             if (p->type &amp; CONST_DEFINED_BY)
-               fprintf (out, "DEF_BY,");
-             if (p->type &amp; CONST_GENERALIZED)
-               fprintf (out, "GENERALIZED,");
-             if (p->type &amp; CONST_UTC)
-               fprintf (out, "UTC,");
-             if (p->type &amp; CONST_SET)
-               fprintf (out, "SET,");
-             if (p->type &amp; CONST_NOT_USED)
-               fprintf (out, "NOT_USED,");
-             if (p->type &amp; CONST_ASSIGN)
-               fprintf (out, "ASSIGNMENT,");
-           }
-       }
-
-      if (mode == ASN1_PRINT_ALL)
-       {
-         fprintf (out, "\n");
-       }
-      else
-       {
-         switch (type_field (p->type))
-           {
-           case TYPE_CONSTANT:
-           case TYPE_TAG:
-           case TYPE_SIZE:
-             break;
-           default:
-             fprintf (out, "\n");
-           }
-       }
-
-      if (p->down)
-       {
-         p = p->down;
-         indent += 2;
-       }
-      else if (p == root)
-       {
-         p = NULL;
-         break;
-       }
-      else if (p->right)
-       p = p->right;
-      else
-       {
-         while (1)
-           {
-             p = _asn1_find_up (p);
-             if (p == root)
-               {
-                 p = NULL;
-                 break;
-               }
-             indent -= 2;
-             if (p->right)
-               {
-                 p = p->right;
-                 break;
-               }
-           }
-       }
-    }
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_untestable">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_der_decoding_startEnd_src', 
'asn1_der_decoding_startEnd_button')"><span 
id="asn1_der_decoding_startEnd_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_der_decoding_startEnd
-</td>
-<td class="function_entry_cyclo">
-85
-</td>
-<td class="function_entry_number">
-188
-</td>
-<td class="function_entry_number">
-320
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_der_decoding_startEnd_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_der_decoding_startEnd (ASN1_TYPE element, const void *ider, int len,
-                           const char *name_element, int *start, int *end)
-{
-  ASN1_TYPE node, node_to_find, p, p2, p3;
-  int counter, len2, len3, len4, move, ris;
-  unsigned char class;
-  unsigned long tag;
-  int indefinite;
-  const unsigned char *der = ider;
-
-  node = element;
-
-  if (node == ASN1_TYPE_EMPTY)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  node_to_find = asn1_find_node (node, name_element);
-
-  if (node_to_find == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  if (node_to_find == node)
-    {
-      *start = 0;
-      *end = len - 1;
-      return ASN1_SUCCESS;
-    }
-
-  if (node->type &amp; CONST_OPTION)
-    return ASN1_GENERIC_ERROR;
-
-  counter = 0;
-  move = DOWN;
-  p = node;
-  while (1)
-    {
-      ris = ASN1_SUCCESS;
-
-      if (move != UP)
-       {
-         if (p->type &amp; CONST_SET)
-           {
-             p2 = _asn1_find_up (p);
-             len2 = strtol (p2->value, NULL, 10);
-             if (len2 == -1)
-               {
-                 if (!der[counter] &amp;& !der[counter + 1])
-                   {
-                     p = p2;
-                     move = UP;
-                     counter += 2;
-                     continue;
-                   }
-               }
-             else if (counter == len2)
-               {
-                 p = p2;
-                 move = UP;
-                 continue;
-               }
-             else if (counter > len2)
-               return ASN1_DER_ERROR;
-             p2 = p2->down;
-             while (p2)
-               {
-                 if ((p2->type &amp; CONST_SET) && (p2->type & CONST_NOT_USED))
-                   {           /* CONTROLLARE */
-                     if (type_field (p2->type) != TYPE_CHOICE)
-                       ris =
-                         _asn1_extract_tag_der (p2, der + counter,
-                                                len - counter, &amp;len2);
-                     else
-                       {
-                         p3 = p2->down;
-                         ris =
-                           _asn1_extract_tag_der (p3, der + counter,
-                                                  len - counter, &amp;len2);
-                       }
-                     if (ris == ASN1_SUCCESS)
-                       {
-                         p2->type &amp;= ~CONST_NOT_USED;
-                         p = p2;
-                         break;
-                       }
-                   }
-                 p2 = p2->right;
-               }
-             if (p2 == NULL)
-               return ASN1_DER_ERROR;
-           }
-
-         if (p == node_to_find)
-           *start = counter;
-
-         if (type_field (p->type) == TYPE_CHOICE)
-           {
-             p = p->down;
-             ris =
-               _asn1_extract_tag_der (p, der + counter, len - counter,
-                                      &amp;len2);
-             if (p == node_to_find)
-               *start = counter;
-           }
-
-         if (ris == ASN1_SUCCESS)
-           ris =
-             _asn1_extract_tag_der (p, der + counter, len - counter, 
&amp;len2);
-         if (ris != ASN1_SUCCESS)
-           {
-             if (p->type &amp; CONST_OPTION)
-               {
-                 p->type |= CONST_NOT_USED;
-                 move = RIGHT;
-               }
-             else if (p->type &amp; CONST_DEFAULT)
-               {
-                 move = RIGHT;
-               }
-             else
-               {
-                 return ASN1_TAG_ERROR;
-               }
-           }
-         else
-           counter += len2;
-       }
-
-      if (ris == ASN1_SUCCESS)
-       {
-         switch (type_field (p->type))
-           {
-           case TYPE_NULL:
-             if (der[counter])
-               return ASN1_DER_ERROR;
-             counter++;
-             move = RIGHT;
-             break;
-           case TYPE_BOOLEAN:
-             if (der[counter++] != 1)
-               return ASN1_DER_ERROR;
-             counter++;
-             move = RIGHT;
-             break;
-           case TYPE_INTEGER:
-           case TYPE_ENUMERATED:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_OBJECT_ID:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             counter += len2 + len3;
-             move = RIGHT;
-             break;
-           case TYPE_TIME:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             counter += len2 + len3;
-             move = RIGHT;
-             break;
-           case TYPE_OCTET_STRING:
-             len3 = len - counter;
-             ris = _asn1_get_octet_string (der + counter, NULL, &amp;len3);
-             if (ris != ASN1_SUCCESS)
-               return ris;
-             counter += len3;
-             move = RIGHT;
-             break;
-           case TYPE_GENERALSTRING:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_BIT_STRING:
-             len2 =
-               asn1_get_length_der (der + counter, len - counter, &amp;len3);
-             if (len2 < 0)
-               return ASN1_DER_ERROR;
-             counter += len3 + len2;
-             move = RIGHT;
-             break;
-           case TYPE_SEQUENCE:
-           case TYPE_SET:
-             if (move != UP)
-               {
-                 len3 =
-                   asn1_get_length_der (der + counter, len - counter, 
&amp;len2);
-                 if (len3 < -1)
-                   return ASN1_DER_ERROR;
-                 counter += len2;
-                 if (len3 == 0)
-                   move = RIGHT;
-                 else
-                   move = DOWN;
-               }
-             else
-               {
-                 if (!der[counter] &amp;& !der[counter + 1])   /* indefinite 
length method */
-                   counter += 2;
-                 move = RIGHT;
-               }
-             break;
-           case TYPE_SEQUENCE_OF:
-           case TYPE_SET_OF:
-             if (move != UP)
-               {
-                 len3 =
-                   asn1_get_length_der (der + counter, len - counter, 
&amp;len2);
-                 if (len3 < -1)
-                   return ASN1_DER_ERROR;
-                 counter += len2;
-                 if ((len3 == -1) &amp;& !der[counter] && !der[counter + 1])
-                   counter += 2;
-                 else if (len3)
-                   {
-                     p2 = p->down;
-                     while ((type_field (p2->type) == TYPE_TAG) ||
-                            (type_field (p2->type) == TYPE_SIZE))
-                       p2 = p2->right;
-                     p = p2;
-                   }
-               }
-             else
-               {
-                 if (!der[counter] &amp;& !der[counter + 1])   /* indefinite 
length method */
-                   counter += 2;
-               }
-             move = RIGHT;
-             break;
-           case TYPE_ANY:
-             if (asn1_get_tag_der
-                 (der + counter, len - counter, &amp;class, &len2,
-                  &amp;tag) != ASN1_SUCCESS)
-               return ASN1_DER_ERROR;
-             if (counter + len2 > len)
-               return ASN1_DER_ERROR;
-
-             len4 =
-               asn1_get_length_der (der + counter + len2,
-                                    len - counter - len2, &amp;len3);
-             if (len4 < -1)
-               return ASN1_DER_ERROR;
-
-             if (len4 != -1)
-               {
-                 counter += len2 + len4 + len3;
-               }
-             else
-               {               /* indefinite length */
-                 /* Check indefinite lenth method in an EXPLICIT TAG */
-                 if ((p->type &amp; CONST_TAG) && (der[counter - 1] == 0x80))
-                   indefinite = 1;
-                 else
-                   indefinite = 0;
-
-                 len2 = len - counter;
-                 ris =
-                   _asn1_get_indefinite_length_string (der + counter, 
&amp;len2);
-                 if (ris != ASN1_SUCCESS)
-                   return ris;
-                 counter += len2;
-
-                 /* Check if a couple of 0x00 are present due to an EXPLICIT 
TAG with
-                    an indefinite length method. */
-                 if (indefinite)
-                   {
-                     if (!der[counter] &amp;& !der[counter + 1])
-                       counter += 2;
-                     else
-                       return ASN1_DER_ERROR;
-                   }
-               }
-             move = RIGHT;
-             break;
-           default:
-             move = (move == UP) ? RIGHT : DOWN;
-             break;
-           }
-       }
-
-      if ((p == node_to_find) &amp;& (move == RIGHT))
-       {
-         *end = counter - 1;
-         return ASN1_SUCCESS;
-       }
-
-      if (p == node &amp;& move != DOWN)
-       break;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           p = p->down;
-         else
-           move = RIGHT;
-       }
-      if ((move == RIGHT) &amp;& !(p->type & CONST_SET))
-       {
-         if (p->right)
-           p = p->right;
-         else
-           move = UP;
-       }
-      if (move == UP)
-       p = _asn1_find_up (p);
-    }
-
-  return ASN1_ELEMENT_NOT_FOUND;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_untestable">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_der_coding_src', 
'asn1_der_coding_button')"><span id="asn1_der_coding_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_der_coding
-</td>
-<td class="function_entry_cyclo">
-83
-</td>
-<td class="function_entry_number">
-226
-</td>
-<td class="function_entry_number">
-357
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_der_coding_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_der_coding (ASN1_TYPE element, const char *name, void *ider, int *len,
-                char *ErrorDescription)
-{
-  ASN1_TYPE node, p, p2;
-  char temp[SIZEOF_UNSIGNED_LONG_INT * 3 + 1];
-  int counter, counter_old, len2, len3, tlen, move, max_len, max_len_old;
-  asn1_retCode err;
-  unsigned char *der = ider;
-
-  node = asn1_find_node (element, name);
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  /* Node is now a locally allocated variable.
-   * That is because in some point we modify the
-   * structure, and I don't know why! --nmav
-   */
-  node = _asn1_copy_structure3 (node);
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  max_len = *len;
-
-  counter = 0;
-  move = DOWN;
-  p = node;
-  while (1)
-    {
-
-      counter_old = counter;
-      max_len_old = max_len;
-      if (move != UP)
-       {
-         err = _asn1_insert_tag_der (p, der, &amp;counter, &max_len);
-         if (err != ASN1_SUCCESS &amp;& err != ASN1_MEM_ERROR)
-           goto error;
-       }
-      switch (type_field (p->type))
-       {
-       case TYPE_NULL:
-         max_len--;
-         if (max_len >= 0)
-           der[counter] = 0;
-         counter++;
-         move = RIGHT;
-         break;
-       case TYPE_BOOLEAN:
-         if ((p->type &amp; CONST_DEFAULT) && (p->value == NULL))
-           {
-             counter = counter_old;
-             max_len = max_len_old;
-           }
-         else
-           {
-             if (p->value == NULL)
-               {
-                 _asn1_error_description_value_not_found (p,
-                                                          ErrorDescription);
-                 err = ASN1_VALUE_NOT_FOUND;
-                 goto error;
-               }
-             max_len -= 2;
-             if (max_len >= 0)
-               {
-                 der[counter++] = 1;
-                 if (p->value[0] == 'F')
-                   der[counter++] = 0;
-                 else
-                   der[counter++] = 0xFF;
-               }
-             else
-               counter += 2;
-           }
-         move = RIGHT;
-         break;
-       case TYPE_INTEGER:
-       case TYPE_ENUMERATED:
-         if ((p->type &amp; CONST_DEFAULT) && (p->value == NULL))
-           {
-             counter = counter_old;
-             max_len = max_len_old;
-           }
-         else
-           {
-             if (p->value == NULL)
-               {
-                 _asn1_error_description_value_not_found (p,
-                                                          ErrorDescription);
-                 err = ASN1_VALUE_NOT_FOUND;
-                 goto error;
-               }
-             len2 = asn1_get_length_der (p->value, p->value_len, &amp;len3);
-             if (len2 < 0)
-               {
-                 err = ASN1_DER_ERROR;
-                 goto error;
-               }
-             max_len -= len2 + len3;
-             if (max_len >= 0)
-               memcpy (der + counter, p->value, len3 + len2);
-             counter += len3 + len2;
-           }
-         move = RIGHT;
-         break;
-       case TYPE_OBJECT_ID:
-         if ((p->type &amp; CONST_DEFAULT) && (p->value == NULL))
-           {
-             counter = counter_old;
-             max_len = max_len_old;
-           }
-         else
-           {
-             if (p->value == NULL)
-               {
-                 _asn1_error_description_value_not_found (p,
-                                                          ErrorDescription);
-                 err = ASN1_VALUE_NOT_FOUND;
-                 goto error;
-               }
-             len2 = max_len;
-             err = _asn1_objectid_der (p->value, der + counter, &amp;len2);
-             if (err != ASN1_SUCCESS &amp;& err != ASN1_MEM_ERROR)
-               goto error;
-
-             max_len -= len2;
-             counter += len2;
-           }
-         move = RIGHT;
-         break;
-       case TYPE_TIME:
-         if (p->value == NULL)
-           {
-             _asn1_error_description_value_not_found (p, ErrorDescription);
-             err = ASN1_VALUE_NOT_FOUND;
-             goto error;
-           }
-         len2 = max_len;
-         err = _asn1_time_der (p->value, der + counter, &amp;len2);
-         if (err != ASN1_SUCCESS &amp;& err != ASN1_MEM_ERROR)
-           goto error;
-
-         max_len -= len2;
-         counter += len2;
-         move = RIGHT;
-         break;
-       case TYPE_OCTET_STRING:
-         if (p->value == NULL)
-           {
-             _asn1_error_description_value_not_found (p, ErrorDescription);
-             err = ASN1_VALUE_NOT_FOUND;
-             goto error;
-           }
-         len2 = asn1_get_length_der (p->value, p->value_len, &amp;len3);
-         if (len2 < 0)
-           {
-             err = ASN1_DER_ERROR;
-             goto error;
-           }
-         max_len -= len2 + len3;
-         if (max_len >= 0)
-           memcpy (der + counter, p->value, len3 + len2);
-         counter += len3 + len2;
-         move = RIGHT;
-         break;
-       case TYPE_GENERALSTRING:
-         if (p->value == NULL)
-           {
-             _asn1_error_description_value_not_found (p, ErrorDescription);
-             err = ASN1_VALUE_NOT_FOUND;
-             goto error;
-           }
-         len2 = asn1_get_length_der (p->value, p->value_len, &amp;len3);
-         if (len2 < 0)
-           {
-             err = ASN1_DER_ERROR;
-             goto error;
-           }
-         max_len -= len2 + len3;
-         if (max_len >= 0)
-           memcpy (der + counter, p->value, len3 + len2);
-         counter += len3 + len2;
-         move = RIGHT;
-         break;
-       case TYPE_BIT_STRING:
-         if (p->value == NULL)
-           {
-             _asn1_error_description_value_not_found (p, ErrorDescription);
-             err = ASN1_VALUE_NOT_FOUND;
-             goto error;
-           }
-         len2 = asn1_get_length_der (p->value, p->value_len, &amp;len3);
-         if (len2 < 0)
-           {
-             err = ASN1_DER_ERROR;
-             goto error;
-           }
-         max_len -= len2 + len3;
-         if (max_len >= 0)
-           memcpy (der + counter, p->value, len3 + len2);
-         counter += len3 + len2;
-         move = RIGHT;
-         break;
-       case TYPE_SEQUENCE:
-       case TYPE_SET:
-         if (move != UP)
-           {
-             _asn1_ltostr (counter, temp);
-             tlen = strlen (temp);
-             if (tlen > 0)
-               _asn1_set_value (p, temp, tlen + 1);
-             if (p->down == NULL)
-               {
-                 move = UP;
-                 continue;
-               }
-             else
-               {
-                 p2 = p->down;
-                 while (p2 &amp;& (type_field (p2->type) == TYPE_TAG))
-                   p2 = p2->right;
-                 if (p2)
-                   {
-                     p = p2;
-                     move = RIGHT;
-                     continue;
-                   }
-                 move = UP;
-                 continue;
-               }
-           }
-         else
-           {                   /* move==UP */
-             len2 = strtol (p->value, NULL, 10);
-             _asn1_set_value (p, NULL, 0);
-             if ((type_field (p->type) == TYPE_SET) &amp;& (max_len >= 0))
-               _asn1_ordering_set (der + len2, max_len - len2, p);
-             asn1_length_der (counter - len2, temp, &amp;len3);
-             max_len -= len3;
-             if (max_len >= 0)
-               {
-                 memmove (der + len2 + len3, der + len2, counter - len2);
-                 memcpy (der + len2, temp, len3);
-               }
-             counter += len3;
-             move = RIGHT;
-           }
-         break;
-       case TYPE_SEQUENCE_OF:
-       case TYPE_SET_OF:
-         if (move != UP)
-           {
-             _asn1_ltostr (counter, temp);
-             tlen = strlen (temp);
-
-             if (tlen > 0)
-               _asn1_set_value (p, temp, tlen + 1);
-             p = p->down;
-             while ((type_field (p->type) == TYPE_TAG)
-                    || (type_field (p->type) == TYPE_SIZE))
-               p = p->right;
-             if (p->right)
-               {
-                 p = p->right;
-                 move = RIGHT;
-                 continue;
-               }
-             else
-               p = _asn1_find_up (p);
-             move = UP;
-           }
-         if (move == UP)
-           {
-             len2 = strtol (p->value, NULL, 10);
-             _asn1_set_value (p, NULL, 0);
-             if ((type_field (p->type) == TYPE_SET_OF)
-                 &amp;& (max_len - len2 > 0))
-               {
-                 _asn1_ordering_set_of (der + len2, max_len - len2, p);
-               }
-             asn1_length_der (counter - len2, temp, &amp;len3);
-             max_len -= len3;
-             if (max_len >= 0)
-               {
-                 memmove (der + len2 + len3, der + len2, counter - len2);
-                 memcpy (der + len2, temp, len3);
-               }
-             counter += len3;
-             move = RIGHT;
-           }
-         break;
-       case TYPE_ANY:
-         if (p->value == NULL)
-           {
-             _asn1_error_description_value_not_found (p, ErrorDescription);
-             err = ASN1_VALUE_NOT_FOUND;
-             goto error;
-           }
-         len2 = asn1_get_length_der (p->value, p->value_len, &amp;len3);
-         if (len2 < 0)
-           {
-             err = ASN1_DER_ERROR;
-             goto error;
-           }
-         max_len -= len2;
-         if (max_len >= 0)
-           memcpy (der + counter, p->value + len3, len2);
-         counter += len2;
-         move = RIGHT;
-         break;
-       default:
-         move = (move == UP) ? RIGHT : DOWN;
-         break;
-       }
-
-      if ((move != DOWN) &amp;& (counter != counter_old))
-       {
-         err = _asn1_complete_explicit_tag (p, der, &amp;counter, &max_len);
-         if (err != ASN1_SUCCESS &amp;& err != ASN1_MEM_ERROR)
-           goto error;
-       }
-
-      if (p == node &amp;& move != DOWN)
-       break;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           p = p->down;
-         else
-           move = RIGHT;
-       }
-      if (move == RIGHT)
-       {
-         if (p->right)
-           p = p->right;
-         else
-           move = UP;
-       }
-      if (move == UP)
-       p = _asn1_find_up (p);
-    }
-
-  *len = counter;
-
-  if (max_len < 0)
-    {
-      err = ASN1_MEM_ERROR;
-      goto error;
-    }
-
-  err = ASN1_SUCCESS;
-
-error:
-  asn1_delete_structure (&amp;node);
-  return err;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_untestable">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_extract_tag_der_src', 
'_asn1_extract_tag_der_button')"><span 
id="_asn1_extract_tag_der_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_extract_tag_der
-</td>
-<td class="function_entry_cyclo">
-74
-</td>
-<td class="function_entry_number">
-105
-</td>
-<td class="function_entry_number">
-197
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_extract_tag_der_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static int
-_asn1_extract_tag_der (ASN1_TYPE node, const unsigned char *der, int der_len,
-                      int *ret_len)
-{
-  ASN1_TYPE p;
-  int counter, len2, len3, is_tag_implicit;
-  unsigned long tag, tag_implicit = 0;
-  unsigned char class, class2, class_implicit = 0;
-
-  if (der_len <= 0)
-    return ASN1_GENERIC_ERROR;
-
-  counter = is_tag_implicit = 0;
-
-  if (node->type &amp; CONST_TAG)
-    {
-      p = node->down;
-      while (p)
-       {
-         if (type_field (p->type) == TYPE_TAG)
-           {
-             if (p->type &amp; CONST_APPLICATION)
-               class2 = ASN1_CLASS_APPLICATION;
-             else if (p->type &amp; CONST_UNIVERSAL)
-               class2 = ASN1_CLASS_UNIVERSAL;
-             else if (p->type &amp; CONST_PRIVATE)
-               class2 = ASN1_CLASS_PRIVATE;
-             else
-               class2 = ASN1_CLASS_CONTEXT_SPECIFIC;
-
-             if (p->type &amp; CONST_EXPLICIT)
-               {
-                 if (asn1_get_tag_der
-                     (der + counter, der_len - counter, &amp;class, &len2,
-                      &amp;tag) != ASN1_SUCCESS)
-                   return ASN1_DER_ERROR;
-
-                 if (counter + len2 > der_len)
-                   return ASN1_DER_ERROR;
-                 counter += len2;
-
-                 len3 =
-                   asn1_get_length_ber (der + counter, der_len - counter,
-                                        &amp;len2);
-                 if (len3 < 0)
-                   return ASN1_DER_ERROR;
-                  
-                 counter += len2;
-                 if (counter > der_len)
-                   return ASN1_DER_ERROR;
-
-                 if (!is_tag_implicit)
-                   {
-                     if ((class != (class2 | ASN1_CLASS_STRUCTURED)) ||
-                         (tag != strtoul ((char *) p->value, NULL, 10)))
-                       return ASN1_TAG_ERROR;
-                   }
-                 else
-                   {           /* ASN1_TAG_IMPLICIT */
-                     if ((class != class_implicit) || (tag != tag_implicit))
-                       return ASN1_TAG_ERROR;
-                   }
-                 is_tag_implicit = 0;
-               }
-             else
-               {               /* ASN1_TAG_IMPLICIT */
-                 if (!is_tag_implicit)
-                   {
-                     if ((type_field (node->type) == TYPE_SEQUENCE) ||
-                         (type_field (node->type) == TYPE_SEQUENCE_OF) ||
-                         (type_field (node->type) == TYPE_SET) ||
-                         (type_field (node->type) == TYPE_SET_OF))
-                       class2 |= ASN1_CLASS_STRUCTURED;
-                     class_implicit = class2;
-                     tag_implicit = strtoul ((char *) p->value, NULL, 10);
-                     is_tag_implicit = 1;
-                   }
-               }
-           }
-         p = p->right;
-       }
-    }
-
-  if (is_tag_implicit)
-    {
-      if (asn1_get_tag_der
-         (der + counter, der_len - counter, &amp;class, &len2,
-          &amp;tag) != ASN1_SUCCESS)
-       return ASN1_DER_ERROR;
-      if (counter + len2 > der_len)
-       return ASN1_DER_ERROR;
-
-      if ((class != class_implicit) || (tag != tag_implicit))
-       {
-         if (type_field (node->type) == TYPE_OCTET_STRING)
-           {
-             class_implicit |= ASN1_CLASS_STRUCTURED;
-             if ((class != class_implicit) || (tag != tag_implicit))
-               return ASN1_TAG_ERROR;
-           }
-         else
-           return ASN1_TAG_ERROR;
-       }
-    }
-  else
-    {
-      if (type_field (node->type) == TYPE_TAG)
-       {
-         counter = 0;
-         *ret_len = counter;
-         return ASN1_SUCCESS;
-       }
-
-      if (asn1_get_tag_der
-         (der + counter, der_len - counter, &amp;class, &len2,
-          &amp;tag) != ASN1_SUCCESS)
-       return ASN1_DER_ERROR;
-
-      if (counter + len2 > der_len)
-       return ASN1_DER_ERROR;
-
-      switch (type_field (node->type))
-       {
-       case TYPE_NULL:
-         if ((class != ASN1_CLASS_UNIVERSAL) || (tag != ASN1_TAG_NULL))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_BOOLEAN:
-         if ((class != ASN1_CLASS_UNIVERSAL) || (tag != ASN1_TAG_BOOLEAN))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_INTEGER:
-         if ((class != ASN1_CLASS_UNIVERSAL) || (tag != ASN1_TAG_INTEGER))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_ENUMERATED:
-         if ((class != ASN1_CLASS_UNIVERSAL) || (tag != ASN1_TAG_ENUMERATED))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_OBJECT_ID:
-         if ((class != ASN1_CLASS_UNIVERSAL) || (tag != ASN1_TAG_OBJECT_ID))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_TIME:
-         if (node->type &amp; CONST_UTC)
-           {
-             if ((class != ASN1_CLASS_UNIVERSAL)
-                 || (tag != ASN1_TAG_UTCTime))
-               return ASN1_DER_ERROR;
-           }
-         else
-           {
-             if ((class != ASN1_CLASS_UNIVERSAL)
-                 || (tag != ASN1_TAG_GENERALIZEDTime))
-               return ASN1_DER_ERROR;
-           }
-         break;
-       case TYPE_OCTET_STRING:
-         if (((class != ASN1_CLASS_UNIVERSAL)
-              &amp;& (class != (ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED)))
-             || (tag != ASN1_TAG_OCTET_STRING))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_GENERALSTRING:
-         if ((class != ASN1_CLASS_UNIVERSAL)
-             || (tag != ASN1_TAG_GENERALSTRING))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_BIT_STRING:
-         if ((class != ASN1_CLASS_UNIVERSAL) || (tag != ASN1_TAG_BIT_STRING))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_SEQUENCE:
-       case TYPE_SEQUENCE_OF:
-         if ((class != (ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED))
-             || (tag != ASN1_TAG_SEQUENCE))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_SET:
-       case TYPE_SET_OF:
-         if ((class != (ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED))
-             || (tag != ASN1_TAG_SET))
-           return ASN1_DER_ERROR;
-         break;
-       case TYPE_ANY:
-         counter -= len2;
-         break;
-       default:
-         return ASN1_DER_ERROR;
-         break;
-       }
-    }
-
-  counter += len2;
-  *ret_len = counter;
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_untestable">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('yyparse_src', 'yyparse_button')"><span 
id="yyparse_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-yyparse
-</td>
-<td class="function_entry_cyclo">
-145
-</td>
-<td class="function_entry_number">
-431
-</td>
-<td class="function_entry_number">
-1015
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="yyparse_src" class="function_src" style="position: relative; display: 
none;">
-<pre class="function_src">
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
-{
-  
-  int yystate;
-  int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
-
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
-
-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
-
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
-
-
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  YYSIZE_T yystacksize = YYINITDEPTH;
-
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
-
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  yychar = YYEMPTY;            /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-
-  yyssp = yyss;
-  yyvsp = yyvs;
-
-  goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
- yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed.  So pushing a state here evens the stacks.  */
-  yyssp++;
-
- yysetstate:
-  *yyssp = yystate;
-
-  if (yyss + yystacksize - 1 <= yyssp)
-    {
-      /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      {
-       /* Give user a chance to reallocate the stack.  Use copies of
-          these so that the &amp;'s don't force the real ones into
-          memory.  */
-       YYSTYPE *yyvs1 = yyvs;
-       yytype_int16 *yyss1 = yyss;
-
-
-       /* Each stack pointer address is followed by the size of the
-          data in use in that stack, in bytes.  This used to be a
-          conditional around just the two extra args, but that might
-          be undefined if yyoverflow is a macro.  */
-       yyoverflow (YY_("memory exhausted"),
-                   &amp;yyss1, yysize * sizeof (*yyssp),
-                   &amp;yyvs1, yysize * sizeof (*yyvsp),
-
-                   &amp;yystacksize);
-
-       yyss = yyss1;
-       yyvs = yyvs1;
-      }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
-      /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-       goto yyexhaustedlab;
-      yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
-       yystacksize = YYMAXDEPTH;
-
-      {
-       yytype_int16 *yyss1 = yyss;
-       union yyalloc *yyptr =
-         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-       if (! yyptr)
-         goto yyexhaustedlab;
-       YYSTACK_RELOCATE (yyss);
-       YYSTACK_RELOCATE (yyvs);
-
-#  undef YYSTACK_RELOCATE
-       if (yyss1 != yyssa)
-         YYSTACK_FREE (yyss1);
-      }
-# endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
-
-
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                 (unsigned long int) yystacksize));
-
-      if (yyss + yystacksize - 1 <= yyssp)
-       YYABORT;
-    }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
-  goto yybackup;
-
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
-
-  /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
-
-  /* First try to decide what to do without reference to look-ahead token.  */
-  yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
-    goto yydefault;
-
-  /* Not known => get a look-ahead token if don't already have one.  */
-
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-  if (yychar == YYEMPTY)
-    {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
-    }
-
-  if (yychar <= YYEOF)
-    {
-      yychar = yytoken = YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
-    }
-  else
-    {
-      yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &amp;yylval, &yylloc);
-    }
-
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
-    goto yydefault;
-  yyn = yytable[yyn];
-  if (yyn <= 0)
-    {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-       goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
-
-  /* Shift the look-ahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &amp;yylval, &yylloc);
-
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  yystate = yyn;
-  *++yyvsp = yylval;
-
-  goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
-yydefault:
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-  goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction.  |
-`-----------------------------*/
-yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
-  yylen = yyr2[yyn];
-
-  /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
-    {
-        case 2:
-#line 127 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_DEFINITIONS|(yyvsp[(3) - (8)].constant));
-                    _asn1_set_name((yyval.node),_asn1_get_name((yyvsp[(1) - 
(8)].node)));
-                    _asn1_set_name((yyvsp[(1) - (8)].node),"");
-                    _asn1_set_right((yyvsp[(1) - (8)].node),(yyvsp[(7) - 
(8)].node));
-                    _asn1_set_down((yyval.node),(yyvsp[(1) - (8)].node));
-
-                   p_tree=(yyval.node);
-                   }
-    break;
-
-  case 3:
-#line 137 "ASN1.y"
-    {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
-    break;
-
-  case 4:
-#line 138 "ASN1.y"
-    {strcpy((yyval.str),(yyvsp[(2) - (2)].str));}
-    break;
-
-  case 5:
-#line 141 "ASN1.y"
-    {strcpy((yyval.str),"-");
-                       strcat((yyval.str),(yyvsp[(2) - (2)].str));}
-    break;
-
-  case 6:
-#line 145 "ASN1.y"
-    {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
-    break;
-
-  case 7:
-#line 146 "ASN1.y"
-    {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
-    break;
-
-  case 8:
-#line 149 "ASN1.y"
-    {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
-    break;
-
-  case 9:
-#line 150 "ASN1.y"
-    {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
-    break;
-
-  case 10:
-#line 153 "ASN1.y"
-    {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
-    break;
-
-  case 11:
-#line 154 "ASN1.y"
-    {strcpy((yyval.str),(yyvsp[(1) - (1)].str));}
-    break;
-
-  case 12:
-#line 157 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_CONSTANT);
-                                       _asn1_set_value((yyval.node),(yyvsp[(2) 
- (3)].str),strlen((yyvsp[(2) - (3)].str))+1);}
-    break;
-
-  case 13:
-#line 159 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_CONSTANT);
-                                      _asn1_set_name((yyval.node),(yyvsp[(1) - 
(4)].str));
-                                       _asn1_set_value((yyval.node),(yyvsp[(3) 
- (4)].str),strlen((yyvsp[(3) - (4)].str))+1);}
-    break;
-
-  case 14:
-#line 164 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 15:
-#line 165 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (3)].node);
-                                            
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - 
(3)].node));}
-    break;
-
-  case 16:
-#line 169 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_CONSTANT);
-                                   _asn1_set_value((yyval.node),(yyvsp[(1) - 
(1)].str),strlen((yyvsp[(1) - (1)].str))+1);}
-    break;
-
-  case 17:
-#line 171 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_CONSTANT);
-                                   _asn1_set_name((yyval.node),(yyvsp[(1) - 
(4)].str));
-                                    _asn1_set_value((yyval.node),(yyvsp[(3) - 
(4)].str),strlen((yyvsp[(3) - (4)].str))+1);}
-    break;
-
-  case 18:
-#line 176 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 19:
-#line 177 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (2)].node);
-                                                    
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (2)].node)),(yyvsp[(2) - 
(2)].node));}
-    break;
-
-  case 20:
-#line 181 "ASN1.y"
-    {(yyval.constant)=CONST_UNIVERSAL;}
-    break;
-
-  case 21:
-#line 182 "ASN1.y"
-    {(yyval.constant)=CONST_PRIVATE;}
-    break;
-
-  case 22:
-#line 183 "ASN1.y"
-    {(yyval.constant)=CONST_APPLICATION;}
-    break;
-
-  case 23:
-#line 186 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_TAG);
-                            _asn1_set_value((yyval.node),(yyvsp[(2) - 
(3)].str),strlen((yyvsp[(2) - (3)].str))+1);}
-    break;
-
-  case 24:
-#line 188 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_TAG | (yyvsp[(2) - (4)].constant));
-                                _asn1_set_value((yyval.node),(yyvsp[(3) - 
(4)].str),strlen((yyvsp[(3) - (4)].str))+1);}
-    break;
-
-  case 25:
-#line 192 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 26:
-#line 193 "ASN1.y"
-    {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_EXPLICIT);}
-    break;
-
-  case 27:
-#line 194 "ASN1.y"
-    {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_IMPLICIT);}
-    break;
-
-  case 28:
-#line 197 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_DEFAULT);
-                                       _asn1_set_value((yyval.node),(yyvsp[(2) 
- (2)].str),strlen((yyvsp[(2) - (2)].str))+1);}
-    break;
-
-  case 29:
-#line 199 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_DEFAULT|CONST_TRUE);}
-    break;
-
-  case 30:
-#line 200 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_DEFAULT|CONST_FALSE);}
-    break;
-
-  case 33:
-#line 209 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_INTEGER);}
-    break;
-
-  case 34:
-#line 210 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_INTEGER|CONST_LIST);
-                                        _asn1_set_down((yyval.node),(yyvsp[(3) 
- (4)].node));}
-    break;
-
-  case 35:
-#line 212 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_INTEGER);}
-    break;
-
-  case 36:
-#line 214 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_INTEGER|CONST_MIN_MAX);
-                                         
_asn1_set_down((yyval.node),_asn1_add_node(TYPE_SIZE));
-                                         
_asn1_set_value(_asn1_get_down((yyval.node)),(yyvsp[(6) - 
(7)].str),strlen((yyvsp[(6) - (7)].str))+1);
-                                         
_asn1_set_name(_asn1_get_down((yyval.node)),(yyvsp[(3) - (7)].str));}
-    break;
-
-  case 37:
-#line 220 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_BOOLEAN);}
-    break;
-
-  case 38:
-#line 223 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_TIME|CONST_UTC);}
-    break;
-
-  case 39:
-#line 224 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_TIME|CONST_GENERALIZED);}
-    break;
-
-  case 40:
-#line 227 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_SIZE|CONST_1_PARAM);
-                                     _asn1_set_value((yyval.node),(yyvsp[(3) - 
(4)].str),strlen((yyvsp[(3) - (4)].str))+1);}
-    break;
-
-  case 41:
-#line 230 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_SIZE|CONST_MIN_MAX);
-                                     _asn1_set_value((yyval.node),(yyvsp[(3) - 
(7)].str),strlen((yyvsp[(3) - (7)].str))+1);
-                                      _asn1_set_name((yyval.node),(yyvsp[(6) - 
(7)].str));}
-    break;
-
-  case 42:
-#line 235 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 43:
-#line 236 "ASN1.y"
-    {(yyval.node)=(yyvsp[(2) - (3)].node);}
-    break;
-
-  case 44:
-#line 239 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_GENERALSTRING);}
-    break;
-
-  case 45:
-#line 240 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_GENERALSTRING|CONST_SIZE);
-                                         
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
-    break;
-
-  case 46:
-#line 244 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_OCTET_STRING);}
-    break;
-
-  case 47:
-#line 245 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_OCTET_STRING|CONST_SIZE);
-                                           
_asn1_set_down((yyval.node),(yyvsp[(3) - (3)].node));}
-    break;
-
-  case 48:
-#line 249 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_CONSTANT);
-                                  _asn1_set_name((yyval.node),(yyvsp[(1) - 
(4)].str));
-                                    _asn1_set_value((yyval.node),(yyvsp[(3) - 
(4)].str),strlen((yyvsp[(3) - (4)].str))+1);}
-    break;
-
-  case 49:
-#line 254 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 50:
-#line 255 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (3)].node);
-                                                       
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - 
(3)].node));}
-    break;
-
-  case 51:
-#line 259 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_BIT_STRING);}
-    break;
-
-  case 52:
-#line 260 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_BIT_STRING|CONST_SIZE);}
-    break;
-
-  case 53:
-#line 262 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_BIT_STRING|CONST_LIST);
-                                _asn1_set_down((yyval.node),(yyvsp[(4) - 
(5)].node));}
-    break;
-
-  case 54:
-#line 267 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_ENUMERATED|CONST_LIST);
-                                _asn1_set_down((yyval.node),(yyvsp[(3) - 
(4)].node));}
-    break;
-
-  case 55:
-#line 272 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_OBJECT_ID);}
-    break;
-
-  case 56:
-#line 275 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_IDENTIFIER);
-                                       _asn1_set_value((yyval.node),(yyvsp[(1) 
- (1)].str),strlen((yyvsp[(1) - (1)].str))+1);}
-    break;
-
-  case 57:
-#line 277 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_IDENTIFIER|CONST_SIZE);
-                                       _asn1_set_value((yyval.node),(yyvsp[(1) 
- (2)].str),strlen((yyvsp[(1) - (2)].str))+1);
-                                       _asn1_set_down((yyval.node),(yyvsp[(2) 
- (2)].node));}
-    break;
-
-  case 58:
-#line 280 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 59:
-#line 281 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 60:
-#line 282 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 62:
-#line 284 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 63:
-#line 285 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 64:
-#line 286 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 65:
-#line 287 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 66:
-#line 288 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 67:
-#line 289 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 68:
-#line 290 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 69:
-#line 291 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 70:
-#line 292 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_NULL);}
-    break;
-
-  case 71:
-#line 295 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 72:
-#line 296 "ASN1.y"
-    {(yyval.node)=_asn1_mod_type((yyvsp[(2) - (2)].node),CONST_TAG);
-                                               _asn1_set_right((yyvsp[(1) - 
(2)].node),_asn1_get_down((yyval.node)));
-                                               
_asn1_set_down((yyval.node),(yyvsp[(1) - (2)].node));}
-    break;
-
-  case 73:
-#line 301 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 74:
-#line 302 "ASN1.y"
-    {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_DEFAULT);
-                                                       
_asn1_set_right((yyvsp[(2) - (2)].node),_asn1_get_down((yyval.node)));
-                                                      
_asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));}
-    break;
-
-  case 75:
-#line 305 "ASN1.y"
-    {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_OPTION);}
-    break;
-
-  case 76:
-#line 308 "ASN1.y"
-    {(yyval.node)=_asn1_set_name((yyvsp[(2) - (2)].node),(yyvsp[(1) - 
(2)].str));}
-    break;
-
-  case 77:
-#line 311 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 78:
-#line 312 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (3)].node);
-                                                
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - 
(3)].node));}
-    break;
-
-  case 79:
-#line 316 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_SEQUENCE);
-                                              
_asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));}
-    break;
-
-  case 80:
-#line 318 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_SEQUENCE_OF);
-                                              
_asn1_set_down((yyval.node),(yyvsp[(3) - (3)].node));}
-    break;
-
-  case 81:
-#line 320 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_SEQUENCE_OF|CONST_SIZE);
-                                            _asn1_set_right((yyvsp[(2) - 
(4)].node),(yyvsp[(4) - (4)].node));
-                                            
_asn1_set_down((yyval.node),(yyvsp[(2) - (4)].node));}
-    break;
-
-  case 82:
-#line 325 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_SET);
-                                     _asn1_set_down((yyval.node),(yyvsp[(3) - 
(4)].node));}
-    break;
-
-  case 83:
-#line 327 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_SET_OF);
-                                     _asn1_set_down((yyval.node),(yyvsp[(3) - 
(3)].node));}
-    break;
-
-  case 84:
-#line 329 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_SET_OF|CONST_SIZE);
-                                       _asn1_set_right((yyvsp[(2) - 
(4)].node),(yyvsp[(4) - (4)].node));
-                                       _asn1_set_down((yyval.node),(yyvsp[(2) 
- (4)].node));}
-    break;
-
-  case 85:
-#line 334 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_CHOICE);
-                                             
_asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));}
-    break;
-
-  case 86:
-#line 338 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_ANY);}
-    break;
-
-  case 87:
-#line 339 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_ANY|CONST_DEFINED_BY);
-                                        
_asn1_set_down((yyval.node),_asn1_add_node(TYPE_CONSTANT));
-                                       
_asn1_set_name(_asn1_get_down((yyval.node)),(yyvsp[(4) - (4)].str));}
-    break;
-
-  case 88:
-#line 344 "ASN1.y"
-    {(yyval.node)=_asn1_set_name((yyvsp[(3) - (3)].node),(yyvsp[(1) - 
(3)].str));}
-    break;
-
-  case 89:
-#line 348 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_OBJECT_ID|CONST_ASSIGN);
-                         _asn1_set_name((yyval.node),(yyvsp[(1) - (7)].str));
-                         _asn1_set_down((yyval.node),(yyvsp[(6) - (7)].node));}
-    break;
-
-  case 90:
-#line 352 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_OBJECT_ID|CONST_ASSIGN|CONST_1_PARAM);
-                         _asn1_set_name((yyval.node),(yyvsp[(1) - (6)].str));
-                         _asn1_set_value((yyval.node),(yyvsp[(2) - 
(6)].str),strlen((yyvsp[(2) - (6)].str))+1);
-                         _asn1_set_down((yyval.node),(yyvsp[(5) - (6)].node));}
-    break;
-
-  case 91:
-#line 357 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_INTEGER|CONST_ASSIGN);
-                         _asn1_set_name((yyval.node),(yyvsp[(1) - (4)].str));
-                         _asn1_set_value((yyval.node),(yyvsp[(4) - 
(4)].str),strlen((yyvsp[(4) - (4)].str))+1);}
-    break;
-
-  case 92:
-#line 362 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 93:
-#line 363 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 94:
-#line 366 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (1)].node);}
-    break;
-
-  case 95:
-#line 367 "ASN1.y"
-    {(yyval.node)=(yyvsp[(1) - (2)].node);
-                                                          
_asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (2)].node)),(yyvsp[(2) - 
(2)].node));}
-    break;
-
-  case 96:
-#line 371 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_OBJECT_ID);
-                                                          
_asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));
-                                                          
_asn1_set_name((yyval.node),(yyvsp[(1) - (4)].str));}
-    break;
-
-  case 97:
-#line 374 "ASN1.y"
-    {(yyval.node)=_asn1_add_node(TYPE_OBJECT_ID);
-                                                          
_asn1_set_name((yyval.node),(yyvsp[(1) - (3)].str));}
-    break;
-
-  case 98:
-#line 398 "ASN1.y"
-    {(yyval.constant)=CONST_EXPLICIT;}
-    break;
-
-  case 99:
-#line 399 "ASN1.y"
-    {(yyval.constant)=CONST_IMPLICIT;}
-    break;
-
-
-/* Line 1267 of yacc.c.  */
-#line 2141 "ASN1.c"
-      default: break;
-    }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &amp;yyval, &yyloc);
-
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-
-  *++yyvsp = yyval;
-
-
-  /* Now `shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate &amp;& yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
-
-  goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
-    {
-      ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (YY_("syntax error"));
-#else
-      {
-       YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-       if (yymsg_alloc < yysize &amp;& yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-         {
-           YYSIZE_T yyalloc = 2 * yysize;
-           if (! (yysize <= yyalloc &amp;& yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-             yyalloc = YYSTACK_ALLOC_MAXIMUM;
-           if (yymsg != yymsgbuf)
-             YYSTACK_FREE (yymsg);
-           yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-           if (yymsg)
-             yymsg_alloc = yyalloc;
-           else
-             {
-               yymsg = yymsgbuf;
-               yymsg_alloc = sizeof yymsgbuf;
-             }
-         }
-
-       if (0 < yysize &amp;& yysize <= yymsg_alloc)
-         {
-           (void) yysyntax_error (yymsg, yystate, yychar);
-           yyerror (yymsg);
-         }
-       else
-         {
-           yyerror (YY_("syntax error"));
-           if (yysize != 0)
-             goto yyexhaustedlab;
-         }
-      }
-#endif
-    }
-
-
-
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse look-ahead token after an
-        error, discard it.  */
-
-      if (yychar <= YYEOF)
-       {
-         /* Return failure if at end of input.  */
-         if (yychar == YYEOF)
-           YYABORT;
-       }
-      else
-       {
-         yydestruct ("Error: discarding",
-                     yytoken, &amp;yylval);
-         yychar = YYEMPTY;
-       }
-    }
-
-  /* Else will try to reuse look-ahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR.  |
-`---------------------------------------------------*/
-yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
-
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-       {
-         yyn += YYTERROR;
-         if (0 <= yyn &amp;& yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-           {
-             yyn = yytable[yyn];
-             if (0 < yyn)
-               break;
-           }
-       }
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
-       YYABORT;
-
-
-      yydestruct ("Error: popping",
-                 yystos[yystate], yyvsp);
-      YYPOPSTACK (1);
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
-    }
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  *++yyvsp = yylval;
-
-
-  /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
-  yystate = yyn;
-  goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturn;
-
-#ifndef yyoverflow
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (YY_("memory exhausted"));
-  yyresult = 2;
-  /* Fall through.  */
-#endif
-
-yyreturn:
-  if (yychar != YYEOF &amp;& yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-                yytoken, &amp;yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
-    {
-      yydestruct ("Cleanup: popping",
-                 yystos[*yyssp], yyvsp);
-      YYPOPSTACK (1);
-    }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_expand_object_id_src', 
'_asn1_expand_object_id_button')"><span 
id="_asn1_expand_object_id_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_expand_object_id
-</td>
-<td class="function_entry_cyclo">
-44
-</td>
-<td class="function_entry_number">
-95
-</td>
-<td class="function_entry_number">
-169
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_expand_object_id_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-_asn1_expand_object_id (ASN1_TYPE node)
-{
-  ASN1_TYPE p, p2, p3, p4, p5;
-  char name_root[ASN1_MAX_NAME_SIZE], name2[2 * ASN1_MAX_NAME_SIZE + 1];
-  int move, tlen;
-
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  _asn1_str_cpy (name_root, sizeof (name_root), node->name);
-
-  p = node;
-  move = DOWN;
-
-  while (!((p == node) &amp;& (move == UP)))
-    {
-      if (move != UP)
-       {
-         if ((type_field (p->type) == TYPE_OBJECT_ID)
-             &amp;& (p->type & CONST_ASSIGN))
-           {
-             p2 = p->down;
-             if (p2 &amp;& (type_field (p2->type) == TYPE_CONSTANT))
-               {
-                 if (p2->value &amp;& !isdigit (p2->value[0]))
-                   {
-                     _asn1_str_cpy (name2, sizeof (name2), name_root);
-                     _asn1_str_cat (name2, sizeof (name2), ".");
-                     _asn1_str_cat (name2, sizeof (name2), p2->value);
-                     p3 = asn1_find_node (node, name2);
-                     if (!p3 || (type_field (p3->type) != TYPE_OBJECT_ID) ||
-                         !(p3->type &amp; CONST_ASSIGN))
-                       return ASN1_ELEMENT_NOT_FOUND;
-                     _asn1_set_down (p, p2->right);
-                     _asn1_remove_node (p2);
-                     p2 = p;
-                     p4 = p3->down;
-                     while (p4)
-                       {
-                         if (type_field (p4->type) == TYPE_CONSTANT)
-                           {
-                             p5 = _asn1_add_node_only (TYPE_CONSTANT);
-                             _asn1_set_name (p5, p4->name);
-                             tlen = strlen (p4->value);
-                             if (tlen > 0)
-                               _asn1_set_value (p5, p4->value, tlen + 1);
-                             if (p2 == p)
-                               {
-                                 _asn1_set_right (p5, p->down);
-                                 _asn1_set_down (p, p5);
-                               }
-                             else
-                               {
-                                 _asn1_set_right (p5, p2->right);
-                                 _asn1_set_right (p2, p5);
-                               }
-                             p2 = p5;
-                           }
-                         p4 = p4->right;
-                       }
-                     move = DOWN;
-                     continue;
-                   }
-               }
-           }
-         move = DOWN;
-       }
-      else
-       move = RIGHT;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           p = p->down;
-         else
-           move = RIGHT;
-       }
-
-      if (p == node)
-       {
-         move = UP;
-         continue;
-       }
-
-      if (move == RIGHT)
-       {
-         if (p->right)
-           p = p->right;
-         else
-           move = UP;
-       }
-      if (move == UP)
-       p = _asn1_find_up (p);
-    }
-
-
-  /*******************************/
-  /*       expand DEFAULT        */
-  /*******************************/
-  p = node;
-  move = DOWN;
-
-  while (!((p == node) &amp;& (move == UP)))
-    {
-      if (move != UP)
-       {
-         if ((type_field (p->type) == TYPE_OBJECT_ID) &amp;&
-             (p->type &amp; CONST_DEFAULT))
-           {
-             p2 = p->down;
-             if (p2 &amp;& (type_field (p2->type) == TYPE_DEFAULT))
-               {
-                 _asn1_str_cpy (name2, sizeof (name2), name_root);
-                 _asn1_str_cat (name2, sizeof (name2), ".");
-                 _asn1_str_cat (name2, sizeof (name2), p2->value);
-                 p3 = asn1_find_node (node, name2);
-                 if (!p3 || (type_field (p3->type) != TYPE_OBJECT_ID) ||
-                     !(p3->type &amp; CONST_ASSIGN))
-                   return ASN1_ELEMENT_NOT_FOUND;
-                 p4 = p3->down;
-                 name2[0] = 0;
-                 while (p4)
-                   {
-                     if (type_field (p4->type) == TYPE_CONSTANT)
-                       {
-                         if (name2[0])
-                           _asn1_str_cat (name2, sizeof (name2), ".");
-                         _asn1_str_cat (name2, sizeof (name2), p4->value);
-                       }
-                     p4 = p4->right;
-                   }
-                 tlen = strlen (name2);
-                 if (tlen > 0)
-                   _asn1_set_value (p2, name2, tlen + 1);
-               }
-           }
-         move = DOWN;
-       }
-      else
-       move = RIGHT;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           p = p->down;
-         else
-           move = RIGHT;
-       }
-
-      if (p == node)
-       {
-         move = UP;
-         continue;
-       }
-
-      if (move == RIGHT)
-       {
-         if (p->right)
-           p = p->right;
-         else
-           move = UP;
-       }
-      if (move == UP)
-       p = _asn1_find_up (p);
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_yylex_src', '_asn1_yylex_button')"><span 
id="_asn1_yylex_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_yylex
-</td>
-<td class="function_entry_cyclo">
-44
-</td>
-<td class="function_entry_number">
-54
-</td>
-<td class="function_entry_number">
-80
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_yylex_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-static int
-_asn1_yylex()
-{
-  int c,counter=0,k,lastc;
-  char string[ASN1_MAX_NAME_SIZE+1]; /* will contain the next token */
-  size_t i;
-
-  while(1)
-    {
-    while((c=fgetc(file_asn1))==' ' || c=='\t' || c=='\n')
-      if(c=='\n') lineNumber++;
-
-    if(c==EOF){
-      strcpy(lastToken,"End Of File");
-      return 0;
-    }
-
-    if(c=='(' || c==')' || c=='[' || c==']' ||
-       c=='{' || c=='}' || c==',' || c=='.' ||
-       c=='+' || c=='|'){
-      lastToken[0]=c;lastToken[1]=0;
-      return c;
-    }
-    if(c=='-'){  /* Maybe the first '-' of a comment */
-      if((c=fgetc(file_asn1))!='-'){
-       ungetc(c,file_asn1);
-       lastToken[0]='-';lastToken[1]=0;
-       return '-';
-      }
-      else{ /* Comments */
-       lastc=0;
-       counter=0;
-       /* A comment finishes at the next double hypen or the end of line */
-       while((c=fgetc(file_asn1))!=EOF &amp;& c!='\n' &&
-             (lastc!='-' || (lastc=='-' &amp;& c!='-')))
-         lastc=c;
-       if(c==EOF){
-         strcpy(lastToken,"End Of File");
-         return 0;
-       }
-       else{
-         if(c=='\n') lineNumber++;
-         continue; /* next char, please! (repeat the search) */
-       }
-      }
-    }
-    string[counter++]=c;
-    /* Till the end of the token */
-    while(!((c=fgetc(file_asn1))==EOF || c==' '|| c=='\t' || c=='\n' ||
-            c=='(' || c==')' || c=='[' || c==']' ||
-            c=='{' || c=='}' || c==',' || c=='.'))
-      {
-       if(counter>=ASN1_MAX_NAME_SIZE){
-         result_parse=ASN1_NAME_TOO_LONG;
-         return 0;
-       }
-       string[counter++]=c;
-      }
-    ungetc(c,file_asn1);
-    string[counter]=0;
-    strcpy(lastToken,string);
-
-    /* Is STRING a number? */
-    for(k=0;k<counter;k++)
-      if(!isdigit(string[k])) break;
-    if(k>=counter)
-      {
-      strcpy(yylval.str,string);
-      return NUM; /* return the number */
-      }
-
-    /* Is STRING a keyword? */
-    for(i=0;i<(sizeof(key_word)/sizeof(char*));i++)
-      if(!strcmp(string,key_word[i])) return key_word_token[i];
-
-    /* STRING is an IDENTIFIER */
-    strcpy(yylval.str,string);
-    return IDENTIFIER;
-    }
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_expand_any_defined_by_src', 
'asn1_expand_any_defined_by_button')"><span 
id="asn1_expand_any_defined_by_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_expand_any_defined_by
-</td>
-<td class="function_entry_cyclo">
-43
-</td>
-<td class="function_entry_number">
-101
-</td>
-<td class="function_entry_number">
-211
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_expand_any_defined_by_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_expand_any_defined_by (ASN1_TYPE definitions, ASN1_TYPE * element)
-{
-  char definitionsName[ASN1_MAX_NAME_SIZE], name[2 * ASN1_MAX_NAME_SIZE + 1],
-    value[ASN1_MAX_NAME_SIZE];
-  asn1_retCode retCode = ASN1_SUCCESS, result;
-  int len, len2, len3;
-  ASN1_TYPE p, p2, p3, aux = ASN1_TYPE_EMPTY;
-  char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
-
-  if ((definitions == ASN1_TYPE_EMPTY) || (*element == ASN1_TYPE_EMPTY))
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  strcpy (definitionsName, definitions->name);
-  strcat (definitionsName, ".");
-
-  p = *element;
-  while (p)
-    {
-
-      switch (type_field (p->type))
-       {
-       case TYPE_ANY:
-         if ((p->type &amp; CONST_DEFINED_BY) && (p->value))
-           {
-             /* search the "DEF_BY" element */
-             p2 = p->down;
-             while ((p2) &amp;& (type_field (p2->type) != TYPE_CONSTANT))
-               p2 = p2->right;
-
-             if (!p2)
-               {
-                 retCode = ASN1_ERROR_TYPE_ANY;
-                 break;
-               }
-
-             p3 = _asn1_find_up (p);
-
-             if (!p3)
-               {
-                 retCode = ASN1_ERROR_TYPE_ANY;
-                 break;
-               }
-
-             p3 = p3->down;
-             while (p3)
-               {
-                 if ((p3->name) &amp;& !(strcmp (p3->name, p2->name)))
-                   break;
-                 p3 = p3->right;
-               }
-
-             if ((!p3) || (type_field (p3->type) != TYPE_OBJECT_ID) ||
-                 (p3->value == NULL))
-               {
-
-                 p3 = _asn1_find_up (p);
-                 p3 = _asn1_find_up (p3);
-
-                 if (!p3)
-                   {
-                     retCode = ASN1_ERROR_TYPE_ANY;
-                     break;
-                   }
-
-                 p3 = p3->down;
-
-                 while (p3)
-                   {
-                     if ((p3->name) &amp;& !(strcmp (p3->name, p2->name)))
-                       break;
-                     p3 = p3->right;
-                   }
-
-                 if ((!p3) || (type_field (p3->type) != TYPE_OBJECT_ID) ||
-                     (p3->value == NULL))
-                   {
-                     retCode = ASN1_ERROR_TYPE_ANY;
-                     break;
-                   }
-               }
-
-             /* search the OBJECT_ID into definitions */
-             p2 = definitions->down;
-             while (p2)
-               {
-                 if ((type_field (p2->type) == TYPE_OBJECT_ID) &amp;&
-                     (p2->type &amp; CONST_ASSIGN))
-                   {
-                     strcpy (name, definitionsName);
-                     strcat (name, p2->name);
-
-                     len = ASN1_MAX_NAME_SIZE;
-                     result =
-                       asn1_read_value (definitions, name, value, &amp;len);
-
-                     if ((result == ASN1_SUCCESS)
-                         &amp;& (!strcmp (p3->value, value)))
-                       {
-                         p2 = p2->right;       /* pointer to the structure to 
-                                                  use for expansion */
-                         while ((p2) &amp;& (p2->type & CONST_ASSIGN))
-                           p2 = p2->right;
-
-                         if (p2)
-                           {
-                             strcpy (name, definitionsName);
-                             strcat (name, p2->name);
-
-                             result =
-                               asn1_create_element (definitions, name, 
&amp;aux);
-                             if (result == ASN1_SUCCESS)
-                               {
-                                 _asn1_set_name (aux, p->name);
-                                 len2 =
-                                   asn1_get_length_der (p->value,
-                                                        p->value_len, 
&amp;len3);
-                                 if (len2 < 0)
-                                   return ASN1_DER_ERROR;
-
-                                 result =
-                                   asn1_der_decoding (&amp;aux, p->value + 
len3,
-                                                      len2,
-                                                      errorDescription);
-                                 if (result == ASN1_SUCCESS)
-                                   {
-
-                                     _asn1_set_right (aux, p->right);
-                                     _asn1_set_right (p, aux);
-
-                                     result = asn1_delete_structure (&amp;p);
-                                     if (result == ASN1_SUCCESS)
-                                       {
-                                         p = aux;
-                                         aux = ASN1_TYPE_EMPTY;
-                                         break;
-                                       }
-                                     else
-                                       {       /* error with 
asn1_delete_structure */
-                                         asn1_delete_structure (&amp;aux);
-                                         retCode = result;
-                                         break;
-                                       }
-                                   }
-                                 else
-                                   {   /* error with asn1_der_decoding */
-                                     retCode = result;
-                                     break;
-                                   }
-                               }
-                             else
-                               {       /* error with asn1_create_element */
-                                 retCode = result;
-                                 break;
-                               }
-                           }
-                         else
-                           {   /* error with the pointer to the structure to 
exapand */
-                             retCode = ASN1_ERROR_TYPE_ANY;
-                             break;
-                           }
-                       }
-                   }
-                 p2 = p2->right;
-               }               /* end while */
-
-             if (!p2)
-               {
-                 retCode = ASN1_ERROR_TYPE_ANY;
-                 break;
-               }
-
-           }
-         break;
-       default:
-         break;
-       }
-
-
-      if (p->down)
-       {
-         p = p->down;
-       }
-      else if (p == *element)
-       {
-         p = NULL;
-         break;
-       }
-      else if (p->right)
-       p = p->right;
-      else
-       {
-         while (1)
-           {
-             p = _asn1_find_up (p);
-             if (p == *element)
-               {
-                 p = NULL;
-                 break;
-               }
-             if (p->right)
-               {
-                 p = p->right;
-                 break;
-               }
-           }
-       }
-    }
-
-  return retCode;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_read_value_src', 
'asn1_read_value_button')"><span id="asn1_read_value_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_read_value
-</td>
-<td class="function_entry_cyclo">
-47
-</td>
-<td class="function_entry_number">
-83
-</td>
-<td class="function_entry_number">
-161
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/element.c;hb=HEAD";>lib/element.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_read_value_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
-{
-  ASN1_TYPE node, p, p2;
-  int len2, len3;
-  int value_size = *len;
-  unsigned char *value = ivalue;
-
-  node = asn1_find_node (root, name);
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  if ((type_field (node->type) != TYPE_NULL) &amp;&
-      (type_field (node->type) != TYPE_CHOICE) &amp;&
-      !(node->type &amp; CONST_DEFAULT) && !(node->type & CONST_ASSIGN) &&
-      (node->value == NULL))
-    return ASN1_VALUE_NOT_FOUND;
-
-  switch (type_field (node->type))
-    {
-    case TYPE_NULL:
-      PUT_STR_VALUE (value, value_size, "NULL");
-      break;
-    case TYPE_BOOLEAN:
-      if ((node->type &amp; CONST_DEFAULT) && (node->value == NULL))
-       {
-         p = node->down;
-         while (type_field (p->type) != TYPE_DEFAULT)
-           p = p->right;
-         if (p->type &amp; CONST_TRUE)
-           {
-             PUT_STR_VALUE (value, value_size, "TRUE");
-           }
-         else
-           {
-             PUT_STR_VALUE (value, value_size, "FALSE");
-           }
-       }
-      else if (node->value[0] == 'T')
-       {
-         PUT_STR_VALUE (value, value_size, "TRUE");
-       }
-      else
-       {
-         PUT_STR_VALUE (value, value_size, "FALSE");
-       }
-      break;
-    case TYPE_INTEGER:
-    case TYPE_ENUMERATED:
-      if ((node->type &amp; CONST_DEFAULT) && (node->value == NULL))
-       {
-         p = node->down;
-         while (type_field (p->type) != TYPE_DEFAULT)
-           p = p->right;
-         if ((isdigit (p->value[0])) || (p->value[0] == '-')
-             || (p->value[0] == '+'))
-           {
-             if (_asn1_convert_integer
-                 (p->value, value, value_size, len) != ASN1_SUCCESS)
-               return ASN1_MEM_ERROR;
-           }
-         else
-           {                   /* is an identifier like v1 */
-             p2 = node->down;
-             while (p2)
-               {
-                 if (type_field (p2->type) == TYPE_CONSTANT)
-                   {
-                     if ((p2->name) &amp;& (!strcmp (p2->name, p->value)))
-                       {
-                         if (_asn1_convert_integer
-                             (p2->value, value, value_size,
-                              len) != ASN1_SUCCESS)
-                           return ASN1_MEM_ERROR;
-                         break;
-                       }
-                   }
-                 p2 = p2->right;
-               }
-           }
-       }
-      else
-       {
-         len2 = -1;
-         if (asn1_get_octet_der
-             (node->value, node->value_len, &amp;len2, value, value_size,
-              len) != ASN1_SUCCESS)
-           return ASN1_MEM_ERROR;
-       }
-      break;
-    case TYPE_OBJECT_ID:
-      if (node->type &amp; CONST_ASSIGN)
-       {
-         value[0] = 0;
-         p = node->down;
-         while (p)
-           {
-             if (type_field (p->type) == TYPE_CONSTANT)
-               {
-                 ADD_STR_VALUE (value, value_size, p->value);
-                 if (p->right)
-                   {
-                     ADD_STR_VALUE (value, value_size, ".");
-                   }
-               }
-             p = p->right;
-           }
-         *len = strlen (value) + 1;
-       }
-      else if ((node->type &amp; CONST_DEFAULT) && (node->value == NULL))
-       {
-         p = node->down;
-         while (type_field (p->type) != TYPE_DEFAULT)
-           p = p->right;
-         PUT_STR_VALUE (value, value_size, p->value);
-       }
-      else
-       {
-         PUT_STR_VALUE (value, value_size, node->value);
-       }
-      break;
-    case TYPE_TIME:
-      PUT_STR_VALUE (value, value_size, node->value);
-      break;
-    case TYPE_OCTET_STRING:
-      len2 = -1;
-      if (asn1_get_octet_der
-         (node->value, node->value_len, &amp;len2, value, value_size,
-          len) != ASN1_SUCCESS)
-       return ASN1_MEM_ERROR;
-      break;
-    case TYPE_GENERALSTRING:
-      len2 = -1;
-      if (asn1_get_octet_der
-         (node->value, node->value_len, &amp;len2, value, value_size,
-          len) != ASN1_SUCCESS)
-       return ASN1_MEM_ERROR;
-      break;
-    case TYPE_BIT_STRING:
-      len2 = -1;
-      if (asn1_get_bit_der
-         (node->value, node->value_len, &amp;len2, value, value_size,
-          len) != ASN1_SUCCESS)
-       return ASN1_MEM_ERROR;
-      break;
-    case TYPE_CHOICE:
-      PUT_STR_VALUE (value, value_size, node->down->name);
-      break;
-    case TYPE_ANY:
-      len3 = -1;
-      len2 = asn1_get_length_der (node->value, node->value_len, &amp;len3);
-      if (len2 < 0)
-       return ASN1_DER_ERROR;
-      PUT_VALUE (value, value_size, node->value + len3, len2);
-      break;
-    default:
-      return ASN1_ELEMENT_NOT_FOUND;
-      break;
-    }
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_check_identifier_src', 
'_asn1_check_identifier_button')"><span 
id="_asn1_check_identifier_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_check_identifier
-</td>
-<td class="function_entry_cyclo">
-26
-</td>
-<td class="function_entry_number">
-50
-</td>
-<td class="function_entry_number">
-91
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_check_identifier_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-_asn1_check_identifier (ASN1_TYPE node)
-{
-  ASN1_TYPE p, p2;
-  char name2[ASN1_MAX_NAME_SIZE * 2 + 2];
-
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  p = node;
-  while (p)
-    {
-      if (type_field (p->type) == TYPE_IDENTIFIER)
-       {
-         _asn1_str_cpy (name2, sizeof (name2), node->name);
-         _asn1_str_cat (name2, sizeof (name2), ".");
-         _asn1_str_cat (name2, sizeof (name2), p->value);
-         p2 = asn1_find_node (node, name2);
-         if (p2 == NULL)
-           {
-             strcpy (_asn1_identifierMissing, p->value);
-             return ASN1_IDENTIFIER_NOT_FOUND;
-           }
-       }
-      else if ((type_field (p->type) == TYPE_OBJECT_ID) &amp;&
-              (p->type &amp; CONST_DEFAULT))
-       {
-         p2 = p->down;
-         if (p2 &amp;& (type_field (p2->type) == TYPE_DEFAULT))
-           {
-             _asn1_str_cpy (name2, sizeof (name2), node->name);
-             _asn1_str_cat (name2, sizeof (name2), ".");
-             _asn1_str_cat (name2, sizeof (name2), p2->value);
-             strcpy (_asn1_identifierMissing, p2->value);
-             p2 = asn1_find_node (node, name2);
-             if (!p2 || (type_field (p2->type) != TYPE_OBJECT_ID) ||
-                 !(p2->type &amp; CONST_ASSIGN))
-               return ASN1_IDENTIFIER_NOT_FOUND;
-             else
-               _asn1_identifierMissing[0] = 0;
-           }
-       }
-      else if ((type_field (p->type) == TYPE_OBJECT_ID) &amp;&
-              (p->type &amp; CONST_ASSIGN))
-       {
-         p2 = p->down;
-         if (p2 &amp;& (type_field (p2->type) == TYPE_CONSTANT))
-           {
-             if (p2->value &amp;& !isdigit (p2->value[0]))
-               {
-                 _asn1_str_cpy (name2, sizeof (name2), node->name);
-                 _asn1_str_cat (name2, sizeof (name2), ".");
-                 _asn1_str_cat (name2, sizeof (name2), p2->value);
-                 strcpy (_asn1_identifierMissing, p2->value);
-                 p2 = asn1_find_node (node, name2);
-                 if (!p2 || (type_field (p2->type) != TYPE_OBJECT_ID) ||
-                     !(p2->type &amp; CONST_ASSIGN))
-                   return ASN1_IDENTIFIER_NOT_FOUND;
-                 else
-                   _asn1_identifierMissing[0] = 0;
-               }
-           }
-       }
-
-      if (p->down)
-       {
-         p = p->down;
-       }
-      else if (p->right)
-       p = p->right;
-      else
-       {
-         while (1)
-           {
-             p = _asn1_find_up (p);
-             if (p == node)
-               {
-                 p = NULL;
-                 break;
-               }
-             if (p->right)
-               {
-                 p = p->right;
-                 break;
-               }
-           }
-       }
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_expand_identifier_src', 
'_asn1_expand_identifier_button')"><span 
id="_asn1_expand_identifier_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_expand_identifier
-</td>
-<td class="function_entry_cyclo">
-25
-</td>
-<td class="function_entry_number">
-68
-</td>
-<td class="function_entry_number">
-107
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_expand_identifier_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static asn1_retCode
-_asn1_expand_identifier (ASN1_TYPE * node, ASN1_TYPE  root)
-{
-  ASN1_TYPE p, p2, p3;
-  char name2[ASN1_MAX_NAME_SIZE + 2];
-  int move;
-
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  p = *node;
-  move = DOWN;
-
-  while (!((p == *node) &amp;& (move == UP)))
-    {
-      if (move != UP)
-       {
-         if (type_field (p->type) == TYPE_IDENTIFIER)
-           {
-             _asn1_str_cpy (name2, sizeof (name2), root->name);
-             _asn1_str_cat (name2, sizeof (name2), ".");
-             _asn1_str_cat (name2, sizeof (name2), p->value);
-             p2 = _asn1_copy_structure2 (root, name2);
-             if (p2 == NULL)
-               {
-                 return ASN1_IDENTIFIER_NOT_FOUND;
-               }
-             _asn1_set_name (p2, p->name);
-             p2->right = p->right;
-             p2->left = p->left;
-             if (p->right)
-               p->right->left = p2;
-             p3 = p->down;
-             if (p3)
-               {
-                 while (p3->right)
-                   p3 = p3->right;
-                 _asn1_set_right (p3, p2->down);
-                 _asn1_set_down (p2, p->down);
-               }
-
-             p3 = _asn1_find_left (p);
-             if (p3)
-               _asn1_set_right (p3, p2);
-             else
-               {
-                 p3 = _asn1_find_up (p);
-                 if (p3)
-                   _asn1_set_down (p3, p2);
-                 else
-                   {
-                     p2->left = NULL;
-                   }
-               }
-
-             if (p->type &amp; CONST_SIZE)
-               p2->type |= CONST_SIZE;
-             if (p->type &amp; CONST_TAG)
-               p2->type |= CONST_TAG;
-             if (p->type &amp; CONST_OPTION)
-               p2->type |= CONST_OPTION;
-             if (p->type &amp; CONST_DEFAULT)
-               p2->type |= CONST_DEFAULT;
-             if (p->type &amp; CONST_SET)
-               p2->type |= CONST_SET;
-             if (p->type &amp; CONST_NOT_USED)
-               p2->type |= CONST_NOT_USED;
-
-             if (p == *node)
-               *node = p2;
-             _asn1_remove_node (p);
-             p = p2;
-             move = DOWN;
-             continue;
-           }
-         move = DOWN;
-       }
-      else
-       move = RIGHT;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           p = p->down;
-         else
-           move = RIGHT;
-       }
-
-      if (p == *node)
-       {
-         move = UP;
-         continue;
-       }
-
-      if (move == RIGHT)
-       {
-         if (p->right)
-           p = p->right;
-         else
-           move = UP;
-       }
-      if (move == UP)
-       p = _asn1_find_up (p);
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_ordering_set_of_src', 
'_asn1_ordering_set_of_button')"><span 
id="_asn1_ordering_set_of_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_ordering_set_of
-</td>
-<td class="function_entry_cyclo">
-23
-</td>
-<td class="function_entry_number">
-72
-</td>
-<td class="function_entry_number">
-124
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_ordering_set_of_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static void
-_asn1_ordering_set_of (unsigned char *der, int der_len, ASN1_TYPE  node)
-{
-  struct vet
-  {
-    int end;
-    struct vet *next, *prev;
-  };
-
-  int counter, len, len2, change;
-  struct vet *first, *last, *p_vet, *p2_vet;
-  ASN1_TYPE p;
-  unsigned char *temp, class;
-  unsigned long k, max;
-
-  counter = 0;
-
-  if (type_field (node->type) != TYPE_SET_OF)
-    return;
-
-  p = node->down;
-  while ((type_field (p->type) == TYPE_TAG)
-        || (type_field (p->type) == TYPE_SIZE))
-    p = p->right;
-  p = p->right;
-
-  if ((p == NULL) || (p->right == NULL))
-    return;
-
-  first = last = NULL;
-  while (p)
-    {
-      p_vet = (struct vet *) _asn1_malloc (sizeof (struct vet));
-      if (p_vet == NULL)
-       return;
-
-      p_vet->next = NULL;
-      p_vet->prev = last;
-      if (first == NULL)
-       first = p_vet;
-      else
-       last->next = p_vet;
-      last = p_vet;
-
-      /* extraction of tag and length */
-      if (der_len - counter > 0)
-       {
-
-         if (asn1_get_tag_der
-             (der + counter, der_len - counter, &amp;class, &len,
-              NULL) != ASN1_SUCCESS)
-           return;
-         counter += len;
-
-         len2 = asn1_get_length_der (der + counter, der_len - counter, 
&amp;len);
-         if (len2 < 0)
-           return;
-         counter += len + len2;
-       }
-
-      p_vet->end = counter;
-      p = p->right;
-    }
-
-  p_vet = first;
-
-  while (p_vet)
-    {
-      p2_vet = p_vet->next;
-      counter = 0;
-      while (p2_vet)
-       {
-         if ((p_vet->end - counter) > (p2_vet->end - p_vet->end))
-           max = p_vet->end - counter;
-         else
-           max = p2_vet->end - p_vet->end;
-
-         change = -1;
-         for (k = 0; k < max; k++)
-           if (der[counter + k] > der[p_vet->end + k])
-             {
-               change = 1;
-               break;
-             }
-           else if (der[counter + k] < der[p_vet->end + k])
-             {
-               change = 0;
-               break;
-             }
-
-         if ((change == -1)
-             &amp;& ((p_vet->end - counter) > (p2_vet->end - p_vet->end)))
-           change = 1;
-
-         if (change == 1)
-           {
-             /* change position */
-             temp = (unsigned char *) _asn1_malloc (p_vet->end - counter);
-             if (temp == NULL)
-               return;
-
-             memcpy (temp, der + counter, (p_vet->end) - counter);
-             memcpy (der + counter, der + (p_vet->end),
-                     (p2_vet->end) - (p_vet->end));
-             memcpy (der + counter + (p2_vet->end) - (p_vet->end), temp,
-                     (p_vet->end) - counter);
-             _asn1_free (temp);
-
-             p_vet->end = counter + (p2_vet->end - p_vet->end);
-           }
-         counter = p_vet->end;
-
-         p2_vet = p2_vet->next;
-         p_vet = p_vet->next;
-       }
-
-      if (p_vet != first)
-       p_vet->prev->next = NULL;
-      else
-       first = NULL;
-      _asn1_free (p_vet);
-      p_vet = first;
-    }
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_expand_octet_string_src', 
'asn1_expand_octet_string_button')"><span 
id="asn1_expand_octet_string_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_expand_octet_string
-</td>
-<td class="function_entry_cyclo">
-22
-</td>
-<td class="function_entry_number">
-65
-</td>
-<td class="function_entry_number">
-123
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_expand_octet_string_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_expand_octet_string (ASN1_TYPE definitions, ASN1_TYPE * element,
-                         const char *octetName, const char *objectName)
-{
-  char name[2 * ASN1_MAX_NAME_SIZE + 1], value[ASN1_MAX_NAME_SIZE];
-  asn1_retCode retCode = ASN1_SUCCESS, result;
-  int len, len2, len3;
-  ASN1_TYPE p2, aux = ASN1_TYPE_EMPTY;
-  ASN1_TYPE octetNode = ASN1_TYPE_EMPTY, objectNode = ASN1_TYPE_EMPTY;
-  char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
-
-  if ((definitions == ASN1_TYPE_EMPTY) || (*element == ASN1_TYPE_EMPTY))
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  octetNode = asn1_find_node (*element, octetName);
-  if (octetNode == ASN1_TYPE_EMPTY)
-    return ASN1_ELEMENT_NOT_FOUND;
-  if (type_field (octetNode->type) != TYPE_OCTET_STRING)
-    return ASN1_ELEMENT_NOT_FOUND;
-  if (octetNode->value == NULL)
-    return ASN1_VALUE_NOT_FOUND;
-
-  objectNode = asn1_find_node (*element, objectName);
-  if (objectNode == ASN1_TYPE_EMPTY)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  if (type_field (objectNode->type) != TYPE_OBJECT_ID)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  if (objectNode->value == NULL)
-    return ASN1_VALUE_NOT_FOUND;
-
-
-  /* search the OBJECT_ID into definitions */
-  p2 = definitions->down;
-  while (p2)
-    {
-      if ((type_field (p2->type) == TYPE_OBJECT_ID) &amp;&
-         (p2->type &amp; CONST_ASSIGN))
-       {
-         strcpy (name, definitions->name);
-         strcat (name, ".");
-         strcat (name, p2->name);
-
-         len = sizeof (value);
-         result = asn1_read_value (definitions, name, value, &amp;len);
-
-         if ((result == ASN1_SUCCESS)
-             &amp;& (!strcmp (objectNode->value, value)))
-           {
-
-             p2 = p2->right;   /* pointer to the structure to 
-                                  use for expansion */
-             while ((p2) &amp;& (p2->type & CONST_ASSIGN))
-               p2 = p2->right;
-
-             if (p2)
-               {
-                 strcpy (name, definitions->name);
-                 strcat (name, ".");
-                 strcat (name, p2->name);
-
-                 result = asn1_create_element (definitions, name, &amp;aux);
-                 if (result == ASN1_SUCCESS)
-                   {
-                     _asn1_set_name (aux, octetNode->name);
-                     len2 =
-                       asn1_get_length_der (octetNode->value,
-                                            octetNode->value_len, &amp;len3);
-                     if (len2 < 0)
-                       return ASN1_DER_ERROR;
-
-                     result =
-                       asn1_der_decoding (&amp;aux, octetNode->value + len3,
-                                          len2, errorDescription);
-                     if (result == ASN1_SUCCESS)
-                       {
-
-                         _asn1_set_right (aux, octetNode->right);
-                         _asn1_set_right (octetNode, aux);
-
-                         result = asn1_delete_structure (&amp;octetNode);
-                         if (result == ASN1_SUCCESS)
-                           {
-                             aux = ASN1_TYPE_EMPTY;
-                             break;
-                           }
-                         else
-                           {   /* error with asn1_delete_structure */
-                             asn1_delete_structure (&amp;aux);
-                             retCode = result;
-                             break;
-                           }
-                       }
-                     else
-                       {       /* error with asn1_der_decoding */
-                         retCode = result;
-                         break;
-                       }
-                   }
-                 else
-                   {           /* error with asn1_create_element */
-                     retCode = result;
-                     break;
-                   }
-               }
-             else
-               {               /* error with the pointer to the structure to 
exapand */
-                 retCode = ASN1_VALUE_NOT_VALID;
-                 break;
-               }
-           }
-       }
-
-      p2 = p2->right;
-
-    }
-
-  if (!p2)
-    retCode = ASN1_VALUE_NOT_VALID;
-
-  return retCode;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_high">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_array2tree_src', 
'asn1_array2tree_button')"><span id="asn1_array2tree_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_array2tree
-</td>
-<td class="function_entry_cyclo">
-21
-</td>
-<td class="function_entry_number">
-53
-</td>
-<td class="function_entry_number">
-97
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_array2tree_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_array2tree (const ASN1_ARRAY_TYPE * array, ASN1_TYPE * definitions,
-                char *errorDescription)
-{
-  ASN1_TYPE p, p_last = NULL;
-  unsigned long k;
-  int move;
-  asn1_retCode result;
-
-
-  if (*definitions != ASN1_TYPE_EMPTY)
-    return ASN1_ELEMENT_NOT_EMPTY;
-
-  move = UP;
-
-  k = 0;
-  while (array[k].value || array[k].type || array[k].name)
-    {
-      p = _asn1_add_node (array[k].type &amp; (~CONST_DOWN));
-      if (array[k].name)
-       _asn1_set_name (p, array[k].name);
-      if (array[k].value)
-       _asn1_set_value (p, array[k].value, strlen (array[k].value) + 1);
-
-      if (*definitions == NULL)
-       *definitions = p;
-
-      if (move == DOWN)
-       _asn1_set_down (p_last, p);
-      else if (move == RIGHT)
-       _asn1_set_right (p_last, p);
-
-      p_last = p;
-
-      if (array[k].type &amp; CONST_DOWN)
-       move = DOWN;
-      else if (array[k].type &amp; CONST_RIGHT)
-       move = RIGHT;
-      else
-       {
-         while (1)
-           {
-             if (p_last == *definitions)
-               break;
-
-             p_last = _asn1_find_up (p_last);
-
-             if (p_last == NULL)
-               break;
-
-             if (p_last->type &amp; CONST_RIGHT)
-               {
-                 p_last->type &amp;= ~CONST_RIGHT;
-                 move = RIGHT;
-                 break;
-               }
-           }                   /* while */
-       }
-      k++;
-    }                          /* while */
-
-  if (p_last == *definitions)
-    {
-      result = _asn1_check_identifier (*definitions);
-      if (result == ASN1_SUCCESS)
-       {
-         _asn1_change_integer_value (*definitions);
-         _asn1_expand_object_id (*definitions);
-       }
-    }
-  else
-    {
-      result = ASN1_ARRAY_ERROR;
-    }
-
-  if (errorDescription != NULL)
-    {
-      if (result == ASN1_IDENTIFIER_NOT_FOUND)
-       {
-         Estrcpy (errorDescription, ":: identifier '");
-         Estrcat (errorDescription, _asn1_identifierMissing);
-         Estrcat (errorDescription, "' not found");
-       }
-      else
-       errorDescription[0] = 0;
-    }
-
-  if (result != ASN1_SUCCESS)
-    {
-      _asn1_delete_list_and_nodes ();
-      *definitions = ASN1_TYPE_EMPTY;
-    }
-  else
-    _asn1_delete_list ();
-
-  return result;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_insert_tag_der_src', 
'_asn1_insert_tag_der_button')"><span 
id="_asn1_insert_tag_der_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_insert_tag_der
-</td>
-<td class="function_entry_cyclo">
-35
-</td>
-<td class="function_entry_number">
-75
-</td>
-<td class="function_entry_number">
-151
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_insert_tag_der_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static asn1_retCode
-_asn1_insert_tag_der (ASN1_TYPE  node, unsigned char *der, int *counter,
-                     int *max_len)
-{
-  ASN1_TYPE p;
-  int tag_len, is_tag_implicit;
-  unsigned char class, class_implicit = 0, temp[SIZEOF_UNSIGNED_INT * 3 + 1];
-  unsigned long tag_implicit = 0;
-  char tag_der[MAX_TAG_LEN];
-
-  is_tag_implicit = 0;
-
-  if (node->type &amp; CONST_TAG)
-    {
-      p = node->down;
-      while (p)
-       {
-         if (type_field (p->type) == TYPE_TAG)
-           {
-             if (p->type &amp; CONST_APPLICATION)
-               class = ASN1_CLASS_APPLICATION;
-             else if (p->type &amp; CONST_UNIVERSAL)
-               class = ASN1_CLASS_UNIVERSAL;
-             else if (p->type &amp; CONST_PRIVATE)
-               class = ASN1_CLASS_PRIVATE;
-             else
-               class = ASN1_CLASS_CONTEXT_SPECIFIC;
-
-             if (p->type &amp; CONST_EXPLICIT)
-               {
-                 if (is_tag_implicit)
-                   _asn1_tag_der (class_implicit, tag_implicit, tag_der,
-                                  &amp;tag_len);
-                 else
-                   _asn1_tag_der (class | ASN1_CLASS_STRUCTURED,
-                                  strtoul (p->value, NULL, 10), tag_der,
-                                  &amp;tag_len);
-
-                 *max_len -= tag_len;
-                 if (*max_len >= 0)
-                   memcpy (der + *counter, tag_der, tag_len);
-                 *counter += tag_len;
-
-                 _asn1_ltostr (*counter, temp);
-                 _asn1_set_name (p, temp);
-
-                 is_tag_implicit = 0;
-               }
-             else
-               {               /* CONST_IMPLICIT */
-                 if (!is_tag_implicit)
-                   {
-                     if ((type_field (node->type) == TYPE_SEQUENCE) ||
-                         (type_field (node->type) == TYPE_SEQUENCE_OF) ||
-                         (type_field (node->type) == TYPE_SET) ||
-                         (type_field (node->type) == TYPE_SET_OF))
-                       class |= ASN1_CLASS_STRUCTURED;
-                     class_implicit = class;
-                     tag_implicit = strtoul (p->value, NULL, 10);
-                     is_tag_implicit = 1;
-                   }
-               }
-           }
-         p = p->right;
-       }
-    }
-
-  if (is_tag_implicit)
-    {
-      _asn1_tag_der (class_implicit, tag_implicit, tag_der, &amp;tag_len);
-    }
-  else
-    {
-      switch (type_field (node->type))
-       {
-       case TYPE_NULL:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_NULL, tag_der,
-                        &amp;tag_len);
-         break;
-       case TYPE_BOOLEAN:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_BOOLEAN, tag_der,
-                        &amp;tag_len);
-         break;
-       case TYPE_INTEGER:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_INTEGER, tag_der,
-                        &amp;tag_len);
-         break;
-       case TYPE_ENUMERATED:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_ENUMERATED, tag_der,
-                        &amp;tag_len);
-         break;
-       case TYPE_OBJECT_ID:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_OBJECT_ID, tag_der,
-                        &amp;tag_len);
-         break;
-       case TYPE_TIME:
-         if (node->type &amp; CONST_UTC)
-           {
-             _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_UTCTime, tag_der,
-                            &amp;tag_len);
-           }
-         else
-           _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_GENERALIZEDTime,
-                          tag_der, &amp;tag_len);
-         break;
-       case TYPE_OCTET_STRING:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_OCTET_STRING, tag_der,
-                        &amp;tag_len);
-         break;
-       case TYPE_GENERALSTRING:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_GENERALSTRING,
-                        tag_der, &amp;tag_len);
-         break;
-       case TYPE_BIT_STRING:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL, ASN1_TAG_BIT_STRING, tag_der,
-                        &amp;tag_len);
-         break;
-       case TYPE_SEQUENCE:
-       case TYPE_SEQUENCE_OF:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED,
-                        ASN1_TAG_SEQUENCE, tag_der, &amp;tag_len);
-         break;
-       case TYPE_SET:
-       case TYPE_SET_OF:
-         _asn1_tag_der (ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED,
-                        ASN1_TAG_SET, tag_der, &amp;tag_len);
-         break;
-       case TYPE_TAG:
-         tag_len = 0;
-         break;
-       case TYPE_CHOICE:
-         tag_len = 0;
-         break;
-       case TYPE_ANY:
-         tag_len = 0;
-         break;
-       default:
-         return ASN1_GENERIC_ERROR;
-       }
-    }
-
-  *max_len -= tag_len;
-  if (*max_len >= 0)
-    memcpy (der + *counter, tag_der, tag_len);
-  *counter += tag_len;
-
-  if (*max_len < 0)
-    return ASN1_MEM_ERROR;
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_find_node_src', 
'asn1_find_node_button')"><span id="asn1_find_node_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_find_node
-</td>
-<td class="function_entry_cyclo">
-20
-</td>
-<td class="function_entry_number">
-50
-</td>
-<td class="function_entry_number">
-95
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_find_node_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-ASN1_TYPE
-asn1_find_node (ASN1_TYPE pointer, const char *name)
-{
-  ASN1_TYPE p;
-  char *n_end, n[ASN1_MAX_NAME_SIZE + 1];
-  const char *n_start;
-
-  if (pointer == NULL)
-    return NULL;
-
-  if (name == NULL)
-    return NULL;
-
-  p = pointer;
-  n_start = name;
-
-  if (p->name != NULL)
-    {                          /* has *pointer got a name ? */
-      n_end = strchr (n_start, '.');   /* search the first dot */
-      if (n_end)
-       {
-         memcpy (n, n_start, n_end - n_start);
-         n[n_end - n_start] = 0;
-         n_start = n_end;
-         n_start++;
-       }
-      else
-       {
-         _asn1_str_cpy (n, sizeof (n), n_start);
-         n_start = NULL;
-       }
-
-      while (p)
-       {
-         if ((p->name) &amp;& (!strcmp (p->name, n)))
-           break;
-         else
-           p = p->right;
-       }                       /* while */
-
-      if (p == NULL)
-       return NULL;
-    }
-  else
-    {                          /* *pointer doesn't have a name */
-      if (n_start[0] == 0)
-       return p;
-    }
-
-  while (n_start)
-    {                          /* Has the end of NAME been reached? */
-      n_end = strchr (n_start, '.');   /* search the next dot */
-      if (n_end)
-       {
-         memcpy (n, n_start, n_end - n_start);
-         n[n_end - n_start] = 0;
-         n_start = n_end;
-         n_start++;
-       }
-      else
-       {
-         _asn1_str_cpy (n, sizeof (n), n_start);
-         n_start = NULL;
-       }
-
-      if (p->down == NULL)
-       return NULL;
-
-      p = p->down;
-
-      /* The identifier "?LAST" indicates the last element 
-         in the right chain. */
-      if (!strcmp (n, "?LAST"))
-       {
-         if (p == NULL)
-           return NULL;
-         while (p->right)
-           p = p->right;
-       }
-      else
-       {                       /* no "?LAST" */
-         while (p)
-           {
-             if ((p->name) &amp;& (!strcmp (p->name, n)))
-               break;
-             else
-               p = p->right;
-           }
-         if (p == NULL)
-           return NULL;
-       }
-    }                          /* while */
-
-  return p;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_type_choice_config_src', 
'_asn1_type_choice_config_button')"><span 
id="_asn1_type_choice_config_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_type_choice_config
-</td>
-<td class="function_entry_cyclo">
-20
-</td>
-<td class="function_entry_number">
-47
-</td>
-<td class="function_entry_number">
-83
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_type_choice_config_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static asn1_retCode
-_asn1_type_choice_config (ASN1_TYPE  node)
-{
-  ASN1_TYPE p, p2, p3, p4;
-  int move, tlen;
-
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  p = node;
-  move = DOWN;
-
-  while (!((p == node) &amp;& (move == UP)))
-    {
-      if (move != UP)
-       {
-         if ((type_field (p->type) == TYPE_CHOICE) &amp;& (p->type & 
CONST_TAG))
-           {
-             p2 = p->down;
-             while (p2)
-               {
-                 if (type_field (p2->type) != TYPE_TAG)
-                   {
-                     p2->type |= CONST_TAG;
-                     p3 = _asn1_find_left (p2);
-                     while (p3)
-                       {
-                         if (type_field (p3->type) == TYPE_TAG)
-                           {
-                             p4 = _asn1_add_node_only (p3->type);
-                             tlen = strlen (p3->value);
-                             if (tlen > 0)
-                               _asn1_set_value (p4, p3->value, tlen + 1);
-                             _asn1_set_right (p4, p2->down);
-                             _asn1_set_down (p2, p4);
-                           }
-                         p3 = _asn1_find_left (p3);
-                       }
-                   }
-                 p2 = p2->right;
-               }
-             p->type &amp;= ~(CONST_TAG);
-             p2 = p->down;
-             while (p2)
-               {
-                 p3 = p2->right;
-                 if (type_field (p2->type) == TYPE_TAG)
-                   asn1_delete_structure (&amp;p2);
-                 p2 = p3;
-               }
-           }
-         move = DOWN;
-       }
-      else
-       move = RIGHT;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           p = p->down;
-         else
-           move = RIGHT;
-       }
-
-      if (p == node)
-       {
-         move = UP;
-         continue;
-       }
-
-      if (move == RIGHT)
-       {
-         if (p->right)
-           p = p->right;
-         else
-           move = UP;
-       }
-      if (move == UP)
-       p = _asn1_find_up (p);
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_get_octet_string_src', 
'_asn1_get_octet_string_button')"><span 
id="_asn1_get_octet_string_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_get_octet_string
-</td>
-<td class="function_entry_cyclo">
-17
-</td>
-<td class="function_entry_number">
-47
-</td>
-<td class="function_entry_number">
-82
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_get_octet_string_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static asn1_retCode
-_asn1_get_octet_string (const unsigned char *der, ASN1_TYPE node, int *len)
-{
-  int len2, len3, counter, tot_len, indefinite;
-
-  counter = 0;
-
-  if (*(der - 1) &amp; ASN1_CLASS_STRUCTURED)
-    {
-      tot_len = 0;
-      indefinite = asn1_get_length_der (der, *len, &amp;len3);
-      if (indefinite < -1)
-       return ASN1_DER_ERROR;
-
-      counter += len3;
-      if (indefinite >= 0)
-       indefinite += len3;
-
-      while (1)
-       {
-         if (counter > (*len))
-           return ASN1_DER_ERROR;
-
-         if (indefinite == -1)
-           {
-             if ((der[counter] == 0) &amp;& (der[counter + 1] == 0))
-               {
-                 counter += 2;
-                 break;
-               }
-           }
-         else if (counter >= indefinite)
-           break;
-
-         if (der[counter] != ASN1_TAG_OCTET_STRING)
-           return ASN1_DER_ERROR;
-
-         counter++;
-
-         len2 = asn1_get_length_der (der + counter, *len - counter, &amp;len3);
-         if (len2 <= 0)
-           return ASN1_DER_ERROR;
-
-         counter += len3 + len2;
-         tot_len += len2;
-       }
-
-      /* copy */
-      if (node)
-       {
-         unsigned char temp[DER_LEN];
-         int ret;
-         
-         len2 = sizeof(temp);
-
-         asn1_length_der (tot_len, temp, &amp;len2);
-         _asn1_set_value (node, temp, len2);
-
-         tot_len += len2;
-
-         ret = _asn1_extract_der_octet(node, der, *len);
-         if (ret!=ASN1_SUCCESS)
-             return ret;
-
-       }
-    }
-  else
-    {                          /* NOT STRUCTURED */
-      len2 = asn1_get_length_der (der, *len, &amp;len3);
-      if (len2 < 0)
-       return ASN1_DER_ERROR;
-      if (len3 + len2 > *len)
-       return ASN1_DER_ERROR;
-      if (node)
-       _asn1_set_value (node, der, len3 + len2);
-      counter = len3 + len2;
-    }
-
-  *len = counter;
-  return ASN1_SUCCESS;
-
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_ordering_set_src', 
'_asn1_ordering_set_button')"><span 
id="_asn1_ordering_set_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_ordering_set
-</td>
-<td class="function_entry_cyclo">
-16
-</td>
-<td class="function_entry_number">
-59
-</td>
-<td class="function_entry_number">
-104
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_ordering_set_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static void
-_asn1_ordering_set (unsigned char *der, int der_len, ASN1_TYPE  node)
-{
-  struct vet
-  {
-    int end;
-    unsigned long value;
-    struct vet *next, *prev;
-  };
-
-  int counter, len, len2;
-  struct vet *first, *last, *p_vet, *p2_vet;
-  ASN1_TYPE p;
-  unsigned char class, *temp;
-  unsigned long tag;
-
-  counter = 0;
-
-  if (type_field (node->type) != TYPE_SET)
-    return;
-
-  p = node->down;
-  while ((type_field (p->type) == TYPE_TAG)
-        || (type_field (p->type) == TYPE_SIZE))
-    p = p->right;
-
-  if ((p == NULL) || (p->right == NULL))
-    return;
-
-  first = last = NULL;
-  while (p)
-    {
-      p_vet = (struct vet *) _asn1_malloc (sizeof (struct vet));
-      if (p_vet == NULL)
-       return;
-
-      p_vet->next = NULL;
-      p_vet->prev = last;
-      if (first == NULL)
-       first = p_vet;
-      else
-       last->next = p_vet;
-      last = p_vet;
-
-      /* tag value calculation */
-      if (asn1_get_tag_der
-         (der + counter, der_len - counter, &amp;class, &len2,
-          &amp;tag) != ASN1_SUCCESS)
-       return;
-      p_vet->value = (class << 24) | tag;
-      counter += len2;
-
-      /* extraction and length */
-      len2 = asn1_get_length_der (der + counter, der_len - counter, &amp;len);
-      if (len2 < 0)
-       return;
-      counter += len + len2;
-
-      p_vet->end = counter;
-      p = p->right;
-    }
-
-  p_vet = first;
-
-  while (p_vet)
-    {
-      p2_vet = p_vet->next;
-      counter = 0;
-      while (p2_vet)
-       {
-         if (p_vet->value > p2_vet->value)
-           {
-             /* change position */
-             temp = (unsigned char *) _asn1_malloc (p_vet->end - counter);
-             if (temp == NULL)
-               return;
-
-             memcpy (temp, der + counter, p_vet->end - counter);
-             memcpy (der + counter, der + p_vet->end,
-                     p2_vet->end - p_vet->end);
-             memcpy (der + counter + p2_vet->end - p_vet->end, temp,
-                     p_vet->end - counter);
-             _asn1_free (temp);
-
-             tag = p_vet->value;
-             p_vet->value = p2_vet->value;
-             p2_vet->value = tag;
-
-             p_vet->end = counter + (p2_vet->end - p_vet->end);
-           }
-         counter = p_vet->end;
-
-         p2_vet = p2_vet->next;
-         p_vet = p_vet->next;
-       }
-
-      if (p_vet != first)
-       p_vet->prev->next = NULL;
-      else
-       first = NULL;
-      _asn1_free (p_vet);
-      p_vet = first;
-    }
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('yysyntax_error_src', 
'yysyntax_error_button')"><span id="yysyntax_error_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-yysyntax_error
-</td>
-<td class="function_entry_cyclo">
-15
-</td>
-<td class="function_entry_number">
-62
-</td>
-<td class="function_entry_number">
-100
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="yysyntax_error_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn &amp;& yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-        constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-                   + sizeof yyexpecting - 1
-                   + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-                      * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-        YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-       if (yycheck[yyx + yyn] == yyx &amp;& yyx != YYTERROR)
-         {
-           if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-             {
-               yycount = 1;
-               yysize = yysize0;
-               yyformat[sizeof yyunexpected - 1] = '\0';
-               break;
-             }
-           yyarg[yycount++] = yytname[yyx];
-           yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-           yysize_overflow |= (yysize1 < yysize);
-           yysize = yysize1;
-           yyfmt = yystpcpy (yyfmt, yyprefix);
-           yyprefix = yyor;
-         }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-       return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-       {
-         /* Avoid sprintf, as that infringes on the user's name space.
-            Don't have undefined behavior even if the translation
-            produced a string with the wrong number of "%s"s.  */
-         char *yyp = yyresult;
-         int yyi = 0;
-         while ((*yyp = *yyf) != '\0')
-           {
-             if (*yyp == '%' &amp;& yyf[1] == 's' && yyi < yycount)
-               {
-                 yyp += yytnamerr (yyp, yyarg[yyi++]);
-                 yyf += 2;
-               }
-             else
-               {
-                 yyp++;
-                 yyf++;
-               }
-           }
-       }
-      return yysize;
-    }
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_convert_integer_src', 
'_asn1_convert_integer_button')"><span 
id="_asn1_convert_integer_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_convert_integer
-</td>
-<td class="function_entry_cyclo">
-15
-</td>
-<td class="function_entry_number">
-35
-</td>
-<td class="function_entry_number">
-52
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/element.c;hb=HEAD";>lib/element.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_convert_integer_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-_asn1_convert_integer (const char *value, unsigned char *value_out,
-                      int value_out_size, int *len)
-{
-  char negative;
-  unsigned char val[SIZEOF_UNSIGNED_LONG_INT];
-  long valtmp;
-  int k, k2;
-
-  valtmp = strtol (value, NULL, 10);
-
-  for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT; k++)
-    {
-      val[SIZEOF_UNSIGNED_LONG_INT - k - 1] = (valtmp >> (8 * k)) &amp; 0xFF;
-    }
-
-  if (val[0] &amp; 0x80)
-    negative = 1;
-  else
-    negative = 0;
-
-  for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT - 1; k++)
-    {
-      if (negative &amp;& (val[k] != 0xFF))
-       break;
-      else if (!negative &amp;& val[k])
-       break;
-    }
-
-  if ((negative &amp;& !(val[k] & 0x80)) || (!negative && (val[k] & 0x80)))
-    k--;
-
-  *len = SIZEOF_UNSIGNED_LONG_INT - k;
-
-  if (SIZEOF_UNSIGNED_LONG_INT - k > value_out_size)
-    /* VALUE_OUT is too short to contain the value conversion */
-    return ASN1_MEM_ERROR;
-
-  for (k2 = k; k2 < SIZEOF_UNSIGNED_LONG_INT; k2++)
-    value_out[k2 - k] = val[k2];
-
-
-#ifdef LIBTASN1_DEBUG_INTEGER
-  _libtasn1_log ("_asn1_convert_integer: valueIn=%s, lenOut=%d", value, *len);
-  for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT; k++)
-    _libtasn1_log (", vOut[%d]=%d", k, value_out[k]);
-  _libtasn1_log ("\n");
-#endif
-
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_read_tag_src', 
'asn1_read_tag_button')"><span id="asn1_read_tag_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_read_tag
-</td>
-<td class="function_entry_cyclo">
-29
-</td>
-<td class="function_entry_number">
-51
-</td>
-<td class="function_entry_number">
-101
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/element.c;hb=HEAD";>lib/element.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_read_tag_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-asn1_retCode
-asn1_read_tag (ASN1_TYPE root, const char *name, int *tagValue,
-              int *classValue)
-{
-  ASN1_TYPE node, p, pTag;
-
-  node = asn1_find_node (root, name);
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  p = node->down;
-
-  /* pTag will points to the IMPLICIT TAG */
-  pTag = NULL;
-  if (node->type &amp; CONST_TAG)
-    {
-      while (p)
-       {
-         if (type_field (p->type) == TYPE_TAG)
-           {
-             if ((p->type &amp; CONST_IMPLICIT) && (pTag == NULL))
-               pTag = p;
-             else if (p->type &amp; CONST_EXPLICIT)
-               pTag = NULL;
-           }
-         p = p->right;
-       }
-    }
-
-  if (pTag)
-    {
-      *tagValue = strtoul (pTag->value, NULL, 10);
-
-      if (pTag->type &amp; CONST_APPLICATION)
-       *classValue = ASN1_CLASS_APPLICATION;
-      else if (pTag->type &amp; CONST_UNIVERSAL)
-       *classValue = ASN1_CLASS_UNIVERSAL;
-      else if (pTag->type &amp; CONST_PRIVATE)
-       *classValue = ASN1_CLASS_PRIVATE;
-      else
-       *classValue = ASN1_CLASS_CONTEXT_SPECIFIC;
-    }
-  else
-    {
-      *classValue = ASN1_CLASS_UNIVERSAL;
-
-      switch (type_field (node->type))
-       {
-       case TYPE_NULL:
-         *tagValue = ASN1_TAG_NULL;
-         break;
-       case TYPE_BOOLEAN:
-         *tagValue = ASN1_TAG_BOOLEAN;
-         break;
-       case TYPE_INTEGER:
-         *tagValue = ASN1_TAG_INTEGER;
-         break;
-       case TYPE_ENUMERATED:
-         *tagValue = ASN1_TAG_ENUMERATED;
-         break;
-       case TYPE_OBJECT_ID:
-         *tagValue = ASN1_TAG_OBJECT_ID;
-         break;
-       case TYPE_TIME:
-         if (node->type &amp; CONST_UTC)
-           {
-             *tagValue = ASN1_TAG_UTCTime;
-           }
-         else
-           *tagValue = ASN1_TAG_GENERALIZEDTime;
-         break;
-       case TYPE_OCTET_STRING:
-         *tagValue = ASN1_TAG_OCTET_STRING;
-         break;
-       case TYPE_GENERALSTRING:
-         *tagValue = ASN1_TAG_GENERALSTRING;
-         break;
-       case TYPE_BIT_STRING:
-         *tagValue = ASN1_TAG_BIT_STRING;
-         break;
-       case TYPE_SEQUENCE:
-       case TYPE_SEQUENCE_OF:
-         *tagValue = ASN1_TAG_SEQUENCE;
-         break;
-       case TYPE_SET:
-       case TYPE_SET_OF:
-         *tagValue = ASN1_TAG_SET;
-         break;
-       case TYPE_TAG:
-       case TYPE_CHOICE:
-       case TYPE_ANY:
-         break;
-       default:
-         break;
-       }
-    }
-
-
-  return ASN1_SUCCESS;
-
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_objectid_der_src', 
'_asn1_objectid_der_button')"><span 
id="_asn1_objectid_der_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_objectid_der
-</td>
-<td class="function_entry_cyclo">
-14
-</td>
-<td class="function_entry_number">
-44
-</td>
-<td class="function_entry_number">
-69
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_objectid_der_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static asn1_retCode
-_asn1_objectid_der (unsigned char *str, unsigned char *der, int *der_len)
-{
-  int len_len, counter, k, first, max_len;
-  char *temp, *n_end, *n_start;
-  unsigned char bit7;
-  unsigned long val, val1 = 0;
-
-  max_len = *der_len;
-
-  temp = (char *) _asn1_malloc (strlen (str) + 2);
-  if (temp == NULL)
-    return ASN1_MEM_ALLOC_ERROR;
-
-  strcpy (temp, str);
-  strcat (temp, ".");
-
-  counter = 0;
-  n_start = temp;
-  while ((n_end = strchr (n_start, '.')))
-    {
-      *n_end = 0;
-      val = strtoul (n_start, NULL, 10);
-      counter++;
-
-      if (counter == 1)
-       val1 = val;
-      else if (counter == 2)
-       {
-         if (max_len > 0)
-           der[0] = 40 * val1 + val;
-         *der_len = 1;
-       }
-      else
-       {
-         first = 0;
-         for (k = 4; k >= 0; k--)
-           {
-             bit7 = (val >> (k * 7)) &amp; 0x7F;
-             if (bit7 || first || !k)
-               {
-                 if (k)
-                   bit7 |= 0x80;
-                 if (max_len > (*der_len))
-                   der[*der_len] = bit7;
-                 (*der_len)++;
-                 first = 1;
-               }
-           }
-
-       }
-      n_start = n_end + 1;
-    }
-
-  asn1_length_der (*der_len, NULL, &amp;len_len);
-  if (max_len >= (*der_len + len_len))
-    {
-      memmove (der + len_len, der, *der_len);
-      asn1_length_der (*der_len, der, &amp;len_len);
-    }
-  *der_len += len_len;
-
-  _asn1_free (temp);
-
-  if (max_len < (*der_len))
-    return ASN1_MEM_ERROR;
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_type_set_config_src', 
'_asn1_type_set_config_button')"><span 
id="_asn1_type_set_config_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_type_set_config
-</td>
-<td class="function_entry_cyclo">
-14
-</td>
-<td class="function_entry_number">
-30
-</td>
-<td class="function_entry_number">
-58
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_type_set_config_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-_asn1_type_set_config (ASN1_TYPE node)
-{
-  ASN1_TYPE p, p2;
-  int move;
-
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  p = node;
-  move = DOWN;
-
-  while (!((p == node) &amp;& (move == UP)))
-    {
-      if (move != UP)
-       {
-         if (type_field (p->type) == TYPE_SET)
-           {
-             p2 = p->down;
-             while (p2)
-               {
-                 if (type_field (p2->type) != TYPE_TAG)
-                   p2->type |= CONST_SET | CONST_NOT_USED;
-                 p2 = p2->right;
-               }
-           }
-         move = DOWN;
-       }
-      else
-       move = RIGHT;
-
-      if (move == DOWN)
-       {
-         if (p->down)
-           p = p->down;
-         else
-           move = RIGHT;
-       }
-
-      if (p == node)
-       {
-         move = UP;
-         continue;
-       }
-
-      if (move == RIGHT)
-       {
-         if (p->right)
-           p = p->right;
-         else
-           move = UP;
-       }
-      if (move == UP)
-       p = _asn1_find_up (p);
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_check_version_src', 
'asn1_check_version_button')"><span 
id="asn1_check_version_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_check_version
-</td>
-<td class="function_entry_cyclo">
-14
-</td>
-<td class="function_entry_number">
-15
-</td>
-<td class="function_entry_number">
-30
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_check_version_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-const char *
-asn1_check_version (const char *req_version)
-{
-  const char *ver = ASN1_VERSION;
-  int my_major, my_minor, my_micro;
-  int rq_major, rq_minor, rq_micro;
-  const char *my_plvl, *rq_plvl;
-
-  if (!req_version)
-    return ver;
-
-  my_plvl = parse_version_string (ver, &amp;my_major, &my_minor, &my_micro);
-  if (!my_plvl)
-    return NULL;               /* very strange our own version is bogus */
-  rq_plvl = parse_version_string (req_version, &amp;rq_major, &rq_minor,
-                                 &amp;rq_micro);
-  if (!rq_plvl)
-    return NULL;               /* req version string is invalid */
-
-  if (my_major > rq_major
-      || (my_major == rq_major &amp;& my_minor > rq_minor)
-      || (my_major == rq_major &amp;& my_minor == rq_minor
-         &amp;& my_micro > rq_micro)
-      || (my_major == rq_major &amp;& my_minor == rq_minor
-         &amp;& my_micro == rq_micro && strcmp (my_plvl, rq_plvl) >= 0))
-    {
-      return ver;
-    }
-  return NULL;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_delete_not_used_src', 
'_asn1_delete_not_used_button')"><span 
id="_asn1_delete_not_used_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_delete_not_used
-</td>
-<td class="function_entry_cyclo">
-13
-</td>
-<td class="function_entry_number">
-30
-</td>
-<td class="function_entry_number">
-58
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_delete_not_used_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-static int
-_asn1_delete_not_used (ASN1_TYPE node)
-{
-  ASN1_TYPE p, p2;
-
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  p = node;
-  while (p)
-    {
-      if (p->type &amp; CONST_NOT_USED)
-       {
-         p2 = NULL;
-         if (p != node)
-           {
-             p2 = _asn1_find_left (p);
-             if (!p2)
-               p2 = _asn1_find_up (p);
-           }
-         asn1_delete_structure (&amp;p);
-         p = p2;
-       }
-
-      if (!p)
-       break;                  /* reach node */
-
-      if (p->down)
-       {
-         p = p->down;
-       }
-      else
-       {
-         if (p == node)
-           p = NULL;
-         else if (p->right)
-           p = p->right;
-         else
-           {
-             while (1)
-               {
-                 p = _asn1_find_up (p);
-                 if (p == node)
-                   {
-                     p = NULL;
-                     break;
-                   }
-                 if (p->right)
-                   {
-                     p = p->right;
-                     break;
-                   }
-               }
-           }
-       }
-    }
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_set_default_tag_src', 
'_asn1_set_default_tag_button')"><span 
id="_asn1_set_default_tag_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_set_default_tag
-</td>
-<td class="function_entry_cyclo">
-13
-</td>
-<td class="function_entry_number">
-22
-</td>
-<td class="function_entry_number">
-47
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_set_default_tag_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-_asn1_set_default_tag (ASN1_TYPE node)
-{
-  ASN1_TYPE p;
-
-  if ((node == NULL) || (type_field (node->type) != TYPE_DEFINITIONS))
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  p = node;
-  while (p)
-    {
-      if ((type_field (p->type) == TYPE_TAG) &amp;&
-         !(p->type &amp; CONST_EXPLICIT) && !(p->type & CONST_IMPLICIT))
-       {
-         if (node->type &amp; CONST_EXPLICIT)
-           p->type |= CONST_EXPLICIT;
-         else
-           p->type |= CONST_IMPLICIT;
-       }
-
-      if (p->down)
-       {
-         p = p->down;
-       }
-      else if (p->right)
-       p = p->right;
-      else
-       {
-         while (1)
-           {
-             p = _asn1_find_up (p);
-             if (p == node)
-               {
-                 p = NULL;
-                 break;
-               }
-             if (p->right)
-               {
-                 p = p->right;
-                 break;
-               }
-           }
-       }
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_create_static_structure_src', 
'_asn1_create_static_structure_button')"><span 
id="_asn1_create_static_structure_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_create_static_structure
-</td>
-<td class="function_entry_cyclo">
-12
-</td>
-<td class="function_entry_number">
-41
-</td>
-<td class="function_entry_number">
-78
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_create_static_structure_src" class="function_src" 
style="position: relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-_asn1_create_static_structure (ASN1_TYPE pointer, char *output_file_name,
-                              char *vector_name)
-{
-  FILE *file;
-  ASN1_TYPE p;
-  unsigned long t;
-
-  file = fopen (output_file_name, "w");
-
-  if (file == NULL)
-    return ASN1_FILE_NOT_FOUND;
-
-  fprintf (file, "#if HAVE_CONFIG_H\n");
-  fprintf (file, "# include \"config.h\"\n");
-  fprintf (file, "#endif\n\n");
-
-  fprintf (file, "#include <libtasn1.h>\n\n");
-
-  fprintf (file, "const ASN1_ARRAY_TYPE %s[] = {\n", vector_name);
-
-  p = pointer;
-
-  while (p)
-    {
-      fprintf (file, "  { ");
-
-      if (p->name)
-       fprintf (file, "\"%s\", ", p->name);
-      else
-       fprintf (file, "NULL, ");
-
-      t = p->type;
-      if (p->down)
-       t |= CONST_DOWN;
-      if (p->right)
-       t |= CONST_RIGHT;
-
-      fprintf (file, "%lu, ", t);
-
-      if (p->value)
-       fprintf (file, "\"%s\"},\n", p->value);
-      else
-       fprintf (file, "NULL },\n");
-
-      if (p->down)
-       {
-         p = p->down;
-       }
-      else if (p->right)
-       {
-         p = p->right;
-       }
-      else
-       {
-         while (1)
-           {
-             p = _asn1_find_up (p);
-             if (p == pointer)
-               {
-                 p = NULL;
-                 break;
-               }
-             if (p->right)
-               {
-                 p = p->right;
-                 break;
-               }
-           }
-       }
-    }
-
-  fprintf (file, "  { NULL, 0, NULL }\n};\n");
-
-  fclose (file);
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_copy_structure3_src', 
'_asn1_copy_structure3_button')"><span 
id="_asn1_copy_structure3_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_copy_structure3
-</td>
-<td class="function_entry_cyclo">
-12
-</td>
-<td class="function_entry_number">
-37
-</td>
-<td class="function_entry_number">
-67
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_copy_structure3_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-ASN1_TYPE
-_asn1_copy_structure3 (ASN1_TYPE  source_node)
-{
-  ASN1_TYPE dest_node, p_s, p_d, p_d_prev;
-  int move;
-
-  if (source_node == NULL)
-    return NULL;
-
-  dest_node = _asn1_add_node_only (source_node->type);
-
-  p_s = source_node;
-  p_d = dest_node;
-
-  move = DOWN;
-
-  do
-    {
-      if (move != UP)
-       {
-         if (p_s->name)
-           _asn1_set_name (p_d, p_s->name);
-         if (p_s->value)
-             _asn1_set_value (p_d, p_s->value, p_s->value_len);
-         move = DOWN;
-       }
-      else
-       move = RIGHT;
-
-      if (move == DOWN)
-       {
-         if (p_s->down)
-           {
-             p_s = p_s->down;
-             p_d_prev = p_d;
-             p_d = _asn1_add_node_only (p_s->type);
-             _asn1_set_down (p_d_prev, p_d);
-           }
-         else
-           move = RIGHT;
-       }
-
-      if (p_s == source_node)
-       break;
-
-      if (move == RIGHT)
-       {
-         if (p_s->right)
-           {
-             p_s = p_s->right;
-             p_d_prev = p_d;
-             p_d = _asn1_add_node_only (p_s->type);
-             _asn1_set_right (p_d_prev, p_d);
-           }
-         else
-           move = UP;
-       }
-      if (move == UP)
-       {
-         p_s = _asn1_find_up (p_s);
-         p_d = _asn1_find_up (p_d);
-       }
-    }
-  while (p_s != source_node);
-
-  return dest_node;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('_asn1_change_integer_value_src', 
'_asn1_change_integer_value_button')"><span 
id="_asn1_change_integer_value_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-_asn1_change_integer_value
-</td>
-<td class="function_entry_cyclo">
-12
-</td>
-<td class="function_entry_number">
-28
-</td>
-<td class="function_entry_number">
-56
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="_asn1_change_integer_value_src" class="function_src" style="position: 
relative; display: none;">
-<pre class="function_src">
-asn1_retCode
-_asn1_change_integer_value (ASN1_TYPE node)
-{
-  ASN1_TYPE p;
-  unsigned char val[SIZEOF_UNSIGNED_LONG_INT];
-  unsigned char val2[SIZEOF_UNSIGNED_LONG_INT + 1];
-  int len;
-
-  if (node == NULL)
-    return ASN1_ELEMENT_NOT_FOUND;
-
-  p = node;
-  while (p)
-    {
-      if ((type_field (p->type) == TYPE_INTEGER) &amp;& (p->type & 
CONST_ASSIGN))
-       {
-         if (p->value)
-           {
-             _asn1_convert_integer (p->value, val, sizeof (val), &amp;len);
-             asn1_octet_der (val, len, val2, &amp;len);
-             _asn1_set_value (p, val2, len);
-           }
-       }
-
-      if (p->down)
-       {
-         p = p->down;
-       }
-      else
-       {
-         if (p == node)
-           p = NULL;
-         else if (p->right)
-           p = p->right;
-         else
-           {
-             while (1)
-               {
-                 p = _asn1_find_up (p);
-                 if (p == node)
-                   {
-                     p = NULL;
-                     break;
-                   }
-                 if (p->right)
-                   {
-                     p = p->right;
-                     break;
-                   }
-               }
-           }
-       }
-    }
-
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_moderate">
-<td class="function_entry_filename">
-<a href="javascript:void(0);" title="show/hide function source" 
onClick="javascript:show_hide('asn1_get_tag_der_src', 
'asn1_get_tag_der_button')"><span id="asn1_get_tag_der_button">&darr;</span></a>
-</td>
-<td class="function_entry_name">
-asn1_get_tag_der
-</td>
-<td class="function_entry_cyclo">
-11
-</td>
-<td class="function_entry_number">
-24
-</td>
-<td class="function_entry_number">
-44
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr>
-<td colspan="6" height="0">
-<div id="asn1_get_tag_der_src" class="function_src" style="position: relative; 
display: none;">
-<pre class="function_src">
-int
-asn1_get_tag_der (const unsigned char *der, int der_len,
-                 unsigned char *cls, int *len, unsigned long *tag)
-{
-  int punt, ris;
-
-  if (der == NULL || der_len < 2 || len == NULL)
-    return ASN1_DER_ERROR;
-
-  *cls = der[0] &amp; 0xE0;
-  if ((der[0] &amp; 0x1F) != 0x1F)
-    {
-      /* short form */
-      *len = 1;
-      ris = der[0] &amp; 0x1F;
-    }
-  else
-    {
-      /* Long form */
-      punt = 1;
-      ris = 0;
-      while (punt <= der_len &amp;& der[punt] & 128)
-       {
-         int last = ris;
-         ris = ris * 128 + (der[punt++] &amp; 0x7F);
-         if (ris < last)
-           /* wrapper around, and no bignums... */
-           return ASN1_DER_ERROR;
-       }
-      if (punt >= der_len)
-       return ASN1_DER_ERROR;
-      {
-       int last = ris;
-       ris = ris * 128 + (der[punt++] &amp; 0x7F);
-       if (ris < last)
-         /* wrapper around, and no bignums... */
-         return ASN1_DER_ERROR;
-      }
-      *len = punt;
-    }
-  if (tag)
-    *tag = ris;
-  return ASN1_SUCCESS;
-}
-</pre>
-</div>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_get_indefinite_length_string
-</td>
-<td class="function_entry_cyclo">
-10
-</td>
-<td class="function_entry_number">
-27
-</td>
-<td class="function_entry_number">
-49
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_get_objectid_der
-</td>
-<td class="function_entry_cyclo">
-10
-</td>
-<td class="function_entry_number">
-27
-</td>
-<td class="function_entry_number">
-40
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_complete_explicit_tag
-</td>
-<td class="function_entry_cyclo">
-10
-</td>
-<td class="function_entry_number">
-26
-</td>
-<td class="function_entry_number">
-56
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_parser2array
-</td>
-<td class="function_entry_cyclo">
-9
-</td>
-<td class="function_entry_number">
-48
-</td>
-<td class="function_entry_number">
-95
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_find_structure_from_oid
-</td>
-<td class="function_entry_cyclo">
-9
-</td>
-<td class="function_entry_number">
-23
-</td>
-<td class="function_entry_number">
-43
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_delete_structure
-</td>
-<td class="function_entry_cyclo">
-8
-</td>
-<td class="function_entry_number">
-25
-</td>
-<td class="function_entry_number">
-50
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-yytnamerr
-</td>
-<td class="function_entry_cyclo">
-11
-</td>
-<td class="function_entry_number">
-20
-</td>
-<td class="function_entry_number">
-38
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_append_value
-</td>
-<td class="function_entry_cyclo">
-7
-</td>
-<td class="function_entry_number">
-22
-</td>
-<td class="function_entry_number">
-37
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_get_length_der
-</td>
-<td class="function_entry_cyclo">
-7
-</td>
-<td class="function_entry_number">
-20
-</td>
-<td class="function_entry_number">
-43
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_extract_der_octet
-</td>
-<td class="function_entry_cyclo">
-7
-</td>
-<td class="function_entry_number">
-20
-</td>
-<td class="function_entry_number">
-41
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_append_sequence_set
-</td>
-<td class="function_entry_cyclo">
-7
-</td>
-<td class="function_entry_number">
-20
-</td>
-<td class="function_entry_number">
-33
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/element.c;hb=HEAD";>lib/element.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_set_value
-</td>
-<td class="function_entry_cyclo">
-7
-</td>
-<td class="function_entry_number">
-17
-</td>
-<td class="function_entry_number">
-27
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_create_errorDescription
-</td>
-<td class="function_entry_cyclo">
-11
-</td>
-<td class="function_entry_number">
-29
-</td>
-<td class="function_entry_number">
-42
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_parser2tree
-</td>
-<td class="function_entry_cyclo">
-6
-</td>
-<td class="function_entry_number">
-26
-</td>
-<td class="function_entry_number">
-58
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_length_der
-</td>
-<td class="function_entry_cyclo">
-6
-</td>
-<td class="function_entry_number">
-15
-</td>
-<td class="function_entry_number">
-31
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-parse_version_string
-</td>
-<td class="function_entry_cyclo">
-6
-</td>
-<td class="function_entry_number">
-15
-</td>
-<td class="function_entry_number">
-21
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_set_name
-</td>
-<td class="function_entry_cyclo">
-6
-</td>
-<td class="function_entry_number">
-13
-</td>
-<td class="function_entry_number">
-25
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_number_of_elements
-</td>
-<td class="function_entry_cyclo">
-6
-</td>
-<td class="function_entry_number">
-13
-</td>
-<td class="function_entry_number">
-25
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_remove_node
-</td>
-<td class="function_entry_cyclo">
-5
-</td>
-<td class="function_entry_number">
-7
-</td>
-<td class="function_entry_number">
-12
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_copy_node
-</td>
-<td class="function_entry_cyclo">
-5
-</td>
-<td class="function_entry_number">
-21
-</td>
-<td class="function_entry_number">
-40
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_delete_element
-</td>
-<td class="function_entry_cyclo">
-5
-</td>
-<td class="function_entry_number">
-14
-</td>
-<td class="function_entry_number">
-25
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_set_value_m
-</td>
-<td class="function_entry_cyclo">
-5
-</td>
-<td class="function_entry_number">
-12
-</td>
-<td class="function_entry_number">
-21
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-parse_version_number
-</td>
-<td class="function_entry_cyclo">
-5
-</td>
-<td class="function_entry_number">
-11
-</td>
-<td class="function_entry_number">
-15
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_get_time_der
-</td>
-<td class="function_entry_cyclo">
-5
-</td>
-<td class="function_entry_number">
-10
-</td>
-<td class="function_entry_number">
-17
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_find_up
-</td>
-<td class="function_entry_cyclo">
-4
-</td>
-<td class="function_entry_number">
-7
-</td>
-<td class="function_entry_number">
-15
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_find_left
-</td>
-<td class="function_entry_cyclo">
-4
-</td>
-<td class="function_entry_number">
-3
-</td>
-<td class="function_entry_number">
-8
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_ltostr
-</td>
-<td class="function_entry_cyclo">
-4
-</td>
-<td class="function_entry_number">
-22
-</td>
-<td class="function_entry_number">
-32
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_tag_der
-</td>
-<td class="function_entry_cyclo">
-4
-</td>
-<td class="function_entry_number">
-14
-</td>
-<td class="function_entry_number">
-29
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_hierarchical_name
-</td>
-<td class="function_entry_cyclo">
-4
-</td>
-<td class="function_entry_number">
-12
-</td>
-<td class="function_entry_number">
-25
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/element.c;hb=HEAD";>lib/element.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_get_bit_der
-</td>
-<td class="function_entry_cyclo">
-4
-</td>
-<td class="function_entry_number">
-12
-</td>
-<td class="function_entry_number">
-25
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_get_octet_der
-</td>
-<td class="function_entry_cyclo">
-4
-</td>
-<td class="function_entry_number">
-11
-</td>
-<td class="function_entry_number">
-26
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_time_der
-</td>
-<td class="function_entry_cyclo">
-4
-</td>
-<td class="function_entry_number">
-11
-</td>
-<td class="function_entry_number">
-19
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-yy_symbol_value_print
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-24
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_get_length_ber
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-9
-</td>
-<td class="function_entry_number">
-17
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_strerror
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-7
-</td>
-<td class="function_entry_number">
-11
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/errors.c;hb=HEAD";>lib/errors.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_get_last_right
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-7
-</td>
-<td class="function_entry_number">
-12
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_str_cat
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-7
-</td>
-<td class="function_entry_number">
-19
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/gstr.c;hb=HEAD";>lib/gstr.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_str_cpy
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-18
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/gstr.c;hb=HEAD";>lib/gstr.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_set_down
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-10
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_set_right
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-10
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_octet_der
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-12
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_add_node
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-14
-</td>
-<td class="function_entry_number">
-25
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_bit_der
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-13
-</td>
-<td class="function_entry_number">
-20
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_set_value_octet
-</td>
-<td class="function_entry_cyclo">
-3
-</td>
-<td class="function_entry_number">
-10
-</td>
-<td class="function_entry_number">
-17
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-yydestruct
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-5
-</td>
-<td class="function_entry_number">
-32
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-yy_stack_print
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-14
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_delete_list_and_nodes
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-13
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_add_node_only
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-13
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-yystrlen
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_number">
-24
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-yy_symbol_print
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-5
-</td>
-<td class="function_entry_number">
-18
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_delete_list
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-5
-</td>
-<td class="function_entry_number">
-12
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_error_description_value_not_found
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-5
-</td>
-<td class="function_entry_number">
-14
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/coding.c;hb=HEAD";>lib/coding.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-yystpcpy
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-5
-</td>
-<td class="function_entry_number">
-17
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_mod_type
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-4
-</td>
-<td class="function_entry_number">
-8
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_yyerror
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-4
-</td>
-<td class="function_entry_number">
-14
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_perror
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-3
-</td>
-<td class="function_entry_number">
-6
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/errors.c;hb=HEAD";>lib/errors.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_get_name
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-3
-</td>
-<td class="function_entry_number">
-7
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_get_down
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-3
-</td>
-<td class="function_entry_number">
-7
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_get_right
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-3
-</td>
-<td class="function_entry_number">
-7
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;hb=HEAD";>lib/parser_aux.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-yy_reduce_print
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-10
-</td>
-<td class="function_entry_number">
-24
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/ASN1.c;hb=HEAD";>lib/ASN1.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-asn1_create_element
-</td>
-<td class="function_entry_cyclo">
-2
-</td>
-<td class="function_entry_number">
-10
-</td>
-<td class="function_entry_number">
-21
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_copy_structure2
-</td>
-<td class="function_entry_cyclo">
-1
-</td>
-<td class="function_entry_number">
-3
-</td>
-<td class="function_entry_number">
-10
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/structure.c;hb=HEAD";>lib/structure.c</a>
-</td>
-</tr>
-<tr class="function_entry_simple">
-<td class="function_entry_filename">
-&nbsp;
-</td>
-<td class="function_entry_name">
-_asn1_error_description_tag_error
-</td>
-<td class="function_entry_cyclo">
-1
-</td>
-<td class="function_entry_number">
-3
-</td>
-<td class="function_entry_number">
-10
-</td>
-<td class="function_entry_filename">
-<a 
href="http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/decoding.c;hb=HEAD";>lib/decoding.c</a>
-</td>
-</tr>
-</table>
-<hr color="black" size="2"/> Copyright (c) 2007, 2008 Free Software Foundation 
Inc.
-</body>
-</html>


hooks/post-receive
-- 
GNU libtasn1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]