Crypt_GPG
[ class tree: Crypt_GPG ] [ index: Crypt_GPG ] [ all elements ]

Class: Crypt_GPG_Driver_Php

Source Location: /Crypt_GPG-0.3.10/GPG/Driver/Php.php

Class Overview

Crypt_GPG
   |
   --Crypt_GPG_Driver_Php

Native PHP Crypt_GPG driver


Author(s):

Copyright:

  • 2005-2007 silverorange

Variables

Methods


Inherited Variables

Inherited Methods

Class: Crypt_GPG

Crypt_GPG::__construct()
Creates a new Crypt_GPG object
Crypt_GPG::decrypt()
Decrypts string data using the given passphrase
Crypt_GPG::deletePrivateKey()
Deletes a private key from the keyring
Crypt_GPG::deletePublicKey()
Deletes a public key from the keyring
Crypt_GPG::encrypt()
Encrypts string data
Crypt_GPG::factory()
Static factory method to create a new GPG object using the specified backend driver
Crypt_GPG::getPrivateFingerprint()
Gets a private key fingerprint from the keyring
Crypt_GPG::getPrivateKeys()
Gets the available private keys in the keyring
Crypt_GPG::getPublicFingerprint()
Gets a public key fingerprint from the keyring
Crypt_GPG::getPublicKeys()
Gets the available public keys in the keyring
Crypt_GPG::importKey()
Imports a public or private key into the keyring
Crypt_GPG::sign()
Signs data using the given key and passphrase
Crypt_GPG::verify()
Verifies signed data

Class Details

[line 81]
Native PHP Crypt_GPG driver

This driver uses PHP's native process control functions to directly control the GPG process. The GPG executable is required to be on the system.

NOTE: Methods that require passphrases will not work on operating systems (such as Windows) that do not support passing data to file descriptors above number 2. If you run into this problem, you will get an error saying "gpg: failed to translate osfhandle 00000004"



[ Top ]


Class Variables

$debug =  false

[line 134]

Whether or not to use debugging mode

When set to true, every GPG command is echoed before it is run. Sensitive data is always handled using pipes and is not specified as part of the command. As a result, sensitive data is never displayed when debug is enabled. Sensitive data includes private key data and passphrases.

Debugging is off by default.

  • Access: public

Type:   boolean


[ Top ]



Method Detail

__construct (Constructor)   [line 239]

Crypt_GPG_Driver_Php __construct( [array $options = array()])

Creates a new GPG object that uses PHP's native process manipulation functions to control the GPG process

Developers are encouraged to use the Crypt_GPG::factory() method to instantiate this class.

Available options for this driver are:

  • string homedir: The directory where the GPG keyring files are stored. If not specified, GPG uses the default of $HOME/.gnupg, where $HOME is the present user's home directory. This option only needs to be specified when $HOME/.gnupg is inappropriate.
  • string gpg_binary: The location of the GPG binary. If not specified, defaults to '/usr/bin/gpg'.

  • Access: public

Overrides Crypt_GPG::__construct() (Creates a new Crypt_GPG object)

Parameters:

array   $options   —  optional. An array of options used to create the GPG object. All options must be optional and are represented as key-value pairs.

[ Top ]

__destruct (Destructor)   [line 263]

void __destruct( )

Closes open GPG subprocesses when this object is destroyed

Subprocesses should never be left open by this class unless there is an unknown error and unexpected script termination occurs.

  • Access: public

[ Top ]

decrypt   [line 743]

string decrypt( string $encrypted_data, string $passphrase)

Decrypts string data using the given passphrase

This method assumes the required private key is available in the keyring and throws an exception if the private key is not available. To add a private key to the keyring, use the Crypt_GPG::importKey() method.

Calls GPG with the --decrypt command and passes the passphrase and encrypted data.

  • Return: the decrypted data.
  • Throws: Crypt_GPG_KeyNotFoundException if the private key needed to decrypt the data is not in the user's keyring.
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Throws: Crypt_GPG_NoDataException if specified data does not contain GPG encrypted data.
  • Throws: Crypt_GPG_BadPassphraseException if specified passphrase is incorrect or if no passphrase is specified.
  • Access: public

Overrides Crypt_GPG::decrypt() (Decrypts string data using the given passphrase)

Parameters:

string   $encrypted_data   —  the data to be decrypted.
string   $passphrase   —  the passphrase of the private key used to encrypt the data.

[ Top ]

deletePrivateKey   [line 404]

void deletePrivateKey( string $key_id)

Deletes a private key from the keyring

If more than one key fingerprint is avaliable for the specified $key_id (for example, if you use a non-unique uid) only the first private key is deleted.

