#include <structure.h>
static FILE *file_asn1; /* Pointer to file to parse */
-static asn1_retCode result_parse; /* result of the parser
+static int result_parse; /* result of the parser
algorithm */
static ASN1_TYPE p_tree; /* pointer to the root of the
structure created by the
* file there is an identifier whith more than %ASN1_MAX_NAME_SIZE
* characters.
**/
-asn1_retCode
+int
asn1_parser2tree(const char *file_name, ASN1_TYPE *definitions,
char *errorDescription){
/* ASN1_MEM_ERROR when DER isn't big enough */
/* ASN1_SUCCESS otherwise */
/******************************************************/
-static asn1_retCode
+static int
_asn1_time_der (unsigned char *str, unsigned char *der, int *der_len)
{
int len_len;
/* ASN1_MEM_ERROR when DER isn't big enough */
/* ASN1_SUCCESS otherwise */
/******************************************************/
-static asn1_retCode
+static int
_asn1_objectid_der (unsigned char *str, unsigned char *der, int *der_len)
{
int len_len, counter, k, first, max_len;
/* ASN1_MEM_ERROR if der vector isn't big enough, */
/* otherwise ASN1_SUCCESS. */
/******************************************************/
-static asn1_retCode
+static int
_asn1_complete_explicit_tag (ASN1_TYPE node, unsigned char *der,
int *counter, int *max_len)
{
/* ASN1_MEM_ERROR if der vector isn't big enough, */
/* otherwise ASN1_SUCCESS. */
/******************************************************/
-static asn1_retCode
+static int
_asn1_insert_tag_der (ASN1_TYPE node, unsigned char *der, int *counter,
int *max_len)
{
* vector isn't big enough and in this case @len will contain the
* length needed.
**/
-asn1_retCode
+int
asn1_der_coding (ASN1_TYPE element, const char *name, void *ider, int *len,
char *ErrorDescription)
{
ASN1_TYPE node, p, p2;
unsigned char temp[SIZEOF_UNSIGNED_LONG_INT * 3 + 1];
int counter, counter_old, len2, len3, tlen, move, max_len, max_len_old;
- asn1_retCode err;
+ int err;
unsigned char *der = ider;
node = asn1_find_node (element, name);
#include "element.h"
#include <limits.h>
-static asn1_retCode
+static int
_asn1_get_indefinite_length_string (const unsigned char *der, int *len);
static void
return ASN1_SUCCESS;
}
-static asn1_retCode
+static int
_asn1_extract_der_octet (ASN1_TYPE node, const unsigned char *der,
int der_len)
{
return ASN1_SUCCESS;
}
-static asn1_retCode
+static int
_asn1_get_octet_string (const unsigned char *der, ASN1_TYPE node, int *len)
{
int len2, len3, counter, tot_len, indefinite;
}
-static asn1_retCode
+static int
_asn1_get_indefinite_length_string (const unsigned char *der, int *len)
{
int len2, len3, counter, indefinite;
* %ASN1_DER_ERROR if the der encoding doesn't match the structure
* name (*@ELEMENT deleted).
**/
-asn1_retCode
+int
asn1_der_decoding (ASN1_TYPE * element, const void *ider, int len,
char *errorDescription)
{
* %ASN1_TAG_ERROR or %ASN1_DER_ERROR if the der encoding doesn't
* match the structure @structure (*ELEMENT deleted).
**/
-asn1_retCode
+int
asn1_der_decoding_element (ASN1_TYPE * structure, const char *elementName,
const void *ider, int len, char *errorDescription)
{
* element, %ASN1_TAG_ERROR or %ASN1_DER_ERROR if the der encoding
* doesn't match the structure ELEMENT.
**/
-asn1_retCode
+int
asn1_der_decoding_startEnd (ASN1_TYPE element, const void *ider, int len,
const char *name_element, int *start, int *end)
{
* problem in OBJECT_ID -> TYPE association, or other error codes
* depending on DER decoding.
**/
-asn1_retCode
+int
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 retCode = ASN1_SUCCESS, result;
int len, len2, len3;
ASN1_TYPE p, p2, p3, aux = ASN1_TYPE_EMPTY;
char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
* %ASN1_VALUE_NOT_VALID if it wasn't possible to find the type to
* use for expansion, or other errors depending on DER decoding.
**/
-asn1_retCode
+int
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 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;
/* len: number of significant byte of value_out. */
/* Return: ASN1_MEM_ERROR or ASN1_SUCCESS */
/******************************************************************/
-asn1_retCode
+int
_asn1_convert_integer (const unsigned char *value, unsigned char *value_out,
int value_out_size, int *len)
{
* %ASN1_ELEMENT_NOT_FOUND if @name is not a valid element, and
* %ASN1_VALUE_NOT_VALID if @ivalue has a wrong format.
**/
-asn1_retCode
+int
asn1_write_value (ASN1_TYPE node_root, const char *name,
const void *ivalue, int len)
{
* to store the result, and in this case @len will contain the number of
* bytes needed.
**/
-asn1_retCode
+int
asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)
{
ASN1_TYPE node, p, p2;
* Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if
* @name is not a valid element.
**/
-asn1_retCode
+int
asn1_read_tag (ASN1_TYPE root, const char *name, int *tagValue,
int *classValue)
{
*
* Returns: %ASN1_SUCCESS if the node exists.
**/
-asn1_retCode asn1_read_node_value (ASN1_TYPE node, ASN1_DATA_NODE* data)
+int asn1_read_node_value (ASN1_TYPE node, ASN1_DATA_NODE* data)
{
data->name = node->name;
data->value = node->value;
#define _ELEMENT_H
-asn1_retCode _asn1_append_sequence_set (ASN1_TYPE node);
+int _asn1_append_sequence_set (ASN1_TYPE node);
-asn1_retCode _asn1_convert_integer (const unsigned char *value,
+int _asn1_convert_integer (const unsigned char *value,
unsigned char *value_out,
int value_out_size, int *len);
* Since: 1.6
**/
void
-asn1_perror (asn1_retCode error)
+asn1_perror (int error)
{
const char *str = asn1_strerror (error);
fprintf (stderr, "LIBTASN1 ERROR: %s\n", str ? str : "(null)");
* Since: 1.6
**/
const char *
-asn1_strerror (asn1_retCode error)
+asn1_strerror (int error)
{
const libtasn1_error_entry *p;
#define ASN1_VERSION "3.0"
- typedef int asn1_retCode; /* type returned by libtasn1 functions */
/*****************************************/
/* Errors returned by libtasn1 functions */
/* Functions definitions */
/***********************************/
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_parser2tree (const char *file_name,
ASN1_TYPE * definitions, char *errorDescription);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_parser2array (const char *inputFileName,
const char *outputFileName,
const char *vectorName, char *errorDescription);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_array2tree (const ASN1_ARRAY_TYPE * array,
ASN1_TYPE * definitions, char *errorDescription);
asn1_print_structure (FILE * out, ASN1_TYPE structure,
const char *name, int mode);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_create_element (ASN1_TYPE definitions,
const char *source_name, ASN1_TYPE * element);
- extern ASN1_API asn1_retCode asn1_delete_structure (ASN1_TYPE * structure);
+ extern ASN1_API int asn1_delete_structure (ASN1_TYPE * structure);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_delete_element (ASN1_TYPE structure, const char *element_name);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_write_value (ASN1_TYPE node_root, const char *name,
const void *ivalue, int len);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_read_value (ASN1_TYPE root, const char *name,
void *ivalue, int *len);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_read_node_value (ASN1_TYPE node, ASN1_DATA_NODE* data);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_number_of_elements (ASN1_TYPE element, const char *name, int *num);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_der_coding (ASN1_TYPE element, const char *name,
void *ider, int *len, char *ErrorDescription);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_der_decoding (ASN1_TYPE * element, const void *ider,
int len, char *errorDescription);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_der_decoding_element (ASN1_TYPE * structure,
const char *elementName,
const void *ider, int len,
char *errorDescription);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_der_decoding_startEnd (ASN1_TYPE element,
const void *ider, int len,
const char *name_element,
int *start, int *end);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_expand_any_defined_by (ASN1_TYPE definitions, ASN1_TYPE * element);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_expand_octet_string (ASN1_TYPE definitions,
ASN1_TYPE * element,
const char *octetName, const char *objectName);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_read_tag (ASN1_TYPE root, const char *name,
int *tagValue, int *classValue);
extern ASN1_API const char *asn1_check_version (const char *req_version);
- extern ASN1_API const char *asn1_strerror (asn1_retCode error);
+ extern ASN1_API const char *asn1_strerror (int error);
- extern ASN1_API void asn1_perror (asn1_retCode error);
+ extern ASN1_API void asn1_perror (int error);
/* DER utility functions. */
asn1_octet_der (const unsigned char *str, int str_len,
unsigned char *der, int *der_len);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_get_octet_der (const unsigned char *der, int der_len,
int *ret_len, unsigned char *str,
int str_size, int *str_len);
extern ASN1_API void asn1_bit_der (const unsigned char *str, int bit_len,
unsigned char *der, int *der_len);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_get_bit_der (const unsigned char *der, int der_len,
int *ret_len, unsigned char *str,
int str_size, int *bit_len);
extern ASN1_API ASN1_TYPE
asn1_find_node (ASN1_TYPE pointer, const char *name);
- extern ASN1_API asn1_retCode
+ extern ASN1_API int
asn1_copy_node (ASN1_TYPE dst, const char *dst_name,
ASN1_TYPE src, const char *src_name);
+/* Compatibility types */
+ typedef int int; /* type returned by libtasn1 functions */
+
#ifdef __cplusplus
}
#endif
/* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */
/* otherwise ASN1_SUCCESS */
/******************************************************************/
-asn1_retCode
+int
_asn1_change_integer_value (ASN1_TYPE node)
{
ASN1_TYPE p;
/* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */
/* otherwise ASN1_SUCCESS */
/******************************************************************/
-asn1_retCode
+int
_asn1_expand_object_id (ASN1_TYPE node)
{
ASN1_TYPE p, p2, p3, p4, p5;
/* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */
/* otherwise ASN1_SUCCESS */
/******************************************************************/
-asn1_retCode
+int
_asn1_type_set_config (ASN1_TYPE node)
{
ASN1_TYPE p, p2;
/* ASN1_IDENTIFIER_NOT_FOUND if an identifier is not defined, */
/* otherwise ASN1_SUCCESS */
/******************************************************************/
-asn1_retCode
+int
_asn1_check_identifier (ASN1_TYPE node)
{
ASN1_TYPE p, p2;
/* a DEFINITIONS element, */
/* otherwise ASN1_SUCCESS */
/******************************************************************/
-asn1_retCode
+int
_asn1_set_default_tag (ASN1_TYPE node)
{
ASN1_TYPE p;
ASN1_TYPE _asn1_find_up (ASN1_TYPE node);
-asn1_retCode _asn1_change_integer_value (ASN1_TYPE node);
+int _asn1_change_integer_value (ASN1_TYPE node);
-asn1_retCode _asn1_expand_object_id (ASN1_TYPE node);
+int _asn1_expand_object_id (ASN1_TYPE node);
-asn1_retCode _asn1_type_set_config (ASN1_TYPE node);
+int _asn1_type_set_config (ASN1_TYPE node);
-asn1_retCode _asn1_check_identifier (ASN1_TYPE node);
+int _asn1_check_identifier (ASN1_TYPE node);
-asn1_retCode _asn1_set_default_tag (ASN1_TYPE node);
+int _asn1_set_default_tag (ASN1_TYPE node);
/******************************************************************/
/* Function : _asn1_get_right */
}
-asn1_retCode
+int
_asn1_create_static_structure (ASN1_TYPE pointer, char *output_file_name,
char *vector_name)
{
* that is not defined (see @errorDescription for more information),
* %ASN1_ARRAY_ERROR if the array pointed by @array is wrong.
**/
-asn1_retCode
+int
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;
+ int result;
if (*definitions != ASN1_TYPE_EMPTY)
* Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if
* *@structure was ASN1_TYPE_EMPTY.
**/
-asn1_retCode
+int
asn1_delete_structure (ASN1_TYPE * structure)
{
ASN1_TYPE p, p2, p3;
* Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if
* the @element_name was not found.
**/
-asn1_retCode
+int
asn1_delete_element (ASN1_TYPE structure, const char *element_name)
{
ASN1_TYPE p2, p3, source_node;
}
-static asn1_retCode
+static int
_asn1_type_choice_config (ASN1_TYPE node)
{
ASN1_TYPE p, p2, p3, p4;
}
-static asn1_retCode
+static int
_asn1_expand_identifier (ASN1_TYPE * node, ASN1_TYPE root)
{
ASN1_TYPE p, p2, p3;
* Returns: %ASN1_SUCCESS if creation OK, %ASN1_ELEMENT_NOT_FOUND if
* @source_name is not known.
**/
-asn1_retCode
+int
asn1_create_element (ASN1_TYPE definitions, const char *source_name,
ASN1_TYPE * element)
{
* Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if
* @name is not known, %ASN1_GENERIC_ERROR if pointer @num is %NULL.
**/
-asn1_retCode
+int
asn1_number_of_elements (ASN1_TYPE element, const char *name, int *num)
{
ASN1_TYPE node, p;
char value[ASN1_MAX_NAME_SIZE];
ASN1_TYPE p;
int len;
- asn1_retCode result;
+ int result;
if ((definitions == ASN1_TYPE_EMPTY) || (oidValue == NULL))
return NULL; /* ASN1_ELEMENT_NOT_FOUND; */
*
* Returns: Return %ASN1_SUCCESS on success.
**/
-asn1_retCode
+int
asn1_copy_node (ASN1_TYPE dst, const char *dst_name,
ASN1_TYPE src, const char *src_name)
{
#ifndef _STRUCTURE_H
#define _STRUCTURE_H
-asn1_retCode _asn1_create_static_structure (ASN1_TYPE pointer,
+int _asn1_create_static_structure (ASN1_TYPE pointer,
char *output_file_name,
char *vector_name);