summaryrefslogtreecommitdiff
path: root/program/lib/Crypt/GPG/Signature.php
diff options
context:
space:
mode:
Diffstat (limited to 'program/lib/Crypt/GPG/Signature.php')
-rw-r--r--program/lib/Crypt/GPG/Signature.php428
1 files changed, 428 insertions, 0 deletions
diff --git a/program/lib/Crypt/GPG/Signature.php b/program/lib/Crypt/GPG/Signature.php
new file mode 100644
index 000000000..03ab44c53
--- /dev/null
+++ b/program/lib/Crypt/GPG/Signature.php
@@ -0,0 +1,428 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * A class representing GPG signatures
+ *
+ * This file contains a data class representing a GPG signature.
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Nathan Fredrickson <nathan@silverorange.com>
+ * @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 <nathan@silverorange.com>
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @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:
+ *
+ * - <kbd>string id</kbd> - the unique id of this signature.
+ * - <kbd>string fingerprint</kbd> - the fingerprint of the key used to
+ * create the signature. The fingerprint
+ * should not contain formatting
+ * characters.
+ * - <kbd>string keyId</kbd> - the id of the key used to create the
+ * the signature.
+ * - <kbd>integer creation</kbd> - the date the signature was created.
+ * This is a UNIX timestamp.
+ * - <kbd>integer expiration</kbd> - the date the signature expired. This
+ * is a UNIX timestamp. If the signature
+ * does not expire, use 0.
+ * - <kbd>boolean valid</kbd> - whether or not the signature is valid.
+ * - <kbd>string userId</kbd> - 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;
+ }
+
+ // }}}
+}
+
+// }}}
+
+?>