com.objsys.asn1j.runtime
Class Asn1BerOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by com.objsys.asn1j.runtime.Asn1OutputStream
          extended by com.objsys.asn1j.runtime.Asn1BerOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable
Direct Known Subclasses:
Asn1CerOutputStream

public class Asn1BerOutputStream
extends Asn1OutputStream

This class implements the output stream to encode ASN.1 messages as specified in the Basic Encoding Rules (BER) as specified in the ITU-T X.690 standard. A reference to an object of this type is passed to each of the ASN.1 type encode methods involved in encoding a particular message type.


Field Summary
 
Fields inherited from class com.objsys.asn1j.runtime.Asn1OutputStream
os
 
Constructor Summary
Asn1BerOutputStream(java.io.OutputStream os)
          This constructor creates a buffered BER output stream object with default size of buffer.
Asn1BerOutputStream(java.io.OutputStream os, int bufSize)
          This constructor creates a buffered BER output stream object.
 
Method Summary
 void encode(Asn1Type object, boolean explicit)
          This method encodes and writes to the stream ASN.1 types.
 void encodeBitString(byte[] value, int numbits, boolean explicit, Asn1Tag tag)
          This method writes the given array of bytes as bit string value.
 void encodeBMPString(java.lang.String value, boolean explicit, Asn1Tag tag)
          This method writes the given string as BMP string value.
 void encodeCharString(java.lang.String value, boolean explicit, Asn1Tag tag)
          This method encodes and writes to the stream an ASN.1 8-bit character string types including IA5String, PrintableString, NumericString, etc.
 void encodeEOC()
          This method encodes and writes an End-Of-Contents marker to the stream.
 void encodeIdentifier(long ident)
          This method encodes and writes to the stream an ASN.1 identifier value such as those used in tags or object identifiers.
 void encodeIntValue(long value, boolean encodeLen)
          This method encodes and writes to the stream an ASN.1 integer value's contents according to the ASN.1 Basic Encoding Rules (BER).
 void encodeLength(int len)
          This method encodes and writes a length value to the stream.
 void encodeOctetString(byte[] value, boolean explicit, Asn1Tag tag)
          This method writes the given array of bytes as octet string value.
 void encodeTag(Asn1Tag tag)
          This method encodes and writes a tag value to the stream.
 void encodeTag(short tagClass, short tagForm, int tagIDCode)
          This method encodes and writes a tag value to the stream.
 void encodeTagAndIndefLen(Asn1Tag tag)
          This method encodes and writes both a tag and an indefinite length indicator to the stream.
 void encodeTagAndIndefLen(short tagClass, short tagForm, int tagIDCode)
          This overloaded version of encodeTagAndIndefLen allows tag value components to be specified instead of an Asn1Tag object.
 void encodeTagAndLength(Asn1Tag tag, int len)
          This method encodes and writes both a tag and length value to the stream.
 void encodeUnivString(int[] value, boolean explicit, Asn1Tag tag)
          This method writes the given array of integers as UniversalString value.
 boolean isBER()
          This method is used for testing encode rules type.
 
Methods inherited from class com.objsys.asn1j.runtime.Asn1OutputStream
close, flush, getContext, write, write, write, write2Bytes, write4Bytes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Asn1BerOutputStream

public Asn1BerOutputStream(java.io.OutputStream os)
This constructor creates a buffered BER output stream object with default size of buffer. Whenever the buffer becomes full, the buffer will be flushed to the stream. Note: in a Java ME environment, the stream will not be buffered.

Parameters:
os - The underlying OutputStream object.

Asn1BerOutputStream

public Asn1BerOutputStream(java.io.OutputStream os,
                           int bufSize)
This constructor creates a buffered BER output stream object. Whenever the buffer becomes full, the buffer will be flushed to the stream. Note: in Java ME environment, the stream will not be buffered.

Parameters:
os - The underlying OutputStream object.
bufSize - The buffer size. If it is 0 then the output stream is used as unbuffered one.
Method Detail

encodeIdentifier

public void encodeIdentifier(long ident)
                      throws java.io.IOException
This method encodes and writes to the stream an ASN.1 identifier value such as those used in tags or object identifiers.

Parameters:
ident - The identifier to be encoded.
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeTag

public void encodeTag(Asn1Tag tag)
               throws java.io.IOException
This method encodes and writes a tag value to the stream.

Parameters:
tag - The tag to be encoded.
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeTag

public void encodeTag(short tagClass,
                      short tagForm,
                      int tagIDCode)
               throws java.io.IOException
This method encodes and writes a tag value to the stream.

