]> git.donarmstrong.com Git - roundcube.git/blobdiff - plugins/enigma/lib/Crypt/GPG/Signature.php
Imported Upstream version 0.6+dfsg
[roundcube.git] / plugins / enigma / lib / Crypt / GPG / Signature.php
diff --git a/plugins/enigma/lib/Crypt/GPG/Signature.php b/plugins/enigma/lib/Crypt/GPG/Signature.php
new file mode 100644 (file)
index 0000000..03ab44c
--- /dev/null
@@ -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;
+    }
+
+    // }}}
+}
+
+// }}}
+
+?>