gnu.crypto.assembly
public abstract class Transformer extends Object
A Transformer
is an abstract representation of a two-way
transformation that can be chained together with other instances of
this type. Examples of such transformations in this library are:
Cascade cipher, IPad algorithm, and a
ZLib-based deflater/inflater algorithm. A special implementation of a
Transformer
to close a chain is also provided.
A Transformer
is characterised by the followings:
Transformer
can be used as
either in pre-processing or a post-processing modes.LoopbackTransformer
-- is used to
close the chain.Transformer
--one we're interested in--
has internal buffers. The distinction between a casual push (update)
operation and the last one allows to correctly flush any intermediate
bytes that may exist in those buffers.To allow wiring Transformer
instances together, a
minimal-output-size in bytes is necessary. The trivial case of a
value of 1
for such attribute practically means that no output
buffering, from the previous element, is needed --which is independant of
buffering the input if the Transformer
implementation itself is
block-based.
Version: $Revision: 1.3 $
See Also: CascadeTransformer PaddingTransformer DeflateTransformer
Field Summary | |
---|---|
static String | DIRECTION |
protected ByteArrayOutputStream | inBuffer |
protected Operation | mode |
protected ByteArrayOutputStream | outBuffer |
protected Transformer | tail |
protected Direction | wired |
Constructor Summary | |
---|---|
protected | Transformer() Trivial protected constructor. |
Method Summary | |
---|---|
int | currentBlockSize()
Returns the block-size of this Transformer . |
abstract int | delegateBlockSize() |
static Transformer | getCascadeTransformer(Cascade cascade) |
static Transformer | getDeflateTransformer() |
static Transformer | getPaddingTransformer(IPad padding) |
void | init(Map attributes)
Initialises the Transformer for operation with specific
characteristics.
|
abstract void | initDelegate(Map attributes) |
boolean | isPostProcessing()
Returns true if this Transformer was wired in
post-processing mode; false otherwise.
|
boolean | isPreProcessing()
Returns true if this Transformer was wired in
pre-processing mode; false otherwise.
|
byte[] | lastUpdate()
Convenience method that calls the same method with three arguments. |
byte[] | lastUpdate(byte b)
Convenience method that calls the method with same name and three
arguments, using a byte array of length 1 whose contents are
the designated byte.
|
byte[] | lastUpdate(byte[] in)
Convenience method that calls the same method with three arguments. |
byte[] | lastUpdate(byte[] in, int offset, int length)
Processes a designated number of bytes from a given byte array and
signals, at the same time, that this is the last push operation on
this Transformer .
|
abstract byte[] | lastUpdateDelegate() |
void | reset()
Resets the Transformer for re-initialisation and use with
other characteristics. |
abstract void | resetDelegate() |
void | setMode(Operation mode)
Sets the operational mode of this Transformer .
|
byte[] | update(byte b)
Convenience method that calls the method with same name and three
arguments, using a byte array of length 1 whose contents are
the designated byte.
|
byte[] | update(byte[] in)
Convenience method that calls the same method with three arguments. |
byte[] | update(byte[] in, int offset, int length)
Processes a designated number of bytes from a given byte array.
|
abstract byte[] | updateDelegate(byte[] in, int off, int len) |
Transformer
. A value of
1
indicates that this instance is block-agnostic.
Returns: the current minimal required block size.
Transformer
for operation with specific
characteristics.
Parameters: attributes a set of name-value pairs that describes the desired future behaviour of this instance.
Throws: IllegalStateException if the instance is already initialised.
true
if this Transformer
was wired in
post-processing mode; false
otherwise.
Returns: true
if this Transformer
has been wired
in post-processing mode; false
otherwise.
Throws: IllegalStateException if this instance has not yet been assigned an operational type.
true
if this Transformer
was wired in
pre-processing mode; false
otherwise.
Returns: true
if this Transformer
has been wired
in pre-processing mode; false
otherwise.
Throws: IllegalStateException if this instance has not yet been assigned an operational type.
Returns: the result of transformation.
Throws: IllegalStateException if the instance is not initialised. TransformerException if a transformation-related exception occurs during the operation.
See Also: (byte[], int, int)
1
whose contents are
the designated byte.
Parameters: b the byte to process.
Returns: the result of transformation.
Throws: IllegalStateException if the instance is not initialised. TransformerException if a transformation-related exception occurs during the operation.
See Also: (byte[], int, int)
in
, starting from index position 0
are
considered.
Parameters: in the input data bytes.
Returns: the result of transformation.
Throws: IllegalStateException if the instance is not initialised. TransformerException if a transformation-related exception occurs during the operation.
See Also: (byte[], int, int)
Transformer
.
Parameters: in the input data bytes. offset index of in
from which to start considering
data. length the count of bytes to process.
Returns: the result of transformation.
Throws: IllegalStateException if the instance is not initialised. TransformerException if a transformation-related exception occurs during the operation.
Transformer
for re-initialisation and use with
other characteristics. This method always succeeds.Transformer
.
Parameters: mode the processing mode this Transformer
is required
to operate in.
Throws: IllegalStateException if this instance has already been assigned an operational mode.
1
whose contents are
the designated byte.
Parameters: b the byte to process.
Returns: the result of transformation.
Throws: IllegalStateException if the instance is not initialised. TransformerException if a transformation-related exception occurs during the operation.
See Also: (byte[], int, int)
in
, starting from index position 0
are
considered.
Parameters: in the input data bytes.
Returns: the result of transformation.
Throws: IllegalStateException if the instance is not initialised. TransformerException if a transformation-related exception occurs during the operation.
See Also: (byte[], int, int)
Parameters: in the input data bytes. offset index of in
from which to start considering
data. length the count of bytes to process.
Returns: the result of transformation.
Throws: IllegalStateException if the instance is not initialised. TransformerException if a transformation-related exception occurs during the operation.