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

Source for file KeyGeneratorStatusHandler.php

Documentation is available at KeyGeneratorStatusHandler.php

  1. <?php
  2.  
  3. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  4.  
  5. /**
  6.  * Crypt_GPG is a package to use GPG from PHP
  7.  *
  8.  * This file contains an object that handles GPG's status output for the
  9.  * key generation operation.
  10.  *
  11.  * PHP version 5
  12.  *
  13.  * LICENSE:
  14.  *
  15.  * This library is free software; you can redistribute it and/or modify
  16.  * it under the terms of the GNU Lesser General Public License as
  17.  * published by the Free Software Foundation; either version 2.1 of the
  18.  * License, or (at your option) any later version.
  19.  *
  20.  * This library is distributed in the hope that it will be useful,
  21.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  22.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  23.  * Lesser General Public License for more details.
  24.  *
  25.  * You should have received a copy of the GNU Lesser General Public
  26.  * License along with this library; if not, write to the Free Software
  27.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  28.  *
  29.  * @category  Encryption
  30.  * @package   Crypt_GPG
  31.  * @author    Michael Gauthier <mike@silverorange.com>
  32.  * @copyright 2011-2013 silverorange
  33.  * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
  34.  * @version   CVS: $Id:$
  35.  * @link      http://pear.php.net/package/Crypt_GPG
  36.  * @link      http://www.gnupg.org/
  37.  */
  38.  
  39. /**
  40.  * Status line handler for the key generation operation
  41.  *
  42.  * This class is used internally by Crypt_GPG and does not need be used
  43.  * directly. See the {@link Crypt_GPG} class for end-user API.
  44.  *
  45.  * This class is responsible for parsing the final key fingerprint from the
  46.  * status output and for updating the key generation progress file. See
  47.  * <b>doc/DETAILS</b> in the
  48.  * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
  49.  * information on GPG's status output for the batch key generation operation.
  50.  *
  51.  * @category  Encryption
  52.  * @package   Crypt_GPG
  53.  * @author    Michael Gauthier <mike@silverorange.com>
  54.  * @copyright 2011-2013 silverorange
  55.  * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
  56.  * @link      http://pear.php.net/package/Crypt_GPG
  57.  * @link      http://www.gnupg.org/
  58.  */
  59. {
  60.     // {{{ protected properties
  61.  
  62.     /**
  63.      * The key fingerprint
  64.      *
  65.      * Ths key fingerprint is emitted by GPG after the key generation is
  66.      * complete.
  67.      *
  68.      * @var string 
  69.      */
  70.     protected $keyFingerprint = '';
  71.  
  72.     /**
  73.      * The unique key handle used by this handler
  74.      *
  75.      * The key handle is used to track GPG status output for a particular key
  76.      * before the key has its own identifier.
  77.      *
  78.      * @var string 
  79.      *
  80.      * @see Crypt_GPG_KeyGeneratorStatusHandler::setHandle()
  81.      */
  82.     protected $handle = '';
  83.  
  84.     /**
  85.      * Error code (if any) caused by key generation
  86.      *
  87.      * @var integer 
  88.      */
  89.     protected $errorCode = Crypt_GPG::ERROR_NONE;
  90.  
  91.     // }}}
  92.     // {{{ setHandle()
  93.  
  94.     /**
  95.      * Sets the unique key handle used by this handler
  96.      *
  97.      * The key handle is used to track GPG status output for a particular key
  98.      * before the key has its own identifier.
  99.      *
  100.      * @param string $handle the key handle this status handle will use.
  101.      *
  102.      * @return Crypt_GPG_KeyGeneratorStatusHandler the current object, for
  103.      *                                              fluent interface.
  104.      */
  105.     public function setHandle($handle)
  106.     {
  107.         $this->handle = strval($handle);
  108.         return $this;
  109.     }
  110.  
  111.     // }}}
  112.     // {{{ handle()
  113.  
  114.     /**
  115.      * Handles a status line
  116.      *
  117.      * @param string $line the status line to handle.
  118.      *
  119.      * @return void 
  120.      */
  121.     public function handle($line)
  122.     {
  123.         $tokens explode(' '$line);
  124.         switch ($tokens[0]{
  125.         case 'KEY_CREATED':
  126.             if ($tokens[3== $this->handle{
  127.                 $this->keyFingerprint = $tokens[2];
  128.             }
  129.             break;
  130.  
  131.         case 'KEY_NOT_CREATED':
  132.             if ($tokens[1== $this->handle{
  133.                 $this->errorCode = Crypt_GPG::ERROR_KEY_NOT_CREATED;
  134.             }
  135.             break;
  136.  
  137.         case 'PROGRESS':
  138.             // todo: at some point, support reporting status async
  139.             break;
  140.         }
  141.     }
  142.  
  143.     // }}}
  144.     // {{{ getKeyFingerprint()
  145.  
  146.     /**
  147.      * Gets the key fingerprint parsed by this handler
  148.      *
  149.      * @return array the key fingerprint parsed by this handler.
  150.      */
  151.     public function getKeyFingerprint()
  152.     {
  153.         return $this->keyFingerprint;
  154.     }
  155.  
  156.     // }}}
  157.     // {{{ getErrorCode()
  158.  
  159.     /**
  160.      * Gets the error code resulting from key gneration
  161.      *
  162.      * @return integer the error code resulting from key generation.
  163.      */
  164.     public function getErrorCode()
  165.     {
  166.         return $this->errorCode;
  167.     }
  168.  
  169.     // }}}
  170. }
  171.  
  172. ?>

Documentation generated on Wed, 13 Mar 2013 18:30:10 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.