RELEASE.NOTES

Professional Data Security (PDS)
Copyright (c) 2009-2010, Brett Lee
All rights reserved.

Portions Copyright (C) 1995-2008, Sun Microsystems, Inc

Support:
    Web: http://crypto.brettlee.com
  email: pds@brettlee.com


Contents:
===============================
1.  Legal Warning
2.  Starting the Application
3.  Troubleshooting
4.  Known Issues
5.  Desired Enhancements
6.  Change Log




1. Legal Warning:
===============================

Use of Professional Data Security (PDS) may be illegal in countries where
encryption is outlawed.



2. Starting the Application
===============================

This application is delivered as a single Jar file.  You may choose to
download the executable Jar in a Zip file, or you may chose to install
the executable Jar via Java Web Start.  Instructions for both follow.

Zip file:

  Extract the JAR file to disk-based storage.
  Gui:
    Navigate to the Jar file, select and run it.  This should work
    on modern Operating Systems.  If not, ensure you have Java 1.6+
    installed and the 'java' binary should be associated with .jar
    files.  Another option is to select the Jar file and choose the
    "run with" option and select Java.
  CLI:
  	Windows:    javaw -jar  path/to/file/pds.jar
	Unix:       nohup java -jar path/to/file/pds.jar &
    Debug Mode: java -jar path/to/file/pds.jar

  When first started, the application creates a small directory structure
  relative to the JAR file.  Without that directory structure in place, 
  this application may not function as desired.  Using the Tools-Options
  menu item, you may select different default locations.

Java Web Start:

  Navigate to http://crypto.brettlee.com/ and select the appropriate
  release to execute; it should be indicated with a Java Web Start link.
  If you have Java Web Start installed, this should install PDS to your
  system, providing such things as a Desktop shortcut and control of the
  application via the Control Panel.  As with the Zip installation, when
  the application starts up wit will create a small directory structure
  relative to the JAR file.  In some Java Web Start installs, the
  directory structure is created relative to your Home directory.  Either
  way, these default locations can be modified via Tools->Options.


3. Troubleshooting: 
===============================

I.  Debugging:

General:

Execute the jar from the command line and observe any output.  Messages
sent to the console exist but are very limited; instead, popup dialogs 
are used to indicate problems.

Memory:

When editing large files (> 10 MB) using the internal editor, you may run
out of memory due to the configured size of on the heap.

To modify this, this you can adjust the startup and maximum heap size using
a variation of these parameters:

	-Xmn16m		(start with 16 MB)
	-Xmx256m	(set the maximum at 256 MB)

For example, this gives you a minimum of 16 MB and a max of 256MB:

	java -jar -Xmn16m -Xmx256m pds.jar

Obviously, the values you use will depend upon your system, and this
will only get you so far.  Ideally, the program should use a paging 
mechanism when editing large files rather than trying to swallow them
whole.  If you need to work with very large files you can create and save
them using a standard editor and then encrypt / decrypt them using PDS,
as only the internal editor has this memory limitation.


II.  KeyStores:

When the application starts, it creates the following directories:

	mydata/mykeys	(for KeyStores and Keys)
	mydata/myfiles	(for data files)

You do not have to create your KeyStores or data files there.  When
you create a new item (KeyStore or data file) encrypted file, the 
encrypted file will contain the absolute path to the KeyStore at the
time the file was created.  When opening the file for viewing or editing,
the application will first look in the absolute path, and then it will
look in the KeyStore search path, and then it will present a File Chooser
for you to navigate to the KeyStore.  The KeyStore search path contains
your default KeyStore directory as well as any other directories you
specify.  Configuration of each of these is in Tools->Options.


III.  Encrypted Files:

Encrypted files can be created, copied or moved anywhere.  Each file
only needs access to the KeyStore (specifically, the Key in the KeyStore).


IV.  Tape Drives and Raw Devices

PDS is able to write to tape drives and other raw devices.  As of 1.x,
each encryption operation (internal files excluded) operates in a separate
thread.


V.  For more instructions, please see:

Help -> Contents in the application,

or http://crypto.brettlee.com




4. Known Issues:
===============================
   
Design:
 - This application started out as a tool to provide a secure editor via a
   thumb drive, thus the design wasn't very elaborate.  Scope creep was on 
   the rise, and the next thing you know...  That said, the initial design
   for this application has shown its weaknesses and is need of a complete
   overhaul.

