/*
 * GNU.FREE 2002
 *
 * Copyright (c) 1999, 2000, 2001, 2002
 * The Free Software Foundation (www.fsf.org)
 *
 * GNU.FREE Co-ordinator: Jason Kitcat <jeep@free-project.org>
 *
 * GNU site: http://www.gnu.org/software/free/
 * 
 * FREE e-democracy site: http://www.free-project.org
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program (COPYING); if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 */

ChangeLog

* FreeInstall.Install:
  Added support for FileFrame.
* FreeInstall.FileFrame:
  Added FileFrame.java to allow user to pick their XML config file.
* FreeClient.ClientProtocol.process():
  In the I section moved the creation of server key etc inside error checking loop.
* FreeInstall.ElectionDefinition.getInstallVars():
  Fixed bug in reading of candidate names.
* FreeInstall.Install.doInstallation():
  Reads in XML configuration file.
* Free.DBase.calcResult():
  Now removes turnout from DB before doing final Borda results.
* Free.RTFrame():
  Certain menu options only appropriate for Regional/Totaller server so menu changes.
* Free.DBase.getTotals():
  Fixed Borda totalling bugs.
* Free.ServerProtocol.process():
  'V' section chnaged for new data order.
* FreeClient.Comms.sendVote():
  Changed order of data sent to checkString-AuthKey-votedata.
* FreeClient.VoteFrame:
  Improved Borda interface.
* RTServer.RTFrame:
  Updated display of local results.
* FreeClient.VoteFrame:
  Major update to support multiple vote systems. Still needs to be rewritten.
* FreeClient.FCFrame3:
  Set text for Label5 so that unfilled fields on OK gets appropriate prompt.
* FreeInstall.Install:
  Added new install strings to support changes to FreeClient.FClient.
* FreeClient.FClient:
  Stores information on type of vote.
* Free.DBase.calcResult():
  Now calculates results for multiple voting systems.
* Free.DBase.storeTotal():
  Updated to support multiple vote systems.
* Free.ServerProtocol.process():
  Modified Totaller section where storeTotal() is called to make more flexible for
  multiple vote systems.
* Free.DBase.getTotals():
  Now supports totals for multiple voting systems.
* Free.util.Packet.splitMessage():
  Updated to support 20 sub-fields.
* Free.DBase.init():
  Added logic to support multiple voting systems.
* Free.RTServer:
  Added constants to define voting system etc.
* FreeInstall.Install:
  Re-ordered install strings creation & installation to allow more expansion in
  FreeClient.VoteFrame install work.
* FreeInstall.ElectionDefinition:
  Created for reading Election Definition Language XML files.
* FreeInstall.Install:
  Added quotemarks to install strings where previously they had been left off.
* PollManager.Comms, PollManager.PMProtocol:
  Updated for HMAC and new Packet structure.
* PollManager.TCPClient, PollManager,PMProtocol:
  Fixed outputData[0] being empty bug.
* Free.Comms, Free.ClientProtocol, Free.ServerProtocol:
  Altered for new Packet constructor.
* ERServer.ERServerProtocol:
  Edited to use new Packet constructor.
* FreeClient.Comms, FreeClient.ClientProtocol:
  Changed to support new Packet constructor and thus reduce complexity.
* Free.util.Packet:
  Added new constructors to help tidy up packet creation code.
* RTServer.ClientProtocol,RTServer.Comms,RTServer.TCPClient:
  Changed to support new HMAC protocol.
* Free.RTServer.startDaemon():
  Changed to read Comms.freeRTPort
* FreeInstall.Install:
  Modified to allow Free.Comms.freeRTPort
* Free.Comms, Free.ClientProtocol:
  Altered to allow different ports for ERServer and Totaller Server.
* Free.ServerProtocol:
  Updated to support new protocol system.
* ERServer.ERServerProtocol:
  Altered to deal with new protocol system.
  Session data storage vectors added.
* FreeClient.ClientProtocol.process():
  All outgoing digests now HMAC. All incoming using checkHMAC()
  Added I section.
* FreeClient.Comms:
  Added new variables for HMAC system. Also changed digests to HMAC.
* Free.util.AuthSys:
  Added makeHMAC(), checkHMAC() & seedToKey() for new message authentication.
* ERServer.DBase.doSQL():
  Updated to support extra columns in data when displaying results of a SELECT.
* FreeInstall.Install:
  Test code had been accidently left in. Removed.
