IT. Expert System.

Android Reference

CipherSpi


javax.crypto

Class CipherSpi

  • Direct Known Subclasses:
    MyCipher, NullCipherSpi, OpenSSLCipherRSA


    public abstract class CipherSpi
    extends Object
    This class defines the Service Provider Interface (SPI) for cryptographic ciphers.

    Implementers of cryptographic ciphers must implement all the abstract methods for every cipher they implement. CipherSpi instances are created along with ciphers when the Cipher.getInstance(java.lang.String) method is called. A Cipher is referenced by a transformation, which is a string that describes the operation (or set of operations), always consisting of the cipher's name and optionally followed by a mode and a padding, in the form:

    • "algorithm"
    • or
    • "algorithm/mode/padding"
    The following behavior should be implemented for obtaining Cipher instances.

    When one of the Cipher.getInstance(java.lang.String) factory methods is called with a transformation that is only an algorithm, check if the provider defines a CipherSpi for "algorithm", if so: return it, otherwise throw a NoSuchAlgorithmException.

    The following rules apply when a transformation is of the form "algorithm/mode/padding":

      1. The Provider has a CipherSpi subclass registered for "algorithm/mode/padding": return it, otherwise go to step 2.
      2. The Provider has a CipherSpi subclass registered for "algorithm/mode": instantiate it, call engineSetPadding(String) for the padding name and return it, otherwise go to step 3.
      3. The Provider has a CipherSpi subclass registered for "algorithm//padding": instantiate it, call engineSetMode(String) for the mode name and return it, otherwise go to step 4.
    See Also:
    Cipher
    • Constructor Summary

      Constructors
      Constructor and Description
      CipherSpi()
      Creates a new CipherSpi instance.
    • Method Summary

      Methods
      Modifier and Type Method and Description
      protected abstract byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen)
      Finishes a multi-part transformation (encryption or decryption).
      protected abstract int engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
      Finishes a multi-part transformation (encryption or decryption).
      protected int engineDoFinal(ByteBuffer input, ByteBuffer output)
      Finishes a multi-part transformation (encryption or decryption).
      protected abstract int engineGetBlockSize()
      Returns the block size of this cipher (in bytes)
      protected abstract byte[] engineGetIV()
      Returns the Initialization Vector (IV) that was used to initialize this cipher or null if none was used.
      protected int engineGetKeySize(Key key)
      Returns the size of a specified key object in bits.
      protected abstract int engineGetOutputSize(int inputLen)
      Returns the size for a buffer (in bytes), that the next call to update of doFinal would return, taking into account any buffered data from previous update calls and padding.
      protected abstract AlgorithmParameters engineGetParameters()
      Returns the parameters that where used to create this cipher instance.
      protected abstract void engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
      Initializes this cipher instance with the specified key, algorithm parameters and a source of randomness.
      protected abstract void engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
      Initializes this cipher instance with the specified key, algorithm parameters and a source of randomness.
      protected abstract void engineInit(int opmode, Key key, SecureRandom random)
      Initializes this cipher instance with the specified key and a source of randomness.
      protected abstract void engineSetMode(String mode)
      Sets the mode for this cipher.
      protected abstract void engineSetPadding(String padding)
      Sets the padding method for this cipher.
      protected Key engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
      Unwraps a key using this cipher instance.
      protected abstract byte[] engineUpdate(byte[] input, int inputOffset, int inputLen)
      Continues a multi-part transformation (encryption or decryption).
      protected abstract int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
      Continues a multi-part transformation (encryption or decryption).
      protected int engineUpdate(ByteBuffer input, ByteBuffer output)
      Continues a multi-part transformation (encryption or decryption).
      protected byte[] engineWrap(Key key)
      Wraps a key using this cipher instance.
    • Constructor Detail

      • CipherSpi

        public CipherSpi()
        Creates a new CipherSpi instance.
    • Method Detail

      • engineSetMode

        protected abstract void engineSetMode(String mode)
                                       throws NoSuchAlgorithmException
        Sets the mode for this cipher.
        Parameters:
        mode - the name of the cipher mode.
        Throws:
        NoSuchAlgorithmException - if the specified cipher mode is not supported by this provider.
      • engineSetPadding

        protected abstract void engineSetPadding(String padding)
                                          throws NoSuchPaddingException
        Sets the padding method for this cipher.
        Parameters:
        padding - the name of the padding method.
        Throws:
        NoSuchPaddingException - if the specified padding method is not supported by this cipher.
      • engineGetBlockSize

        protected abstract int engineGetBlockSize()
        Returns the block size of this cipher (in bytes)
        Returns:
        the block size of this cipher, or zero if this cipher is not a block cipher.
      • engineGetOutputSize

        protected abstract int engineGetOutputSize(int inputLen)
        Returns the size for a buffer (in bytes), that the next call to update of doFinal would return, taking into account any buffered data from previous update calls and padding.

        The actual output length of the next call to update or doFinal may be smaller than the length returned by this method.

        Parameters:
        inputLen - the length of the input (in bytes).
        Returns:
        the size for a buffer (in bytes).
      • engineGetIV

        protected abstract byte[] engineGetIV()
        Returns the Initialization Vector (IV) that was used to initialize this cipher or null if none was used.
        Returns:
        the Initialization Vector (IV), or null if none was used.
      • engineGetParameters

        protected abstract AlgorithmParameters engineGetParameters()
        Returns the parameters that where used to create this cipher instance.

        These may be a the same parameters that were used to create this cipher instance, or may be a combination of default and random parameters, depending on the underlying cipher implementation.

        Returns:
        the parameters that where used to create this cipher instance, or null if this cipher instance does not have any parameters at all.
      • engineInit

        protected abstract void engineInit(int opmode,
                      Key key,
                      SecureRandom random)
                                    throws InvalidKeyException
        Initializes this cipher instance with the specified key and a source of randomness.

        The cipher will be initialized for the specified operation (one of: encryption, decryption, key wrapping or key unwrapping) depending on opmode.

        If this cipher instance needs any algorithm parameters or random values that the specified key cannot provide, the underlying implementation of this cipher is supposed to generate the required parameters (using its provider or random values). Random values will be generated using random;

        When a cipher instance is initialized by a call to any of the init methods, the state of the instance is overridden, means it is equivalent to creating a new instance and calling it init method.

        Parameters:
        opmode - the operation this cipher instance should be initialized for (one of: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE or UNWRAP_MODE).
        key - the input key for the operation.
        random - the source of randomness to use.
        Throws:
        InvalidKeyException - if the specified key cannot be used to initialize this cipher instance.
      • engineInit

        protected abstract void engineInit(int opmode,
                      Key key,
                      AlgorithmParameterSpec params,
                      SecureRandom random)
                                    throws InvalidKeyException,
                                           InvalidAlgorithmParameterException
        Initializes this cipher instance with the specified key, algorithm parameters and a source of randomness.

        The cipher will be initialized for the specified operation (one of: encryption, decryption, key wrapping or key unwrapping) depending on opmode.

        If this cipher instance needs any algorithm parameters and params is null, the underlying implementation of this cipher is supposed to generate the required parameters (using its provider or random values). Random values are generated using random.

        When a cipher instance is initialized by a call to any of the init methods, the state of the instance is overridden, means it is equivalent to creating a new instance and calling it init method.

        Parameters:
        opmode - the operation this cipher instance should be initialized for (one of: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE or UNWRAP_MODE).
        key - the input key for the operation.
        params - the algorithm parameters.
        random - the source of randomness to use.
        Throws:
        InvalidKeyException - if the specified key cannot be used to initialize this cipher instance.
        InvalidAlgorithmParameterException - it the specified parameters are inappropriate for this cipher.
      • engineInit

        protected abstract void engineInit(int opmode,
                      Key key,
                      AlgorithmParameters params,
                      SecureRandom random)
                                    throws InvalidKeyException,
                                           InvalidAlgorithmParameterException
        Initializes this cipher instance with the specified key, algorithm parameters and a source of randomness.

        The cipher will be initialized for the specified operation (one of: encryption, decryption, key wrapping or key unwrapping) depending on opmode.

        If this cipher instance needs any algorithm parameters and params is null, the underlying implementation of this cipher is supposed to generate the required parameters (using its provider or random values). Random values are generated using random.

        When a cipher instance is initialized by a call to any of the init methods, the state of the instance is overridden, means it is equivalent to creating a new instance and calling it init method.

        Parameters:
        opmode - the operation this cipher instance should be initialized for (one of: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE or UNWRAP_MODE).
        key - the input key for the operation.
        params - the algorithm parameters.
        random - the source of randomness to use.
        Throws:
        InvalidKeyException - if the specified key cannot be used to initialize this cipher instance.
        InvalidAlgorithmParameterException - if the specified parameters are inappropriate for this cipher.
      • engineUpdate

        protected abstract byte[] engineUpdate(byte[] input,
                          int inputOffset,
                          int inputLen)
        Continues a multi-part transformation (encryption or decryption). The transformed bytes are returned.
        Parameters:
        input - the input bytes to transform.
        inputOffset - the offset in the input to start.
        inputLen - the length of the input to transform.
        Returns:
        the transformed bytes in a new buffer, or null if the input has zero length.
        Throws:
        IllegalStateException - if this cipher instance is not initialized for encryption or decryption.
        IllegalArgumentException - if the input is null, or if inputOffset and inputLen do not specify a valid chunk in the input buffer.
      • engineUpdate

        protected abstract int engineUpdate(byte[] input,
                       int inputOffset,
                       int inputLen,
                       byte[] output,
                       int outputOffset)
                                     throws ShortBufferException
        Continues a multi-part transformation (encryption or decryption). The transformed bytes are stored in the output buffer.

        If the size of the output buffer is too small to hold the result, a ShortBufferException is thrown. Use getOutputSize to check for the size of the output buffer.

        Parameters:
        input - the input bytes to transform.
        inputOffset - the offset in the input to start.
        inputLen - the length of the input to transform.
        output - the output buffer.
        outputOffset - the offset in the output buffer.
        Returns:
        the number of bytes placed in output.
        Throws:
        ShortBufferException - if the size of the output buffer is too small.
      • engineUpdate

        protected int engineUpdate(ByteBuffer input,
                       ByteBuffer output)
                            throws ShortBufferException
        Continues a multi-part transformation (encryption or decryption). The input.remaining() bytes starting at input.position() are transformed and stored in the output buffer.

        If the output.remaining() is too small to hold the transformed bytes a ShortBufferException is thrown. Use getOutputSize to check for the size of the output buffer.

        Parameters:
        input - the input buffer to transform.
        output - the output buffer to store the result within.
        Returns:
        the number of bytes stored in the output buffer.
        Throws:
        ShortBufferException - if the size of the output buffer is too small.
      • engineDoFinal

        protected abstract byte[] engineDoFinal(byte[] input,
                           int inputOffset,
                           int inputLen)
                                         throws IllegalBlockSizeException,
                                                BadPaddingException
        Finishes a multi-part transformation (encryption or decryption).

        Processes the inputLen bytes in input buffer at inputOffset, and any bytes that have been buffered in previous update calls.

        Parameters:
        input - the input buffer.
        inputOffset - the offset in the input buffer.
        inputLen - the length of the input.
        Returns:
        the final bytes from the transformation.
        Throws:
        IllegalBlockSizeException - if the size of the resulting bytes is not a multiple of the cipher block size.
        BadPaddingException - if the padding of the data does not match the padding scheme.
      • engineDoFinal

        protected abstract int engineDoFinal(byte[] input,
                        int inputOffset,
                        int inputLen,
                        byte[] output,
                        int outputOffset)
                                      throws ShortBufferException,
                                             IllegalBlockSizeException,
                                             BadPaddingException
        Finishes a multi-part transformation (encryption or decryption).

        Processes the inputLen bytes in input buffer at inputOffset, and any bytes that have been buffered in previous update calls.

        Parameters:
        input - the input buffer.
        inputOffset - the offset in the input buffer.
        inputLen - the length of the input.
        output - the output buffer for the transformed bytes.
        outputOffset - the offset in the output buffer.
        Returns:
        the number of bytes placed in the output buffer.
        Throws:
        ShortBufferException - if the size of the output buffer is too small.
        IllegalBlockSizeException - if the size of the resulting bytes is not a multiple of the cipher block size.
        BadPaddingException - if the padding of the data does not match the padding scheme.
      • engineDoFinal

        protected int engineDoFinal(ByteBuffer input,
                        ByteBuffer output)
                             throws ShortBufferException,
                                    IllegalBlockSizeException,
                                    BadPaddingException
        Finishes a multi-part transformation (encryption or decryption).

        Processes the input.remaining() bytes in input buffer at input.position(), and any bytes that have been buffered in previous update calls. The transformed bytes are placed into output buffer.

        Parameters:
        input - the input buffer.
        output - the output buffer.
        Returns:
        the number of bytes placed into the output buffer.
        Throws:
        ShortBufferException - if the size of the output buffer is too small.
        IllegalBlockSizeException - if the size of the resulting bytes is not a multiple of the cipher block size.
        BadPaddingException - if the padding of the data does not match the padding scheme.
        IllegalArgumentException - if the input buffer and the output buffer are the same object.
        IllegalStateException - if this cipher instance is not initialized for encryption or decryption.
      • engineWrap

        protected byte[] engineWrap(Key key)
                             throws IllegalBlockSizeException,
                                    InvalidKeyException
        Wraps a key using this cipher instance. This method has been added to this class (for backwards compatibility, it cannot be abstract). If this method is not overridden, it throws an UnsupportedOperationException.
        Parameters:
        key - the key to wrap.
        Returns:
        the wrapped key
        Throws:
        IllegalBlockSizeException - if the size of the resulting bytes is not a multiple of the cipher block size.
        InvalidKeyException - if this cipher instance cannot wrap this key.
      • engineUnwrap

        protected Key engineUnwrap(byte[] wrappedKey,
                       String wrappedKeyAlgorithm,
                       int wrappedKeyType)
                            throws InvalidKeyException,
                                   NoSuchAlgorithmException
        Unwraps a key using this cipher instance.

        This method has been added to this class (for backwards compatibility, it cannot be abstract). If this method is not overridden, it throws an UnsupportedOperationException.

        Parameters:
        wrappedKey - the wrapped key to unwrap.
        wrappedKeyAlgorithm - the algorithm for the wrapped key.
        wrappedKeyType - the type of the wrapped key (one of: SECRET_KEY, PRIVATE_KEY or PUBLIC_KEY)
        Returns:
        the unwrapped key.
        Throws:
        InvalidKeyException - if the wrappedKey cannot be unwrapped to a key of type wrappedKeyType for the wrappedKeyAlgorithm.
        NoSuchAlgorithmException - if no provider can be found that can create a key of type wrappedKeyType for the wrappedKeyAlgorithm.
      • engineGetKeySize

        protected int engineGetKeySize(Key key)
                                throws InvalidKeyException
        Returns the size of a specified key object in bits. This method has been added to this class (for backwards compatibility, it cannot be abstract). If this method is not overridden, it throws an UnsupportedOperationException.
        Parameters:
        key - the key to get the size for.
        Returns:
        the size of a specified key object in bits.
        Throws:
        InvalidKeyException - if the size of the key cannot be determined by this implementation.


Content

Android Reference

Java basics

Java Enterprise Edition (EE)

Java Standard Edition (SE)

SQL

HTML

PHP

CSS

Java Script

MYSQL

JQUERY

VBS

REGEX

C

C++

C#

Design patterns

RFC (standard status)

RFC (proposed standard status)

RFC (draft standard status)

RFC (informational status)

RFC (experimental status)

RFC (best current practice status)

RFC (historic status)

RFC (unknown status)

IT dictionary

License.
All information of this service is derived from the free sources and is provided solely in the form of quotations. This service provides information and interfaces solely for the familiarization (not ownership) and under the "as is" condition.
Copyright 2016 © ELTASK.COM. All rights reserved.
Site is optimized for mobile devices.
Downloads: 2255 / . Delta: 0.03181 с