Concurrency:
 - Tracking of threads is not complete.
   - While capable of kicking off many threads of execution, the tracking of
     execution is single threaded: each encryption job has a unique id 
     associated with it; a vector has been created to track the return status
     of each job id, collect any exception, and also monitor the possibility
     that the user has canceled the thread; methods have been created to 
     support adding the exception or the cancel status to the the vector.
   - The final bit of functionality has not been implemented, namely, the
     objects reporting the exception or if the thread was stopped by the user.  

Java Bugs:
 - JFileChooser class error in Java 6 update 19 - update 21?
   - PDS application fails to obtain the correct path and instead reports
     an error attempting to encrypt or decrypt.  Error message has NULL in the
     error dialog.
   - Cause:
     - PDS makes extensive use of the JFileChooser class.  There is an open
       Bug with the JFileChooser class that causes a NULL pointer exception
       to be thrown at (too often) random times.  Per the discussion below,
       this appears to have been introduced in u19, and will be fixed post
       u21.  Users have reported that downgrading to u18 resolves this issue.
       For more, see: http://forums.sun.com/thread.jspa?threadID=5435324

Restore a Single File from Tape:
 - Restore a file from tape does not restore to the file name.
   - The original design of the application was to store the name of the
     original file within the name of the encrypted file; thus, the simple
     appending of .PDS to each encrypted file.  With tape drives, this is
     not possible.  This is overcome with encrypting a directory, in that
     the encrypted directory is actually a ZIP file with the name of each
     enclosed file embedded in the ZIP file.  Encrypting a single file
     should use something similar to this to better support encrypting to
     devices other than disk where the name cannot be retained.
   - Currently, the restored/decrypted file is named "_Restored."

Progress Bar:
 - Progress bar is not always visible and can lead to confusion
   - The progress bar for long running jobs monitors the input stream.  If
     a large file is being read, then the progress bar will display the
     progress for that file.  If encrypting a directory with many small files
     the progress bar will never show, unless it hits a large file.
   - To avoid confusion of whether the thread is actually executing or has
     gone off in the weeds, a different approach is needed.
   - This is especially evident when reading from tape.

Usability:
 - Horizontal scroll bar does not reduce with the Internal Frame.
   - AFAIK, the ViewPort widens with the Internal Frame, but when the Internal
     Frame is reduced the ViewPort remains widened.  If, in fact, it is the
     ViewPort, ideally it would widen with the Internal Frame, and when the
     Internal Frame contracted, the ViewPort would also contract; but only as
     far as the width of the Document.  For more, see:
     -> http://forums.sun.com/thread.jspa?threadID=5434287
 
  
 

5. Requests for Enhancement:
===============================

Usability:
 - Add additional columns in the Edit Keys Dialog (KeyStore Table) to show
     both the cipher and the size of all keys in the KeyStore.
 - Have the application support "clicking" on a PDS file to decrypt the file.
     The application should open and begin the process to decrypt the file.
     - Using JNLP, the application may open but a manual start is required.
 - Before enabling the ability to select a certain Algorithm/Strength/Padding
     combination, ensure that the system supports it (e.g. DES/112/CBC).
   - Note: a check is done for support of AES key *sizes* over 128, but
     more complete checks are needed.
 - Support for optional cryptographic providers (e.g. Bouncy Castle).
 - Add the option for Compression when encrypting a single External File.
 - Add the ability to Transfer Cipher Keys between KeyStores.
   - For now, use the import / export functionality in "keytool."
 - Add the ability to View (no Editing allowed) a KeyStore.
   - For now, use Edit->Key, Select KeyStore
 - Add the ability to select multiple files for Encryption & Decryption.
     - Provide options to encrypt each file another encrypted file, or
       to encrypt the group of them to a single encrypted file.

Increased Security:
 - Text in the PDS editor is not completely scrubbed from RAM after use.
    - The text is rendered in a Document object.  Text is added to the Document
      via (immutable) Strings.  Encryption + Strings == Gasp!  My understanding
      is that modern OS's scrub memory from one process before handing it to
      another, so that part seems safe.  But am uncertain about a rogue admin
      possibly scanning RAM.  Hey, it's PDS, not NSA! :)
 - Support for Key Wrap
    - Yeah, but how to protect the Wrapping Key?  Hey, it's still just PDS!

Public Key Infrastructure (PKI):
 - Generating and Storing PKI Cipher Keys.
 - Encrypting / Decrypting External data files using PKI.
 - Support for JKS KeyStores. 
   - Note: JCEKS will hold PKI keys, but JKS will not hold Symmetric Keys.

