Class AESNativeCTR

java.lang.Object
org.bouncycastle.crypto.engines.AESNativeCTR
All Implemented Interfaces:
BlockCipher, CTRModeCipher, MultiBlockCipher, SkippingCipher, SkippingStreamCipher, StreamCipher

public class AESNativeCTR extends Object implements CTRModeCipher
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    Return the name of the algorithm the cipher implements.
    int
    Return the block size for this cipher (in bytes).
    int
    Return the multi-block size for this cipher (in bytes).
    long
    Return the current "position" of the cipher
    return the underlying block cipher that we are wrapping.
    void
    init(boolean forEncryption, CipherParameters params)
    Initialise the cipher.
    int
    processBlock(byte[] in, int inOff, byte[] out, int outOff)
    Process one block of input from the array in and write it to the out array.
    int
    processBlocks(byte[] in, int inOff, int blockCount, byte[] out, int outOff)
    Process blockCount blocks from input in offset inOff and place the output in out from offset outOff.
    int
    processBytes(byte[] in, int inOff, int len, byte[] out, int outOff)
    process a block of bytes from in putting the result into out.
    void
    Reset the cipher.
    byte
    returnByte(byte in)
    encrypt/decrypt a single byte returning the result.
    long
    seekTo(long position)
    Reset the cipher and then skip forward to a given position.
    long
    skip(long numberOfBytes)
    Skip numberOfBytes forwards, or backwards.
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • AESNativeCTR

      public AESNativeCTR()
  • Method Details

    • getUnderlyingCipher

      public BlockCipher getUnderlyingCipher()
      Description copied from interface: CTRModeCipher
      return the underlying block cipher that we are wrapping.
      Specified by:
      getUnderlyingCipher in interface CTRModeCipher
      Returns:
      the underlying block cipher that we are wrapping.
    • getBlockSize

      public int getBlockSize()
      Description copied from interface: BlockCipher
      Return the block size for this cipher (in bytes).
      Specified by:
      getBlockSize in interface BlockCipher
      Returns:
      the block size for this cipher in bytes.
    • processBlock

      public int processBlock(byte[] in, int inOff, byte[] out, int outOff) throws DataLengthException, IllegalStateException
      Description copied from interface: BlockCipher
      Process one block of input from the array in and write it to the out array.
      Specified by:
      processBlock in interface BlockCipher
      Parameters:
      in - the array containing the input data.
      inOff - offset into the in array the data starts at.
      out - the array the output data will be copied into.
      outOff - the offset into the out array the output will start at.
      Returns:
      the number of bytes processed and produced.
      Throws:
      DataLengthException - if there isn't enough data in input , or space in out.
      IllegalStateException - if the cipher isn't initialised.
    • getMultiBlockSize

      public int getMultiBlockSize()
      Description copied from interface: MultiBlockCipher
      Return the multi-block size for this cipher (in bytes).
      Specified by:
      getMultiBlockSize in interface MultiBlockCipher
      Returns:
      the multi-block size for this cipher in bytes.
    • processBlocks

      public int processBlocks(byte[] in, int inOff, int blockCount, byte[] out, int outOff) throws DataLengthException, IllegalStateException
      Description copied from interface: MultiBlockCipher
      Process blockCount blocks from input in offset inOff and place the output in out from offset outOff.
      Specified by:
      processBlocks in interface MultiBlockCipher
      Parameters:
      in - input data array.
      inOff - start of input data in in.
      blockCount - number of blocks to be processed.
      out - output data array.
      outOff - start position for output data.
      Returns:
      number of bytes written to out.
      Throws:
      DataLengthException
      IllegalStateException
    • skip

      public long skip(long numberOfBytes)
      Description copied from interface: SkippingCipher
      Skip numberOfBytes forwards, or backwards.
      Specified by:
      skip in interface SkippingCipher
      Parameters:
      numberOfBytes - the number of bytes to skip (positive forward, negative backwards).
      Returns:
      the number of bytes actually skipped.
    • seekTo

      public long seekTo(long position)
      Description copied from interface: SkippingCipher
      Reset the cipher and then skip forward to a given position.
      Specified by:
      seekTo in interface SkippingCipher
      Parameters:
      position - the number of bytes in to set the cipher state to.
      Returns:
      the byte position moved to.
    • getPosition

      public long getPosition()
      Description copied from interface: SkippingCipher
      Return the current "position" of the cipher
      Specified by:
      getPosition in interface SkippingCipher
      Returns:
      the current byte position.
    • init

      public void init(boolean forEncryption, CipherParameters params) throws IllegalArgumentException
      Description copied from interface: BlockCipher
      Initialise the cipher.
      Specified by:
      init in interface BlockCipher
      Specified by:
      init in interface StreamCipher
      Parameters:
      forEncryption - if true the cipher is initialised for encryption, if false for decryption.
      params - the key and other data required by the cipher.
      Throws:
      IllegalArgumentException - if the params argument is inappropriate.
    • getAlgorithmName

      public String getAlgorithmName()
      Description copied from interface: BlockCipher
      Return the name of the algorithm the cipher implements.
      Specified by:
      getAlgorithmName in interface BlockCipher
      Specified by:
      getAlgorithmName in interface StreamCipher
      Returns:
      the name of the algorithm the cipher implements.
    • returnByte

      public byte returnByte(byte in)
      Description copied from interface: StreamCipher
      encrypt/decrypt a single byte returning the result.
      Specified by:
      returnByte in interface StreamCipher
      Parameters:
      in - the byte to be processed.
      Returns:
      the result of processing the input byte.
    • processBytes

      public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff) throws DataLengthException
      Description copied from interface: StreamCipher
      process a block of bytes from in putting the result into out.
      Specified by:
      processBytes in interface StreamCipher
      Parameters:
      in - the input byte array.
      inOff - the offset into the in array where the data to be processed starts.
      len - the number of bytes to be processed.
      out - the output buffer the processed bytes go into.
      outOff - the offset into the output byte array the processed data starts at.
      Returns:
      the number of bytes produced - should always be len.
      Throws:
      DataLengthException - if the output buffer is too small.
    • reset

      public void reset()
      Description copied from interface: BlockCipher
      Reset the cipher. After resetting the cipher is in the same state as it was after the last init (if there was one).
      Specified by:
      reset in interface BlockCipher
      Specified by:
      reset in interface StreamCipher
    • toString

      public String toString()
      Overrides:
      toString in class Object