From 96c3d84cddb861956cfbc719d694eb972343f1c3 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 02 Apr 2016 04:35:17 -0400
Subject: [PATCH] Enigma: Varius fixes and cleanup in code for attaching pubkeys

---
 plugins/enigma/lib/enigma_engine.php |   59 +++++++++++++++++++++++++++--------------------------------
 1 files changed, 27 insertions(+), 32 deletions(-)

diff --git a/plugins/enigma/lib/enigma_engine.php b/plugins/enigma/lib/enigma_engine.php
index d2f3972..c970933 100644
--- a/plugins/enigma/lib/enigma_engine.php
+++ b/plugins/enigma/lib/enigma_engine.php
@@ -313,6 +313,33 @@
     }
 
     /**
+     * Handler for attaching public key to a message
+     *
+     * @param Mail_mime Original message
+     *
+     * @return bool True on success, False on failure
+     */
+    function attach_public_key(&$message)
+    {
+        $headers = $message->headers();
+        $from    = rcube_mime::decode_address_list($headers['From'], 1, false, null, true);
+        $from    = $from[1];
+
+        // find my key
+        if ($from && ($key = $this->find_key($from))) {
+            $pubkey_armor = $this->export_key($key->id);
+
+            if (!$pubkey_armor instanceof enigma_error) {
+                $pubkey_name = '0x' . enigma_key::format_id($key->id) . '.asc';
+                $message->addAttachment($pubkey_armor, 'application/pgp-keys', $pubkey_name, false, '7bit');
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
      * Handler for message_part_structure hook.
      * Called for every part of the message.
      *
@@ -909,38 +936,6 @@
     {
         $this->load_pgp_driver();
         $result = $this->pgp_driver->list_keys($pattern);
-
-        if ($result instanceof enigma_error) {
-            rcube::raise_error(array(
-                'code' => 600, 'type' => 'php',
-                'file' => __FILE__, 'line' => __LINE__,
-                'message' => "Enigma plugin: " . $result->getMessage()
-                ), true, false);
-        }
-
-        return $result;
-    }
-
-    function get_gpg_pubkey_for_attach($email)
-    {
-        $this->load_pgp_driver();
-        $result = $this->pgp_driver->pubkey_for_attach($email);
-
-        if ($result instanceof enigma_error) {
-            rcube::raise_error(array(
-                'code' => 600, 'type' => 'php',
-                'file' => __FILE__, 'line' => __LINE__,
-                'message' => "Enigma plugin: " . $result->getMessage()
-                ), true, false);
-        }
-
-        return $result;
-    }
-
-    function get_keyID($email)
-    {
-        $this->load_pgp_driver();
-        $result = $this->pgp_driver->get_keyID($email);
 
         if ($result instanceof enigma_error) {
             rcube::raise_error(array(

--
Gitblit v1.9.1