/**
 * ISymmetricKey
 * 
 * An interface for symmetric encryption keys to implement.
 * Copyright (c) 2007 Henri Torgemane
 * 
 * See LICENSE.txt for full license information.
 */
package com.hurlant.crypto.symmetric
{
    import flash.utils.ByteArray;
    
    public interface ISymmetricKey
    {
        /**
         * Returns the block size used by this particular encryption algorithm
         */
        function getBlockSize():uint;
        /**
         * Encrypt one block of data in "block", starting at "index", of length "getBlockSize()"
         */
        function encrypt(block:ByteArray, index:uint=0):void;
        /**
         * Decrypt one block of data in "block", starting at "index", of length "getBlockSize()"
         */
        function decrypt(block:ByteArray, index:uint=0):void;
        /**
         * Attempts to destroy sensitive information from memory, such as encryption keys.
         * Note: This is not guaranteed to work given the Flash sandbox model.
         */
        function dispose():void;
        
        function toString():String;
    }
}