/****************************************************/
/* $Id: TODO,v 1.15 2003/04/02 15:36:55 brian Exp $ */
/****************************************************/

This file will keep the current TODO list of the GPG development team.

If you want to sign up to take care of something, please contact the development 
team at gpg@braverock.com.

There is also a Known Problems Section below, update this as necessary.

If you want to add something to the TODO list, please feel free to do so by 
adding an enhancement request to the GPG Plugin Bugzilla.

The official repository for enhancements to the GPG Plugin is at:

http://www.braverock.com/bugzilla/

/***************************************************/
To Do:
	
 	- generating keys on the server
 		function prototype complete, needs testing and integration
 		What potential problems are there with allowing this functionality?
 
 	- create 'Encrypt & Sign Now' button
 		- will need to collect passphrase
 		- will require changes to the gpg_encrypt function 
 		  to accept passphrase and sign flag
 
	- check for https connection before passing sensitive data
		- function created, needs integrating
		- integrated for decryption
		- should be integrated for signing.
		
	- Encrypt attachments, or pass the attachment path through
		(need to add warnings (first), 
		 or encrypt the attachment as well (eventually))

 	- keyring management
 		- list keys on your keyring
 		- sign keys with your private key(s)
 		- disable or remove keys from your keyring
 		- upload keys (w/ signatures) to a keyserver

	- Temporary files
		- add temp file setup to gpg_config.php
			test for various dirs and env variables
			(write) and read a small test file
			set a gpg plugin variable for the temp dir
		- create a maketempfile function in gpg_functions.php
			return the file pointer
		- create a deletetempfile function in the gpg_functions file
			overwrite the file with random noise, or zeros
			delete the file
			return 0/OK or an error

  	- modify encrypt, sign, decrypt functions to use popen instead of exec.
 		- use unidirectional syntax, with workarounds from
 		  http://www.php.net/manual/en/function.popen.php
 
	- Security - register globals and extract ($_POST)
		Our code runs properly with register_globals set to off, 
		but should we forcibly unregister the globals?
		
		The Evils of Register Globals
		When register globals is switched on, any values the
		user sends are automatically converted into a variable.
		The three primary sources of these variables are forms
		the user fills in, variables added onto the end of the URL
		(like in the example above) and cookies that your
		scripts have set.
		<...>
		Unregister the Globals
		As we cannot reliably stop global variables from
		being set, the most direct option is to unset them
		again. The code to unset all global variables is just a
		simple loop, as shown below.
		foreach ( $GLOBALS as $key => $value ) {
		if ( $key != GLOBALS && $key != key
		&& $key != value ) {
		unset ( $GLOBALS [ $key ] );
		}
		}
		unset ( $key, $value );
		Source: php|architect Jan 2003
		
		do we need to take out all of the 'extract ($_POST);'
		commands and only extract the variables we want from the 
		POST in our initialization functions?
		
		- Review and update form code to extract only variables
		  that are used from the POST, to avoid attack potential.
		- Make sure we initialize any potentially dangerous code 
		  before using it.  Load from preferences, initialize empty, etc.


	- add mime parts headers to encrypted message to be compliant with 
		RFC 3156
		RFC 2440
		this is a long term option, not on the first (several) releases

	- allow automatic keyserver lookup of public keys? (Y/N)
		this is a long term option, not on the first (several) releases
   
	- add ability to use cgiwrap or similar 
		to enable storing keyrings in user home directory or 
			to use same keyring for shell and SM
		this is a long term option, not on the first (several) releases

	- localization for translations utilizing SM core functions
		this is a long term option, not on the first (several) releases
		
	- convert code base to use classes instead of just functions
		this is a long term option, not on the first (several) releases



/***************************************************/
Known problems:
  - may not encrypt to a gpg key if there is no uid
	- key import warns of keys without valid uid's

  - does not encrypt attachments (see above)

  - Netscape 4
     	Send, Drafts, and Sign buttons are broken 
  	   after successful encrypt.
  	NS 4.x did not implement the modern DOM
  	Solution: upgrade to a modern browser.
  	

/***************************************************/
/*
 * $Log: TODO,v $
 * Revision 1.15  2003/04/02 15:36:55  brian
 * - update to reflect current
 * - Spell Check
 *
 * Revision 1.14  2003/03/17 18:39:54  Brian
 * Updated to reflect current.
 *
 * Revision 1.13  2003/03/13 19:30:26  Brian
 * updated TODO
 *
 * Revision 1.12  2003/03/12 16:25:15  Brian
 * - updated to reflect current status.
 * - removed completed items
 * - updated known problems with Netscape 4 dynamic HTML issue
 *
 * Revision 1.11  2003/03/07 18:23:54  Brian
 * Updated to reflect current status
 *
 * Revision 1.10  2003/02/22 20:21:15  Brian
 * Updated to reflect current status, moved incomplete short term options to top of list, complete to middle, and long term incomplete to bottom, for readability.
 *
 * Revision 1.9  2003/01/27 16:38:52  Brian
 * Updated to reflect current progress on preferences and add security-related items about extract _post
 * 
 * Revision 1.8  2003/01/22 23:07:10  Brian
 * Added details on trusted_key_id, list_keys, and default_key
 * 
 * Revision 1.7  2003/01/14 17:36:59  Brian
 * Updated items with complete, added decryption and keyring management items, spell check
 * 
 * Revision 1.6  2002/12/09 04:13:28  Brian
 * updated to reflect 8 Dec progress
 * 
 * Revision 1.5  2002/12/06 20:01:50  Vinay
 * test CVS
 * 
 * Revision 1.4  2002/12/06 02:41:08  Brian
 * updated to reflect 5 Dec 2002 progress
 * 
 * Revision 1.3  2002/12/05 19:14:55  Brian
 * added ID and Log tags 
 */
/***************************************************/

