#include <int.h>
#include "parser_aux.h"
#include <gstr.h>
#include "structure.h"
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 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().
int MHD__asn1_append_sequence_set | ( | node_asn * | node | ) |
Definition at line 122 of file element.c.
References ASN1_GENERIC_ERROR, ASN1_SUCCESS, node_asn_struct::down, MHD__asn1_copy_structure3(), MHD__asn1_ltostr(), MHD__asn1_set_name(), MHD__asn1_set_right(), MHD__asn1_str_cpy(), node_asn_struct::name, node_asn_struct::right, node_asn_struct::type, type_field, TYPE_SIZE, and TYPE_TAG.
Referenced by MHD__asn1_der_decoding(), and MHD__asn1_write_value().
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().
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().
MHD__asn1_retCode MHD__asn1_read_value | ( | ASN1_TYPE | root, | |
const char * | name, | |||
void * | ivalue, | |||
int * | len | |||
) |
Definition at line 739 of file element.c.
References ADD_STR_VALUE, ASN1_DER_ERROR, ASN1_ELEMENT_NOT_FOUND, ASN1_MEM_ERROR, ASN1_SUCCESS, ASN1_VALUE_NOT_FOUND, CONST_ASSIGN, CONST_DEFAULT, CONST_TRUE, node_asn_struct::down, MHD__asn1_convert_integer(), MHD__asn1_find_node(), MHD__asn1_get_bit_der(), MHD__asn1_get_length_der(), MHD__asn1_get_octet_der(), node_asn_struct::name, PUT_STR_VALUE, PUT_VALUE, node_asn_struct::right, node_asn_struct::type, TYPE_ANY, TYPE_BIT_STRING, TYPE_BOOLEAN, TYPE_CHOICE, TYPE_CONSTANT, TYPE_DEFAULT, TYPE_ENUMERATED, type_field, TYPE_GENERALSTRING, TYPE_INTEGER, TYPE_NULL, TYPE_OBJECT_ID, TYPE_OCTET_STRING, TYPE_TIME, node_asn_struct::value, and node_asn_struct::value_len.
Referenced by MHD__gnutls_x509_crt_get_extension(), MHD__gnutls_x509_decode_octet_string(), MHD__gnutls_x509_ext_extract_keyUsage(), MHD__gnutls_x509_get_pk_algorithm(), MHD__gnutls_x509_read_int(), MHD__gnutls_x509_read_value(), and MHD_gnutls_x509_crt_get_version().
MHD__asn1_retCode MHD__asn1_write_value | ( | ASN1_TYPE | node_root, | |
const char * | name, | |||
const void * | ivalue, | |||
int | len | |||
) |
Definition at line 268 of file element.c.
References ASN1_ELEMENT_NOT_FOUND, ASN1_MEM_ALLOC_ERROR, ASN1_SUCCESS, ASN1_VALUE_NOT_FOUND, ASN1_VALUE_NOT_VALID, CONST_DEFAULT, CONST_FALSE, CONST_LIST, CONST_OPTION, CONST_TRUE, CONST_UTC, node_asn_struct::down, MHD__asn1_afree, MHD__asn1_alloca, MHD__asn1_append_sequence_set(), MHD__asn1_bit_der(), MHD__asn1_convert_integer(), MHD__asn1_delete_structure(), MHD__asn1_find_node(), MHD__asn1_length_der(), MHD__asn1_octet_der(), MHD__asn1_set_value(), node_asn_struct::name, node_asn_struct::right, SIZEOF_UNSIGNED_LONG_INT, node_asn_struct::type, TYPE_ANY, TYPE_BIT_STRING, TYPE_BOOLEAN, TYPE_CHOICE, TYPE_CONSTANT, TYPE_DEFAULT, TYPE_ENUMERATED, type_field, TYPE_GENERALSTRING, TYPE_INTEGER, TYPE_OBJECT_ID, TYPE_OCTET_STRING, TYPE_SEQUENCE_OF, TYPE_SET_OF, TYPE_SIZE, TYPE_TAG, TYPE_TIME, and node_asn_struct::value.
Referenced by MHD__gnutls_x509_der_encode(), and MHD__gnutls_x509_write_int().