Package com.mku.salmon.transform
Class AesCTRTransformer
- java.lang.Object
-
- com.mku.salmon.transform.AesCTRTransformer
-
- All Implemented Interfaces:
ICTRTransformer
- Direct Known Subclasses:
AesDefaultTransformer,AesNativeTransformer
public abstract class AesCTRTransformer extends java.lang.Object implements ICTRTransformer
Abstract class for AES256 transformer implementations.
-
-
Field Summary
Fields Modifier and Type Field Description static intBLOCK_SIZESalmon stream encryption block size, same as AES.static intEXPANDED_KEY_SIZEStandard expansion key size for AES256 only.
-
Constructor Summary
Constructors Constructor Description AesCTRTransformer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description longgetBlock()Get the current block.byte[]getCounter()Get the current Counter.protected byte[]getExpandedKey()Get the expanded key if available.byte[]getKey()Get the current encryption key.byte[]getNonce()Get the nonce (initial counter)protected voidincreaseCounter(long value)Increase the Counter We use only big endianness for AES regardless of the machine architecturevoidinit(byte[] key, byte[] nonce)Initialize the transformer.voidresetCounter()Resets the Counter and the block count.voidsetExpandedKey(byte[] expandedKey)Set the expanded key.voidsyncCounter(long position)Syncs the Counter based on what AES block position the stream is at.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.mku.salmon.transform.ICTRTransformer
decryptData, encryptData
-
-
-
-
Field Detail
-
EXPANDED_KEY_SIZE
public static final int EXPANDED_KEY_SIZE
Standard expansion key size for AES256 only.- See Also:
- Constant Field Values
-
BLOCK_SIZE
public static final int BLOCK_SIZE
Salmon stream encryption block size, same as AES.- See Also:
- Constant Field Values
-
-
Method Detail
-
resetCounter
public void resetCounter()
Resets the Counter and the block count.- Specified by:
resetCounterin interfaceICTRTransformer
-
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:
syncCounterin interfaceICTRTransformer- 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:
initin interfaceICTRTransformer- Parameters:
key- The keynonce- The nonce- Throws:
SecurityException- Thrown if there is a security exception
-
getCounter
public byte[] getCounter()
Get the current Counter.- Specified by:
getCounterin interfaceICTRTransformer- Returns:
- The current counter
-
getBlock
public long getBlock()
Get the current block.- Specified by:
getBlockin interfaceICTRTransformer- Returns:
- The current block
-
getKey
public byte[] getKey()
Get the current encryption key.- Specified by:
getKeyin interfaceICTRTransformer- 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:
getNoncein interfaceICTRTransformer- 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
-
-