@subheading asn1_array2tree @anchor{asn1_array2tree} @deftypefun {int} {asn1_array2tree} (const asn1_static_node * @var{array}, asn1_node * @var{definitions}, char * @var{errorDescription}) @var{array}: specify the array that contains ASN.1 declarations @var{definitions}: return the pointer to the structure created by *ARRAY ASN.1 declarations @var{errorDescription}: return the error description. Creates the structures needed to manage the ASN.1 definitions. @code{array} is a vector created by @code{asn1_parser2array()} . @strong{Returns:} @code{ASN1_SUCCESS} if structure was created correctly, @code{ASN1_ELEMENT_NOT_EMPTY} if * @code{definitions} not NULL, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined (see @code{errorDescription} for more information), @code{ASN1_ARRAY_ERROR} if the array pointed by @code{array} is wrong. @end deftypefun @subheading asn1_delete_structure @anchor{asn1_delete_structure} @deftypefun {int} {asn1_delete_structure} (asn1_node * @var{structure}) @var{structure}: pointer to the structure that you want to delete. Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun @subheading asn1_delete_structure2 @anchor{asn1_delete_structure2} @deftypefun {int} {asn1_delete_structure2} (asn1_node * @var{structure}, unsigned int @var{flags}) @var{structure}: pointer to the structure that you want to delete. @var{flags}: additional flags (see @code{ASN1_DELETE_FLAG} ) Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun @subheading asn1_delete_element @anchor{asn1_delete_element} @deftypefun {int} {asn1_delete_element} (asn1_node @var{structure}, const char * @var{element_name}) @var{structure}: pointer to the structure that contains the element you want to delete. @var{element_name}: element's name you want to delete. Deletes the element named * @code{element_name} inside * @code{structure} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if the @code{element_name} was not found. @end deftypefun @subheading asn1_create_element @anchor{asn1_create_element} @deftypefun {int} {asn1_create_element} (asn1_node @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) @var{definitions}: pointer to the structure returned by "parser_asn1" function @var{source_name}: the name of the type of the new structure (must be inside p_structure). @var{element}: pointer to the structure created. Creates a structure of type @code{source_name} . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); @strong{Returns:} @code{ASN1_SUCCESS} if creation OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{source_name} is not known. @end deftypefun @subheading asn1_print_structure @anchor{asn1_print_structure} @deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node @var{structure}, const char * @var{name}, int @var{mode}) @var{out}: pointer to the output file (e.g. stdout). @var{structure}: pointer to the structure that you want to visit. @var{name}: an element of the structure @var{mode}: specify how much of the structure to print, can be @code{ASN1_PRINT_NAME} , @code{ASN1_PRINT_NAME_TYPE} , @code{ASN1_PRINT_NAME_TYPE_VALUE} , or @code{ASN1_PRINT_ALL} . Prints on the @code{out} file descriptor the structure's tree starting from the @code{name} element inside the structure @code{structure} . @end deftypefun @subheading asn1_number_of_elements @anchor{asn1_number_of_elements} @deftypefun {int} {asn1_number_of_elements} (asn1_node @var{element}, const char * @var{name}, int * @var{num}) @var{element}: pointer to the root of an ASN1 structure. @var{name}: the name of a sub-structure of ROOT. @var{num}: pointer to an integer where the result will be stored Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ... @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not known, @code{ASN1_GENERIC_ERROR} if pointer @code{num} is @code{NULL} . @end deftypefun @subheading asn1_find_structure_from_oid @anchor{asn1_find_structure_from_oid} @deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node @var{definitions}, const char * @var{oidValue}) @var{definitions}: ASN1 definitions @var{oidValue}: value of the OID to search (e.g. "1.2.3.4"). Search the structure that is defined just after an OID definition. @strong{Returns:} @code{NULL} when @code{oidValue} not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. @end deftypefun @subheading asn1_copy_node @anchor{asn1_copy_node} @deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node @var{src}, const char * @var{src_name}) @var{dst}: Destination asn1 node. @var{dst_name}: Field name in destination node. @var{src}: Source asn1 node. @var{src_name}: Field name in source node. Create a deep copy of a asn1_node variable. That function requires @code{dst} to be expanded using @code{asn1_create_element()} . @strong{Returns:} Return @code{ASN1_SUCCESS} on success. @end deftypefun @subheading asn1_dup_node @anchor{asn1_dup_node} @deftypefun {asn1_node} {asn1_dup_node} (asn1_node @var{src}, const char * @var{src_name}) @var{src}: Source asn1 node. @var{src_name}: Field name in source node. Create a deep copy of a asn1_node variable. This function will return an exact copy of the provided structure. @strong{Returns:} Return @code{NULL} on failure. @end deftypefun