* DBPool.JDCConnection:
  Altered to remain compatible with new Java VMs.
* FreeClient.TCPClient:
  Timer set to null after being stopped.
* Free.TCPClient, FreeClient.TCPClient, PollManager.TCPClient:
  try {} Finally code was run again after try clause - pointless.
* Free.TCPClient, Free.ClientProtocol, FreeClient.TCPClient, FreeClient.ClientProtocol
  PollManager.TCPClient, PollManager.PMProtocol:
  Protocol now returns array.
* Free.TCPClient:
  Added setVect and altered to support Vector/Threads issues.
* Free.TimeOutThread.run():
  setEnabled was wrongly setting to false.
* Free.Comms:
  Vector/Threads issues resolved.
* Free.DBase.importKeys():
  Corrected a SQL select from Keys instead of AuthKeys.
* Free.ClientProtocol:
  Now uses rt_public_key.
* Free.Comms.sendTotals():
  Now uses rt_public_key.
* FreeInstall.Install:
  Updates to install Free.RTServer var added below.
* Free.RTServer:
  Added var for rt_public_key to deal with Regional<->Totaller comms.
* PollManager.PMProtocol:
  Updated for encryption system.
* PollManager.Comms:
  Changed for RSA support.
* PollManager.TCPClient:
  Now decrypts incoming data.
* PollManager.PollManager:
  Now inits RSAEncrypt.
* RTServer.ClientProtocol:
  Updated for encryption system.
* RTServer.Comms:
  Changed for RSA support.
* RTServer.RTServer.startDaemon():
  Initialises RSAEncrypt().
* RTServer.TCPClient:
  Now decrypts incoming data.
* RTServer.ServerProtocol.process():
  Modified to receive session key and encrypt outgoing information.
* RTServer.TCPServer:
  Now decrypts incoming data.
* ERServer.ERServerProtocol.process():
  Modified to receive session key and encrypt outgoing information.
* ERServer.TCPServer:
  Now decrypts incoming data.
* Free.util.RSAEncrypt:
  Added splitnDecrypt convenience method.
* FreeClient.ClientProtocol:
  Now encrypts packets before being sent.
* FreeClient.TCPClient:
  Now decrypts received data.
* FreeClient.Comms:
  Edited to include support for RSA encryption.
* Free.util.RSAPKCS1:
  Fixed nextBytes issue.
* Free.util:
  RSAEncrypt added to support PKI and related encryption facilities.
* FreeInstall.Install:
  Removed creation of keys for all except servers - how else do we know which key to use.
* FreeClient.Comms, PollManager.Comms, ERServer.ERServer, Free.RTServer:
  Added vars to store keys.
* FreeInstall.Install:
  Created buildRSAKeyPair for new encryption system and added install strings for keys.
* Free.util:
  Added RSAPKCS1.
* ERServer.ERServerProtocol, PollManager.PMProtocol, PollManager.Comms,
  RTServer.ClientProtocol, RTServer.Comms, RTServer.ServerProtocol,
  FreeClient.ClientProtocol, FreeClient.Comms:
  Changed to support new Digest coverage.
* Free.util.AuthSys.checkDigest():
  Modified to support getMACMessage() in place of getMessage().
* Free.util.Packet:
  Added getMACMessage() to allow for MAC of type as well as message.
* FreeClient.VoteFrame:
  jButton4 (Quit button) is now enabled from frame launch to allow users to bail out.
* FreeInstall.Install:
  Updated to support PollManager.
* ERServer.DBase.PMCheckER():
  Fixed bug that overwrote T of voted users to a C, perpetually allowing login.
* Free.util.Packet.splitMessage():
  Possible buffer overrun problem fixed by preventing loop from going beyond length of array.
* ERServer.DBase:
  Added PMconfirmVoted().
* ERServer.ERServerProtocol:
  Added section to deal with S and C packets, also vector handling for checkDates.
* ERServer.ERServerProtocol:
  Added section to deal with P (PMERCheck) packets.
* ERServer.DBase:
  Created PMCheckER() to deal with PollManager requests.
* ERServer.DBase.doSQL():
  Altered so that a ~ command automatically sets vote_where to I.
* ERServer.DBase.importUsers():
  Updated to use a derivative of Packet's splitMessage code and support vote_where field.
* ERServer.DBase():
  Updated to support new fields: vote_where, info_sent, other
* FreeClient.TCPClient.run():
  Edited bug which meant that Diagnostic packets would be sent to ERServer's port.
* PollManager:
  New package created.
* RTServer.DBase.importKeys():
  Duplicate in DB detection implemented.
* ERServer.DBase.importUsers():
  Offers line number of where problem is detected and also skips entries if already in DB.
* ERServer.DBase.importUsers():
  Improved error detection with validity checks and skips empty lines.
* FreeInstall.Install:
  Changed jToggleButtonx.setText() to jToggleButtonx.setLabel() which doesn't deprecate.
* FreeInstall.Install:
  Altered HSQL install strings to correctly provide user login.
* FreeClient.*:
  All files changed so that locale specific text now taken from ResourceBundle.
* FreeClient.FClient:
  Added variables to support internationalisation.
* FreeInstall.Install.main():
  Set er_dbtype and rt_dbtype to default to HSQL.
* Free.ServerProtocol.process():
  C Totaller section, a new packet was being sent bogus data which prevented success.
* Free.ClientProtocol.process():
  C Totaller section, message digest wasn't calculated on the full message.
  Also key was being digested twice.
* ERServer.ScreenAppender, Free.ScreenAppender, FreeInstall.ScreenAppender:
  There was a bug in the priority check which meant even errors was displayed as info.
  Now use isGreaterOrEqual() instead of converting to ints.
* ERServer.DBase.importUsers():
  Added a facility to warn administrator if proportion of test ballots in import file is
  rather high (as this could indicate some security breach).
* Free.RTServer.startDaemon():
  Altered to add support for SecureAppender.
* Free.SecureAppender:
  Created.
* ERServer.ERServer.startDaemon():
  Added support for SecureAppender. Includes reading log to get seed data.
* ERServer.SecureAppender:
  Created new class to provide digests of logs.
* Free.RTFrame:
  Added local results menu option which also stops server.
* FreeClient.TCPClient:
  Altered port allocation to support multiple options.
* FreeInstall.Install:
  Added install support for FreeRTPort use in FreeClient and RTServer startup.
* FreeClient.Comms:
  Added FreeRTPort constant to facilitate multiple servers running on one physical machine.
* FreeInstall.Install:
  DBChoiceFrame, ERDBFrame and RTDBFrame created. Edited surrounding files to support this.
* RTServer.DBase.importKeys():
  Made handling of no rtserver.test.keys smoother.
* ERServer.DBase:
  Added install tags.
* Free.DBase:
  Altered Keys table name to now be AuthKeys for compatibility with mySQL.
  Also changed table descriptions to allow strings of up to 255 chars.
  Added install strings.
* FreeInstall.Install:
  Added the strings for choosing which database to use.
* RTServer.Comms.storeTotal():
  Removed need to parse by now sending pre-split data.
* RTServer.ServerProtocol:
  Changed C and T sections to deal with Key.
* RTServer.ClientProtocol:
  Modified to deal with RTServer.comms changes.
* RTServer.Comms:
  Altered to deal with AuthKey indexing in time-stamp check. Added checkKey variable and
  newCheck() method.
* All AWT Frames:
  Altered to use Free.awt.TextView instead of java.awt.TextArea, thus we can offer wrapping,
  less flicker and colours.
* RTServer.ServerProtocol,ClientProtocol,FreeClient.ClientProtocol, ERServer.ERServerProtocol:
  Stripped code of custom parses and replaced with splitMessage()
* Free.util.Packet:
  After a year unchanged have now added splitMessage() to seperate sub-parts of a packet's
  message. This lets us clear out loads of custom code littering the code base.
* RTServer.ClientProtocol:
  Altered to deal with Totals time stamps and AuthKey (which is pseudo as its just a MAC of
  the check Date+subtotal info).
* FreeClient.ClientProtocol:
  Changed TimeStamp handling to re-send AuthKey.
* RTServer.ServerProtocol:
  Modified to deal with massive concurrency better. Since AuthKey introduced
  indexing the checkDate by Date was false as multiple matches do now matter. Thus changed
  to index by AuthKey.
* RTServer.Comms.sendKey():
  Fixed threadVector allocation.
* RTServer.ServerProtocol.getCheck():
  Fixed bug which prevented removal of used keys in TimeStamp checking process.
* RTServer.Comms:
  Altered all send methods to reflect new message sending technique. sendKey changed for multi-threading.
* RTServer.TCPClient:
  Created a constructor for new variable created to deal with threading issues.
