Class SalmonAES256CTRTransformer

java.lang.Object
com.mku.salmon.transform.SalmonAES256CTRTransformer
All Implemented Interfaces:
ISalmonCTRTransformer
Direct Known Subclasses:
SalmonDefaultTransformer, SalmonNativeTransformer

public abstract class SalmonAES256CTRTransformer extends Object implements ISalmonCTRTransformer
Abstract class for AES256 transformer implementations.
  • Field Details

    • EXPANDED_KEY_SIZE

      public static final int EXPANDED_KEY_SIZE
      Standard expansion key size for AES256 only.
      See Also:
    • BLOCK_SIZE

      public static final int BLOCK_SIZE
      Salmon stream encryption block size, same as AES.
      See Also:
  • Constructor Details

    • SalmonAES256CTRTransformer

      public SalmonAES256CTRTransformer()
  • Method Details

    • resetCounter

      public void resetCounter()
      Resets the Counter and the block count.
      Specified by:
      resetCounter in interface ISalmonCTRTransformer
    • syncCounter

      public void syncCounter(long position)
      Syncs the Counter based on what AES block position the stream is at. The block count is already excluding the header and the hash signatures.
      Specified by:
      syncCounter in interface ISalmonCTRTransformer
      Parameters:
      position - The position to sync the counter to
    • increaseCounter

      protected void increaseCounter(long value)
      Increase the Counter We use only big endianness for AES regardless of the machine architecture
      Parameters:
      value - value to increase counter by
    • init

      public void init(byte[] key, byte[] nonce)
      Initialize the transformer. Most common operations include precalculating expansion keys or any other prior initialization for efficiency.
      Specified by:
      init in interface ISalmonCTRTransformer
      Parameters:
      key - The key
      nonce - The nonce
      Throws:
      SalmonSecurityException - Thrown if there is a security exception
    • getCounter

      public byte[] getCounter()
      Get the current Counter.
      Specified by:
      getCounter in interface ISalmonCTRTransformer
      Returns:
      The current counter
    • getBlock

      public long getBlock()
      Get the current block.
      Specified by:
      getBlock in interface ISalmonCTRTransformer
      Returns:
      The current block
    • getKey

      public byte[] getKey()
      Get the current encryption key.
      Specified by:
      getKey in interface ISalmonCTRTransformer
      Returns:
      The encryption key
    • getExpandedKey

      protected byte[] getExpandedKey()
      Get the expanded key if available.
      Returns:
      The expanded key
    • getNonce

      public byte[] getNonce()
      Get the nonce (initial counter)
      Specified by:
      getNonce in interface ISalmonCTRTransformer
      Returns:
      The nonce
    • setExpandedKey

      public void setExpandedKey(byte[] expandedKey)
      Set the expanded key. This should be called once during initialization phase.
      Parameters:
      expandedKey - The expanded key