public class SEQUENCE extends ConstructedType
A SEQUENCE object is DER encoded using the constructed encoding
practice by splitting it into separately encoded components. Therefore the
SEQUENCE class is extended to be a subclass of the
ConstructedType
class. Each component can
be added to the current SEQUENCE object by using a proper
addComponent
method of the ConstructedType
super class.
The constructed form can be recognized by bit 6 of the (first) identifier octet(s) of the DER encoded bit stream, which is set to 1.
When creating a new SEQUENCE
object, explicitly may be specified
to use indefinite length encoding instead of definite length encoding.
Indefinite length encoding is recognized by a length tag of (hexadecimal)
0x80, and the content octets are concluded by two consecutive octets of all
zeros:
0x30 0x80 ... -- content octets ... 0x00 0x00 -- EOC octetsinstead of explicitly specifying the number of content octets (definite length encoding):
0x30 0x07 ... -- seven content octets ...Indefinite length encoding may be preferable when the actual number of content octets is not known at the beginning of the data transfer.
When using indefinite length encoding, the
encodeTo
method
of the DerCoder
class shall be used instead of the
encode
method, in particular when dealing with large amounts of
data.
The following example creates a new SEQUENCE object and adds an INTERGER, BOOLEAN, and a PrintableString component:
SEQUENCE seq = new SEQUENCE(); seq.addComponent(new INTEGER(3)); seq.addComponent(new BOOLEAN(true)); seq.addComponent(new PrintableString("Test"));Of course, sequences may be nested meaning that one SEQUENCE contains another SEQUENCE as one of its components. The nesting may be of any depth.
ASN1Object
,
ASN
,
ConstructedType
,
ConstructedType.addComponent(iaik.asn1.ASN1Object)
content_count, content_data
asnType, constructed, encode_listener, indefinite_length, isStringType, stream_mode
Constructor and Description |
---|
SEQUENCE()
Creates a new SEQUENCE.
|
SEQUENCE(boolean indefiniteLength)
Creates a new SEQUENCE and defines the length encoding method to be used.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
toString()
Returns a String that represents the value of this SEQUENCE.
|
addComponent, addComponent, addEncodeListener, clone, countComponents, decode, encode, getComponentAt, getComponents, getValue, removeComponent, removeComponent, setComponent, setValue
addEncodeListener, encodeObject, getAsnType, indefiniteLength, isA, isConstructed, isStringType, setIndefiniteLength
public SEQUENCE()
Components may be added by means of the
addComponent
method of the ConstructedType
super
class. Length encoding will be definite.
public SEQUENCE(boolean indefiniteLength)
Components may be added by means of the
addComponent
method of the ConstructedType
super
class. If indefiniteLength
is set to true
, the
indefinite length method will be used when actually DER encoding this
SEQUENCE, otherwise the definite length encoding method will be used.
indefiniteLength
- whether to use definite or indefinite length encoding when DER
encoding this SEQUENCEpublic java.lang.String toString()
toString
in class ASN1Object
ASN1Object.toString()