ccs.crypt
Class AbstractBlockCipherInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
ccs.crypt.CipherInputStream
ccs.crypt.AbstractBlockCipherInputStream
- All Implemented Interfaces:
- java.io.Closeable
- Direct Known Subclasses:
- BCCHInputStream
public abstract class AbstractBlockCipherInputStream
- extends CipherInputStream
A Block-cipher input stream. This handles the housekeeping, and delegates
all actual crypto to subclasses.
Fields inherited from class java.io.FilterInputStream |
in |
Method Summary |
void |
finish()
Finishes with this decryption and releases the decryption engine,
but does not close the underlying stream. |
int |
read(byte[] b,
int off,
int len)
Reads up to len bytes of plaintext into b[], starting at off. |
protected abstract void |
readHeader(java.io.InputStream is)
Read in the header, not including any self-delimiting information. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
AbstractBlockCipherInputStream
protected AbstractBlockCipherInputStream(DammedInputStream is,
boolean isDelimit,
AbstractBlockCipher cipher)
finish
public void finish()
throws java.io.IOException
- Description copied from class:
CipherInputStream
- Finishes with this decryption and releases the decryption engine,
but does not close the underlying stream.
- Specified by:
finish
in class CipherInputStream
- Throws:
java.io.IOException
- if an error occurs.
read
public int read(byte[] b,
int off,
int len)
throws java.io.IOException
- Description copied from class:
CipherInputStream
- Reads up to len bytes of plaintext into b[], starting at off.
Blocks until some input is available.
- Specified by:
read
in class CipherInputStream
- Parameters:
b
- The buffer to read into. Cannot be null
.off
- The starting offset.len
- The maximum number of bytes to read.
- Returns:
- the total number of byes read, or -1 if the stream is exhausted.
- Throws:
java.io.IOException
- if an I/O error occurs.
readHeader
protected abstract void readHeader(java.io.InputStream is)
throws java.io.IOException
- Read in the header, not including any self-delimiting information. Typically
this is just the IV (if in CBC mode).
Unsigned.readFully
is your friend. Remember to wash this through your MAC. The AbstractBlockCipher's
buffer is available as scratch space.
- Parameters:
is
- The stream to read from.
- Throws:
java.io.IOException