gnu.javax.crypto.jce.cipher

Class ARCFourSpi


public class ARCFourSpi
extends CipherSpi

The Service Provider Interface (SPI) for the ARCFOUR stream cipher.

Constructor Summary

ARCFourSpi()
Create a new CipherSpi.

Method Summary

protected byte[]
engineDoFinal(byte[] in, int offset, int length)
Finishes a multi-part transformation or transforms a portion of a byte array, and returns the transformed bytes.
protected int
engineDoFinal(byte[] in, int inOffset, int length, byte[] out, int outOffset)
Finishes a multi-part transformation or transforms a portion of a byte array, and stores the transformed bytes in the supplied array.
protected int
engineGetBlockSize()
Returns the block size of the underlying cipher.
protected byte[]
engineGetIV()
Returns the initializaiton vector this cipher was initialized with, if any.
protected int
engineGetOutputSize(int in)
Returns the size, in bytes, an output buffer must be for a call to CipherSpi.engineUpdate(byte[],int,int,byte[],int) or CipherSpi.engineDoFinal(byte[],int,int,byte[],int) to succeed.

The actual output length may be smaller than the value returned by this method, as it considers the padding length as well.

protected AlgorithmParameters
engineGetParameters()
Returns the parameters that this cipher is using.
protected void
engineInit(int mode, Key key, AlgorithmParameters p, SecureRandom r)
Initializes this cipher with an operation mode, key, parameters, and source of randomness.
protected void
engineInit(int mode, Key key, SecureRandom r)
Initializes this cipher with an operation mode, key, and source of randomness.
protected void
engineInit(int mode, Key key, AlgorithmParameterSpec p, SecureRandom r)
Initializes this cipher with an operation mode, key, parameters, and source of randomness.
protected void
engineSetMode(String s)
Set the mode in which this cipher is to run.
protected void
engineSetPadding(String s)
Set the method with which the input is to be padded.
protected byte[]
engineUpdate(byte[] in, int offset, int length)
Continue with a multi-part transformation, returning a new array of the transformed bytes.
protected int
engineUpdate(byte[] in, int inOffset, int length, byte[] out, int outOffset)
Continue with a multi-part transformation, storing the transformed bytes into the specified array.

Methods inherited from class javax.crypto.CipherSpi

engineDoFinal, engineDoFinal, engineDoFinal, engineGetBlockSize, engineGetIV, engineGetKeySize, engineGetOutputSize, engineGetParameters, engineInit, engineInit, engineInit, engineSetMode, engineSetPadding, engineUnwrap, engineUpdate, engineUpdate, engineUpdate, engineWrap

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

ARCFourSpi

public ARCFourSpi()
Create a new CipherSpi.

Method Details

engineDoFinal

protected byte[] engineDoFinal(byte[] in,
                               int offset,
                               int length)
            throws IllegalBlockSizeException,
                   BadPaddingException
Finishes a multi-part transformation or transforms a portion of a byte array, and returns the transformed bytes.
Overrides:
engineDoFinal in interface CipherSpi
Parameters:
Returns:
The transformed bytes in a new array.
Throws:
IllegalBlockSizeException - If this instance has no padding and the input size is not a multiple of the block size.
BadPaddingException - If this instance is being used for decryption and the padding is not appropriate for this instance's padding scheme.

engineDoFinal

protected int engineDoFinal(byte[] in,
                            int inOffset,
                            int length,
                            byte[] out,
                            int outOffset)
            throws ShortBufferException,
                   IllegalBlockSizeException,
                   BadPaddingException
Finishes a multi-part transformation or transforms a portion of a byte array, and stores the transformed bytes in the supplied array.
Overrides:
engineDoFinal in interface CipherSpi
Parameters:
Returns:
The number of transformed bytes stored in the output array.
Throws:
IllegalBlockSizeException - If this instance has no padding and the input size is not a multiple of the block size.
BadPaddingException - If this instance is being used for decryption and the padding is not appropriate for this instance's padding scheme.
ShortBufferException - If there is not enough space in the output array for the transformed bytes.

engineGetBlockSize

protected int engineGetBlockSize()
Returns the block size of the underlying cipher.
Overrides:
engineGetBlockSize in interface CipherSpi
Returns:
The block size.

