gnu.javax.crypto.pad
Class BasePad
- IPad
An abstract class to facilitate implementing padding algorithms.
protected int | blockSize - The block size, in bytes, for this instance.
|
protected String | name - The canonical name prefix of the padding algorithm.
|
BasePad(String name) - Trivial constructor for use by concrete subclasses.
|
void | init(int bs) - Initialises the padding scheme with a designated block size.
|
void | init(Map attributes) - Initialises the algorithm with designated attributes.
|
String | name()
|
abstract byte[] | pad(byte[] in, int off, int len) - Returns the byte sequence that should be appended to the designated input.
|
void | reset() - Resets the scheme instance for re-initialisation and use with other
characteristics.
|
boolean | selfTest() - A default implementation of a correctness test that exercises the padder
implementation, using block sizes varying from 2 to 256 bytes.
|
abstract void | setup() - If any additional checks or resource setup must be done by the subclass,
then this is the hook for it.
|
protected boolean | test1BlockSize(int size, byte[] buffer) - The basic symmetric test for a padder given a specific block size.
|
abstract int | unpad(byte[] in, int off, int len) - Returns the number of bytes to discard from a designated input buffer.
|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
blockSize
protected int blockSize
The block size, in bytes, for this instance.
name
protected String name
The canonical name prefix of the padding algorithm.
BasePad
protected BasePad(String name)
Trivial constructor for use by concrete subclasses.
init
public void init(int bs)
throws IllegalStateException
Initialises the padding scheme with a designated block size.
- init in interface IPad
bs
- the designated block size.
init
public void init(Map attributes)
throws IllegalStateException
Initialises the algorithm with designated attributes. Names, valid and/or
recognisable by all concrete implementations are described in
IPad
class documentation. Other algorithm-specific attributes MUST be documented
in the implementation class of that padding algorithm.
For compatibility reasons, this method is not declared
abstract.
Furthermore, and unless overridden, the default implementation will throw
an
UnsupportedOperationException
. Concrete padding algorithms MUST
override this method if they wish to offer an initialisation method that
allows for other than the padding block size parameter to be specified.
- init in interface IPad
attributes
- a set of name-value pairs that describes the desired
future behaviour of this instance.
pad
public abstract byte[] pad(byte[] in,
int off,
int len)
Returns the byte sequence that should be appended to the designated input.
- pad in interface IPad
in
- the input buffer containing the bytes to pad.
- the possibly 0-byte long sequence to be appended to the designated
input.
reset
public void reset()
Resets the scheme instance for re-initialisation and use with other
characteristics. This method always succeeds.
- reset in interface IPad
selfTest
public boolean selfTest()
A default implementation of a correctness test that exercises the padder
implementation, using block sizes varying from 2 to 256 bytes.
- selfTest in interface IPad
true
if the concrete implementation correctly unpads
what it pads for all tested block sizes. Returns false
if the test fails for any block size.
setup
public abstract void setup()
If any additional checks or resource setup must be done by the subclass,
then this is the hook for it. This method will be called before the
init(int)
method returns.
test1BlockSize
protected boolean test1BlockSize(int size,
byte[] buffer)
The basic symmetric test for a padder given a specific block size.
The code ensures that the implementation is capable of unpadding what it
pads.
size
- the block size to test.buffer
- a work buffer. It is exposed as an argument for this method
to reduce un-necessary object allocations.
true
if the test passes; false
otherwise.
unpad
public abstract int unpad(byte[] in,
int off,
int len)
throws WrongPaddingException
Returns the number of bytes to discard from a designated input buffer.
- unpad in interface IPad
in
- the input buffer containing the bytes to unpad.
- the number of bytes to discard, to the left of index position
offset + length
in in. In other words, if
the return value of a successful invocation of this method is
result
, then the unpadded byte sequence will be
offset + length - result
bytes in in,
starting from index position offset
.
BasePad.java --
Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
This file is a part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.