Parameters:
tagClass - The class of the tag to be encoded.
tagForm - The form of the tag to be encoded.
tagIDCode - The ID code of the tag to be encoded.
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeLength

public void encodeLength(int len)
                  throws java.io.IOException
This method encodes and writes a length value to the stream.

Parameters:
len - The length to be encoded.
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeTagAndLength

public void encodeTagAndLength(Asn1Tag tag,
                               int len)
                        throws java.io.IOException
This method encodes and writes both a tag and length value to the stream.

Parameters:
tag - The tag to be encoded.
len - The length to be encoded.
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeTagAndIndefLen

public void encodeTagAndIndefLen(Asn1Tag tag)
                          throws java.io.IOException
This method encodes and writes both a tag and an indefinite length indicator to the stream.

Parameters:
tag - The tag to be encoded.
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeTagAndIndefLen

public void encodeTagAndIndefLen(short tagClass,
                                 short tagForm,
                                 int tagIDCode)
                          throws java.io.IOException
This overloaded version of encodeTagAndIndefLen allows tag value components to be specified instead of an Asn1Tag object.

Parameters:
tagClass - The class of the tag to be encoded.
tagForm - The form of the tag to be encoded.
tagIDCode - The ID code of the tag to be encoded.
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeEOC

public void encodeEOC()
               throws java.io.IOException
This method encodes and writes an End-Of-Contents marker to the stream.

Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeIntValue

public void encodeIntValue(long value,
                           boolean encodeLen)
                    throws java.io.IOException
This method encodes and writes to the stream an ASN.1 integer value's contents according to the ASN.1 Basic Encoding Rules (BER).

Parameters:
value - Integer value to encode.
encodeLen - Flag indicating length determinant should be encoded before encoding integer value.
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.

encodeBMPString

public void encodeBMPString(java.lang.String value,
                            boolean explicit,
                            Asn1Tag tag)
                     throws Asn1Exception,
                            java.io.IOException
This method writes the given string as BMP string value.

Parameters:
value - String containing data to encode.
explicit - Flag indicating explicit tagging should be done
tag - Universal tag to apply
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.
Asn1Exception - Thrown, if operation is failed.

encodeBitString

public void encodeBitString(byte[] value,
                            int numbits,
                            boolean explicit,
                            Asn1Tag tag)
                     throws Asn1Exception,
                            java.io.IOException
This method writes the given array of bytes as bit string value.

Parameters:
value - Byte array containing data to encode.
numbits - Number of bits to encode
explicit - Flag indicating explicit tagging should be done
tag - Universal tag to apply
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.
Asn1Exception - Thrown, if operation is failed.

encodeCharString

public void encodeCharString(java.lang.String value,
                             boolean explicit,
                             Asn1Tag tag)
                      throws Asn1Exception,
                             java.io.IOException
This method encodes and writes to the stream an ASN.1 8-bit character string types including IA5String, PrintableString, NumericString, etc. The UNIVERSAL tag value and length is also encoded if explicit tagging is specified (the universal identifier must be provided by the caller). Only the lower byte is encoded into the stream.

Parameters:
value - The string object to be written
explicit - Flag indicating explicit tagging should be done
tag - Universal tag to apply
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.
Asn1Exception - Thrown, if operation is failed.

encodeOctetString

public void encodeOctetString(byte[] value,
                              boolean explicit,
                              Asn1Tag tag)
                       throws Asn1Exception,
                              java.io.IOException
This method writes the given array of bytes as octet string value.

Parameters:
value - Byte array containing data to encode.
explicit - Flag indicating explicit tagging should be done
tag - Universal tag to apply
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.
Asn1Exception - Thrown, if operation is failed.

encodeUnivString

public void encodeUnivString(int[] value,
                             boolean explicit,
                             Asn1Tag tag)
                      throws Asn1Exception,
                             java.io.IOException
This method writes the given array of integers as UniversalString value.

Parameters:
value - Array containing data to encode.
explicit - Flag indicating explicit tagging should be done
tag - Universal tag to apply
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.
Asn1Exception - Thrown, if operation is failed.

encode

public void encode(Asn1Type object,
                   boolean explicit)
            throws java.io.IOException,
                   Asn1Exception
This method encodes and writes to the stream ASN.1 types. The UNIVERSAL tag value and length is also encoded if explicit tagging is specified (the universal identifier must be provided by the caller).

Parameters:
object - The object to be written
explicit - Flag indicating explicit tagging should be done
Throws:
java.io.IOException - Any exception thrown by the underlying OutputStream.
Asn1Exception

isBER

public boolean isBER()
This method is used for testing encode rules type.