public class DerOutputStream extends java.io.ByteArrayOutputStream implements DerEncoder
At this time, this class supports only a subset of the types of DER data encodings which are defined. That subset is sufficient for generating most X.509 certificates.
| Constructor and Description |
|---|
DerOutputStream()
Construct a DER output stream.
|
DerOutputStream(int size)
Construct a DER output stream.
|
| Modifier and Type | Method and Description |
|---|---|
void |
encode(DerOutputStream out)
Write the current contents of this
DerOutputStream
to an OutputStream. |
DerOutputStream |
putBitString(byte[] bits)
Marshals a DER bit string on the output stream.
|
DerOutputStream |
putBMPString(java.lang.String s)
Marshals a string as a DER encoded BMPString.
|
DerOutputStream |
putBoolean(boolean val)
Marshals a DER boolean on the output stream.
|
DerOutputStream |
putDerValue(DerValue val)
Marshals pre-encoded DER value onto the output stream.
|
DerOutputStream |
putEnumerated(int i)
Marshals a DER enumerated on the output stream.
|
DerOutputStream |
putGeneralizedTime(java.util.Date d)
Marshals a DER Generalized Time/date value.
|
DerOutputStream |
putGeneralString(java.lang.String s)
Marshals a string as a DER encoded GeneralString.
|
DerOutputStream |
putIA5String(java.lang.String s)
Marshals a string as a DER encoded IA5String.
|
DerOutputStream |
putInteger(java.math.BigInteger i)
Marshals a DER integer on the output stream.
|
DerOutputStream |
putInteger(byte[] buf)
Marshals a DER integer on the output stream.
|
DerOutputStream |
putInteger(int i)
Marshals a DER integer on the output stream.
|
DerOutputStream |
putInteger(java.lang.Integer i)
Marshals a DER integer on the output stream.
|
void |
putLength(int len)
Put the encoding of the length in the stream.
|
DerOutputStream |
putNull()
Marshals a DER "null" value on the output stream.
|
DerOutputStream |
putOctetString(byte[] octets)
DER-encodes an ASN.1 OCTET STRING value on the output stream.
|
DerOutputStream |
putOID(ObjectIdentifier oid)
Marshals an object identifier (OID) on the output stream.
|
DerOutputStream |
putOrderedSet(byte tag,
DerEncoder[] set)
Marshals the contents of a set on the output stream.
|
DerOutputStream |
putOrderedSetOf(byte tag,
DerEncoder[] set)
Marshals the contents of a set on the output stream.
|
DerOutputStream |
putPrintableString(java.lang.String s)
Marshals a string as a DER encoded PrintableString.
|
DerOutputStream |
putSequence(DerValue[] seq)
Marshals a sequence on the output stream.
|
DerOutputStream |
putSet(DerValue[] set)
Marshals the contents of a set on the output stream without
ordering the elements.
|
DerOutputStream |
putT61String(java.lang.String s)
Marshals a string as a DER encoded T61String.
|
DerOutputStream |
putTruncatedUnalignedBitString(BitArray ba)
Marshals a truncated DER bit string on the output stream.
|
DerOutputStream |
putUnalignedBitString(BitArray ba)
Marshals a DER bit string on the output stream.
|
DerOutputStream |
putUTCTime(java.util.Date d)
Marshals a DER UTC time/date value.
|
DerOutputStream |
putUTF8String(java.lang.String s)
Marshals a string as a DER encoded UTF8String.
|
DerOutputStream |
write(byte tag,
byte[] buf)
Writes tagged, pre-marshaled data.
|
DerOutputStream |
write(byte tag,
DerOutputStream out)
Writes tagged data using buffer-to-buffer copy.
|
DerOutputStream |
write(DerEncoder encoder)
Write a DerEncoder onto the output stream.
|
DerOutputStream |
writeImplicit(byte tag,
DerOutputStream value)
Writes implicitly tagged data using buffer-to-buffer copy.
|
public DerOutputStream(int size)
size - how large a buffer to preallocate.public DerOutputStream()
public DerOutputStream write(byte tag, byte[] buf) throws java.io.IOException
tag - the DER value tag for the data, such as
DerValue.tag_Sequencebuf - buffered data, which must be DER-encodedjava.io.IOExceptionpublic DerOutputStream write(byte tag, DerOutputStream out) throws java.io.IOException
tag - the DER value tag for the data, such as
DerValue.tag_Sequenceout - buffered datajava.io.IOExceptionpublic DerOutputStream writeImplicit(byte tag, DerOutputStream value) throws java.io.IOException
tag - the DER value of the context-specific tag that replaces
original tag of the value in the output, such as in
<field> [N] IMPLICIT <type>
For example, FooLength [1] IMPLICIT INTEGER, with value=4;
would be encoded as "81 01 04" whereas in explicit
tagging it would be encoded as "A1 03 02 01 04".
Notice that the tag is A1 and not 81, this is because with
explicit tagging the form is always constructed.value - original value being implicitly taggedjava.io.IOExceptionpublic DerOutputStream putDerValue(DerValue val) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putBoolean(boolean val) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putEnumerated(int i) throws java.io.IOException
i - the enumerated value.java.io.IOExceptionpublic DerOutputStream putInteger(java.math.BigInteger i) throws java.io.IOException
i - the integer in the form of a BigInteger.java.io.IOExceptionpublic DerOutputStream putInteger(byte[] buf) throws java.io.IOException
buf - the integer in bytes, equivalent to BigInteger::toByteArray.java.io.IOExceptionpublic DerOutputStream putInteger(java.lang.Integer i) throws java.io.IOException
i - the integer in the form of an Integer.java.io.IOExceptionpublic DerOutputStream putInteger(int i) throws java.io.IOException
i - the integer.java.io.IOExceptionpublic DerOutputStream putBitString(byte[] bits) throws java.io.IOException
bits - the bit string, MSB firstjava.io.IOExceptionpublic DerOutputStream putUnalignedBitString(BitArray ba) throws java.io.IOException
ba - the bit string, MSB firstjava.io.IOExceptionpublic DerOutputStream putTruncatedUnalignedBitString(BitArray ba) throws java.io.IOException
ba - the bit string, MSB firstjava.io.IOExceptionpublic DerOutputStream putOctetString(byte[] octets) throws java.io.IOException
octets - the octet stringjava.io.IOExceptionpublic DerOutputStream putNull() throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putOID(ObjectIdentifier oid) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putSequence(DerValue[] seq) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putSet(DerValue[] set) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putOrderedSetOf(byte tag, DerEncoder[] set) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putOrderedSet(byte tag, DerEncoder[] set) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putUTF8String(java.lang.String s) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putPrintableString(java.lang.String s) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putT61String(java.lang.String s) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putIA5String(java.lang.String s) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putBMPString(java.lang.String s) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putGeneralString(java.lang.String s) throws java.io.IOException
java.io.IOExceptionpublic DerOutputStream putUTCTime(java.util.Date d) throws java.io.IOException
YYMMDDhhmmss{Z|+hhmm|-hhmm} ... emits only using Zulu time and with seconds (even if seconds=0) as per RFC 5280.
java.io.IOExceptionpublic DerOutputStream putGeneralizedTime(java.util.Date d) throws java.io.IOException
YYYYMMDDhhmmss{Z|+hhmm|-hhmm} ... emits only using Zulu time and with seconds (even if seconds=0) as per RFC 5280.
java.io.IOExceptionpublic void putLength(int len)
throws java.io.IOException
len - the length of the attribute.java.io.IOException - on writing errors.public void encode(DerOutputStream out) throws java.io.IOException
DerOutputStream
to an OutputStream.encode in interface DerEncoderout - the stream on which the DER encoding is written.java.io.IOException - on output error.public DerOutputStream write(DerEncoder encoder) throws java.io.IOException
encoder - the DerEncoderjava.io.IOException - on output error