|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--xjava.security.IJCE_Traceable | +--xjava.security.PaddingScheme
This class is extended by classes that provide a general-purpose padding scheme, such as the ones described in PKCS #5 or in RFC 1423 (PEM).
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 $
Field Summary | |
protected int |
blockSize
|
Fields inherited from class xjava.security.IJCE_Traceable |
tracing |
Constructor Summary | |
protected |
PaddingScheme(java.lang.String algorithm)
Constructor for a PaddingScheme. |
Method Summary | |
java.lang.Object |
clone()
Returns a clone of this cipher. |
protected java.lang.Object |
engineGetParameter(java.lang.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(java.lang.String param,
java.lang.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. |
java.lang.String |
getAlgorithm()
Returns the standard name of the padding scheme implemented. |
static java.lang.String[] |
getAlgorithms()
Gets the standard names of all PaddingSchemes implemented by any installed provider. |
static java.lang.String[] |
getAlgorithms(java.security.Provider provider)
Gets the standard names of all PaddingSchemes implemented by a provider. |
int |
getBlockSize()
Returns the block size for this padding scheme. |
static PaddingScheme |
getInstance(java.lang.String algorithm)
Generates a PaddingScheme object that implements the algorithm requested, as available in the environment. |
static PaddingScheme |
getInstance(java.lang.String algorithm,
java.lang.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. |
java.lang.Object |
getParameter(java.lang.String param)
Gets the value of the specified algorithm parameter. |
int |
pad(byte[] in,
int offset,
int length)
Pads a given array of bytes. |
java.lang.String |
paddingScheme()
Deprecated. Use getAlgorithm() instead. |
int |
padLength(int length)
Returns the increase in size that a padding operation would cause on input data of a given length. |
void |
setParameter(java.lang.String param,
java.lang.Object value)
Sets the specified algorithm parameter to the specified value. |
java.lang.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. |
Methods inherited from class xjava.security.IJCE_Traceable |
|
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
protected int blockSize
Constructor Detail |
protected PaddingScheme(java.lang.String algorithm)
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
algorithm
- the standard string name of the algorithm.NullPointerException
- if algorithm == nullMethod Detail |
public static PaddingScheme getInstance(java.lang.String algorithm) throws java.security.NoSuchAlgorithmException
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
algorithm
- the standard name or an alias for the algorithm.java.security.NoSuchAlgorithmException
- if the algorithm is not
available in the environment.public static PaddingScheme getInstance(java.lang.String algorithm, java.lang.String provider) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
algorithm
- the standard name or an alias for the algorithm.provider
- the string name of the provider.java.security.NoSuchAlgorithmException
- if the algorithm is not
available from the provider.java.security.NoSuchProviderException
- if the provider is not
available in the environment.public static java.lang.String[] getAlgorithms(java.security.Provider provider)
public static java.lang.String[] getAlgorithms()
public final java.lang.String getAlgorithm()
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
public final int getBlockSize()
public final int pad(byte[] in, int offset, int length)
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.
pad
in interface Padding
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.ArrayIndexOutOfBoundsException
- if offset < 0 || length < 0 ||
(long)offset + length + padLength(length) > in.lengthpublic final int padLength(int length)
blockSize - (length % blockSize)
.padLength
in interface Padding
length
- the length of the data to be padded.public final int unpad(byte[] in, int offset, int length)
length must be at least blockSize
.
unpad
in interface Padding
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.ArrayIndexOutOfBoundsException
- if offset < 0 || length < 0 ||
(long)offset + length > in.lengthIllegalBlockSizeException
- if length < blockSizepublic final java.lang.String paddingScheme()
See International JCE Standard Algorithm Names for a list of PaddingScheme algorithm names.
paddingScheme
in interface Padding
public void setParameter(java.lang.String param, java.lang.Object value) throws NoSuchParameterException, java.security.InvalidParameterException, InvalidParameterTypeException
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.
setParameter
in interface Parameterized
param
- the string identifier of the parameter.value
- the parameter value.NullPointerException
- if param == nullNoSuchParameterException
- if there is no parameter with name
param for this padding scheme implementation.java.security.InvalidParameterException
- if the parameter exists but cannot
be set.InvalidParameterTypeException
- if value is the wrong type
for this parameter.public java.lang.Object getParameter(java.lang.String param) throws NoSuchParameterException, java.security.InvalidParameterException
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.
getParameter
in interface Parameterized
param
- the string name of the parameter.NullPointerException
- if param == nullNoSuchParameterException
- if there is no parameter with name
param for this padding scheme implementation.java.security.InvalidParameterException
- if the parameter exists but cannot
be read.public java.lang.Object clone() throws java.lang.CloneNotSupportedException
clone
in class java.lang.Object
java.lang.CloneNotSupportedException
- if the cipher is not cloneable.public java.lang.String toString()
toString
in class java.lang.Object
protected void engineSetBlockSize(int size)
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.
IllegalBlockSizeException
- if size < 1 || !engineIsValidBlockSize(size)protected abstract int enginePad(byte[] in, int offset, int length)
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.
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.protected abstract int engineUnpad(byte[] in, int offset, int length)
length is guaranteed to be a non-negative multiple of
blockSize
.
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.protected boolean engineIsValidBlockSize(int size)
The default implementation always returns true.
protected void engineSetParameter(java.lang.String param, java.lang.Object value) throws NoSuchParameterException, java.security.InvalidParameterException, InvalidParameterTypeException
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.
param
- the string name of the parameter.value
- the parameter value.NoSuchParameterException
- if there is no parameter with name
param for this padding scheme implementation.java.security.InvalidParameterException
- if the parameter exists but cannot
be set.InvalidParameterTypeException
- if value is the wrong type
for this parameter.protected java.lang.Object engineGetParameter(java.lang.String param) throws NoSuchParameterException, java.security.InvalidParameterException
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.
param
- the string name of the parameter.NoSuchParameterException
- if there is no parameter with name
param for this padding scheme implementation.java.security.InvalidParameterException
- if the parameter exists but cannot
be read.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |