| 
<?php
/**
 * Case use of gnuPG class.
 *
 * @author    Enrique Garcia Molina <[email protected]>
 * @copyright (c) 2004-2005 EGM :: Ingenieria sin fronteras
 * @since     Viernes, Enero 30, 2004
 * @license   GNU LGPL (http://www.gnu.org/copyleft/lesser.html)
 * @version   $Id: gnuPG_example.php,v 1.0.7 2005-04-24 07:18:00-05 egarcia Exp $
 */
 
 require('gnuPG_class.inc');
 
 // create the instance, giving the program path and home directory
 $gpg = new gnuPG('C:\gnupg\gpg', 'C:\gnupg');
 
 // get the keys in the keyring
 $Keys = $gpg->ListKeys('public');
 if (is_array($Keys)) {
 // show all the keys
 print_r($Keys);
 
 // export the first key in the keyring
 $PublicBlock = $gpg->Export($Keys[0]['KeyID']);
 if ($PublicBlock) {
 // show the key exported
 echo "The KEY BLOCK for {$Keys[0]['UserID']} is:\n\n";
 echo $PublicBlock . "\n";
 } else
 echo $gpg->error . "\n";
 } else
 echo $gpg->error . "\n";
 
 // import a dummy key
 $PublicBlock = "-----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: GnuPG v1.2.4 (MingW32)
 
 mQGiBEDkScoRBACQtBkECbyk7zujxRTnGGh0QtdM3lxRTU5gkCf20PT6mMCnY/9t
 nuCd1+eD7YEeu5hi/PAkhDr2mLSm1k3HnDofHMSK7YXL8wbiAS0+31YCoBQfKpvs
 i+PDxglOkey243zTOxdqHUV7JZXouxeFnwGH7to01wCNmOyOx/fYQ3NrzwCgxsvU
 Om15U9tsHvhy4jhFCE7x11ED/iua9KxoHIWFFKwEt61PW91cqpwJfwuHXKSN154R
 rvt5UAp0HI95J1iHA1VrKaOPpAn579PdQVlgHoDRZJquTnKFrV/lzRdxTXwEUJtC
 8NJAWL/xSMtK4LoGzFIz4fO11HPE0Zuo+BNIE3DdZ0/XwTjM+EG+lExFHFlhRAUo
 TpTyA/48aPgK0V8tuCL1kpUF5JHIdlynJA6fcJUKSN3D9T/siw4UEIxVBKWGtFN1
 8KwNVrCWB2Q9IinUyyVhVGo4dlOg1ubqHuD7p+IoWTKVpnKN5HBsOXetx6ecsXVl
 D4esOk4IhSZ0ffaYbt79x/SCMwF4CfJaJmTkIW2L1Gy6AGb5XrQwVGVzdCBLZXkg
 KFRoaXMgaXMgYSBkdW1teSBrZXkpIDx1c2VyQGRvbWFpbi5jb20+iFsEExECABsF
 AkDkScoGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQZAhJLLeuBVSYYQCdHPB2qIup
 +U8HwRvBPHgznNahRYsAmwdrxPsL8KKm99sksSMtkKzKqNwAuQENBEDkScsQBACC
 kbHg0svEJPChJCV1+EZFbBeL6Y+wBD3HBHK0jKjzRkdF1slcWa2y29yL0/4cdo+4
 jXxdLWCiSR2RvFr0ti8LqlzLvApKPtlOhVB81eDewFxPanpTAaVYfDn+Rm54kixI
 3mu3XEkT9yfWgLUgbQugiboT+HjfiLke3cOant2OnwADBQP+PbSkU+37jpK80EGM
 OQ0mLFIU0xzJRccaHqflR9pwfaapC+CeMlJmqt4ut3Gfi+U+VoceZzdOv/GQm3vJ
 rzYcHkHzQdDW4CDMlyMh9HXg1udShY8QNEBXwWpr+FdkNd4loOOwOqG1P8iQGDRi
 LIZs/wx6oNCu7qDFdNAwVfJyNV6IRgQYEQIABgUCQORJywAKCRBkCEkst64FVGzT
 AJ9xbE3mbE8fTdXAjBSya8aTsvSolwCffsjbB28c+M2epSVaZtVA/qRwdrs=
 =BfWQ
 -----END PGP PUBLIC KEY BLOCK-----";
 $Imported_Keys = $gpg->Import($PublicBlock);
 if ($Imported_Keys) {
 // show each of the imported keys
 foreach($Imported_Keys as $KeyID) {
 echo "The key {$KeyID['KeyID']}, {$KeyID['UserID']} was sucessfuly imported!!!\n";
 }
 } else
 echo $gpg->error . "\n";
 
 // generate a new key with out expiration
 $GeneratedKey = $gpg->GenKey('Test Key', 'This is a dummy key', '[email protected]', '123456');
 if ($GeneratedKey) {
 if ($GeneratedKey === true) {
 // get the all keys
 $Keys = $gpg->ListKeys('public');
 
 // the last key is the generated key
 $i = count($Keys) - 1;
 $GeneratedKey = $Keys[$i]['KeyID'];
 echo "The new key was created with KeyID = $GeneratedKey!!!\n";
 } else
 echo "The new key was created with Fingerprint = $GeneratedKey!!!\n";
 
 // use the last key to sign the imported keys
 if ($Imported_Keys) {
 foreach($Imported_Keys as $KeyID) {
 if ($gpg->SignKey($GeneratedKey, '123456', $KeyID['KeyID'], 3))
 echo "The Key {$KeyID['KeyID']} was sucessfuly signed by $GeneratedKey!!!\n";
 else
 echo $gpg->error . "\n";
 }
 }
 
 // use the last key to encrypt
 $PublicBlock = $gpg->Encrypt($GeneratedKey, '123456', $GeneratedKey, 'This is a success test!!!');
 if ($PublicBlock) {
 // show the encrypted text
 echo "The ENCRYPTED TEXT BLOCK is:\n\n";
 echo $PublicBlock . "\n";
 
 // now shows the decrypted text
 $PublicBlock = $gpg->Decrypt($GeneratedKey, '123456', $PublicBlock);
 if ($PublicBlock) {
 echo "The DECRYPTED TEXT is:\n\n";
 echo $PublicBlock . "\n";
 } else
 echo $gpg->error . "\n";
 } else
 echo $gpg->error . "\n";
 } else
 echo $gpg->error . "\n";
 
 //
 // CLEAN PROCESS
 //
 // now delete the imported keys
 if ($Imported_Keys) {
 foreach($Imported_Keys as $KeyID) {
 if ($gpg->DeleteKey($KeyID['KeyID']) === true)
 echo "The imported key {$KeyID['KeyID']} was deleted from the keyring\n";
 else
 echo $gpg->error . "\n";
 }
 }
 
 // now delete the generated key
 if ($GeneratedKey) {
 if ($gpg->DeleteKey($GeneratedKey, 'secret') === true) {
 echo "The secret key for $GeneratedKey was deleted from the keyring\n";
 if ($gpg->DeleteKey($GeneratedKey) === true)
 echo "The public key for $GeneratedKey was deleted from the keyring\n";
 else
 echo $gpg->error . "\n";
 } else
 echo $gpg->error . "\n";
 }
 
 ?>
 |