* RTServer.ServerProtocol.process():
  Changed to reflect new confirmVoted procedure in the ERServer.
* ERServer.ERServerProtocol.process():
  Updated to reflect new confirmVoted procedure.
* ERServer.DBase.confirmVoted():
  Removed exception throwing and instead return a boolean.
* RTServer.DBase.authKeyCheck():
  Fixed SQL statement and returned values regarding test ballots.
* RTServer.DBase.removeKey():
  Added SQL statement to include Test_Keys table.
* RTServer.ServerProtocol.process():
  'C' section changed to support test ballots.
* RTServer.DBase.importKeys(),init(), authKeyCheck():
  Altered to support test ballots.
* ERServer.DBase.makeAllKeys():
  Updated to handle test ballots.
* RTServer.RTFrame, DBFrame:
  Menu added.
* ERServer.ERFrame2:
  Menu added.
* ERServer.ERFrame1:
  Added a button to activate DBase.importUsers().
  Menu added.
* ERServer.DBase:
  Added importUsers(), reads CSV files.
* FreeInstall.Install.doInstallation():
  Changed file reference to reflect new directory structure of release.
* FreeClient.FCFrame4.jButton1ActionPerformed():
  Fixed small AWT-conversion related bug that prevented vote screen from appearing.
* Free.DBase.init():
  Alter Totals table creation to make total be VARCHAR(12).
* Free.DBase.storeTotal():
  Corrected minor boundary check bug. Also sub-totals were being stored as INTEGER in the DB
  but with encryption this conflicted. Altered to use VARCHAR instead.
* Free.TimeOutThread:
  Updated to handle time outs more gracefully.
* Free.RTServer.startDaemon():
  Modified to support AWT button in T/R switch
* Free.ServerProtocol.process():
  Totals section updated to support expanded Vector style. Also time stamp bug had not been
  fixed. Rectified.
* ERServer.ERServer.startDaemon():
  Created to allow DB password frame to appear first
* Free.DBase(), ERServer.DBase():
  Use MetaData interface to report database version
* Free.DBase():
  Changed HSQL URL to jdbc:HypersonicSQL:rtserver from jdbc:HypersonicSQL:erserver
* FreeClient.FCFrame3:
  Password textfield changed to echo * instead of char
* Free.DBase.isSafe(), ERServer.DBase.isSafe():
  Changed from private to protected to allow use elsewhere.
* Free.RTServer, Free.Intro:
  Modified to support CryptFrame
* Free.CryptFrame, ERServer.CryptFrame:
  File added to collect run-time database encryption password from user
* ERServer.DBase, RTServer.DBase:
  Modified to use connection pooling
* Free.DBPool:
  Package create for JDBC connection pooling. The majority of the performance overhead
  for Database work is opening and closing connections.
* ERServer.TCPServer.run(Socket data), RTServer.TCPServer.run(Socket data),
  FreeClient.TCPClient.run(), RTServer.TCPClient.run():
  The PrintWriter was not buffered so was decorated with a OutputStreamWriter and BufferedWriter
* FreeClient.FCFrame4, FreeClient.TCPClient:
  Corrections for AWT port - Changed frame4.jButton1.setVisible() (or jButton2) to setEnabled()
* Free.ServerProtocol:
  Vector initialisation changed so that start with a size of 1000 as opposed to 1.
  Growth is very expensive performance wise.
* Free.* & ERServer.*:
  All DEV.debug() log4j entries have been put into conditional DEV.isDebugEnabled() loops.
  This optimisation cuts the String appending overhead etc if DEV is not enabled.
* Free.DBase.doSQL(), ERServer.DBase.doSQL():
  Unused StringBuffer 'temp' removed.
* Free.util.AuthSys.makeDigest():
  StringBuffer constructor optimisation.
* Free.DBase.encrypt(), ERServer.DBase.encrypt():
  String.getBytes() replaced with asciiGetBytes().
* Free.AuthKey.build(), ERServer.AuthKey.build():
  asciiGetBytes() replaces use of String.getBytes(). Also some string optimisation.
* Free.util.AuthSys.makeDigest():
  String.getBytes() replaced with asciiGetBytes()
  makeDigest is key in all three applications and an performance improvements are important.
* Free.util.StringByteTools:
  Class created for faster Byte <-> String conversions in ASCII only situations.
* Free.ServerProtocol.process():
  String.equalsIgnoreCase() changed to String.equals().
