public Asn1UtcTime(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { var ascii = Encoding.ASCII.GetString(content.Workload); dateTime = DateTime.ParseExact(ascii, UtcFormats, CultureInfo.InvariantCulture, DateTimeStyles.None); }
public Asn1Object CreateAsn1Object( Asn1Document document, TaggedObject content, Asn1Object parent) { Asn1Object result = null; try { if (document.ShowInvalidTaggedObjects && IsInvalidTaggedObject(content)) return new Asn1InvalidObject(document, (InvalidTaggedObject)content, parent); var tagValue = content.Tag.Value; if (!tagValue.IsUniversalClass()) { var specific = CreateSpecificTaggedObject(document, content, parent); return specific ?? CreateUnsupportedTaggedObject(document, content, parent); } var asn1TagValue = tagValue.GetAsn1TagValue(); switch (asn1TagValue) { case (int)Asn1Tags.Boolean: return new Asn1Boolean(document, content, parent); case (int)Asn1Tags.Integer: return new Asn1Integer(document, content, parent); case (int)Asn1Tags.BitString: return new Asn1BitString(document, content, parent); case (int)Asn1Tags.OctetString: return new Asn1OctetString(document, content, parent); case (int)Asn1Tags.Null: return new Asn1Null(document, content, parent); case (int)Asn1Tags.ObjectIdentifier: return new Asn1Oid(document, content, parent); case (int)Asn1Tags.Utf8String: return new Asn1Utf8String(document, content, parent); case (int)Asn1Tags.Sequence: return new Asn1Sequence(document, content, parent); case (int)Asn1Tags.Set: return new Asn1Set(document, content, parent); case (int)Asn1Tags.NumericString: return new Asn1NumericString(document, content, parent); case (int)Asn1Tags.PrintableString: return new Asn1PrintableString(document, content, parent); case (int)Asn1Tags.UtcTime: return new Asn1UtcTime(document, content, parent); default: var specific = CreateSpecificTaggedObject(document, content, parent); return specific ?? CreateUnsupportedTaggedObject(document, content, parent); } } catch (Exception ex) { // Could not create a "real" ASN1 object --> return the special "Unsupported" object. log.Error(ex); result = CreateUnsupportedTaggedObject(document, content, parent, ex); } return result; }
internal Asn1Object(Asn1Document document, TaggedObject content, Asn1Object parentObject) { if (content == null) throw new ArgumentNullException("content"); TaggedObject = content; Document = document; Parent = parentObject; }
internal Asn1Object(Asn1Document document, TaggedObject content, Asn1Object parentObject) { if (content == null) { throw new ArgumentNullException("content"); } TaggedObject = content; Document = document; Parent = parentObject; }
private Asn1Object CreateUnsupportedTaggedObject(Asn1Document document, TaggedObject content, Asn1Object parent, Exception exception = null) { if (exception != null) return new Asn1Unsupported(document, content, parent, exception); var tagValue = content.Tag.Value; if (tagValue.IsContextSpecificClass()) return new Asn1ContextSpecific(document, content, parent); return new Asn1Unsupported(document, content, parent); }
public Asn1Integer(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { long value = 0L; foreach (byte element in content.Workload) { value <<= 8; value += element; } Value = value; }
protected override Asn1Object CreateSpecificTaggedObject(Asn1Document document, TaggedObject content, Asn1Object parent) { var result = base.CreateSpecificTaggedObject(document, content, parent); if (result != null) return result; var tag = content.Tag.Value; if (tag == (ushort)Tags.Icao.Mrz) return new Asn1Mrz(document, content, parent); return null; }
public TreeNodeEx CreateDocumentNodes(Asn1Document document, string rootNodeText) { var rootNode = new TreeNodeEx(rootNodeText); rootNode.SelectedImageIndex = documentImageIndex; rootNode.ImageIndex = documentImageIndex; rootNode.Tag = document; foreach (var node in document.Nodes) AddAsnNode(node, rootNode); Nodes.Add(rootNode); return rootNode; }
private Asn1Object CreateUnsupportedTaggedObject(Asn1Document document, TaggedObject content, Asn1Object parent, Exception exception = null) { if (exception != null) { return(new Asn1Unsupported(document, content, parent, exception)); } var tagValue = content.Tag.Value; if (tagValue.IsContextSpecificClass()) { return(new Asn1ContextSpecific(document, content, parent)); } return(new Asn1Unsupported(document, content, parent)); }
protected override Asn1Object CreateSpecificTaggedObject(Asn1Document document, TaggedObject content, Asn1Object parent) { var asn1 = base.CreateSpecificTaggedObject(document, content, parent); if (asn1 != null) return asn1; var tagValue = content.Tag.Value; var ef = Tags.FindEF(tagValue); if (!ef.HasValue) return null; switch (ef.Value) { case Tags.EF.DG1: return new Asn1DG1Data(document, content, parent); } return null; }
/// <summary> /// Initializes a new instance of the <see cref="Asn1Unsupported"/> class. /// </summary> /// <param name="document">The document.</param> /// <param name="content">The content.</param> /// <param name="parentObject">The parent object.</param> public Asn1Unsupported(Asn1Document document, TaggedObject content, Asn1Object parentObject) : this(document, content, parentObject, null) { }
public Asn1Object CreateAsn1Object(Asn1Document document, TaggedObject content, Asn1Object parent) { return(ObjectFactory.CreateAsn1Object(document, content, parent)); }
internal Asn1InvalidObject( Asn1Document document, InvalidTaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { InvalidTaggedObject = content; }
public Asn1Sequence(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { }
public Asn1StructuredObject(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { ParseContent(); }
public Asn1OctetString(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { }
protected virtual Asn1Object CreateSpecificTaggedObject(Asn1Document document, TaggedObject content, Asn1Object parent) { return(null); }
public Asn1DG1Data(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { }
public Asn1Null(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { warning = content.WorkloadLength != 0; }
public Asn1NumericString(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { }
public Asn1Utf8String(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { utf8 = Encoding.UTF8.GetString(content.Workload); }
/// <summary> /// Initializes a new instance of the <see cref="Asn1Unsupported"/> class. /// </summary> /// <param name="document">The document.</param> /// <param name="content">The content.</param> /// <param name="parentObject">The parent object.</param> /// <param name="exception">The exception.</param> internal Asn1Unsupported(Asn1Document document, TaggedObject content, Asn1Object parentObject, Exception exception) : base(document, content, parentObject) { Exception = exception; }
public void ParseData() { try { asnTreeView.Nodes.Clear(); hexViewer.Select(0, 0); asciiTextBox.Clear(); bytesTextBox.Clear(); if(IsIcaoMrtd) { var doc = new Asn1IcaoDocument(content, ParseOctetStrings, ShowInvalidTaggedObjects); asnTreeView.CreateDocumentNodes(doc, "ICAO Document"); } else { var doc = new Asn1Document(content, ParseOctetStrings, ShowInvalidTaggedObjects); asnTreeView.CreateDocumentNodes(doc, "Document"); } asnTreeView.ExpandAll(); } catch (Exception ex) { HandleException("Unable to decode content: {0}.", ex); } }
protected virtual Asn1Object CreateSpecificTaggedObject(Asn1Document document, TaggedObject content, Asn1Object parent) { return null; }
public Asn1Object CreateAsn1Object(Asn1Document document, TaggedObject content, Asn1Object parent) { return ObjectFactory.CreateAsn1Object(document, content, parent); }
internal Asn1ContextSpecific(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { }
public Asn1BitString(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { unusedBytes = content.Workload[0]; bitString = content.Workload.Skip(1).ToArray(); }
public Asn1Boolean(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { boolean = content.Workload[0] == 0xFF; }
public Asn1Oid(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { oid = OidUtils.Decode(content.Workload); }
public Asn1PrintableString(Asn1Document document, TaggedObject content, Asn1Object parentObject) : base(document, content, parentObject) { }
public Asn1Object CreateAsn1Object( Asn1Document document, TaggedObject content, Asn1Object parent) { Asn1Object result = null; try { if (document.ShowInvalidTaggedObjects && IsInvalidTaggedObject(content)) { return(new Asn1InvalidObject(document, (InvalidTaggedObject)content, parent)); } var tagValue = content.Tag.Value; if (!tagValue.IsUniversalClass()) { var specific = CreateSpecificTaggedObject(document, content, parent); return(specific ?? CreateUnsupportedTaggedObject(document, content, parent)); } var asn1TagValue = tagValue.GetAsn1TagValue(); switch (asn1TagValue) { case (int)Asn1Tags.Boolean: return(new Asn1Boolean(document, content, parent)); case (int)Asn1Tags.Integer: return(new Asn1Integer(document, content, parent)); case (int)Asn1Tags.BitString: return(new Asn1BitString(document, content, parent)); case (int)Asn1Tags.OctetString: return(new Asn1OctetString(document, content, parent)); case (int)Asn1Tags.Null: return(new Asn1Null(document, content, parent)); case (int)Asn1Tags.ObjectIdentifier: return(new Asn1Oid(document, content, parent)); case (int)Asn1Tags.Utf8String: return(new Asn1Utf8String(document, content, parent)); case (int)Asn1Tags.Sequence: return(new Asn1Sequence(document, content, parent)); case (int)Asn1Tags.Set: return(new Asn1Set(document, content, parent)); case (int)Asn1Tags.NumericString: return(new Asn1NumericString(document, content, parent)); case (int)Asn1Tags.PrintableString: return(new Asn1PrintableString(document, content, parent)); case (int)Asn1Tags.UtcTime: return(new Asn1UtcTime(document, content, parent)); default: var specific = CreateSpecificTaggedObject(document, content, parent); return(specific ?? CreateUnsupportedTaggedObject(document, content, parent)); } } catch (Exception ex) { // Could not create a "real" ASN1 object --> return the special "Unsupported" object. log.Error(ex); result = CreateUnsupportedTaggedObject(document, content, parent, ex); } return(result); }