Location: PHPKode > scripts > gnuPG class > gnupg-class/gnuPG_example.php
<?php
/**
 * Case use of gnuPG class.
 *
 * @author    Enrique Garcia Molina <hide@address.com>
 * @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', 'hide@address.com', '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";
}

?>
Return current item: gnuPG class