[evolution/gnome-3-16] Bug 724227 - Do not mix PGP and S/MIME security on message reply



commit 0a53c47c33453555869af6b061833ab89d8d5278
Author: Milan Crha <mcrha redhat com>
Date:   Thu Apr 2 11:53:15 2015 +0200

    Bug 724227 - Do not mix PGP and S/MIME security on message reply

 composer/e-msg-composer.c |   30 ++++++++++++++++++++----------
 mail/em-composer-utils.c  |   38 ++++++++++++++++++++++++++------------
 2 files changed, 46 insertions(+), 22 deletions(-)
---
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 54feb53..2768315 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -2926,12 +2926,17 @@ handle_multipart_signed (EMsgComposer *composer,
        content_type = camel_data_wrapper_get_mime_type_field (content);
        protocol = camel_content_type_param (content_type, "protocol");
 
-       if (protocol == NULL)
+       if (protocol == NULL) {
                action = NULL;
-       else if (g_ascii_strcasecmp (protocol, "application/pgp-signature") == 0)
-               action = GTK_TOGGLE_ACTION (ACTION (PGP_SIGN));
-       else if (g_ascii_strcasecmp (protocol, "application/x-pkcs7-signature") == 0)
-               action = GTK_TOGGLE_ACTION (ACTION (SMIME_SIGN));
+       } else if (g_ascii_strcasecmp (protocol, "application/pgp-signature") == 0) {
+               if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (ACTION (SMIME_SIGN))) &&
+                   !gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (ACTION (SMIME_ENCRYPT))))
+                       action = GTK_TOGGLE_ACTION (ACTION (PGP_SIGN));
+       } else if (g_ascii_strcasecmp (protocol, "application/x-pkcs7-signature") == 0) {
+               if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (ACTION (PGP_SIGN))) &&
+                   !gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (ACTION (PGP_ENCRYPT))))
+                       action = GTK_TOGGLE_ACTION (ACTION (SMIME_SIGN));
+       }
 
        if (action)
                gtk_toggle_action_set_active (action, TRUE);
@@ -3010,12 +3015,17 @@ handle_multipart_encrypted (EMsgComposer *composer,
        content_type = camel_mime_part_get_content_type (multipart);
        protocol = camel_content_type_param (content_type, "protocol");
 
-       if (protocol && g_ascii_strcasecmp (protocol, "application/pgp-encrypted") == 0)
-               action = GTK_TOGGLE_ACTION (ACTION (PGP_ENCRYPT));
-       else if (content_type && (
+       if (protocol && g_ascii_strcasecmp (protocol, "application/pgp-encrypted") == 0) {
+               if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (ACTION (SMIME_SIGN))) &&
+                   !gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (ACTION (SMIME_ENCRYPT))))
+                       action = GTK_TOGGLE_ACTION (ACTION (PGP_ENCRYPT));
+       } else if (content_type && (
                    camel_content_type_is (content_type, "application", "x-pkcs7-mime")
-                || camel_content_type_is (content_type, "application", "pkcs7-mime")))
-               action = GTK_TOGGLE_ACTION (ACTION (SMIME_ENCRYPT));
+                || camel_content_type_is (content_type, "application", "pkcs7-mime"))) {
+               if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (ACTION (PGP_SIGN))) &&
+                   !gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (ACTION (PGP_ENCRYPT))))
+                       action = GTK_TOGGLE_ACTION (ACTION (SMIME_ENCRYPT));
+       }
 
        if (action)
                gtk_toggle_action_set_active (action, TRUE);
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
index 8e5212b..a4deb18 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
@@ -1702,23 +1702,37 @@ emu_update_composers_security (EMsgComposer *composer,
 
        /* Pre-set only for encrypted messages, not for signed */
        if (sign_by_default) {
-               if (validity_found & E_MAIL_PART_VALIDITY_SMIME)
-                       action = E_COMPOSER_ACTION_SMIME_SIGN (composer);
-               else
-                       action = E_COMPOSER_ACTION_PGP_SIGN (composer);
+               action = NULL;
+
+               if (validity_found & E_MAIL_PART_VALIDITY_SMIME) {
+                       if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (E_COMPOSER_ACTION_PGP_SIGN 
(composer))) &&
+                           !gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (E_COMPOSER_ACTION_PGP_ENCRYPT 
(composer))))
+                               action = E_COMPOSER_ACTION_SMIME_SIGN (composer);
+               } else {
+                       if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (E_COMPOSER_ACTION_SMIME_SIGN 
(composer))) &&
+                           !gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (E_COMPOSER_ACTION_SMIME_ENCRYPT 
(composer))))
+                               action = E_COMPOSER_ACTION_PGP_SIGN (composer);
+               }
 
-               gtk_toggle_action_set_active (
-                       GTK_TOGGLE_ACTION (action), TRUE);
+               if (action)
+                       gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
        }
 
        if (validity_found & E_MAIL_PART_VALIDITY_ENCRYPTED) {
-               if (validity_found & E_MAIL_PART_VALIDITY_SMIME)
-                       action = E_COMPOSER_ACTION_SMIME_ENCRYPT (composer);
-               else
-                       action = E_COMPOSER_ACTION_PGP_ENCRYPT (composer);
+               action = NULL;
+
+               if (validity_found & E_MAIL_PART_VALIDITY_SMIME) {
+                       if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (E_COMPOSER_ACTION_PGP_SIGN 
(composer))) &&
+                           !gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (E_COMPOSER_ACTION_PGP_ENCRYPT 
(composer))))
+                               action = E_COMPOSER_ACTION_SMIME_ENCRYPT (composer);
+               } else {
+                       if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (E_COMPOSER_ACTION_SMIME_SIGN 
(composer))) &&
+                           !gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (E_COMPOSER_ACTION_SMIME_ENCRYPT 
(composer))))
+                               action = E_COMPOSER_ACTION_PGP_ENCRYPT (composer);
+               }
 
-               gtk_toggle_action_set_active (
-                       GTK_TOGGLE_ACTION (action), TRUE);
+               if (action)
+                       gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
        }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]