RELEASE.NOTES

Professional Data Security (PDS)
Copyright (c) 2009-2011, 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.  Upgrading to a New Release
4.  Internals
5.  Troubleshooting
6.  Bugs / Known Issues
7.  RFE / Suggested Enhancements
8.  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:
--------------------
  First, extract the ZIP file to disk.  Then:

  * If you are using a 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 is associated with .jar files.
    Another option is to select the Jar file and choose the "run with"
    option and select Java.

  * If you are using a CLI:
    Unix:       nohup java -jar path/to/file/pds.jar &
    Windows:    javaw -jar  path/to/file/pds.jar
    Debug Mode (either): java -jar path/to/file/pds.jar

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, clicking the link should install
  PDS to your system, providing such things as a Desktop shortcut and 
  control of the application via the Control Panel.

When first started, the application creates 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.  Without
that directory structure in place, this application may not function as
desired.  Using the Tools->Options menu item, you may configure alternate
default locations.

For more instructions click:  Help -> Contents
or visit:  http://crypto.brettlee.com




3. Upgrading to a New Release
=================================

Zip file:
--------------------
  Download the ZIP file and extract the contents.  Copy the file "pds.jar"
  to the directory containing the current pds.jar.  Start the application.


Java Web Start:
--------------------
  If you installed using the option to check for updates, the PDS will
  prompt to install any new releases when they are available.  If you chose
  the option to install a specific release, return to crypto.brettlee.com
  and repeat that option using the desired release.




4. Internals
=================================

Saved State:
---------------------

State is saved in the file pdsState.serObj.  When the application starts,
it will attempt to load state from the previous run.  The application will
load the default directories for both PDS files and KeyStores as well as
the KeyStore Pearch Path (KSP).

If a valid state file is not found in the expected location, the file will
be searched for in the location where it was kept prior to ver 1.0b8, and
if found will be copied to the current default location.

If the application is still not able to load state, such as the first time
the application starts, a new state file will be created.  The new state file
will contain the default set of paths for PDS files, KeyStores and the KSP.

As of ver 1.0beta8, the default paths and directories are:

	{run-time-dir}/pdsState.obj
	{run-time-dir}/pdsData/mykeys	(for KeyStores and Keys)
	{run-time-dir}/pdsData/myfiles	(for data files)

Prior to this, stateFile.obj was stored in the "mydata" directory relative
to the run-time path (path to pds.jar), such as:

	{run-time-dir}/mydata/pdsState.obj
	{run-time-dir}/mydata/mykeys	(directory for KeyStores and Keys)
	{run-time-dir}/mydata/myfiles	(directory for data files)

PDS has long provided the ability to redefine the default file and Keystore
directories, thus eliminating the need for the "mykeys" and "myfiles"
directories.  As of ver 1.0beta8, the "mydata" and/or "pdsData" directories
are no longer required either.

Lastly, if the run-time path cannot be determined, as is the case when the
application is installed using Java Web Start, then the run-time path is
defined as the users home directory.


Encrypted Files and Keystores:
----------------------------------

Encrypted files may be created, copied or moved anywhere.  Access to
a file is always governed by access to the Key in the KeyStore.  When
a file is opened, the KeyStore is searched for in the last known location.
If not found there, a search is conducted in every directory in the KeyStore
search Path (KSP).  If a suitable candidate is not found, then the user is
prompted to browse to the current location of the KeyStore.  The configurable
KeyStore search path contains the path to the default KeyStore directory as
well as any other directories that have been configured.  This configuration
option may be found in Tools->Options.


Tape Drives and Raw Devices
----------------------------------

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




5. Troubleshooting: 
=================================

General:
---------------------
Typically errors are captured and a dialog is displayed, however, some errors
messages are only sent to the console.  To capture these, start the application
from the CLI.


Memory:
---------------------
** Note:  This section does not apply to external files.  Those
          routines use a very small memory footprint and are capable
          of encrypting files of *unlimited* size.