Debug: 
 - Provide a checkbox (or "--debug" option) to enable console debug output.
   - Optional: a GUI window to monitor debug output.



6. Change Log:
===============================

1.0 beta 7 - April 29, 2010 - "Lucky 7" Release - (SVN 513) - Brett Lee
* Bug fixes.


1.0 beta 6 - April 24, 2010 - "Raw Device" Release - (SVN 497) - Brett Lee
* Added support for writing external files and directories to tape.
* Refactoring of Gui.java subclasses into Top-level classes - Thanks David!
* Bug fixes and other clean up.


1.0 beta 5 - April 17, 2010 - "Bug Fixer" Release - (SVN 459) - Brett Lee
* Numerous bug fixes.  Just as many minor enhancements.
  - See SVN logs at: http://svn.brettlee.com:8000/svn/svn/pds/


1.0 beta 4 - April 15, 2010 - "Zip ur Taxes" Release - (SVN 438) - Brett Lee
* Added the ability to encrypt an existing directory.
  - Directory encryption is done with Zip, and provides the user with a choice
    on the level of compression that should be applied.
  - The directory is encrypted to a single file.
  - The directory (single file) can be decrypted and extracted to the 
    filesystem, or it can be decrypted to a Zip file.
* New Default KeyStore directories are added to the KeyStore Search Path
  - When defining a new default KeyStore directory, that directory is now
    added to the KeyStore Search Path.


1.0 beta 3 - April 14, 2010 - Additional Functionality - (SVN 426) - Brett Lee
* Options dialog now supports defining a Default KeyStore directory.
  - Application now defines a default KeyStore directory at initialization
    if it does not yet exist.
  - Application uses the default KeyStore directory for all file choosers
    that are created to search for a KeyStore.


1.0 beta 2 - April 13, 2010 - "Binary Files" Release - (SVN 422) - Brett Lee
* Encryption of External files now supports binary mode along with Base64
  - Previously, all encrypted files were encoded with Base64.  This adds
    about 35% to the size of the file and is significant with large files.
  - Native files (those edited and viewed) remain as Base64 encoded only.
* Updated the Base64.java file from iharder.net.
  - In testing a range of files, one file produced inaccurate results  This
    was resolved by switching to the newer file.
* Added a prompt to create non-existent directories
  - In various locations throughout the application, a directory can be
    provided as input to the dialogs.  In these cases, have added a test to
    confirm that the path actually exists.  Where it does not, the user is
    prompted to create the dir.
* Set the default action on all "Save on Close" operations to YES.
* Added option to have the currently selected button be the default button.
* Added additional filters to the File Choosers.
* Updated the internal documentation.


1.0 beta 1 - April 8, 2010 - Additional Functionality - (SVN 397) - Brett Lee
* Selection of Destination Directories
  - Added the ability to select destination directories when encrypting
    and decrypting external files.
* Added the ability to delete a file
* Confirmation Dialogs
  - Added confirmation dialog after successful encryption or decryption of 
    external files.
* Better Clarity on Files that will be Overwritten
  - Better clarification of what files will be overwritten during the
    encryption and decryption of external files.


1.0 alpha 5 - April 5, 2010 - Bug Fix Release (SVN 385) - Brett Lee
* Checks for PDS "native" file format prior to viewing/editing
  - Previous releases would allow the encryption of a zip file, and allow the
    user to attempt to load it into the editor.  Obviously, this is a bad idea.
  - Now, when the PDS file is created, the application marks it as "native" in
    the header; this value is checked prior to viewing or editing the file.
  - This breaks earlier PDS files, and an appropriate error message is displayed.
  - The workaround is to add the line "CryptoFile#NATIVE" to the metadata
    section of the PDS file header.  Do so only after making a backup copy of
    the original.
* KeyStore / Key values in Create New File Dialog now read-only
  - Changes weren't captures, so why allow changes.
* Better error reporting dialogs for encryption jobs.


1.0 alpha 4 - April 4, 2010 - "Making Progress" Release (SVN 378) - Brett Lee
* New Thread Support for Encryption and Decryption Jobs.
  - Application now supports multiple simultaneous Threads of Execution.
  - Now Jobs are submitted to a new Thread of the CryptoEngine class.
