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 an DER output stream.
|
DerOutputStream(int size)
Construct an DER output stream.
|
Modifier and Type | Method and Description |
---|---|
void |
derEncode(java.io.OutputStream out)
Write the current contents of this
DerOutputStream to an OutputStream . |
byte[] |
getDateBytes(java.util.Date d,
boolean UTC) |
void |
putBitString(byte[] bits)
Marshals a DER bit string on the output stream.
|
void |
putBMPString(java.lang.String s)
Marshals a string which is consists of BMP (unicode) characters
|
void |
putBoolean(boolean val)
Marshals a DER boolean on the output stream.
|
void |
putDerValue(DerValue val)
Marshals pre-encoded DER value onto the output stream.
|
void |
putEnumerated(int i)
Marshals a DER enumerated value on the output stream.
|
void |
putGeneralizedTime(java.util.Date d)
Marshals a DER Generalized Time/date value.
|
void |
putGeneralString(java.lang.String s) |
void |
putIA5String(java.lang.String s)
Marshals a string which is consists of IA5(ASCII) characters
|
void |
putInteger(BigInt i)
Marshals a DER unsigned integer on the output stream.
|
void |
putLength(int len)
Put the encoding of the length in the stream.
|
void |
putNull()
Marshals a DER "null" value on the output stream.
|
void |
putOctetString(byte[] octets)
DER-encodes an ASN.1 OCTET STRING value on the output stream.
|
void |
putOID(ObjectIdentifier oid)
Marshals an object identifier (OID) on the output stream.
|
void |
putOrderedSet(byte tag,
DerEncoder[] set)
Marshals the contents of a set on the output stream.
|
void |
putOrderedSetOf(byte tag,
DerEncoder[] set)
Marshals the contents of a set on the output stream.
|
void |
putPrintableString(java.lang.String s)
Converts string to printable and writes to der output stream.
|
void |
putSequence(DerValue[] seq)
Marshals a sequence on the output stream.
|
void |
putSet(byte tag,
DerEncoder[] set)
NSCP :
Like putOrderSetOf, except not sorted.
|
void |
putSet(DerValue[] set)
Marshals the contents of a set on the output stream without
ordering the elements.
|
void |
putStringType(byte tag,
java.lang.String s) |
void |
putTag(byte tagClass,
boolean form,
byte val)
Put the tag of the attribute in the stream.
|
void |
putUnalignedBitString(BitArray ba)
Marshals a DER bit string on the output stream.
|
void |
putUnalignedBitString(boolean[] bitString)
Marshals a DER bit string on the output stream.
|
void |
putUnalignedBitString(byte[] bitString)
Marshals a DER bit string on the output stream.
|
void |
putUnsignedInteger(byte[] integerBytes)
Marshals a DER unsigned integer on the output stream.
|
void |
putUTCTime(java.util.Date d)
Marshals a DER UTC time/date value.
|
void |
putUTF8String(java.lang.String s) |
void |
putVisibleString(java.lang.String s) |
void |
write(byte tag,
byte[] buf)
Writes tagged, pre-marshaled data.
|
void |
write(byte tag,
DerOutputStream out)
Writes tagged data using buffer-to-buffer copy.
|
void |
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 void 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.IOException
public void 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.IOException
public void 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.IOException
public void putDerValue(DerValue val) throws java.io.IOException
java.io.IOException
public void putBoolean(boolean val) throws java.io.IOException
java.io.IOException
public void putInteger(BigInt i) throws java.io.IOException
java.io.IOException
public void putUnsignedInteger(byte[] integerBytes) throws java.io.IOException
java.io.IOException
public void putEnumerated(int i) throws java.io.IOException
java.io.IOException
public void putBitString(byte[] bits) throws java.io.IOException
bits
- the bit string, MSB firstjava.io.IOException
public void putUnalignedBitString(BitArray ba) throws java.io.IOException
ba
- the bit string, MSB firstjava.io.IOException
public void putUnalignedBitString(byte[] bitString) throws java.io.IOException
bitString
- the bit string, MSB firstjava.io.IOException
public void putUnalignedBitString(boolean[] bitString) throws java.io.IOException
bitString
- the bit string as an array of booleans.java.io.IOException
public void putOctetString(byte[] octets) throws java.io.IOException
octets
- the octet stringjava.io.IOException
public void putNull() throws java.io.IOException
java.io.IOException
public void putOID(ObjectIdentifier oid) throws java.io.IOException
java.io.IOException
public void putSequence(DerValue[] seq) throws java.io.IOException
java.io.IOException
public void putSet(DerValue[] set) throws java.io.IOException
java.io.IOException
public void putSet(byte tag, DerEncoder[] set) throws java.io.IOException
java.io.IOException
public void putOrderedSetOf(byte tag, DerEncoder[] set) throws java.io.IOException
java.io.IOException
public void putOrderedSet(byte tag, DerEncoder[] set) throws java.io.IOException
java.io.IOException
public void putPrintableString(java.lang.String s) throws java.io.IOException
java.io.IOException
public void putVisibleString(java.lang.String s) throws java.io.IOException
java.io.IOException
public void putBMPString(java.lang.String s) throws java.io.IOException
java.io.IOException
public void putGeneralString(java.lang.String s) throws java.io.IOException
java.io.IOException
public void putIA5String(java.lang.String s) throws java.io.IOException
java.io.IOException
public void putUTF8String(java.lang.String s) throws java.io.IOException
java.io.IOException
public void putStringType(byte tag, java.lang.String s) throws java.io.IOException
java.io.IOException
public byte[] getDateBytes(java.util.Date d, boolean UTC)
public void 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 IETF-PKIX partI.
java.io.IOException
public void 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 IETF-PKIX partI.
java.io.IOException
public void putLength(int len) throws java.io.IOException
len
- the length of the attribute.java.io.IOException
- on writing errors.public void putTag(byte tagClass, boolean form, byte val)
tagClass
- the tag class type, one of UNIVERSAL, CONTEXT,
APPLICATION or PRIVATEform
- if true, the value is constructed, otherwise it is
primitive.val
- the tag valuepublic void derEncode(java.io.OutputStream out) throws java.io.IOException
DerOutputStream
to an OutputStream
.derEncode
in interface DerEncoder
out
- the stream on which the DER encoding is written.java.io.IOException
- on output error.