element.c File Reference

#include <int.h>
#include "parser_aux.h"
#include <gstr.h>
#include "structure.h"

Include dependency graph for element.c:

Go to the source code of this file.

Functions

void MHD__asn1_hierarchical_name (node_asn *node, char *name, int name_size)
MHD__asn1_retCode MHD__asn1_convert_integer (const char *value, unsigned char *value_out, int value_out_size, int *len)
int MHD__asn1_append_sequence_set (node_asn *node)
: the name of the element inside a structure that you want to read.
MHD__asn1_read_value - Returns the value of one element inside a structure : pointer to a structure.

: vector that will contain the element's content, must be a pointer to memory cells already allocated. : number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value.

Returns the value of one element inside a structure.

If an element is OPTIONAL and the function "read_value" returns ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on.

INTEGER: VALUE will contain a two's complement form integer.

integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6.

OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1").

LEN = strlen(VALUE)+1

UTCTime: VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1.

GeneralizedTime: VALUE will be a null terminated string in the same format used to set the value.

OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets.

GeneralString: VALUE will contain the generalstring and LEN will be the number of octets.

BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits.

CHOICE: If NAME indicates a choice type, VALUE will specify the alternative selected.

ANY: If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used.

Returns:

ASN1_SUCCESS: Set value OK.

ASN1_ELEMENT_NOT_FOUND: NAME is not a valid element.

ASN1_VALUE_NOT_FOUND: There isn't any value for the element selected.

ASN1_MEM_ERROR: The value vector isn't big enough to store the result. In this case LEN will contain the number of bytes needed.

MHD__asn1_retCode MHD__asn1_read_value (ASN1_TYPE root, const char *name, void *ivalue, int *len)


Define Documentation

#define ADD_STR_VALUE ( ptr,
ptr_size,
data   ) 

Value:

*len = strlen(data) + 1; \
        if (ptr_size < strlen(ptr)+(*len)) { \
                return ASN1_MEM_ERROR; \
        } else { \
                /* this strcat is checked */ \
                strcat(ptr, data); \
        }

Definition at line 663 of file element.c.

Referenced by MHD__asn1_read_value().

#define PUT_STR_VALUE ( ptr,
ptr_size,
data   ) 

Value:

*len = strlen(data) + 1; \
        if (ptr_size < *len) { \
                return ASN1_MEM_ERROR; \
        } else { \
                /* this strcpy is checked */ \
                strcpy(ptr, data); \
        }

Definition at line 654 of file element.c.

Referenced by MHD__asn1_read_value().

#define PUT_VALUE ( ptr,
ptr_size,
data,
data_size   ) 

Value:

*len = data_size; \
        if (ptr_size < data_size) { \
                return ASN1_MEM_ERROR; \
        } else { \
                memcpy( ptr, data, data_size); \
        }

Definition at line 646 of file element.c.

Referenced by MHD__asn1_read_value().


Function Documentation

int MHD__asn1_append_sequence_set ( node_asn node  ) 

MHD__asn1_retCode MHD__asn1_convert_integer ( const char *  value,
unsigned char *  value_out,
int  value_out_size,
int *  len 
)

Definition at line 77 of file element.c.

References ASN1_MEM_ERROR, ASN1_SUCCESS, and SIZEOF_UNSIGNED_LONG_INT.

Referenced by MHD__asn1_change_integer_value(), MHD__asn1_read_value(), and MHD__asn1_write_value().

Here is the caller graph for this function:

void MHD__asn1_hierarchical_name ( node_asn node,
char *  name,
int  name_size 
)

Definition at line 36 of file element.c.

References MHD__asn1_find_up(), MHD__asn1_str_cat(), MHD__asn1_str_cpy(), and node_asn_struct::name.

Referenced by MHD__asn1_error_description_tag_error(), and MHD__asn1_error_description_value_not_found().

Here is the call graph for this function:

Here is the caller graph for this function:

MHD__asn1_retCode MHD__asn1_read_value ( ASN1_TYPE  root,
const char *  name,
void *  ivalue,
int *  len 
)

MHD__asn1_retCode MHD__asn1_write_value ( ASN1_TYPE  node_root,
const char *  name,
const void *  ivalue,
int  len 
)


Generated on Fri Feb 27 18:31:33 2009 for GNU libmicrohttpd by  doxygen 1.5.7.1