* A Progress Monitor has been added to long running Encryption Jobs.
  - Have an option on the Progress Monitor to Cancel the Job.
  - Using the Progress Monitor InputStream class.
* Support for tracking multiple simultaneous Threads of Execution
  - The new CryptoState class and the StateObject class provide new support for
    tracking multiple simultaneous Threads via unique IDs in each CryptoFile 
    type of class - CryptoFile, CryptoFileNative and CryptoFileExternal.
  - IDs are added in new Constructors.


1.0 alpha 3 - April 2, 2010 - Bug Fix Release (SVN 373) - Brett Lee
* Encrypt External File Dialog now supports CR/Enter key stroke to Encrypt.
* Changed (the final) two confirmation dialogs to have NO as the default action.
* Fixed bugs that caused erroneous error Dialogs after canceling.
    - After canceling encryption/decryption of external file rather than overwriting
      an existing file, an erroneous error Dialog would appear.  Resolved.


1.0 alpha 2 - April 1, 2010 - "No Joke" Release (SVN 365)- Brett Lee
* Each Editor now has its own data for Undo and Redo
    - Thanks to camickr, uncle_alice and StanislavL - Sun Forums
    - For more, see: http://forums.sun.com/thread.jspa?messageID=10963533


1.0 alpha 1 - March 29, 2010 - Interoperability Release (SVN 359) - Brett Lee
* Provided the ability to define multiple KeyStore Search paths
    - The KeyStore Search Path will be used when the Application does not find
      the KeyStore as explicitly coded into the encrypted PDS file.
    - This greatly adds support to mobile users, as well as users who use
      use the application on multiple machines.  For example, one could define
      a KeyStore path for their Linux machine, another path for their Windows
      and a third path for another machine.  If the KeyStore was not found at
      the last known path, all other paths will be searched.
    - If multiple matches are found, all are displayed.  One must be selected.
    - If not defined, the KeyStore Search Path will be initialized at startup.
    - See Tools->Options->KeyStore Search Path
* Provide a the ability to browse for a KeyStore if the KeyStore is not found.
    As a fallback to the definition of multiple KeyStore paths, if a KeyStore
    is still not found, a File Chooser Dialog is presented so that the user may
    browse for the KeyStore.
* Added the ability to define a Default Directory for Encrypted PDS Files.
    - Appropriate Dialogs (create file, edit file, view file, etc.) make use
      of the Default Directory.
    - If not defined, the Default Directory will be initialized at startup.
    - See Tools->Options->Default Directory for Encrypted Files
* Implemented the editing options "undo", "redo", "cut", "copy" and "paste"
    in the Application Menu.
* After encrypting an existing file, the user is now prompted to confirm 
    whether the original file should be deleted or not.
* Fixed a bug in the KeySelector Dialog where the wrong Key could be deleted if
    multiple key were deleted in the same instance of the Key Edit Dialog.
* Improved the KeySelector Dialog
    - Added the ability to sorting by Date and Key Name
    - Added dynamic resizing of the table.
* Authorization Dialogs support the CR/Enter KeyStroke in Text Fields
  - When providing credentials in the Authorization Dialog, the operator
    is now permitted to use the carriage return key, in either the KeyStore
    or Key passphrase fields, to submit the credentials for Authorization
* Additional Dialogs support CR/Enter KeyStrokes
* The Key passphrase field is disabled by default in the Authorization Dialog
  - This is more of a bug fix, as it should have been done previously.
  - Operator is able to submit a Key passphrase, but as before, must select
    the radio button indicating that the KeyStore and Key passphrases are
    not identical.
* Changed confirmation dialogs to have NO as the default action.
* Added "Read-Only" to the title bar when "viewing" files.
* Fixed an issue where an invalid JInternalFrame was displayed after an
    attempt to create a new PDS file failed to complete.
* Fixed an obscure bug where a path could be prefixed "//" instead of "/".
* Support website was redefined from http://brettlee.com/pds to the Java
    package structure: http://crypto.brettlee.com


0.020.03 - December 26, 2009 - Bug Fix Release (SVN 283) - Brett Lee
* Failed authentication no longer results in a edit/view window being opened
  - Prior to this, a indeterminate warning dialog was displayed prior to
    opening an invalid view/edit window
* Edit window now opens with the cursor at the beginning of the first line
* Editing for uniformity in both website & email for application support
  - now http://brettlee.com/pds/ & pds@brettlee.com
* Editing of selected text as appropriate
* Application self-signed with a new key


