. * *************************************************************/ // before anything else, check that data has arrived here via HTTPS if ($_SERVER['HTTPS'] != "on") { die ("Use a secure HTTPS connection to the server. Aborting ..."); } if (strtoupper($_SERVER['REQUEST_METHOD']) != "POST") { //check if there is a query string, then abort. if (count($_GET) != 0){ die ("Always use POST to prevent recording of query strings. Aborting ..."); } } if (! is_file("gpgconfig.php")){ die ("Config file does not exist."); } require_once('gpgconfig.php'); if (! is_dir($GPGDIR)){ die ("GPG directory $GPGDIR does not exist."); } else { $ERRORFILE = $GPGDIR."/gpgerrors"; } if (! isset($PLAINRETURN)){ $PLAINRETURN = "no"; } if (isset($_REQUEST[$DECRYPTIONTEXTAREA])) { $TEXT = $_REQUEST[$DECRYPTIONTEXTAREA]; $TEXT = addslashes($TEXT); } if (isset($_REQUEST['secret'])) { $SECRET = $_REQUEST['secret']; } if (! isset($KEYSELECTION)){ $KEYSELECTION = "no"; } if (! isset($DECRYPTIONIFRAMENUMBER)){ $DECRYPTIONIFRAMENUMBER = 0; } if (isset($_REQUEST['decryptionkey'])){ $DECRYPTIONKEY = $_REQUEST['decryptionkey']; } echo "\n"; echo "
\n"; if (isset($TEXT) && isset($SECRET)) { // perform decryption if (strlen($SECRET) > 0) { $ERRORFILE = $GPGDIR."/error"; unix("rm ".$ERRORFILE); echo "

Decryption

\n"; $ENC ="echo \"".$TEXT."\" | /usr/bin/gpg --homedir ".$GPGDIR." --require-secmem --batch --no-tty --yes --logger-file ".$ERRORFILE." --passphrase ".$SECRET." --output - --decrypt" ; $RESULT = unix($ENC); $ERRORS = unix("cat ".$ERRORFILE); echo "\n"; // check if decryption is successful $ERR1 = strpos($RESULT,'No such file or directory'); $ERR2 = strpos($RESULT,'no valid OpenPGP data found'); if (($ERR1 === false) && ($ERR2 === false) && (strlen($RESULT) > 0 )){ echo "

Clear Text

"; echo "\n
\n"; echo "

\n"; echo "    \n\n"; } else { echo "

Decryption failed.

"; echo "
\n"; } } else { echo "

Please enter a passphrase.

"; echo "

\n"; } } else { // prompt for a passphrase echo "

Decryption

\n"; echo "

Available secret keys

\n"; $Keys = unix("/usr/bin/gpg --homedir $GPGDIR --list-secret-keys --fingerprint"); $List = explode ("\n", $Keys); if (count($List) < 2 ) { die ("

No keys available. Aborting ...

"); } echo "\n"; $START = 0; foreach ($List as $Line){ $START += 1; if (substr_count($Line, "sec ") == 1) { $START = 0; $SEC = $Line; } if ( $START == 1) { $FP = substr($Line,24); } if ( $START == 2) { $UID = htmlentities(substr($Line,4)); } if ( $START == 3) { $SUB = $Line; echo ""; echo "\n"; echo "\n"; } } echo "
".$SEC."
".$SUB."
".$UID."
\n"; echo "
\n"; echo "\n"; if (! isset($_REQUEST['secret'])) { echo ""; echo "\n"; } else { echo "\n"; } echo "\n"; echo "\n"; echo "
Passphrase
\n
"; echo "    \n"; echo "
\n"; echo "
\n"; } echo "
\n"; ?>