engineGetIV

protected byte[] engineGetIV()
Returns the initializaiton vector this cipher was initialized with, if any.
Overrides:
engineGetIV in interface CipherSpi
Returns:
The IV, or null if this cipher uses no IV or if this instance has not been initialized yet.

engineGetOutputSize

protected int engineGetOutputSize(int in)
Returns the size, in bytes, an output buffer must be for a call to CipherSpi.engineUpdate(byte[],int,int,byte[],int) or CipherSpi.engineDoFinal(byte[],int,int,byte[],int) to succeed.

The actual output length may be smaller than the value returned by this method, as it considers the padding length as well. The length considered is the argument plus the length of any buffered, unprocessed bytes.

Overrides:
engineGetOutputSize in interface CipherSpi
Parameters:
Returns:
The size an output buffer must be.

engineGetParameters

protected AlgorithmParameters engineGetParameters()
Returns the parameters that this cipher is using. This may be the parameters used to initialize this cipher, or it may be parameters that have been initialized with random values.
Overrides:
engineGetParameters in interface CipherSpi
Returns:
This cipher's parameters, or null if this cipher does not use parameters.

engineInit

protected void engineInit(int mode,
                          Key key,
                          AlgorithmParameters p,
                          SecureRandom r)
            throws InvalidKeyException,
                   InvalidAlgorithmParameterException
Initializes this cipher with an operation mode, key, parameters, and source of randomness. If this cipher requires any other initializing data, for example an initialization vector, then it should generate it from the provided source of randomness.
Overrides:
engineInit in interface CipherSpi
Parameters:
key - The key to initialize this cipher with.
Throws:
InvalidAlgorithmParameterException - If the given parameters are not appropriate for this implementation.
InvalidKeyException - If the given key is not acceptable for this implementation.

engineInit

protected void engineInit(int mode,
                          Key key,
                          SecureRandom r)
            throws InvalidKeyException
Initializes this cipher with an operation mode, key, and source of randomness. If this cipher requires any other initializing data, for example an initialization vector, then it should generate it from the provided source of randomness.
Overrides:
engineInit in interface CipherSpi
Parameters:
key - The key to initialize this cipher with.
Throws:
InvalidKeyException - If the given key is not acceptable for this implementation.

engineInit

protected void engineInit(int mode,
                          Key key,
                          AlgorithmParameterSpec p,
                          SecureRandom r)
            throws InvalidKeyException,
                   InvalidAlgorithmParameterException
Initializes this cipher with an operation mode, key, parameters, and source of randomness. If this cipher requires any other initializing data, for example an initialization vector, then it should generate it from the provided source of randomness.
Overrides:
engineInit in interface CipherSpi
Parameters:
key - The key to initialize this cipher with.
Throws:
InvalidAlgorithmParameterException - If the given parameters are not appropriate for this implementation.
InvalidKeyException - If the given key is not acceptable for this implementation.

engineSetMode

protected void engineSetMode(String s)
            throws NoSuchAlgorithmException
Set the mode in which this cipher is to run.
Overrides:
engineSetMode in interface CipherSpi
Parameters:
Throws:
NoSuchAlgorithmException - If the mode is not supported by this cipher's provider.

engineSetPadding

protected void engineSetPadding(String s)
            throws NoSuchPaddingException
Set the method with which the input is to be padded.
Overrides:
engineSetPadding in interface CipherSpi
Parameters:
Throws:
NoSuchPaddingException - If the padding is not supported by this cipher's provider.

engineUpdate

protected byte[] engineUpdate(byte[] in,
                              int offset,
                              int length)
Continue with a multi-part transformation, returning a new array of the transformed bytes.
Overrides:
engineUpdate in interface CipherSpi
Parameters:
Returns:
The transformed bytes.

engineUpdate

protected int engineUpdate(byte[] in,
                           int inOffset,
                           int length,
                           byte[] out,
                           int outOffset)
            throws ShortBufferException
Continue with a multi-part transformation, storing the transformed bytes into the specified array.
Overrides:
engineUpdate in interface CipherSpi
Parameters:
Returns:
The transformed bytes.
Throws:
ShortBufferException - If there is not enough space in the output array to store the transformed bytes.

ARCFourSpi.java -- Copyright (C) 2002, 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.