0.020.02 - August 15, 2009 - Additional Functionality (SVN 280) - Brett Lee
* Creating a new KeyStore now supports manually entering the KeyStore name
  - New KeyStore names may now be provided manually or using the FileChooser
  - If "path" is not provided, the KeyStore will be created in the default location
* Creating a new file now supports manually entering the file name
  - New File names may now be provided manually or using the FileChooser
  - If "path" is not provided, the file will be created in the default location


0.020.01 - July 05, 2009 - Additional Functionality (SVN 268) - Brett Lee
* Minor cosmetic changes
  - Updated text in some dialogs
  - Additional use of PDS logos in dialogs
* Re-added support for key sizes greater than 56 bits
  - This application does NOT provide FULL support for generating keys
  - Instead, it USES the existing Java runtime, and thus this application alone
    does NOT deliver full support for cryptography and thus does not seem to be
    a breach of current US export restrictions on cryptography
  - Still, have sent 3 correspondences to BIS & NSA to make sure (no response),
    as am wanting to follow the rules as best I can


019 - June 17, 2009 - "Web Start" Release (SVN 238) - Brett Lee
* All dialogs should now be modal
* Executable Jar is now self-signed
* Class files are now obfuscated prior to signing
* PDS Logos appear in application and as a splash-screen icon during startup
  - Logos are the creation of Karen Kroll at Katnap Designs (karen@katnapdesigns.com)


018 - June 6, 2009 - Additional Functionality - Brett Lee
* Added CBC as the standard mode of encryption/decryption
* Added PKCS5Padding to all encryption/decryption operations
* Either of these render all files encrypted with previous releases
  incompatible with this release
  - Kinda harsh, but it needed to be done
  - Application is not in widespread use, so ...


017 - June 4, 2009 - Additional Functionality - Brett Lee
* Removed support for creating keys stronger than DES (56 bits)
  - See http://www.bis.doc.gov/encryption/default.htm
  - This will be changed once approval has been received
  - Pending review, all previous releases have been removed from distribution
* Added a check and notification of the JCE policy installed
  - Strong vs. Unlimited
  - Displayed in the title bar and key availability dialog
* Added support for AES 192/256 key creation if Unlimited policy in place
  - Currently disabled pending BIS review
* Added a dialog explaining key availability during key creation
* Changed the required passphrase length from 10 chars to 8 in all cases
* Removed the build # from the title bar


016 - May 27, 2009 - Additional Functionality - Brett Lee
* Added support for mandating more rigorous passphrases
  - 10 characters or more, upper and lower case, plus some other character.


015 - May 27, 2009 - Additional Functionality - Brett Lee
* Added support for Editing Cipher Key properties:
  - Support editing Cipher Key passphrase.
  - Support deleting a Cipher Key from a KeyStore.
  - Support for setting a Cipher Key to be the Default Key.


014 - May 22, 2009 - Additional Functionality - Brett Lee
* Added the ability to change a KeyStore passphrase
    ( A very risky operation, should backup the KeyStore first )


013 - May 21, 2009 - Additional Functionality + Bug Fix - Brett Lee
* Implemented the "Save As..." functionality while using the editor
* Consolidated two sections of code pertaining to saving dirty pages when
    closing a InternalFrame
* Stopped printing a debug message to the console during execution


012 - May 19, 2009 - Additional Functionality + Bug Fix - Brett Lee
* Added the ability to Cancel the closing of an editor window (JInternalFrame)
* Set the WAIT Cursor appropriately when encrypting files (i.e. close dialog,
    set cursor, encrypt...)


011 - May 18, 2009 - "Performance" Release - Additional Functionality 
                    + Performance + Bug Fix - Brett Lee
* Performance improvements in the I/O when encrypting and decrypting PDS files.
  - Many thanks to David Lee (dlee@calldei.com) for your EXPERT guidance on
     this topic.!
* Added support for a default key.  Used correctly, authentication prompts 
    limited to once per file.
* New file format supports the metadata first, increasing performance for
     initial authentication.
  - No effort was made to maintain backward compatibility for earlier releases.
* Removed some old (pre-CypherStream) code from the CryptoEngine methods.
* Added the "Close" option functionality for the File Menu drop-down.
  - Supports closing internal frames.
* Added checks for any unsaved changes when attempting to close the entire
    application.
* Bug fix: Resolved the long delay issue seen when opening files on NFS/Samba
    shares from Windows.