When *editing* large files (> 10 MB) the Java VM (JVM) may run out of
memory (OOM).  This is due to JVM limitations on the heap size.

To increase with the amount of heap that the JVM may use, adjust the
initial and maximum heap size using a variant of these parameters:

	-Xmn16m     (set the initial heap size to 16 MB)
	-Xmx256m    (set the maximum heap size to 256 MB)

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

	java -jar -Xmn16m -Xmx256m pds.jar

Obviously, the values you use will depend upon your system and this
approach will only get you so far; beyond that is really beyond the scope
of this application.  If there is a need to edit very large files,
simply create them in your favorite editor and then encrypt them using
PDS as external files.


For more information click:  Help -> Contents
or visit:  http://crypto.brettlee.com




6. Bugs / Known Issues:
=================================

Threads - Encryption / decryption of external files and directories:
 * Tracking of threads implementation is incomplete.
   - Beginning with the 1.x releases, support was added for multiple 
     simultaneous threads of execution (encryption/decryption).
     Although the thread reports pass/fail status, the regulation of
     these threads is insufficient.  For example, a user is unable to 
     cancel a thread.
   - Each thread is assigned a unique ID.  A vector (see StateObject) 
     exists to collect completion status, exceptions, and whether the thread
     was canceled by ID.  Threads currently do not report this these data.
   - Need an implementation to cancel external file encryption threads.

Progress Bar:
 * Progress bar is not always visible - can lead to confusion.
   - The progress bar monitors the input stream.  Only when a large file is
     being read does the algorithm display the progress bar.  When
     encrypting/decrypting a directory with many small files the progress
     bar may never show, or show for a small while when it hits a large file.
     This causes confusion as to whether the thread is executing or has gone
     off in the weeds.  A better approach is needed.
   - When reading from tape, the Java SE algorithm for displaying the 
     progress bar *never* results in the bar being displayed.

Usability:
 * Horizontal scroll bar does not contract as expected.
   - Widening and then contracting a Internal Frame causes the horizontal
     scroll bar to unnecessarily appear at the bottom of the frame.

Restore a Single File from Tape:
 * Restore a file from tape does not restore to the file name.
   - When writing a single file to tape, the name of the file is not
     captured.  As a workaround, when the file is restored it is named
     "_Restored."
   - When writing a directory to tape, the data is embedded in a ZIP file,
     thus providing the metadata (name, etc.) about each file.  The ZIP
     format (or equivalent) should also be used for writing a single file
     to tape so that the correct name is available to the application when
     restoring the file.
   - Solution would be to encrypt a single file as is done with a directory,
     using the ZIP protocol, thus also adding support for compression.
 *** Workaround is to put the file in a directory and encrypt the directory.




7. RFE / Suggested Enhancements:
=================================

Usability:
 * The application should fully support "clicking" on a PDS file.
   - In a supported environment using the JNLP install, the .PDS file
     extension is registered and PDS is started when a .PDS file is
     executed.  At this point, PDS should begin the process to decrypt
     the file and prompt for authentication.

New Functionality:
 * Add the ability to select multiple files for Encryption & Decryption.
   - Provide option to encrypt multiple files to a single file.
   - Provide option to encrypt multiple files to separate files.
 * Add a safe "View-only" interface to a KeyStore.
   - For now, use Edit->Key, Select KeyStore
 * Display cipher details for keys.
     In the File->Edit->Key dialog, provide the ability to 2x-click one of
     the Key Aliases listed in the table.  After authentication, the Cipher
     (type, bits) for that (or maybe all keys that use the same auth?)
     would be displayed.
 * Support for optional cryptographic providers (e.g. Bouncy Castle).
 * Add the ability to Transfer Cipher Keys between KeyStores.
   - For now, use the import/export functionality that "keytool" provides.
 * Provide support to select the type of padding used when creating a cipher.