Calls GPG with the --delete-secret-key option.

  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Throws: Crypt_GPG_KeyNotFoundException if a private key with the given $key_id is not found.
  • Access: public

Overrides Crypt_GPG::deletePrivateKey() (Deletes a private key from the keyring)

Parameters:

string   $key_id   —  either the full uid of the private key, the email part of the uid of the private key or the key id of the private key. For example, "Test User (example) <test@example.com>", "test@example.com" or a hexidecimal string.

[ Top ]

deletePublicKey   [line 353]

void deletePublicKey( string $key_id)

Deletes a public key from the keyring

If more than one key fingerprint is avaliable for the specified $key_id (for example, if you use a non-unique uid) only the first public key is deleted.

Calls GPG with the --delete-key option.

  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Throws: Crypt_GPG_KeyNotFoundException if a public key with the given $key_id is not found.
  • Access: public

Overrides Crypt_GPG::deletePublicKey() (Deletes a public key from the keyring)

Parameters:

string   $key_id   —  either the full uid of the public key, the email part of the uid of the public key or the key id of the public key. For example, "Test User (example) <test@example.com>", "test@example.com" or a hexidecimal string.

[ Top ]

encrypt   [line 654]

string encrypt( string $key_id, string $data, [boolean $armor = true])

Encrypts string data

Data is ASCII armored by default but may optionally be returned as binary.

If this method throws a Crypt_GPG_MissingSelfSignatureException, the public key needs to be signed. Keys may be manually signed using the shell command:

  1. gpg --sign-key &lt;key-id&gt; &lt;named-user&gt;
Encrypts data

Calls GPG with the --encrypt command.

  • Return: the encrypted data.
  • Throws: Crypt_GPG_KeyNotFoundException if the a key with the given $key_id is not found.
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Throws: Crypt_GPG_UnsignedKeyException if specified key is not signed.
  • Throws: Crypt_GPG_MissingSelfSignatureException if specified key is not self-signed (verified by the user).
  • Access: public

Overrides Crypt_GPG::encrypt() (Encrypts string data)

Parameters:

string   $key_id   —  the full uid of the public key to use for encryption. For example, "Test User (example) <test@example.com>".
string   $data   —  the data to be encrypted.
boolean   $armor   —  optional. If true, ASCII armored data is returned; otherwise, binary data is returned. Defaults to true.

[ Top ]

getPrivateFingerprint   [line 577]

string getPrivateFingerprint( string $key_id, [boolean $separator = ''])

Gets a private key fingerprint from the keyring

If more than one private key fingerprint is avaliable (for example, if you use a non-unique uid) only the first private key fingerprint is returned.

Only private key fingerprints are returned. See Crypt_GPG::getPublicFingerprint() to get the fingerprint of a public key.

Calls the GPG --list-secret-keys command with the --with-fingerprint option to retrieve a private key fingerprint.

  • Return: the fingerprint of the private key, or null if no fingerprint is found for the given private key identifier.
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Access: public

Overrides Crypt_GPG::getPrivateFingerprint() (Gets a private key fingerprint from the keyring)

Parameters:

string   $key_id   —  either the full uid of the public key, the email part of the uid of the public key or the key id of the public key. For example, "Test User (example) <test@example.com>", "test@example.com" or a hexidecimal string.
boolean   $separator   —  optional. A string placed between the public key fingerprint components to make the fingerprint easier to read. If not specified, the components of the fingerprint are not separated.

[ Top ]

getPrivateKeys   [line 467]

array getPrivateKeys( )

Gets the available private keys in the keyring

Calls GPG with the --list-private-keys option and grabs private keys.

  • Return: an array of Crypt_GPG_Key objects.
  • See: Crypt_GPG_Driver_Php::_getKeys()
  • See: Crypt_GPG_Key
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Access: public

Overrides Crypt_GPG::getPrivateKeys() (Gets the available private keys in the keyring)
[ Top ]

getPublicFingerprint   [line 507]

string getPublicFingerprint( string $key_id, [boolean $separator = ''])

Gets a public key fingerprint from the keyring

If more than one public key fingerprint is avaliable (for example, if you use a non-unique uid) only the first public key fingerprint is returned.

Only public key fingerprints are returned. See Crypt_GPG::getPrivateFingerprint() to get the fingerprint of a private key.

Calls the GPG --list-keys command with the --with-fingerprint option to retrieve a public key fingerprint.

  • Return: the fingerprint of the public key, or null if no fingerprint is found for the given public key identifier.
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Access: public

