Class TlsData

java.lang.Object
de.bsvrz.kex.tls.osi7.TlsData

public class TlsData
extends java.lang.Object
Ermöglicht über ein TlsData Objekt eine komfortablen Zugriff auf TlsByte[]-Daten. Der Zugriff auf die Daten erfolgt gekapselt über die Klassenmethoden. Es lassen sich mehrere Byte Lesen oder Schreiben, wobei die entsprechenden Methoden die Interpretation bzgl. Reihenfolge und Wert (Low-High-ExtraHigh-Byte) vornehmen. Eine Lese- oder Schreiboperation setzt den interen Lesezeiger im um die notwendige Anzahl Bytes weiter, so dass kontinuierlich geschrieben bzw. gelesen werden kann. Wird über das Ende hinaus gelesen, so wird eine ArrayIndexOutOfBoundsException erzeugt. Das übergebene tlsByte[] wird nicht verändert.
  • Constructor Summary

    Constructors 
    Constructor Description
    TlsData​(byte[] tlsBytes)
    Konsturiert ein TlsData Objekt auf Basis der übergebenen tlsBytes[].
    TlsData​(int length)
    Konsturiert ein TlsData Objekt auf Basis der übergebenen Größe.
  • Method Summary

    Modifier and Type Method Description
    void backStepReadPosition()
    Setzt die Leseposition für den nächsten Zugriff auf den Wert vor dem letzten Zugriff.
    int currentReadPosition()
    Gibt die aktuelle Leseposition zurück.
    int currentWritePosition()
    Gibt die aktuelle Schreibposition zurück.
    int lastReadPosition()
    Gibt die Leseposition vor dem letzten Zugriff zurück.
    int lastWritePosition()
    Gibt die Schreibposition vor dem letzten Zugriff zurück.
    int length()
    Gibt die Länge (Anzahl der Bytes) der Daten zurück.
    int readExtraHighHighLowByteAsHalfByteAsInt()
    Liest drei TlsByte als ExtraHighByte, HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..999999).
    int readHighLowByteAsHalfByteAsInt()
    Liest zwei TlsByte als HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..9999).
    TlsData readNextTlsDataBlock()
    Erzeugt einen neues TlsData Objekt, indem es das Byte an der aktuellen Leseposition als Länge eines nachfolgenden Datenblocks interpretiert und diesen nachfolgenden Datenblock liest und in ein TlsData-Objekt konvertiert.
    TlsData readNextTlsDataBlock​(int count)
    Erzeugt einen neues TlsData Objekt, indem es ab der aktuellen Leseposition die übergebene Anzahl Bytes liest und in ein TlsData-Objekt konvertiert.
    int readSignedByteAsInt()
    Liest ein TlsByte als vorzeichenbehafteten Wert (-128..127).
    int readSignedLowHighByteAsInt()
    Liest zwee TlsByte als als LowByte und HighByte vorzeichenbehaftet (-32640..32639).
    int readUnsignedByteAsInt()
    Liest ein TlsByte als vorzeichenlosen Wert (0..255).
    int readUnsignedExtraHighHighLowByteAsInt()
    Liest drei TlsByte als ExtaHighByte, HighByte und LowByte (0..16777215).
    int readUnsignedHighLowByteAsInt()
    Liest zwei TlsByte als HighByte und LowByte (0..65535).
    int readUnsignedLowHighByteAsInt()
    Liest zwei TlsByte als LowByte und HighByte (0..65535).
    int readUnsignedLowHighExtraHighByteAsInt()
    Liest drei TlsByte als LowByte, HighByte und ExtrHighByte (0..16777215).
    int readUnsignedLowHighExtraHighVeryHighByteAsInt()
    Liest vier TlsByte als LowByte, HighByte, ExtrHighByte und VeryHighByte.
    int readUnsignedLowOrLowHighByteAsInt()
    Liest ein oder zwei TlsByte als LowByte oder LowByte und HighByte (0..32767).
    int readUnsignedVeryHighExtraHighHighLowByteAsInt()
    Liest vier TlsByte als VeryHighByte, ExtaHighByte, HighByte und LowByte.
    void rewindReadPosition()
    Setzt die Leseposition auf den Anfang.
    byte[] toBytes()
    Gibt die Daten, die durch das TlsData-Objekt repräsentiert werden, als byte[] zurück.
    java.lang.String toString()
    Gibt den Inhalt als HexDump aus.
    void writeByteArray​(byte[] data)
    Schreibt ein byte[] ab der aktuellen Schreibposition.
    void writeIntAsByte​(int data)
    Schreibt ein TlsByte (0..255).
    void writeIntAsByte​(int data, int index)
    Schreibt ein TlsByte (0..255) an die angegebene Position.
    void writeIntAsExtraHighHighLowByte​(int data)
    Schreibt drei "TlsByte" als ExtrHighByte, HighByte und LowByte (0..16777215).
    void writeIntAsExtraHighHighLowByteAsHalfByte​(int data)
    Schreibt drei "TlsByte" als ExtraHighByte, HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..999999).
    void writeIntAsHighLowByte​(int data)
    Schreibt zwei "TlsByte" als HighLowByte und LowByte (0..65535).
    void writeIntAsHighLowByteAsHalfByte​(int data)
    Schreibt zwei "TlsByte" als HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..9999).
    void writeIntAsLowHighByte​(int data)
    Schreibt zwei "TlsByte" als LowByte und HighByte (0..65535).
    void writeIntAsLowHighExtraHighByte​(int data)
    Schreibt drei "TlsByte" als LowByte, HighByte und ExtrHighByte (0..16777215).
    void writeTlsData​(TlsData data)
    Schreibt ein TlsData-Objekt ab der aktuellen Schreibposition.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • TlsData

      public TlsData​(byte[] tlsBytes)
      Konsturiert ein TlsData Objekt auf Basis der übergebenen tlsBytes[]. Der Zugriff auf die Daten erfolgt gekapselt über die Klassenmethoden. Das übergebene tlsByte[] wird nicht verändert.
      Parameters:
      tlsBytes - Datenblock gemäß TLS.
    • TlsData

      public TlsData​(int length)
      Konsturiert ein TlsData Objekt auf Basis der übergebenen Größe. Der Zugriff auf die Daten erfolgt gekapselt über die Klassenmethoden. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      length - Initiale Länge des TlsData-Objekts.
  • Method Details

    • toString

      public java.lang.String toString()
      Gibt den Inhalt als HexDump aus.
      Overrides:
      toString in class java.lang.Object
      Returns:
      HexDump des Inhalts vom TlsData Objekt.
    • backStepReadPosition

      public void backStepReadPosition()
      Setzt die Leseposition für den nächsten Zugriff auf den Wert vor dem letzten Zugriff.
    • currentReadPosition

      public int currentReadPosition()
      Gibt die aktuelle Leseposition zurück.
      Returns:
      Aktuelle Leseposition.
    • currentWritePosition

      public int currentWritePosition()
      Gibt die aktuelle Schreibposition zurück.
      Returns:
      Aktuelle Schreibposition.
    • lastReadPosition

      public int lastReadPosition()
      Gibt die Leseposition vor dem letzten Zugriff zurück.
      Returns:
      Leseposition vor dem letzten Zugriff.
    • lastWritePosition

      public int lastWritePosition()
      Gibt die Schreibposition vor dem letzten Zugriff zurück.
      Returns:
      Schreibposition vor dem letzten Zugriff.
    • readExtraHighHighLowByteAsHalfByteAsInt

      public int readExtraHighHighLowByteAsHalfByteAsInt()
      Liest drei TlsByte als ExtraHighByte, HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..999999). Liegt der Wert ausserhalb des Wertebereichs, so wird der Wert 0 zurückgegeben. Setzt die Leseposition um 3 Positionen weiter.
      Returns:
      Wert der 3 TlsByte im Bereich von 0..999999.
    • readHighLowByteAsHalfByteAsInt

      public int readHighLowByteAsHalfByteAsInt()
      Liest zwei TlsByte als HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..9999). Liegt der Wert ausserhalb des Wertebereichs, so wird der Wert 0 zurückgegeben. Setzt den Leseposition um 2 Positionen weiter. Positionen weiter.
      Returns:
      Wert der 2 TlsByte im Bereich von 0..9999.
    • readNextTlsDataBlock

      public TlsData readNextTlsDataBlock()
      Erzeugt einen neues TlsData Objekt, indem es das Byte an der aktuellen Leseposition als Länge eines nachfolgenden Datenblocks interpretiert und diesen nachfolgenden Datenblock liest und in ein TlsData-Objekt konvertiert.
      Returns:
      TlsData-Objekt.
    • readUnsignedByteAsInt

      public int readUnsignedByteAsInt()
      Liest ein TlsByte als vorzeichenlosen Wert (0..255). Setzt den Leseposition 1 Position weiter.
      Returns:
      Wert des TlsByte als vorzeichenloser Wert im Bereich von 0..255.
    • readNextTlsDataBlock

      public TlsData readNextTlsDataBlock​(int count)
      Erzeugt einen neues TlsData Objekt, indem es ab der aktuellen Leseposition die übergebene Anzahl Bytes liest und in ein TlsData-Objekt konvertiert.
      Parameters:
      count - Anzahl der zu lesenden Byte.
      Returns:
      TlsData-Objekt.
    • toBytes

      public byte[] toBytes()
      Gibt die Daten, die durch das TlsData-Objekt repräsentiert werden, als byte[] zurück. Ändert den Zustand des TlsData-Objekts nicht, verändert also auch nicht die Schreib-/Leseposition. Dient z.B. dazu, die Daten als Byte[] für das Senden als TLS-Telegramm zu erhalten.
      Returns:
      TlsData-Objekt Daten als Byte-Array.
      Throws:
      java.lang.IllegalArgumentException - Wenn im zu konvertierenden int-Array Werte außerhalb des Bereich 0-255 vorkommen.
    • length

      public int length()
      Gibt die Länge (Anzahl der Bytes) der Daten zurück.
      Returns:
      Länge (Anzahl der Bytes) der Daten.
    • readSignedByteAsInt

      public int readSignedByteAsInt()
      Liest ein TlsByte als vorzeichenbehafteten Wert (-128..127). Setzt den Leseposition 1 Position weiter.
      Returns:
      Wert des TlsByte als vorzeichenbehafteten Wert (-128..127).
    • readSignedLowHighByteAsInt

      public int readSignedLowHighByteAsInt()
      Liest zwee TlsByte als als LowByte und HighByte vorzeichenbehaftet (-32640..32639). Setzt den Leseposition 1 Position weiter.
      Returns:
      Wert der 2 TlsByte als vorzeichenbehafteten Wert (-32640..32639).
    • readUnsignedExtraHighHighLowByteAsInt

      public int readUnsignedExtraHighHighLowByteAsInt()
      Liest drei TlsByte als ExtaHighByte, HighByte und LowByte (0..16777215). Setzt den Leseposition 3 Positionen weiter.
      Returns:
      Wert der 3 TlsByte im Bereich von 0..16777215.
    • readUnsignedHighLowByteAsInt

      public int readUnsignedHighLowByteAsInt()
      Liest zwei TlsByte als HighByte und LowByte (0..65535). Setzt den Leseposition 2 Positionen weiter.
      Returns:
      Wert der 2 TlsByte im Bereich von 0..65535.
    • readUnsignedLowHighByteAsInt

      public int readUnsignedLowHighByteAsInt()
      Liest zwei TlsByte als LowByte und HighByte (0..65535). Setzt den Leseposition 2 Positionen weiter.
      Returns:
      Wert der 2 TlsByte im Bereich von 0..65535.
    • readUnsignedLowHighExtraHighByteAsInt

      public int readUnsignedLowHighExtraHighByteAsInt()
      Liest drei TlsByte als LowByte, HighByte und ExtrHighByte (0..16777215). Setzt den Leseposition 3 Positionen weiter.
      Returns:
      Wert der 3 TlsByte im Bereich von 0..16777215.
    • readUnsignedLowHighExtraHighVeryHighByteAsInt

      public int readUnsignedLowHighExtraHighVeryHighByteAsInt()
      Liest vier TlsByte als LowByte, HighByte, ExtrHighByte und VeryHighByte. Setzt den Leseposition 4 Positionen weiter.
      Returns:
      Wert der 3 TlsByte im Bereich von 0..16777215.
    • readUnsignedLowOrLowHighByteAsInt

      public int readUnsignedLowOrLowHighByteAsInt()
      Liest ein oder zwei TlsByte als LowByte oder LowByte und HighByte (0..32767). Für Werte kleiner 128 Kodierung als 1 - Byte - Wert, sonst als 2 - Byte - Wert. Die Kennzeichnung erfolgt im 7. Bit des 1. Bytes(low Byte) eines Wertes. Ist dieses gesetzt(1), so ist die Verkehrsstärke als 1 - Byte - Wert codiert und der Wert ermittelt sich als Byte1 – 128. Ist das Bit nicht gesetzt, so ist der Wert als 2 - Byte - Wert codiert und ermittelt sich als Byte1 + Byte2 * 128.
      Returns:
      Wert der 1 oder 2 TlsByte im Bereich von 0..32767.
    • readUnsignedVeryHighExtraHighHighLowByteAsInt

      public int readUnsignedVeryHighExtraHighHighLowByteAsInt()
      Liest vier TlsByte als VeryHighByte, ExtaHighByte, HighByte und LowByte. Setzt den Leseposition 4 Positionen weiter.
      Returns:
      Wert der 4 TlsByte im Bereich.
    • rewindReadPosition

      public void rewindReadPosition()
      Setzt die Leseposition auf den Anfang.
    • writeByteArray

      public void writeByteArray​(byte[] data)
      Schreibt ein byte[] ab der aktuellen Schreibposition. Setzt den Schreibposition byte.length Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Das zu scheibende byte[].
    • writeIntAsByte

      public void writeIntAsByte​(int data)
      Schreibt ein TlsByte (0..255). Setzt den Schreibposition 1 Position weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Der zu konvertierende Wert.
    • writeIntAsByte

      public void writeIntAsByte​(int data, int index)
      Schreibt ein TlsByte (0..255) an die angegebene Position. Verändert weder Lese- noch Schreibposition.
      Parameters:
      data - Der zu konvertierende Wert.
      index - Index des TLSBytes, welcher geschrieben werden soll.
    • writeIntAsExtraHighHighLowByte

      public void writeIntAsExtraHighHighLowByte​(int data)
      Schreibt drei "TlsByte" als ExtrHighByte, HighByte und LowByte (0..16777215). Setzt den Schreibposition 3 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Der zu konvertierende Wert.
    • writeIntAsExtraHighHighLowByteAsHalfByte

      public void writeIntAsExtraHighHighLowByteAsHalfByte​(int data)
      Schreibt drei "TlsByte" als ExtraHighByte, HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..999999). Setzt den Schreibposition 3 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Der zu konvertierende Wert.
    • writeIntAsHighLowByte

      public void writeIntAsHighLowByte​(int data)
      Schreibt zwei "TlsByte" als HighLowByte und LowByte (0..65535). Setzt den Schreibposition 2 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Der zu konvertierende Wert.
    • writeIntAsHighLowByteAsHalfByte

      public void writeIntAsHighLowByteAsHalfByte​(int data)
      Schreibt zwei "TlsByte" als HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..9999). Setzt den Schreibposition 2 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Der zu konvertierende Wert.
    • writeIntAsLowHighByte

      public void writeIntAsLowHighByte​(int data)
      Schreibt zwei "TlsByte" als LowByte und HighByte (0..65535). Setzt den Schreibposition 2 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Der zu konvertierende Wert.
    • writeIntAsLowHighExtraHighByte

      public void writeIntAsLowHighExtraHighByte​(int data)
      Schreibt drei "TlsByte" als LowByte, HighByte und ExtrHighByte (0..16777215). Setzt den Schreibposition 3 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Der zu konvertierende Wert.
    • writeTlsData

      public void writeTlsData​(TlsData data)
      Schreibt ein TlsData-Objekt ab der aktuellen Schreibposition. Setzt den Schreibposition data.length Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.
      Parameters:
      data - Das zu scheibende byte[].