From 13eb9bdc245273918bc2b96b475d7d74f01aae2b Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 03 Oct 2015 12:56:33 -0400
Subject: [PATCH] Enigma: Display complete key information (subkeys, user IDs)

---
 plugins/enigma/lib/enigma_driver_phpssl.php |   51 +++++++++++++++++++++------------------------------
 1 files changed, 21 insertions(+), 30 deletions(-)

diff --git a/plugins/enigma/lib/enigma_driver_phpssl.php b/plugins/enigma/lib/enigma_driver_phpssl.php
index 50af447..a5aa6de 100644
--- a/plugins/enigma/lib/enigma_driver_phpssl.php
+++ b/plugins/enigma/lib/enigma_driver_phpssl.php
@@ -1,20 +1,14 @@
 <?php
-/*
+
+/**
  +-------------------------------------------------------------------------+
- | S/MIME driver for the Enigma Plugin                                |
+ | S/MIME driver for the Enigma Plugin                                     |
  |                                                                         |
- | This program is free software; you can redistribute it and/or modify    |
- | it under the terms of the GNU General Public License version 2          |
- | as published by the Free Software Foundation.                           |
+ | Copyright (C) 2010-2015 The Roundcube Dev Team                          |
  |                                                                         |
- | This program 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 General Public License for more details.                            |
- |                                                                         |
- | You should have received a copy of the GNU General Public License along |
- | with this program; if not, write to the Free Software Foundation, Inc., |
- | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.             |
+ | Licensed under the GNU General Public License version 3 or              |
+ | any later version with exceptions for skins & plugins.                  |
+ | See the README file for a full license statement.                       |
  |                                                                         |
  +-------------------------------------------------------------------------+
  | Author: Aleksander Machniak <alec@alec.pl>                              |
@@ -24,7 +18,6 @@
 class enigma_driver_phpssl extends enigma_driver
 {
     private $rc;
-    //private $gpg;
     private $homedir;
     private $user;
 
@@ -46,15 +39,15 @@
         $homedir = $this->rc->config->get('enigma_smime_homedir', INSTALL_PATH . '/plugins/enigma/home');
 
         if (!$homedir)
-            return new enigma_error(enigma_error::E_INTERNAL,
+            return new enigma_error(enigma_error::INTERNAL,
                 "Option 'enigma_smime_homedir' not specified");
 
         // check if homedir exists (create it if not) and is readable
         if (!file_exists($homedir))
-            return new enigma_error(enigma_error::E_INTERNAL,
+            return new enigma_error(enigma_error::INTERNAL,
                 "Keys directory doesn't exists: $homedir");
         if (!is_writable($homedir))
-            return new enigma_error(enigma_error::E_INTERNAL,
+            return new enigma_error(enigma_error::INTERNAL,
                 "Keys directory isn't writeable: $homedir");
 
         $homedir = $homedir . '/' . $this->user;
@@ -64,10 +57,10 @@
             mkdir($homedir, 0700);
 
         if (!file_exists($homedir))
-            return new enigma_error(enigma_error::E_INTERNAL,
+            return new enigma_error(enigma_error::INTERNAL,
                 "Unable to create keys directory: $homedir");
         if (!is_writable($homedir))
-            return new enigma_error(enigma_error::E_INTERNAL,
+            return new enigma_error(enigma_error::INTERNAL,
                 "Unable to write to keys directory: $homedir");
 
         $this->homedir = $homedir;
@@ -78,11 +71,11 @@
     {
     }
 
-    function decrypt($text, $key, $passwd)
+    function decrypt($text, $keys = array())
     {
     }
 
-    function sign($text, $key, $passwd)
+    function sign($text, $key, $passwd, $mode = null)
     {
     }
 
@@ -95,7 +88,7 @@
 
         $fh = fopen($msg_file, "w");
         if ($struct->mime_id) {
-            $message->get_part_content($struct->mime_id, $fh, true, 0, false);
+            $message->get_part_body($struct->mime_id, false, 0, $fh);
         }
         else {
             $this->rc->storage->get_raw_body($message->uid, $fh);
@@ -111,7 +104,7 @@
         if ($sig !== true) {
             // try without certificate verification
             $sig      = openssl_pkcs7_verify($msg_file, PKCS7_NOVERIFY, $cert_file);
-            $validity = enigma_error::E_UNVERIFIED;
+            $validity = enigma_error::UNVERIFIED;
         }
 
         if ($sig === true) {
@@ -119,7 +112,7 @@
         }
         else {
             $errorstr = $this->get_openssl_error();
-            $sig = new enigma_error(enigma_error::E_INTERNAL, $errorstr);
+            $sig = new enigma_error(enigma_error::INTERNAL, $errorstr);
         }
 
         // remove temp files
@@ -145,15 +138,15 @@
     {
     }
 
-    public function del_key($keyid)
+    public function delete_key($keyid)
     {
     }
 
-    public function del_privkey($keyid)
+    public function delete_privkey($keyid)
     {
     }
 
-    public function del_pubkey($keyid)
+    public function delete_pubkey($keyid)
     {
     }
 
@@ -190,8 +183,6 @@
                 $skey->expires     = $subkey->getExpirationDate();
                 $skey->fingerprint = $subkey->getFingerprint();
                 $skey->has_private = $subkey->hasPrivate();
-                $skey->can_sign    = $subkey->canSign();
-                $skey->can_encrypt = $subkey->canEncrypt();
 
                 $ekey->subkeys[$idx] = $skey;
         };
@@ -218,7 +209,7 @@
 
         if (empty($cert) || empty($cert['subject'])) {
             $errorstr = $this->get_openssl_error();
-            return new enigma_error(enigm_error::E_INTERNAL, $errorstr);
+            return new enigma_error(enigma_error::INTERNAL, $errorstr);
         }
 
         $data = new enigma_signature();

--
Gitblit v1.9.1