* @copyright 2005-2010 silverorange * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 * @version CVS: $Id: Signature.php 302773 2010-08-25 14:16:28Z gauthierm $ * @link http://pear.php.net/package/Crypt_GPG */ /** * User id class definition */ require_once 'Crypt/GPG/UserId.php'; // {{{ class Crypt_GPG_Signature /** * A class for GPG signature information * * This class is used to store the results of the Crypt_GPG::verify() method. * * @category Encryption * @package Crypt_GPG * @author Nathan Fredrickson * @author Michael Gauthier * @copyright 2005-2010 silverorange * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 * @link http://pear.php.net/package/Crypt_GPG * @see Crypt_GPG::verify() */ class Crypt_GPG_Signature { // {{{ class properties /** * A base64-encoded string containing a unique id for this signature if * this signature has been verified as ok * * This id is used to prevent replay attacks and is not present for all * types of signatures. * * @var string */ private $_id = ''; /** * The fingerprint of the key used to create the signature * * @var string */ private $_keyFingerprint = ''; /** * The id of the key used to create the signature * * @var string */ private $_keyId = ''; /** * The creation date of this signature * * This is a Unix timestamp. * * @var integer */ private $_creationDate = 0; /** * The expiration date of the signature * * This is a Unix timestamp. If this signature does not expire, this will * be zero. * * @var integer */ private $_expirationDate = 0; /** * The user id associated with this signature * * @var Crypt_GPG_UserId */ private $_userId = null; /** * Whether or not this signature is valid * * @var boolean */ private $_isValid = false; // }}} // {{{ __construct() /** * Creates a new signature * * Signatures can be initialized from an array of named values. Available * names are: * * - string id - the unique id of this signature. * - string fingerprint - the fingerprint of the key used to * create the signature. The fingerprint * should not contain formatting * characters. * - string keyId - the id of the key used to create the * the signature. * - integer creation - the date the signature was created. * This is a UNIX timestamp. * - integer expiration - the date the signature expired. This * is a UNIX timestamp. If the signature * does not expire, use 0. * - boolean valid - whether or not the signature is valid. * - string userId - the user id associated with the * signature. This may also be a * {@link Crypt_GPG_UserId} object. * * @param Crypt_GPG_Signature|array $signature optional. Either an existing * signature object, which is copied; or an array of initial values. */ public function __construct($signature = null) { // copy from object if ($signature instanceof Crypt_GPG_Signature) { $this->_id = $signature->_id; $this->_keyFingerprint = $signature->_keyFingerprint; $this->_keyId = $signature->_keyId; $this->_creationDate = $signature->_creationDate; $this->_expirationDate = $signature->_expirationDate; $this->_isValid = $signature->_isValid; if ($signature->_userId instanceof Crypt_GPG_UserId) { $this->_userId = clone $signature->_userId; } else { $this->_userId = $signature->_userId; } } // initialize from array if (is_array($signature)) { if (array_key_exists('id', $signature)) { $this->setId($signature['id']); } if (array_key_exists('fingerprint', $signature)) { $this->setKeyFingerprint($signature['fingerprint']); } if (array_key_exists('keyId', $signature)) { $this->setKeyId($signature['keyId']); } if (array_key_exists('creation', $signature)) { $this->setCreationDate($signature['creation']); } if (array_key_exists('expiration', $signature)) { $this->setExpirationDate($signature['expiration']); } if (array_key_exists('valid', $signature)) { $this->setValid($signature['valid']); } if (array_key_exists('userId', $signature)) { $userId = new Crypt_GPG_UserId($signature['userId']); $this->setUserId($userId); } } } // }}} // {{{ getId() /** * Gets the id of this signature * * @return string a base64-encoded string containing a unique id for this * signature. This id is used to prevent replay attacks and * is not present for all types of signatures. */ public function getId() { return $this->_id; } // }}} // {{{ getKeyFingerprint() /** * Gets the fingerprint of the key used to create this signature * * @return string the fingerprint of the key used to create this signature. */ public function getKeyFingerprint() { return $this->_keyFingerprint; } // }}} // {{{ getKeyId() /** * Gets the id of the key used to create this signature * * Whereas the fingerprint of the signing key may not always be available * (for example if the signature is bad), the id should always be * available. * * @return string the id of the key used to create this signature. */ public function getKeyId() { return $this->_keyId; } // }}} // {{{ getCreationDate() /** * Gets the creation date of this signature * * @return integer the creation date of this signature. This is a Unix * timestamp. */ public function getCreationDate() { return $this->_creationDate; } // }}} // {{{ getExpirationDate() /** * Gets the expiration date of the signature * * @return integer the expiration date of this signature. This is a Unix * timestamp. If this signature does not expire, this will * be zero. */ public function getExpirationDate() { return $this->_expirationDate; } // }}} // {{{ getUserId() /** * Gets the user id associated with this signature * * @return Crypt_GPG_UserId the user id associated with this signature. */ public function getUserId() { return $this->_userId; } // }}} // {{{ isValid() /** * Gets whether or no this signature is valid * * @return boolean true if this signature is valid and false if it is not. */ public function isValid() { return $this->_isValid; } // }}} // {{{ setId() /** * Sets the id of this signature * * @param string $id a base64-encoded string containing a unique id for * this signature. * * @return Crypt_GPG_Signature the current object, for fluent interface. * * @see Crypt_GPG_Signature::getId() */ public function setId($id) { $this->_id = strval($id); return $this; } // }}} // {{{ setKeyFingerprint() /** * Sets the key fingerprint of this signature * * @param string $fingerprint the key fingerprint of this signature. This * is the fingerprint of the primary key used to * create this signature. * * @return Crypt_GPG_Signature the current object, for fluent interface. */ public function setKeyFingerprint($fingerprint) { $this->_keyFingerprint = strval($fingerprint); return $this; } // }}} // {{{ setKeyId() /** * Sets the key id of this signature * * @param string $id the key id of this signature. This is the id of the * primary key used to create this signature. * * @return Crypt_GPG_Signature the current object, for fluent interface. */ public function setKeyId($id) { $this->_keyId = strval($id); return $this; } // }}} // {{{ setCreationDate() /** * Sets the creation date of this signature * * @param integer $creationDate the creation date of this signature. This * is a Unix timestamp. * * @return Crypt_GPG_Signature the current object, for fluent interface. */ public function setCreationDate($creationDate) { $this->_creationDate = intval($creationDate); return $this; } // }}} // {{{ setExpirationDate() /** * Sets the expiration date of this signature * * @param integer $expirationDate the expiration date of this signature. * This is a Unix timestamp. Specify zero if * this signature does not expire. * * @return Crypt_GPG_Signature the current object, for fluent interface. */ public function setExpirationDate($expirationDate) { $this->_expirationDate = intval($expirationDate); return $this; } // }}} // {{{ setUserId() /** * Sets the user id associated with this signature * * @param Crypt_GPG_UserId $userId the user id associated with this * signature. * * @return Crypt_GPG_Signature the current object, for fluent interface. */ public function setUserId(Crypt_GPG_UserId $userId) { $this->_userId = $userId; return $this; } // }}} // {{{ setValid() /** * Sets whether or not this signature is valid * * @param boolean $isValid true if this signature is valid and false if it * is not. * * @return Crypt_GPG_Signature the current object, for fluent interface. */ public function setValid($isValid) { $this->_isValid = ($isValid) ? true : false; return $this; } // }}} } // }}} ?>