* ERServer.ERServerProtocol.process():
  String.equalsIgnoreCase() changed to String.equals().
  More fussy but faster.
* FreeClient.Comms:
  sendVote(), sendAuth(), sendDiag() string optimisations on packet creation.
  Not really necessary on client but done for uniformity.
* Free.ClientProtocol.process():
  String optimisations
* Free.Comms:
  sendDiag() & sendTotals() string optimisations on packet creation
* ERServerProtocol.process():
  String optimisations
* FreeInstall & FreeTest:
  Also modified to AWT 1.1
* RTServer: DBFrame, Intro, RTServer, RTFrame:
  Altered to support AWT 1.1
* ERServer: ERServer, ERFrame1, ERFrame2:
  Altered to support AWT 1.1
* FreeClient:FCFrame4, ClientProtocol:
  Changed button action to setEnabled from setVisible
* FreeClient: FClient, VoteFrame, FCFrame2, FCFrame3, FCFrame4:
  Radically changed to support AWT1.1 instead of Swing
* FreeClient.FCFrame3:
  Modified to support isSafe()
* FreeClient.FClient:
  isSafe() added
* Free.TCPServer, ERServer.TCPServer:
  added feature to log socket info (including IP)
* ERServer.ERServerProtocol.process():
  Bug fixed where different message was given to MAC then actually sent if auth failed.
* FreeInstall.Install:
  Added version reporting - starts at 0.4
* FreeInstall.Install:
  Updated for new version of log4j
* FreeInstall.ScreenAppender:
  Updated for new version of log4j
* Free.TimeOutThread.run():
  New threadStatus check added to prevent spurious errors
* Free.TCPClient.run():
  New command to prevent timeout errors even if successful
* FClient.TimeOutThread.run():
  New threadStatus check added to prevent spurious errors
* Free.DBase.authKeyCheck():
  Corrected SQL statement, only implementing encryption highlighted error
* FClient.TCPClient.run():
  New command to prevent timeout errors even if successful
* ERServer.DBase.confirmVoted():
  Corrected SQL to support encryption
* Free.DBase.removeKey():
  Corrected SQL to support encryption
* log4j.erserver.properties, log4j.rtserver.properties:
  Changed to support new log4j naming
* ScreenAppender:
  Now also import org.apache.log4j.spi.* and included several new empty methods to remaind compliant with Appender interface
* ScreenAppender, ERServer, RTServer:
  Changed to support new naming of log4j
* log4j:
  log4j-full.jar is now log4j.jar
* FreeClient.Comms.sendAuth():
  Updated to message digest PIN and password
* ERServer.DBase:
  Changed to support message digest of PIN and password instead of plaintext
* FreeInstall:
  Prompts changed to support IP or DNS addresses
* NOTE:
  DBase.doSQL() is broken for most SQL due to encryption
* ERServer.DBase:
  all database methods changed to support encryption
* Free.DBase:
  all database methods changed to support encryption
* ERServer.DBase:
  same methods added to offer equivalent database encryption
* Free.DBase:
  created encrypt() and decrypt() methods to implement encryption of all data in database
* Free.ClientProtocol:
  Calls sendTotals() on receipt of getTotalVoted() 'X' packet
* Free.RTFrame:
  Now calls Comms.getTotalVoted() instead of sendTotals()
* Free.TCPClient():
  Added recognition of 'Q' packets
