aboutsummaryrefslogtreecommitdiffstats
path: root/libasn1parser/asn1parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'libasn1parser/asn1parser.h')
-rw-r--r--libasn1parser/asn1parser.h73
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 */