public void init(boolean forEncryption, CipherParameters params)
throws IllegalArgumentException {
if (params instanceof ParametersForThreefish){
ParametersForThreefish pft = (ParametersForThreefish)params;
stateSize = pft.getStateSize();
setCipher(stateSize);
if (cipher == null)
throw new IllegalArgumentException("Threefish: unsupported state size: " + stateSize);
byte[] key = ((KeyParameter)pft.getParameters()).getKey();
if (key.length != (stateSize / 8))
throw new IllegalArgumentException("Threefish: key length does not match state size: " + key.length);
long[] tweak = pft.getTweak();
if (tweak == null)
throw new IllegalArgumentException("Threefish: tweak data not set");
cipher.setTweak(tweak);
// Get a long array for cipher key and moves the byte key buffer to it