* DBase.isSafe():
  Added correct escape character to switch case ''' => '\''
* FreeTest:
  Updated to support new features
* Free.DBase.verCheck():
  Built to make comparison between ERServer and RTServer totals
* Free.ClientProtocol():
  Added a 'Q' section
* DBase.usersVoted():
  Added to total up how many users have voted
* ERServer.ERServerProtocol():
  A 'Q' section was created to support validity queries
* Free.getTotalVoted():
  Created to support new validity check
* TimeOutThread:
  Updated TimeOutThreads to prevent use of deprecated stop() method which was thread unsafe
* Free.ServerProtocol:
  validity check changes
* ERServer.ERServerProtocol:
  changes made to validity checks as new MAC is 39 chars long compared to 31 previously
* Free.util.AuthSys:
  updated to support the more secure SHA-1 Message Digest algorithm instead of MD5
* Install.isSafe()
  added to make sure installation strings are ok
* ERServer.DBase:
  boundary checking added
* Free.DBase:
  boundary checking added to ensure no control characters sneak into SQL commands
* DBase.isSafe():
  Created for boundary checking after regular expression packages proved way too slow
* DBase.doSQL():
  Changed "Executing:..." log statement from NORM to DEV level
* RTServer.DBase:
  importKeys() created to read + decrypt our file of keys
* ERServer.ERFRame1:
  New button added to activate make all keys
* AuthKey:
  encrypt() method added
* FreeInstall:
  some cosmetic changes
* FreeInstall.Install.buildKey():
  Creates key with random input and alphanumeric password
* FreeInstall.AuthInstallFrame:
  Updated to connect to KeyInstallFrame
* FreeInstall.KeyInstallFrame:
  Created to allow input to build secret keys
* FreeInstall.Install:
  Update install strings to support new variables
* Free.ServerProtocol.process():
  Altered to tidy up properly if an AuthKey check fails
* ERServer.DBase.makeAllKeys():
  Created for key export
* Free.Comms:
  added ER_address constant
* Free.DBase.removeKey():
  Created to obscure used AuthKeys
* ERServer.DBase.confirmVoted():
  Method created to support improved robustness of protocol
* Free.ClientProtocol:
  Now supports K packets so that connection can be closed
* ERServer.ERServerProtocol.process():
  K section added
* FreeClient.TCPClient:
  defensive coding added to prevent unknown packet types going to ERServer
* Free.TCPClient:
  Updated to support the new packet type of K
* Free.Comms.sendKey():
  Created to support improved system reliabilty by confirming votes
* AuthKey:
  Added decryption functionality
* Free.DBase.init():
  Now creates Keys table if one doesn't already exist
* Free.DBase:
  Added authKeyCheck() to perform the security and reliable voted tallying process
* Free.RTServer:
  Edited to initalise Free.AuthKey
* Free:
  RTServer taken up to version 0.8
* Free.AuthKey:
  file created to support Authorisation Keys system (same as ERServer.AuthKey except package)
* Free.ServerProtocol:
  Created Vector checkAuthKey & setCheckAK() to retain AuthKey data while timestamp anti-replay check is performed. Change other Vector methods to accomodate this new Vector.
* Free.ServerProtocol.setCheck():
  Changed initialisation of variable where a new check date is inserted to prevent potential bug which might have only been detected on v.large scale testing
* Free.ServerProtocol.process():
  Altered V section to collect AuthKey
* Free.ServerProtocol.process():
  V section, changed packet length check to 112 (63+49 of AuthKey)
* FreeClient.Comms.sendVote():
  Altered to now also send ERAuthKey with vote
* ERServer.DBase.checkER():
  If user logs in and 'voted' set to C then extra log entry written
* FreeClient.ClientProtocol.process():
  stores key in ERAuthKey if valid voter who hasn't voted
* ERServer.DBase.checkER():
  Changed so that initial login only sets 'voted' field to C
* FreeClient.Comms:
  ERAuthKey + accessor methods added to store AuthKey before sending to RTServer
* FreeClient.ClientProtocol.process():
  Modified to accept AuthKey as well as result flag
* ERServer.AuthKey:
  Blowfish chosen for ERServer.AuthKey using 40-char key (alg could be rotated from choice of accepted algs)
* ERServer:
  Taken up to version 0.6
* ERServer.ERServerProtocol.process():
  'E' section edited to support AuthKeys
* ERServer.AuthKey:
  file created to support the Authorisation Keys system
* Docs:
  Miscellaneous JavDoc comments updated
* JNLP-INSTALL:
  created
* Free.ServerProtocol.process():
  Rewrote 'V' section to no longer depend on fixed length dates
* FreeInstall.Install.doInstallation():
  Removed erroneous quote marks from install values
* FreeInstall.AuthInstallFrame:
  Created to support AuthSys setup
* FreeInstall.VoteInstallFrame:
  Created to support party setup
* Updated comments to support FreeInstall
* ERServer.ERServer:
  Fixed constructor to make full use of ERServer.ScreenAppender
* log4j.jar:
  Now log4j-full.jar
* ERServer.ScreenAppender.doAppend:
  Migrated to use LoggingEvent
* RTServer.ScreenAppender.doAppend:
  Migrated to use LoggingEvent
* log4j.rtserver.properties:
  log4j.additivity.DEV corrected from .DEBUG
* log4j.erserver.properties:
  log4j.additivity.DEV corrected from .DEBUG
* File started 1.2.1

EOF ChangeLog