opencard.opt.util
Class Tag

java.lang.Object
  |
  +--opencard.opt.util.Tag

public class Tag
extends java.lang.Object

This class represents Tags as defined in the Basic Encoding Rules for ASN.1 defined in ISO 8825. A tag consists of two class bits (0 - 4), a flag indicating wether the TLV is constructed or primitive.

The encoding is like this (C = class bit, c = composed flag, X = data bit):

 Range from 0x0 - 0x1E:
 C C c X X X X X
 
Range from 0x1F - 0x80: C C c 1 1 1 1 1 0 X X X X X X X
Range from 0x81 - 0x4000: C C c 1 X X X X 1 X X X X X X X 0 X X X X X X X
Range from 0x4001 - 0x200000: C C c 1 X X X X 1 X X X X X X X 1 X X X X X X X 0 X X X X X X X
Range from 0x200001 - 0x10000000: C C c 1 X X X X 1 X X X X X X X 1 X X X X X X X 0 X X X X X X X 0 X X X X X X X

See Also:
TLV

Constructor Summary
Tag()
          Create a null tag.
Tag(byte[] binary)
           
Tag(byte[] binary, int[] offset)
          Create a tag from binary representation.
Tag(int tag, byte tagClass, boolean constructed)
          Creates a tag from a given tag value, class and constructed flag.
Tag(Tag t)
          Clone a tag.
 
Method Summary
 int code()
          Get the code of the tag.
 boolean equals(java.lang.Object o)
          Check for equality.
 void fromBinary(byte[] binary, int[] offset)
          Initialize the Tag object from a BER-coded binary representation.
 byte[] getBytes()
          Gets a byte array representing the tag.
 int hashCode()
          Compute a hash code for this tag.
 boolean isConstructed()
          Check whether this Tag is constructed.
 void set(int tag, byte tagclass, boolean constructed)
          Set the tag number, class and constructed flag of this Tag to the given values.
 void setConstructed(boolean constructed)
          Set the constructed flag of this Tag to the given value.
 int size()
          Return the number of bytes which are required to BER-code the tag value.
 void toBinary(byte[] binary, int[] offset)
          Convert the tag to binary representation.
 java.lang.String toString()
          Get a string representation for this tag.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Tag

public Tag()
Create a null tag.


Tag

public Tag(Tag t)
Clone a tag.

Parameters:
t - The Tag object to be cloned.

Tag

public Tag(int tag,
           byte tagClass,
           boolean constructed)
Creates a tag from a given tag value, class and constructed flag.

Parameters:
tag - An integer representing the value of the tag.
tagClass - A byte value representing the class of the tag.
constructed - A boolean value true signals that the tag is constructed, false signals that the tag is primitive.

Tag

public Tag(byte[] binary,
           int[] offset)
Create a tag from binary representation.

Parameters:
binary - The byte array from which the tag shall be generated.
offset - An integer value giving the offset into the the byte array from where to start.

Tag

public Tag(byte[] binary)
Method Detail

size

public int size()
Return the number of bytes which are required to BER-code the tag value.

Returns:
An integer giving the number of bytes.

fromBinary

public void fromBinary(byte[] binary,
                       int[] offset)
Initialize the Tag object from a BER-coded binary representation.

Parameters:
binary - A byte array containing the BER-coded tag.
offset - An integer giving an offset into the byte array from where to start.

getBytes

public byte[] getBytes()
Gets a byte array representing the tag.
Returns:
the tag as a byte array

toBinary

public void toBinary(byte[] binary,
                     int[] offset)
Convert the tag to binary representation.

Parameters:
binary - A byte array to which the BER-coded binary representation of the tag shall be written.
offset - An integer value giving an offset into the byte array from where to start.

set

public void set(int tag,
                byte tagclass,
                boolean constructed)
Set the tag number, class and constructed flag of this Tag to the given values.

Parameters:
tag - An integer value giving the tag value.
tagclass - A byte value giving the class.
constructed - A boolean representing the constructed flag.

setConstructed

public void setConstructed(boolean constructed)
Set the constructed flag of this Tag to the given value.

Parameters:
constructed - A boolean representing the constructed flag.

code

public int code()
Get the code of the tag.

Returns:
An integer value representing the tag's code.

isConstructed

public boolean isConstructed()
Check whether this Tag is constructed.

Returns:
true if it is constructed, false otherwise.

hashCode

public int hashCode()
Compute a hash code for this tag.

Returns:
An integer value representing the hash code.
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object o)
Check for equality.

Returns:
true, if this Tag instance equals the given tag, false otherwise.
Overrides:
equals in class java.lang.Object

toString

public java.lang.String toString()
Get a string representation for this tag.

Returns:
The string representation.
Overrides:
toString in class java.lang.Object