/** * IVMode * * An abstract class for confidentialy modes that rely on an initialization vector. * Copyright (c) 2007 Henri Torgemane * * See LICENSE.txt for full license information. */ package com.hurlant.crypto.symmetric { import com.hurlant.crypto.prng.Random; import com.hurlant.crypto.tests.TestCase; import com.hurlant.util.Memory; import flash.utils.ByteArray; /** * An "abtract" class to avoid redundant code in subclasses */ public class IVMode { protected var key:ISymmetricKey; protected var padding:IPad; // random generator used to generate IVs protected var prng:Random; // optional static IV. used for testing only. protected var iv:ByteArray; // generated IV is stored here. protected var lastIV:ByteArray; protected var blockSize:uint; public function IVMode(key:ISymmetricKey, padding:IPad = null) { this.key = key; blockSize = key.getBlockSize(); if (padding == null) { padding = new PKCS5(blockSize); } else { padding.setBlockSize(blockSize); } this.padding = padding; prng = new Random; iv = null; lastIV = new ByteArray; } public function getBlockSize():uint { return key.getBlockSize(); } public function dispose():void { var i:uint; if (iv != null) { for (i=0;i