diff --git a/SabreTools.Models/ASN1/ASN1Type.cs b/SabreTools.Models/ASN1/ASN1Type.cs
new file mode 100644
index 0000000..762b666
--- /dev/null
+++ b/SabreTools.Models/ASN1/ASN1Type.cs
@@ -0,0 +1,58 @@
+using System;
+
+namespace SabreTools.Models.ASN1
+{
+ ///
+ /// ASN.1 type indicators
+ ///
+ [Flags]
+ public enum ASN1Type : byte
+ {
+ #region Types
+
+ V_ASN1_EOC = 0x00,
+ V_ASN1_BOOLEAN = 0x01,
+ V_ASN1_INTEGER = 0x02,
+ V_ASN1_BIT_STRING = 0x03,
+ V_ASN1_OCTET_STRING = 0x04,
+ V_ASN1_NULL = 0x05,
+ V_ASN1_OBJECT = 0x06,
+ V_ASN1_OBJECT_DESCRIPTOR = 0x07,
+ V_ASN1_EXTERNAL = 0x08,
+ V_ASN1_REAL = 0x09,
+ V_ASN1_ENUMERATED = 0x0A,
+ V_ASN1_UTF8STRING = 0x0C,
+ V_ASN1_SEQUENCE = 0x10,
+ V_ASN1_SET = 0x11,
+ V_ASN1_NUMERICSTRING = 0x12,
+ V_ASN1_PRINTABLESTRING = 0x13,
+ V_ASN1_T61STRING = 0x14,
+ V_ASN1_TELETEXSTRING = 0x14,
+ V_ASN1_VIDEOTEXSTRING = 0x15,
+ V_ASN1_IA5STRING = 0x16,
+ V_ASN1_UTCTIME = 0x17,
+ V_ASN1_GENERALIZEDTIME = 0x18,
+ V_ASN1_GRAPHICSTRING = 0x19,
+ V_ASN1_ISO64STRING = 0x1A,
+ V_ASN1_VISIBLESTRING = 0x1A,
+ V_ASN1_GENERALSTRING = 0x1B,
+ V_ASN1_UNIVERSALSTRING = 0x1C,
+ V_ASN1_BMPSTRING = 0x1E,
+
+ #endregion
+
+ #region Modifiers
+
+ // Commented out because it is the default
+ // and can interfere with V_ASN1_EOC
+ // V_ASN1_UNIVERSAL = 0x00,
+
+ V_ASN1_PRIMITIVE_TAG = 0x1F,
+ V_ASN1_CONSTRUCTED = 0x20,
+ V_ASN1_APPLICATION = 0x40,
+ V_ASN1_CONTEXT_SPECIFIC = 0x80,
+ V_ASN1_PRIVATE = 0xC0,
+
+ #endregion
+ }
+}
diff --git a/SabreTools.Models/ASN1/TypeLengthValue.cs b/SabreTools.Models/ASN1/TypeLengthValue.cs
new file mode 100644
index 0000000..29c188b
--- /dev/null
+++ b/SabreTools.Models/ASN1/TypeLengthValue.cs
@@ -0,0 +1,23 @@
+namespace SabreTools.Models.ASN1
+{
+ ///
+ /// ASN.1 type/length/value class that all types are based on
+ ///
+ public class TypeLengthValue
+ {
+ ///
+ /// The ASN.1 type
+ ///
+ public ASN1Type Type { get; set; }
+
+ ///
+ /// Length of the value
+ ///
+ public ulong Length { get; set; }
+
+ ///
+ /// Generic value associated with
+ ///
+ public object? Value { get; set; }
+ }
+}