xjava.security
public abstract class PaddingScheme extends IJCE_Traceable implements Parameterized, Padding
For simplicity, an assumption is made that padding schemes always
extend the plaintext to the next block boundary. That is, the input
to the padding algorithm always has a length between 0 and
blockSize
-1, and the output always has length
blockSize
.
This class is not supported in JavaSoft's version of JCE.
Copyright © 1997
Systemics Ltd on behalf of the
Cryptix Development Team.
All rights reserved.
$Revision: 1.8 $
Since: IJCE 1.0.1
Field Summary | |
---|---|
protected int | blockSize |
Constructor Summary | |
---|---|
protected | PaddingScheme(String algorithm)
Constructor for a PaddingScheme. |
Method Summary | |
---|---|
Object | clone()
Returns a clone of this cipher.
|
protected Object | engineGetParameter(String param)
SPI: Gets the value of the specified algorithm parameter.
|
protected boolean | engineIsValidBlockSize(int size)
SPI: Returns true if size is a valid block size (in
bytes) for this scheme.
|
protected abstract int | enginePad(byte[] in, int offset, int length)
SPI: Pads a single incomplete block.
|
protected void | engineSetBlockSize(int size)
Sets the blockSize variable for this instance.
|
protected void | engineSetParameter(String param, Object value)
SPI: Sets the specified algorithm parameter to the specified
value.
|
protected abstract int | engineUnpad(byte[] in, int offset, int length)
SPI: Given the specified subarray of bytes that includes
padding bytes, returns the index indicating where padding starts.
|
String | getAlgorithm()
Returns the standard name of the padding scheme implemented.
|
static String[] | getAlgorithms(Provider provider)
Gets the standard names of all PaddingSchemes implemented by a
provider. |
static String[] | getAlgorithms()
Gets the standard names of all PaddingSchemes implemented by any
installed provider. |
int | getBlockSize() Returns the block size for this padding scheme. |
static PaddingScheme | getInstance(String algorithm)
Generates a PaddingScheme object that implements the algorithm
requested, as available in the environment.
|
static PaddingScheme | getInstance(String algorithm, String provider)
Generates a PaddingScheme object implementing the specified
algorithm, as supplied from the specified provider, if such an
algorithm is available from the provider.
|
Object | getParameter(String param)
Gets the value of the specified algorithm parameter.
|
int | pad(byte[] in, int offset, int length)
Pads a given array of bytes. |
String | paddingScheme()
Returns the standard name of the padding scheme implemented.
|
int | padLength(int length)
Returns the increase in size that a padding operation would cause on
input data of a given length. |
void | setParameter(String param, Object value)
Sets the specified algorithm parameter to the specified value.
|
String | toString() |
int | unpad(byte[] in, int offset, int length)
Given the specified subarray of bytes that includes padding bytes,
returns the index indicating where padding starts.
|
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
Parameters: algorithm the standard string name of the algorithm.
Throws: NullPointerException if algorithm == null
Throws: CloneNotSupportedException if the cipher is not cloneable.
This method supplies a general-purpose mechanism through which it is possible to get the various parameters of this object. A uniform algorithm-specific naming scheme for each parameter is desirable but left unspecified at this time.
The default implementation always throws a NoSuchParameterException.
This method is not supported in JavaSoft's version of JCE.
Parameters: param the string name of the parameter.
Returns: the object that represents the parameter value.
Throws: NoSuchParameterException if there is no parameter with name param for this padding scheme implementation. InvalidParameterException if the parameter exists but cannot be read.
The default implementation always returns true.
The padding is written to the same buffer that is used for input
(in). When this method returns, the padded block should be stored at
in[offset .. offset+blockSize-1]
.
in will be long enough to accomodate the padding. length is
guaranteed to be in the range 0 .. blockSize
-1.
Parameters: in the buffer containing the incomplete block. offset the offset into the in buffer of the block. length the number of bytes from the in buffer, starting at offset, that need to be unpadded.
Returns: the number of padding bytes written.
blockSize
variable for this instance.
Subclasses that override this method (to do initialization that
depends on blockSize
being set) should call
super.engineSetBlockSize(size)
first.
Throws: IllegalBlockSizeException if size < 1 || !engineIsValidBlockSize(size)
This method supplies a general-purpose mechanism through which it is possible to set the various parameters of this object. A uniform algorithm-specific naming scheme for each parameter is desirable but left unspecified at this time.
The default implementation always throws a NoSuchParameterException.
This method is not supported in JavaSoft's version of JCE.
Parameters: param the string name of the parameter. value the parameter value.
Throws: NoSuchParameterException if there is no parameter with name param for this padding scheme implementation. InvalidParameterException if the parameter exists but cannot be set. InvalidParameterTypeException if value is the wrong type for this parameter.
length is guaranteed to be a non-negative multiple of
blockSize
.
Parameters: in the buffer containing the bytes. offset the offset into the in buffer of the first byte to be unpadded. length the total length in bytes of the blocks to be unpadded.
Returns: the index into the in buffer indicating where the padding starts.
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
Returns: the standard name of the padding scheme, such as "PKCS#5".
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
Parameters: algorithm the standard name or an alias for the algorithm.
Returns: the new PaddingScheme object.
Throws: NoSuchAlgorithmException if the algorithm is not available in the environment.
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
Parameters: algorithm the standard name or an alias for the algorithm. provider the string name of the provider.
Returns: the new KeyGenerator object.
Throws: NoSuchAlgorithmException if the algorithm is not available from the provider. NoSuchProviderException if the provider is not available in the environment.
This method supplies a general-purpose mechanism through which it is possible to get the various parameters of this object. A uniform algorithm-specific naming scheme for each parameter is desirable but left unspecified at this time.
This method is not supported in JavaSoft's version of JCE.
Parameters: param the string name of the parameter.
Returns: the object that represents the parameter value.
Throws: NullPointerException if param == null NoSuchParameterException if there is no parameter with name param for this padding scheme implementation. InvalidParameterException if the parameter exists but cannot be read.
in[offset .. offset+length+padLength(length)-1]
.
The in array should be long enough to accomodate the padding.
The return value is the number of bytes written, not the total length of the padded block.
Parameters: in the buffer containing the input. offset the offset of the bytes to be padded. length the number of bytes from the in buffer, starting at offset, that need to be padded.
Returns: the number of padding bytes written to out.
Throws: ArrayIndexOutOfBoundsException if offset < 0 || length < 0 || (long)offset + length + padLength(length) > in.length
Deprecated: Use getAlgorithm() instead.
Returns the standard name of the padding scheme implemented.See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
Returns: the standard name of the padding scheme.
blockSize - (length % blockSize)
.
Parameters: length the length of the data to be padded.
Returns: the increase in size that a padding operation would cause on input of the specified length.
This method supplies a general-purpose mechanism through which it is possible to set the various parameters of this object. A uniform algorithm-specific naming scheme for each parameter is desirable but left unspecified at this time.
This method is not supported in JavaSoft's version of JCE.
Parameters: param the string identifier of the parameter. value the parameter value.
Throws: NullPointerException if param == null NoSuchParameterException if there is no parameter with name param for this padding scheme implementation. InvalidParameterException if the parameter exists but cannot be set. InvalidParameterTypeException if value is the wrong type for this parameter.
length must be at least blockSize
.
Parameters: in the buffer containing the bytes. offset the offset into the in buffer of the first byte in the block. length the total length in bytes of the blocks to be unpadded.
Returns: the index into the in buffer indicating where the padding starts.
Throws: ArrayIndexOutOfBoundsException if offset < 0 || length < 0 || (long)offset + length > in.length IllegalBlockSizeException if length < blockSize