Security: (none seem necessary)
 * PDS does not scrubbed all data from RAM after use.
    - Plaintext is rendered via a Java Document object.  The Document gets
      data via (immutable) Strings.  Encryption + Strings == Gasp!
    - Modern Operating Systems scrub memory before re-allocating it, but
      RAM could be dumped to disk in various ways.  Need trust in the admin.
 * Support for a user-provided or random Initialization Vector (IV).
    - PDS generates ciphers using one static initialization vector.  While
      this is sufficient, there are known weaknesses with this approach.
 * Support for AES Key Wrap
    - Encryption keys never leave the application, thus why Wrap?

Public Key Infrastructure (PKI):
 * Generating and storing PKI ciphers and 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.

Other:
 * Validate all ciphers before attempting to instantiate them.
   - Given the Algorithm/Strength/Padding combinations possible, it would
     be nice to validate that the system support them (e.g. DES/112/CBC).
   - This is done for AES key *sizes* over 128.
 * Support for a debug parameter.
   - Provide support for a "--debug" argument to enable console output of
     the "echo|printf|system-out" lines (in addition to Eclipse/breakpoints).
 * Have Base64 encoded files break at 80 characters per line.
   - This was supported in earlier releases (see 0.020.03, SVN 283).
   - May have changed when support for raw devices was added.  Seems like
     writing "to tape" did not work with the break at 80 char.
   - Should be possible to add a flag to distinguish between raw vs. file.




8. Change Log:
=================================
2.0 beta 1 - December 14, 2011 - (SVN 996)
* Minor enhancements.

2.0 pre 0.4 - February 2, 2011 - (SVN 730)
* Added support for formatted text via a StyledDocument.
  !! Documents opened with v2 cannot be opened by v1 versions. !!
* Minor bug fixes and enhancements.

1.0 - January 13, 2011 - (SVN 669) - Brett Lee
* Minor enhancements.


1.0 beta 9.0 - January 9, 2011 - (SVN 657) - Brett Lee
* Refactoring, bug fixes & minor enhancements.


1.0 beta 8.4 - December 31, 2010 - (SVN 622) - Brett Lee
* Jar is "finally" signed with the final self-certified key.  Trust no other. :)
1.0 beta 8.3 - December 30, 2010 - (SVN 618) - Brett Lee
1.0 beta 8.2 - December 29, 2010 - (SVN 611) - Brett Lee
1.0 beta 8.1 - December 23, 2010 - (SVN 588) - Brett Lee
1.0 beta 8 - December 22, 2010 - "Lunar Eclipse" Release - (SVN 587) - Brett Lee
* Bug fixes - see Subversion logs.
* Dialog "Create New Encryption Key" defaults to AES-128.
* Pressing  after typing in the confirmation passphrase now submits.
* Dependency on the original "mydata" directory structure is now eliminated.
  For thumb drive installations, PDS state is now saved in the same directory
  as the JAR; for JNLP/JWS installations, PDS state is now saved in the
  users home directory.  See Known Issues above.
* KeyStore in Search Path now selectable by double-click.
* File choosers have more appropriate titles and buttons.
* File viewer and editor panes now titled with full path to open file.
* Confirmation dialog shown after saving a file now contains the full path
  to the file.
* When the application initializes on the "first run", a dialog shows the
  initialized status and default locations of files and KeyStores.
* When unsaved changes exist in the Options dialog (KSP) and another tab
  is selected, a confirmation/warning dialog is displayed.
* The PDS icon is now packaged with the zip release.


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


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 Subversion 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 (SVN 225) - 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 (SVN 224) - 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 (SVN 222) - 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 (SVN 215) - 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 (SVN 209) - 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 (SVN 209) - 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 (SVN 203) - 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 (SVN 196) - 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 (SVN 194) - 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 (SVN 176) - 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" (SVN 153) - 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