diff options
author | Lev Walkin <vlm@lionet.info> | 2004-06-03 03:38:44 +0000 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2004-06-03 03:38:44 +0000 |
commit | f15320bf6b50a0c02636405561ac8323ae901abd (patch) | |
tree | 33461d45122896c6dde35f82f5c7d19b62004a6b /libasn1parser/asn1parser.h | |
parent | 746cb60bbccf47019563665f4aec4b6c462c4163 (diff) |
Initial revision
Diffstat (limited to 'libasn1parser/asn1parser.h')
-rw-r--r-- | libasn1parser/asn1parser.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/libasn1parser/asn1parser.h b/libasn1parser/asn1parser.h new file mode 100644 index 00000000..b4c72f8b --- /dev/null +++ b/libasn1parser/asn1parser.h @@ -0,0 +1,73 @@ +/* + * This is a parser of the ASN.1 grammar. + */ +#ifndef ASN1PARSER_H +#define ASN1PARSER_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif /* HAVE_SYS_TYPES_H */ +#ifdef HAVE_INTTYPES_H +#include <inttypes.h> /* POSIX 1003.1-2001, C99 */ +#else /* HAVE_INTTYPES_H */ +#ifdef HAVE_STDINT_H +#include <stdint.h> /* SUSv2+ */ +#endif /* HAVE_STDINT_H */ +#endif /* HAVE_INTTYPES_H */ + +/* + * Basic integer type used in numerous places. + * ASN.1 does not define any limits on this number, so it must be sufficiently + * large to accomodate typical inputs. It does not have to be a dynamically + * allocated type with potentially unlimited width: consider the width of + * an integer defined here as one of the "compiler limitations". + * NOTE: this is NOT a type for ASN.1 "INTEGER" type representation, this + * type is used by the compiler itself to handle large integer values + * specified inside ASN.1 grammar. + */ +typedef intmax_t asn1_integer_t; + +#include <asn1p_list.h> +#include <asn1p_oid.h> /* Object identifiers (OIDs) */ +#include <asn1p_ref.h> /* References to custom types */ +#include <asn1p_value.h> /* Value definition */ +#include <asn1p_param.h> /* Parametrization */ +#include <asn1p_constr.h> /* Type Constraints */ +#include <asn1p_xports.h> /* IMports/EXports */ +#include <asn1p_module.h> /* ASN.1 definition module */ +#include <asn1p_class.h> /* CLASS-related stuff */ +#include <asn1p_expr.h> /* A single ASN.1 expression */ + +/* + * Parser flags. + */ +enum asn1p_flags { + A1P_NOFLAGS, + /* + * Enable verbose debugging output from lexer. + */ + A1P_LEXER_DEBUG = 0x0001, + /* + * Embedded types restricted to ASN.1:1988 + */ + A1P_TYPES_RESTRICT_TO_1988 = 0x0010, + /* + * Embedded constructs (concepts) restricted to ASN.1:1990 + */ + A1P_CONSTRUCTS_RESTRICT_TO_1990 = 0x0020, +}; + +/* + * Perform low-level parsing of ASN.1 module[s] + * and return a list of module trees. + */ +asn1p_t *asn1p_parse_file(const char *filename, + enum asn1p_flags); +asn1p_t *asn1p_parse_buffer(const char *buffer, int size /* = -1 */, + enum asn1p_flags); + +#endif /* ASN1PARSER_H */ |