edu.emory.mathcs.util.security.io
Class SecureByteArrayOutputStream

java.lang.Object
  extended byjava.io.OutputStream
      extended byjava.io.ByteArrayOutputStream
          extended byedu.emory.mathcs.util.security.io.SecureByteArrayOutputStream

public final class SecureByteArrayOutputStream
extends java.io.ByteArrayOutputStream

Variant of ByteArrayOutputStream that ensures that all data is cleared from temporary arrays before they are unreferenced. Hence, this class can be safely used to convert sensitive information into byte arrays, provided that it is closed after use.

Version:
1.0
Author:
Dawid Kurzyniec

Field Summary
 
Fields inherited from class java.io.ByteArrayOutputStream
buf, count
 
Constructor Summary
SecureByteArrayOutputStream()
           
SecureByteArrayOutputStream(int size)
           
 
Method Summary
 void close()
          Closing a SecureByteArrayOutputStream causes it to be reset(), that is, all data is discarded.
 void reset()
          Resets the count field of this byte array output stream to zero and clears up the entire buffer with zeros, so that all currently accumulated output in the ouput stream is discarded.
 void write(byte[] b, int off, int len)
           
 void write(int b)
           
 
Methods inherited from class java.io.ByteArrayOutputStream
size, toByteArray, toString, toString, toString, writeTo
 
Methods inherited from class java.io.OutputStream
flush, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SecureByteArrayOutputStream

public SecureByteArrayOutputStream()

SecureByteArrayOutputStream

public SecureByteArrayOutputStream(int size)
Method Detail

write

public void write(int b)

write

public void write(byte[] b,
                  int off,
                  int len)

reset

public void reset()
Resets the count field of this byte array output stream to zero and clears up the entire buffer with zeros, so that all currently accumulated output in the ouput stream is discarded. The output stream can be used again, reusing the already allocated buffer space.

See Also:
ByteArrayInputStream.count

close

public void close()
           throws java.io.IOException
Closing a SecureByteArrayOutputStream causes it to be reset(), that is, all data is discarded.

Throws:
java.io.IOException