Examples

The following examples assume you have created a key following the instructions for generating a key that can both encrypt and sign data. The example key has a user id of test@example.com and a passphrase of test. All signature data is fictitious, but is formatted like real signature data.

Signing a Package File

<?php
require_once 'Crypt/GPG.php';

$gpg = new Crypt_GPG();
$gpg->addSignKey('test@example.com''test');
$signature $gpg->signFile($filenameCrypt_GPG::SIGN_MODE_DETACHED);

echo 
"Package signature is: "$signature"\n";
?>

Verifying a Signed File

<?php
require_once 'Crypt/GPG.php';

$signature = <<<DATA
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQBIl9Tf6ZWCktsVoskRAoAKAJ9VkbFDTSGY2ygaEGBcMOE8Or9puwCgppYm
0qq0bhtw5vsi0cJF5oC52RY=
=VfxI
-----END PGP SIGNATURE-----
DATA;

$gpg        = new Crypt_GPG();
$signatures $gpg->verifyFile($filename$signature);

if (
$signatures[0]->isValid()) {
     echo 
"Package is valid.\n";
} else {
     echo 
"Package is invalid!\n";
}
?>

Encrypting a File From the Web

<?php

require_once 'Crypt/GPG.php';

$gpg = new Crypt_GPG();
$gpg->addEncryptKey('test@example.com');
// you can use any fopen-able stream
$gpg->encryptFile('http://example.com/file.html''~/file.html.asc');
?>

Encrypting Credit Card Numbers

<?php
require_once 'Crypt/GPG.php';

// ... connect to database ...

$card_number '411111111111';
$card_type   'visa';

$gpg = new Crypt_GPG();
$gpg->addEncryptKey('test@example.com');
$encrypted $gpg->encrypt($card_number);

$sql sprintf('insert into payments (card_type, card_number) ' .
               
'values (%s, %s)',
               
mysql_real_escape_string($card_type),
               
mysql_real_escape_string($encrypted));

mysql_exec($sql);
?>

Decrypting Credit Card Numbers

<?php
require_once 'Crypt/GPG.php';

// ... connect to database ...

$gpg = new Crypt_GPG();
$gpg->addDecryptKey('test@example.com''test');

$sql 'select card_type, card_number from payments';
$rs  mysql_query($sql);
while (
$row mysql_fetch_object($rs)) {
    echo 
"Card type:   "$row->card_type"\n";
    echo 
"Card number: "$gpg->decrypt($row->card_number), "\n";
}
?>

Publishing a Public Key

<?php
require_once 'Crypt/GPG.php';

$gpg = new Crypt_GPG();
echo 
"My public key is: "$gpg->exportPublicKey('test@example.com'), "\n";
echo 
"My key fingerprint is: ",
     
$gpg->getFingerprint('test@example.com'Crypt_GPG::FORMAT_CANONICAL), "\n";
?>

Clearsigning a Message

<?php
require_once 'Crypt/GPG.php';

$data 'Hello, World!';

$gpg = new Crypt_GPG();
$gpg->addSignKey('test@example.com''test');
$signedData $gpg->sign($dataCrypt_GPG::SIGN_MODE_CLEAR);

echo 
"Clearsigned message is: "$signedData"\n";
?>

Verifying a Clearsigned Message

<?php
require_once 'Crypt/GPG.php';

$signedData = <<<DATA
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello, World!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFIl9Sb6ZWCktsVoskRArWDAJ9D5mq6p+4JnBy11OaAhnIA+uRSSACgoM5T
WcUHQ9pKf9PvNUn1Izy6c9E=
=k8+7
-----END PGP SIGNATURE-----
DATA;

$gpg        = new Crypt_GPG();
$signatures $gpg->verify($signedData);

if (
$signatures[0]->isValid()) {
     echo 
"Message is valid.\n";
} else {
     echo 
"Message is invalid!\n";
}
?>
    Поддержать сайт на родительском проекте КГБ