Overrides Crypt_GPG::getPublicFingerprint() (Gets a public key fingerprint from the keyring)

Parameters:

string   $key_id   —  either the full uid of the public key, the email part of the uid of the public key or the key id of the public key. For example, "Test User (example) <test@example.com>", "test@example.com" or a hexidecimal string.
boolean   $separator   —  optional. A string placed between the public key fingerprint components to make the fingerprint easier to read. If not specified, the components of the fingerprint are not separated.

[ Top ]

getPublicKeys   [line 445]

array getPublicKeys( )

Gets the available public keys in the keyring

Calls GPG with the --list-public-keys option and grabs public keys.

  • Return: an array of Crypt_GPG_Key objects.
  • See: Crypt_GPG_Driver_Php::_getKeys()
  • See: Crypt_GPG_Key
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Access: public

Overrides Crypt_GPG::getPublicKeys() (Gets the available public keys in the keyring)
[ Top ]

importKey   [line 295]

void importKey( string $data)

Imports a public or private key into the keyring

Keys may be removed from the keyring using Crypt_GPG::deletePublicKey() or Crypt_GPG::deletePrivateKey().

Calls GPG with the --import option and provides GPG the key data to be imported.

  • Throws: Crypt_GPG_DuplicateKeyImportException if key is already in the keyring.
  • Throws: Crypt_GPG_NoDataException if the key data is missing or if the data is is not valid key data.
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Access: public

Overrides Crypt_GPG::importKey() (Imports a public or private key into the keyring)

Parameters:

string   $data   —  the key data to be imported.

[ Top ]

sign   [line 834]

string sign( string $key_id, string $data, string $passphrase, [boolean $mode = Crypt_GPG::SIGN_MODE_NORMAL], [boolean $armor = true])

Signs data using the given key and passphrase

Data my be signed using and one of the three available signing modes:

Calls GPGP with the --sign, --clearsign or --detach-sign commands.

  • Return: the signed data or signature data is a detached signature is requested.
  • Throws: Crypt_GPG_KeyNotFoundException if the private key is not in the user's keyring. Signing data requires the private key.
  • Throws: Crypt_GPG_BadPassphraseException if specified passphrase is incorrect or if no passphrase is specified.
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Access: public

Overrides Crypt_GPG::sign() (Signs data using the given key and passphrase)

Parameters:

string   $key_id   —  either the full uid of the private key, the email part of the uid of the private key or the key id of the private key. For example, "Test User (example) <test@example.com>", "test@example.com" or a hexidecimal string.
string   $data   —  the data to be signed.
string   $passphrase   —  the passphrase of the user's private key.
boolean   $mode   —  otional. The data signing mode to use. Should be one of Crypt_GPG::SIGN_MODE_NORMAL, Crypt_GPG::SIGN_MODE_CLEAR or Crypt_GPG::SIGN_MODE_DETACHED. If not specified, defaults to Crypt_GPG::SIGN_MODE_NORMAL.
boolean   $armor   —  optional. If true, ASCII armored data is returned; otherwise, binary data is returned. Defaults to true. This has no effect if the mode Crypt_GPG::SIGN_MODE_CLEAR is used.

[ Top ]

verify   [line 924]

Crypt_GPG_Signature verify( string $signed_data, [string $signature = ''])

Verifies signed data

The Crypt_GPG::decrypt() method may be used to get the original message if the signed data is not clearsigned and does not have a detached signature.

Calls GPG with the --verify option to verify signature data.

  • Return: the signature details of the signed data. If the signature is valid, the $valid property of the returned object will be true.
  • See: Crypt_GPG_Signature
  • Throws: Crypt_GPG_NoDataException if the provided data is not signed data.
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Access: public

Overrides Crypt_GPG::verify() (Verifies signed data)

Parameters:

string   $signed_data   —  the signed data to be verified.
string   $signature   —  optional. If verifying data signed using a detached signature, this must be the detached signature data. The data that was signed is specified in $signed_data.

[ Top ]

_getKeys   [line 1042]

array _getKeys( boolean $public)

Helper method for getting public or private keys

See the first section of doc/DETAILS in the GPG package for a detailed description of how the GPG output is parsed.

  • Return: an array of Crypt_GPG_Key objects.
  • See: Crypt_GPG_Key
  • Throws: Crypt_GPG_Exception if an unknown or unexpected error occurs. Use Crypt_GPG::$debug and file a bug report if these exceptions occur.
  • Access: public

Parameters:

boolean   $public   —  whether to get public or private keys. Pass true to get public keys and false to get private keys.

[ Top ]


Documentation generated on Mon, 11 Mar 2019 15:14:43 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.