Top Description Fields Constructors Methods
org.bouncycastle.crypto.internal.io

public Class CipherOutputStreamImpl

extends CipherOutputStream
Class Inheritance
Imports
java.io.IOException, .OutputStream, org.bouncycastle.crypto.CryptoServicesRegistrar, .InvalidCipherTextException, .StreamException, org.bouncycastle.crypto.internal.BufferedBlockCipher, .StreamCipher, org.bouncycastle.crypto.internal.modes.AEADBlockCipher

A CipherOutputStream is composed of an OutputStream and a cipher so that write() methods process the written data with the cipher, and the output of the cipher is in turn written to the underlying OutputStream. The cipher must be fully initialized before being used by a CipherInputStream.

For example, if the cipher is initialized for encryption, the CipherOutputStream will encrypt the data before writing the encrypted data to the underlying stream.

Note

this class does not close the underlying stream on a close.

Field Summary

Modifier and TypeField and Description
private AEADBlockCipher
private final String
private byte[]
private BufferedBlockCipher
private final boolean
private final byte[]
private OutputStream
private StreamCipher

Constructor Summary

AccessConstructor and Description
public
CipherOutputStreamImpl(OutputStream out, BufferedBlockCipher cipher)

Constructs a CipherOutputStream from an OutputStream and a BufferedBlockCipher;.

public
CipherOutputStreamImpl(OutputStream out, StreamCipher cipher)

Constructs a CipherOutputStream from an OutputStream and a BufferedBlockCipher;.

public
CipherOutputStreamImpl(OutputStream out, AEADBlockCipher cipher)

Constructs a CipherOutputStream from an OutputStream and a AEADBlockCipher;.

Method Summary

Modifier and TypeMethod and Description
public void
close()

Implements abstract org.bouncycastle.crypto.CipherOutputStream.close.

Implements java.io.Closeable.close.

Closes this output stream and releases any system resources associated with this stream.
private void
ensureCapacity(int
the size of the pending update.
updateSize
,
boolean
true iff this the cipher is to be finalised.
finalOutput
)

Ensure the ciphertext buffer has space sufficient to accept an upcoming output.

public void
flush()

Overrides java.io.OutputStream.flush.

Implements java.io.Flushable.flush.

Flushes this output stream by forcing any buffered output bytes that have already been processed by the encapsulated cipher object to be written out.
public void
write(int
the byte.
b
)

Implements abstract java.io.OutputStream.write.

Writes the specified byte to this output stream.
public void
write(byte[]
the data.
b
)

Overrides java.io.OutputStream.write.

Writes b.length bytes from the specified byte array to this output stream.
public void
write(byte[]
the data.
b
,
int
the start offset in the data.
off
,
int
the number of bytes to write.
len
)

Overrides java.io.OutputStream.write.

Writes len bytes from the specified byte array starting at offset off to this output stream.

Field Detail

aeadBlockCipherback to summary
private AEADBlockCipher aeadBlockCipher
algorithmNameback to summary
private final String algorithmName
bufback to summary
private byte[] buf
bufferedBlockCipherback to summary
private BufferedBlockCipher bufferedBlockCipher
isApprovedModeback to summary
private final boolean isApprovedMode
oneByteback to summary
private final byte[] oneByte
outback to summary
private OutputStream out
streamCipherback to summary
private StreamCipher streamCipher

Constructor Detail

CipherOutputStreamImplback to summary
public CipherOutputStreamImpl(OutputStream out, BufferedBlockCipher cipher)

Constructs a CipherOutputStream from an OutputStream and a BufferedBlockCipher;.

CipherOutputStreamImplback to summary
public CipherOutputStreamImpl(OutputStream out, StreamCipher cipher)

Constructs a CipherOutputStream from an OutputStream and a BufferedBlockCipher;.

CipherOutputStreamImplback to summary
public CipherOutputStreamImpl(OutputStream out, AEADBlockCipher cipher)

Constructs a CipherOutputStream from an OutputStream and a AEADBlockCipher;.

Method Detail

closeback to summary
public void close() throws IOException

Implements abstract org.bouncycastle.crypto.CipherOutputStream.close.

Implements java.io.Closeable.close.

Closes this output stream and releases any system resources associated with this stream.

This method invokes the doFinal method of the encapsulated cipher object, which causes any bytes buffered by the encapsulated cipher to be processed. The result is written out by calling the flush method of this output stream.

This method resets the encapsulated cipher object to its initial state and does not call close method of the underlying output stream.

Exceptions
IOException:
if an I/O error occurs.
InvalidCipherTextException:
if the data written to this stream was invalid cipher text (e.g. the cipher is an AEAD cipher and the ciphertext tag check fails).
ensureCapacityback to summary
private void ensureCapacity(int updateSize, boolean finalOutput)

Ensure the ciphertext buffer has space sufficient to accept an upcoming output.

Parameters
updateSize:int

the size of the pending update.

finalOutput:boolean

true iff this the cipher is to be finalised.

flushback to summary
public void flush() throws IOException

Overrides java.io.OutputStream.flush.

Implements java.io.Flushable.flush.

Flushes this output stream by forcing any buffered output bytes that have already been processed by the encapsulated cipher object to be written out.

Any bytes buffered by the encapsulated cipher and waiting to be processed by it will not be written out. For example, if the encapsulated cipher is a block cipher, and the total number of bytes written using one of the write methods is less than the cipher's block size, no bytes will be written out.

Exceptions
IOException:
if an I/O error occurs.
writeback to summary
public void write(int b) throws IOException

Implements abstract java.io.OutputStream.write.

Writes the specified byte to this output stream.

Parameters
b:int

the byte.

Exceptions
IOException:
if an I/O error occurs.
writeback to summary
public void write(byte[] b) throws IOException

Overrides java.io.OutputStream.write.

Writes b.length bytes from the specified byte array to this output stream.

The write method of CipherOutputStream calls the write method of three arguments with the three arguments b, 0, and b.length.

Parameters
b:byte[]

the data.

Exceptions
IOException:
if an I/O error occurs.
See Also
write(byte[], int, int)
writeback to summary
public void write(byte[] b, int off, int len) throws IOException

Overrides java.io.OutputStream.write.

Writes len bytes from the specified byte array starting at offset off to this output stream.

Parameters
b:byte[]

the data.

off:int

the start offset in the data.

len:int

the number of bytes to write.

Exceptions
IOException:
if an I/O error occurs.