* Bug fix: Resolved the issue where a KeyStore could not have "#" in its path
     - Using a better regex.
* Bug fix: Save and Close options are now enabled when file is opened for edit.


010 - May 12, 2009 - "BSD" Release - Additional Functionality + Bug Fix - Brett Lee
* BSD License added to the source code and application.
* Multi-Document Architecture (MDA) now supported.
* Now using a stream cipher to support larger files:
  - Encryption of external files appears unlimited.
  - Native (editor) files limited by JVM memory (see "Troubleshooting").
* Added detection of any unsaved changes prior to closing each document.
* Added scrubbing of the clear text passphrases after the encryption/decryption
    processes.
  - See Bug list for remaining issue with Strings.
* All dialogs should now be modal.
* Added success / fail dialogs to indicate status after creating Keys and KeyStores.
* Added prompt before overwriting existing KeyStore with a new KeyStore.
  - Overwriting a Key was already being prompted.
* Added prompt before overwriting existing files during encryption/decryption.
* Added accelerator keys providing better ability to navigate the GUI via the keyboard
* Added ability to hit enter (as opposed to just spacebar) when button is focused
  - See: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4224702
* Short circuited code so that failed passphrases end traversal of the current path
* When a KeyStore is not found, a passphrase prompt is no longer issued for that KeyStore
* Added additional error handling and confirmation.
* Added appropriate filters to the file browser.
* Minor menu naming changes - functionality not affected.
* Tried to change all "Keystore" text to "KeyStore" for uniformity
  - Found the JRE uses "KeyStore" for classes and "Keystore" for exceptions
  - Thus, exceptions should be the exception to the rule
* Release notes updated with some material from PDS web pages.


009 - April 23, 2009 - "External Files" Release - Additional Functionality - Brett Lee
* Added support for the encryption of external files.
   - CryptoFile is now subclassed by CryptoFileNative and CryptoFileExternal.
* New encrypted files now have the extension (.PDS) added.
   - The extension is removed when decrypting the file.
* Select Key Dialog
   - Added a scrollbar to the "Select Key" dialog
   - Sized the JTable appropriately.
   - Removed the ability to edit the JTable contents.
* Added additional error handling and validation.
   - Validating the KeyStore.
   - Encryption and Decryption.
   - Prompts before overwriting (some still remain).
* Moved the "External Files" menu item from the Tools to the Files section.


008 - April 3, 2009 - "USB/CDROM" Release - Additional Functionality - Brett Lee
* Added support for external USB's that render existing filenames in an upper
   case 8.3 format.
   - A known example is where the USB port is on a USB CDROM.


007 - March 28, 2009 - "David" Release - Additional Functionality - Brett Lee
* Changed some dialog buttons from "Close" to "Cancel"
* Implemented the ability to cancel along the "Create File" trail of dialogs
* Implemented a system check at startup to initialize mydata/mykeys directories
   - Removed the directories from the release
* Updated the runtime so that the JAR no longer needs to be started from a script
   - It can now be executed from anywhere (e.g. `java -jar /path/to/pds.jar`)
   - Removed the startup scripts from the release
* KeyStores (keys) are now able to be located anywhere
* Cross platform support now realized, tested on Red Hat and Windows XP
   - Create on one, read on the other
* Help -> Contents is now much shorter and refers to a page on the Internet

** In terms of improvement, this release is a significant milestone.
   - All previous releases are being obliterated.
   - Many thanks for your advice, suggestions and guidance David (dlee@calldei.com).


006 - March 24, 2009 - Additional Functionality - Brett Lee
* Added confirmation prompts prior to overwriting existing Files, Keys or KeyStores


005 - March 23, 2009 - Additional Functionality - Brett Lee
* Added some checks of the input when creating new files, keys and KeyStores
* Added confirmation passphrases when creating new keys and KeyStores


004 - March 16, 2009 - Initial Public "Offering"- Brett Lee
* Changed the Logo and Application Name to support a wider distribution


003 - February 30, 2009 - "OO" Build - Limited Distribution - Brett Lee
* Incorporated OO Design
   - Came up with UML and Objects / Methods
   - Reworked existing functionality to be OO


002 - February 24, 2009 - Additional Functionality - Limited Distribution - Brett Lee
* Minor enhancements


001 - February 23, 2009 - Initial Build - Limited Distribution - Brett Lee
* Proof of concept
   - Ability to Encrypt and Encode to storage
   - Ability to Decode and Decrypt from storage