Pass the sender address to the UI server.
authorWerner Koch <wk@gnupg.org>
Fri, 7 Mar 2008 12:53:28 +0000 (12:53 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 7 Mar 2008 12:53:28 +0000 (12:53 +0000)
NEWS
po/de.po
po/sv.po
src/ChangeLog
src/mapihelp.cpp
src/mapihelp.h
src/message-events.cpp
src/mimemaker.c
src/mymapitags.h

diff --git a/NEWS b/NEWS
index b3e48c4..73f410c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,11 @@ Noteworthy changes for version 0.10.6
  * Soft line breaks in QP encoded messages are now correctly
    processed.
 
+ * The sender's address is send to the UI server to allow it to select
+   an appropriate signing key.
+
+ * Automatic protocol selection works now also with signing.
+
 
 Noteworthy changes for version 0.10.5 (2008-02-18)
 ==================================================
index 571ccc7..51115d9 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GpgOL 0.10.0\n"
 "Report-Msgid-Bugs-To: bug-gpgol@g10code.com\n"
-"POT-Creation-Date: 2008-02-26 12:47+0100\n"
-"PO-Revision-Date: 2008-02-26 12:54+0100\n"
+"POT-Creation-Date: 2008-03-07 12:10+0100\n"
+"PO-Revision-Date: 2008-03-07 13:31+0100\n"
 "Last-Translator: Werner Koch <wk@gnupg.org>\n"
 "Language-Team: de\n"
 "MIME-Version: 1.0\n"
@@ -56,7 +56,7 @@ msgstr "Debugausgabe (zur Problemanalyse)"
 msgid "Select Certificate Manager"
 msgstr "GnuPG Zertifikats&verwaltung"
 
-#: src/engine.c:365
+#: src/engine.c:368
 msgid ""
 "The user interface server is not available or does not work.  Using an "
 "internal user interface.\n"
@@ -76,7 +76,7 @@ msgstr ""
 "   (unter \"GnuPG für Windows\") oder auf einem anderen Weg starten.\n"
 "   Sobald \"Kleopatra\" läuft, erneut Outlook starten."
 
-#: src/engine.c:369 src/ext-commands.cpp:683 src/main.c:603 src/main.c:609
+#: src/engine.c:372 src/ext-commands.cpp:691 src/main.c:614 src/main.c:620
 #: src/message.cpp:326
 msgid "GpgOL"
 msgstr "GpgOL"
@@ -215,120 +215,120 @@ msgstr "*** Anfang Notation (Unterschrift von: "
 msgid "*** End Notation ***\n"
 msgstr "*** Ende Notation ***\n"
 
-#: src/ext-commands.cpp:442
+#: src/ext-commands.cpp:445
 msgid "&Decrypt and verify message"
 msgstr "Entschlüsseln/Prüfen der Nachricht"
 
-#: src/ext-commands.cpp:443
+#: src/ext-commands.cpp:446
 msgid "&Verify signature"
 msgstr "&Unterschrift prüfen"
 
-#: src/ext-commands.cpp:444
+#: src/ext-commands.cpp:447
 msgid "&Display crypto information"
 msgstr "~Krypto Informationen anzeigen"
 
-#: src/ext-commands.cpp:454
+#: src/ext-commands.cpp:457
 msgid ">GnuPG protocol"
 msgstr ">GnuPG Protokoll"
 
-#: src/ext-commands.cpp:455
+#: src/ext-commands.cpp:458
 msgid "auto"
 msgstr "automatisch"
 
-#: src/ext-commands.cpp:456
+#: src/ext-commands.cpp:459
 msgid "PGP/MIME"
 msgstr "PGP/MIME"
 
-#: src/ext-commands.cpp:457
+#: src/ext-commands.cpp:460
 msgid "S/MIME"
 msgstr "S/MIME"
 
-#: src/ext-commands.cpp:459
+#: src/ext-commands.cpp:462
 msgid "&encrypt message with GnuPG"
 msgstr "Nachricht mit GnuPG verschlüsseln"
 
-#: src/ext-commands.cpp:460
+#: src/ext-commands.cpp:463
 msgid "&sign message with GnuPG"
 msgstr "Nachricht mit GnuPG unterschreiben"
 
-#: src/ext-commands.cpp:464 src/ext-commands.cpp:861
+#: src/ext-commands.cpp:467 src/ext-commands.cpp:870
 msgid "Encrypt message with GnuPG"
 msgstr "Nachricht mit GnuPG verschlüsseln"
 
-#: src/ext-commands.cpp:465 src/ext-commands.cpp:871
+#: src/ext-commands.cpp:468 src/ext-commands.cpp:880
 msgid "Sign message with GnuPG"
 msgstr "Nachricht mit GnuPG unterschreiben"
 
-#: src/ext-commands.cpp:500
+#: src/ext-commands.cpp:503
 msgid "GnuPG Certificate &Manager"
 msgstr "GnuPG Zertifikats&verwaltung"
 
-#: src/ext-commands.cpp:504
+#: src/ext-commands.cpp:507
 msgid "Open the certificate manager"
 msgstr "Die Zertifikatsverwaltung öffnen"
 
-#: src/ext-commands.cpp:682
+#: src/ext-commands.cpp:690
 msgid "Could not start certificate manager"
 msgstr "Die Zertifikatsverwaltung konnte nicht aufgerufen werden"
 
-#: src/ext-commands.cpp:745
+#: src/ext-commands.cpp:754
 msgid "Select this option to decrypt and verify the message."
 msgstr ""
 "Wählen Sie diese Option um die Nachricht zu entschlüsseln bzw. zu "
 "verifizieren."
 
-#: src/ext-commands.cpp:752
+#: src/ext-commands.cpp:761
 msgid "Select this option to show information on the crypto status"
 msgstr ""
 "Wählen Sie diese Option um Informationen über den Krypto-Status der "
 "Nachricht anzuzeigen."
 
-#: src/ext-commands.cpp:760 src/ext-commands.cpp:841
+#: src/ext-commands.cpp:769 src/ext-commands.cpp:850
 msgid "Check the signature now and display the result"
 msgstr "Die digitale Unterschrift jetzt prüfen und das Resultat anzeigen"
 
-#: src/ext-commands.cpp:767
+#: src/ext-commands.cpp:776
 msgid "Select this option to automatically select the protocol."
 msgstr "Wählen Sie diese Option zum das Protokoll automatisch auszuwählen."
 
-#: src/ext-commands.cpp:774
+#: src/ext-commands.cpp:783
 msgid "Select this option to select the PGP/MIME protocol."
 msgstr "Wählen Sie diese Option zum das PGP/MIME Protokoll auszuwählen."
 
-#: src/ext-commands.cpp:781
+#: src/ext-commands.cpp:790
 msgid "Select this option to select the S/MIME protocol."
 msgstr "Wählen Sie diese Option zum das S/MIME Protokoll auszuwählen."
 
-#: src/ext-commands.cpp:788
+#: src/ext-commands.cpp:797
 msgid "Select this option to encrypt the message."
 msgstr "Wählen Sie diese Option zum Verschlüsseln der Nachricht."
 
-#: src/ext-commands.cpp:795
+#: src/ext-commands.cpp:804
 msgid "Select this option to sign the message."
 msgstr "Wählen Sie diese Option zum Unterschreiben der Nachricht."
 
-#: src/ext-commands.cpp:802
+#: src/ext-commands.cpp:811
 msgid "Select this option to open the certificate manager"
 msgstr "Wählen Sie diese Option zum die Zertifikatsverwaltung zu öffenen."
 
-#: src/ext-commands.cpp:831
+#: src/ext-commands.cpp:840
 msgid "Show S/MIME status info"
 msgstr "S/MIME Status Informationen anzeigen"
 
-#: src/ext-commands.cpp:851
+#: src/ext-commands.cpp:860
 msgid "Use S/MIME for sign/encrypt"
 msgstr "S/MIME zum signieren/verschlüsseln verwenden"
 
-#: src/ext-commands.cpp:881
+#: src/ext-commands.cpp:890
 msgid "Open the GpgOL certificate manager"
 msgstr "Zertifikatsverwaltung von GpgOL öffnen"
 
-#: src/main.c:602
+#: src/main.c:613
 #, c-format
 msgid "Note: Using compatibility flags: %s"
 msgstr "Notiz: Diese Kompatibilitätsflags werden verwendet: %s"
 
-#: src/main.c:608
+#: src/main.c:619
 #, c-format
 msgid ""
 "Note: Writing debug logs to\n"
@@ -395,27 +395,33 @@ msgstr "GpgOL - Informationen zu der Nachricht"
 
 #: src/message.cpp:538
 msgid "Signature verification of an encrypted message is not possible."
-msgstr "Die Prüfung der Unterschrift ist bei einer verschlüsselten Nachrichten nicht möglich."
+msgstr ""
+"Die Prüfung der Unterschrift ist bei einer verschlüsselten Nachrichten nicht "
+"möglich."
 
 #: src/message.cpp:549
 msgid "Signature verification of this message class is not possible."
-msgstr "Die Prüfung der Unterschrift ist bei dieser Nachrichtenklasse nicht möglich."
+msgstr ""
+"Die Prüfung der Unterschrift ist bei dieser Nachrichtenklasse nicht möglich."
 
 #: src/message.cpp:552
 msgid ""
 "Signature verification of this S/MIME message is not possible.  Please check "
 "that S/MIME processing has been enabled."
-msgstr "Die Prüfung der Unterschrift ist bei dieser S/MIME Nachricht nicht möglich.  Bitte überprüfen Sie in den Einstellungen, daß die Verarbeitung von S/MIME eingeschaltet ist."
+msgstr ""
+"Die Prüfung der Unterschrift ist bei dieser S/MIME Nachricht nicht möglich.  "
+"Bitte überprüfen Sie in den Einstellungen, daß die Verarbeitung von S/MIME "
+"eingeschaltet ist."
 
 #: src/message.cpp:556
 msgid "This message has no signature."
 msgstr "Diese Nachricht hat keine Unterschrift."
 
-#: src/message.cpp:856
+#: src/message.cpp:858
 msgid "This message is not encrypted."
 msgstr "Diese Nachricht ist nicht verschlüsselt."
 
-#: src/message.cpp:1080
+#: src/message.cpp:1084
 #, c-format
 msgid ""
 "Decryption failed\n"
@@ -424,25 +430,25 @@ msgstr ""
 "Entschlüsselungsfehler\n"
 "(%s)"
 
-#: src/message.cpp:1208
+#: src/message.cpp:1212
 msgid "No recipients to encrypt to are given"
 msgstr "Empfänger zum Verschlüsseln wurde nicht angegeben"
 
-#: src/message.cpp:1224
+#: src/message.cpp:1228
 #, c-format
 msgid "Encryption failed (%s)"
 msgstr "Verschlüsselungsfehler (%s)"
 
-#: src/message.cpp:1245
+#: src/message.cpp:1249
 #, c-format
 msgid "Signing failed (%s)"
 msgstr "Unterschrifterstellungsfehler (%s)"
 
-#: src/mimeparser.c:1072
+#: src/mimeparser.c:1108
 msgid "Error writing to stream"
 msgstr "Dateischreibfehler"
 
-#: src/mimeparser.c:1073
+#: src/mimeparser.c:1109
 msgid "I/O-Error"
 msgstr "Ein-/Ausgabefehler"
 
@@ -509,7 +515,7 @@ msgstr ""
 "kann."
 
 #. TRANSLATORS: See the source for the full english text.
-#: src/olflange-dlgs.cpp:329
+#: src/olflange-dlgs.cpp:333
 msgid "-#GpgOLFullHelpText#-"
 msgstr ""
 "GpgOL ist ein Plugin für Microsoft Outlook, welches es ermöglicht\n"
@@ -534,12 +540,24 @@ msgstr ""
 "Public License erhalten haben.  Falls nicht, finden Sie diese\n"
 "unter der Webadresse <http://www.gnu.org/licenses/>."
 
-#: src/olflange-dlgs.cpp:335
+#: src/olflange-dlgs.cpp:339
 #, c-format
 msgid "This is GpgOL version %s"
 msgstr "Dies ist GpgOL Version %s"
 
-#: src/olflange.cpp:482
+#: src/olflange.cpp:339
+msgid ""
+"You have installed a new version of GpgOL.\n"
+"\n"
+"Please open the option dialog and check that the settings are correct for "
+"your needs.  The option dialog can be found in the main menu at: Extras-"
+">Options->GpgOL.\n"
+msgstr ""
+"Eine neue Version von GpgOL ist installiert worden.\n"
+"\n"
+"Bitte öffnen Sie das Fenster mit den Einstellungen und um zu kontrollieren ob die Einstellungen für Sie noch stimmen.  Sie finden die Einstellungen im Hauptmenu unter:  Extras->Optionen->GpgOL.\n"
+
+#: src/olflange.cpp:506
 msgid ""
 "This version of Outlook is too old!\n"
 "\n"
index b1a26a8..6174d52 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GPGol\n"
 "Report-Msgid-Bugs-To: bug-gpgol@g10code.com\n"
-"POT-Creation-Date: 2008-02-26 12:47+0100\n"
+"POT-Creation-Date: 2008-03-07 12:10+0100\n"
 "PO-Revision-Date: 2006-12-12 23:52+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -57,7 +57,7 @@ msgstr ""
 msgid "Select Certificate Manager"
 msgstr "GPG-nyckel&hanterare"
 
-#: src/engine.c:365
+#: src/engine.c:368
 msgid ""
 "The user interface server is not available or does not work.  Using an "
 "internal user interface.\n"
@@ -66,7 +66,7 @@ msgid ""
 "are not readable."
 msgstr ""
 
-#: src/engine.c:369 src/ext-commands.cpp:683 src/main.c:603 src/main.c:609
+#: src/engine.c:372 src/ext-commands.cpp:691 src/main.c:614 src/main.c:620
 #: src/message.cpp:326
 msgid "GpgOL"
 msgstr ""
@@ -208,130 +208,130 @@ msgstr "*** Notation start (signatur av: "
 msgid "*** End Notation ***\n"
 msgstr "*** Notation slut ***\n"
 
-#: src/ext-commands.cpp:442
+#: src/ext-commands.cpp:445
 msgid "&Decrypt and verify message"
 msgstr "&Dekryptera och validera meddelandet"
 
-#: src/ext-commands.cpp:443
+#: src/ext-commands.cpp:446
 #, fuzzy
 msgid "&Verify signature"
 msgstr "FELAKTIG signatur!"
 
-#: src/ext-commands.cpp:444
+#: src/ext-commands.cpp:447
 msgid "&Display crypto information"
 msgstr ""
 
-#: src/ext-commands.cpp:454
+#: src/ext-commands.cpp:457
 msgid ">GnuPG protocol"
 msgstr ""
 
-#: src/ext-commands.cpp:455
+#: src/ext-commands.cpp:458
 msgid "auto"
 msgstr ""
 
-#: src/ext-commands.cpp:456
+#: src/ext-commands.cpp:459
 #, fuzzy
 msgid "PGP/MIME"
 msgstr "[PGP/MIME-meddelande]"
 
-#: src/ext-commands.cpp:457
+#: src/ext-commands.cpp:460
 msgid "S/MIME"
 msgstr ""
 
-#: src/ext-commands.cpp:459
+#: src/ext-commands.cpp:462
 #, fuzzy
 msgid "&encrypt message with GnuPG"
 msgstr "Signera meddelandet med GPG"
 
-#: src/ext-commands.cpp:460
+#: src/ext-commands.cpp:463
 #, fuzzy
 msgid "&sign message with GnuPG"
 msgstr "Signera meddelandet med GPG"
 
-#: src/ext-commands.cpp:464 src/ext-commands.cpp:861
+#: src/ext-commands.cpp:467 src/ext-commands.cpp:870
 #, fuzzy
 msgid "Encrypt message with GnuPG"
 msgstr "Signera meddelandet med GPG"
 
-#: src/ext-commands.cpp:465 src/ext-commands.cpp:871
+#: src/ext-commands.cpp:468 src/ext-commands.cpp:880
 #, fuzzy
 msgid "Sign message with GnuPG"
 msgstr "Signera meddelandet med GPG"
 
-#: src/ext-commands.cpp:500
+#: src/ext-commands.cpp:503
 #, fuzzy
 msgid "GnuPG Certificate &Manager"
 msgstr "GPG-nyckel&hanterare"
 
-#: src/ext-commands.cpp:504
+#: src/ext-commands.cpp:507
 msgid "Open the certificate manager"
 msgstr ""
 
-#: src/ext-commands.cpp:682
+#: src/ext-commands.cpp:690
 #, fuzzy
 msgid "Could not start certificate manager"
 msgstr "Kunde inte starta nyckelhanteraren"
 
-#: src/ext-commands.cpp:745
+#: src/ext-commands.cpp:754
 #, fuzzy
 msgid "Select this option to decrypt and verify the message."
 msgstr "Välj det här alternativet för att kryptera meddelandet."
 
-#: src/ext-commands.cpp:752
+#: src/ext-commands.cpp:761
 #, fuzzy
 msgid "Select this option to show information on the crypto status"
 msgstr "Välj det här alternativet för att signera meddelandet."
 
-#: src/ext-commands.cpp:760 src/ext-commands.cpp:841
+#: src/ext-commands.cpp:769 src/ext-commands.cpp:850
 msgid "Check the signature now and display the result"
 msgstr ""
 
-#: src/ext-commands.cpp:767
+#: src/ext-commands.cpp:776
 #, fuzzy
 msgid "Select this option to automatically select the protocol."
 msgstr "Välj det här alternativet för att kryptera meddelandet."
 
-#: src/ext-commands.cpp:774
+#: src/ext-commands.cpp:783
 #, fuzzy
 msgid "Select this option to select the PGP/MIME protocol."
 msgstr "Välj det här alternativet för att kryptera meddelandet."
 
-#: src/ext-commands.cpp:781
+#: src/ext-commands.cpp:790
 #, fuzzy
 msgid "Select this option to select the S/MIME protocol."
 msgstr "Välj det här alternativet för att kryptera meddelandet."
 
-#: src/ext-commands.cpp:788
+#: src/ext-commands.cpp:797
 msgid "Select this option to encrypt the message."
 msgstr "Välj det här alternativet för att kryptera meddelandet."
 
-#: src/ext-commands.cpp:795
+#: src/ext-commands.cpp:804
 msgid "Select this option to sign the message."
 msgstr "Välj det här alternativet för att signera meddelandet."
 
-#: src/ext-commands.cpp:802
+#: src/ext-commands.cpp:811
 #, fuzzy
 msgid "Select this option to open the certificate manager"
 msgstr "Välj det här alternativet för att kryptera meddelandet."
 
-#: src/ext-commands.cpp:831
+#: src/ext-commands.cpp:840
 msgid "Show S/MIME status info"
 msgstr ""
 
-#: src/ext-commands.cpp:851
+#: src/ext-commands.cpp:860
 msgid "Use S/MIME for sign/encrypt"
 msgstr ""
 
-#: src/ext-commands.cpp:881
+#: src/ext-commands.cpp:890
 msgid "Open the GpgOL certificate manager"
 msgstr ""
 
-#: src/main.c:602
+#: src/main.c:613
 #, c-format
 msgid "Note: Using compatibility flags: %s"
 msgstr ""
 
-#: src/main.c:608
+#: src/main.c:619
 #, c-format
 msgid ""
 "Note: Writing debug logs to\n"
@@ -399,37 +399,37 @@ msgstr ""
 msgid "This message has no signature."
 msgstr "Dekryptera meddelandet och validera signaturen"
 
-#: src/message.cpp:856
+#: src/message.cpp:858
 msgid "This message is not encrypted."
 msgstr ""
 
-#: src/message.cpp:1080
+#: src/message.cpp:1084
 #, fuzzy, c-format
 msgid ""
 "Decryption failed\n"
 "(%s)"
 msgstr "Kryptering misslyckades"
 
-#: src/message.cpp:1208
+#: src/message.cpp:1212
 msgid "No recipients to encrypt to are given"
 msgstr ""
 
-#: src/message.cpp:1224
+#: src/message.cpp:1228
 #, fuzzy, c-format
 msgid "Encryption failed (%s)"
 msgstr "Kryptering misslyckades"
 
-#: src/message.cpp:1245
+#: src/message.cpp:1249
 #, fuzzy, c-format
 msgid "Signing failed (%s)"
 msgstr "Signering misslyckades"
 
-#: src/mimeparser.c:1072
+#: src/mimeparser.c:1108
 #, fuzzy
 msgid "Error writing to stream"
 msgstr "Fel vid skrivning av fil"
 
-#: src/mimeparser.c:1073
+#: src/mimeparser.c:1109
 msgid "I/O-Error"
 msgstr "In-/Ut-fel"
 
@@ -489,16 +489,25 @@ msgid ""
 msgstr ""
 
 #. TRANSLATORS: See the source for the full english text.
-#: src/olflange-dlgs.cpp:329
+#: src/olflange-dlgs.cpp:333
 msgid "-#GpgOLFullHelpText#-"
 msgstr ""
 
-#: src/olflange-dlgs.cpp:335
+#: src/olflange-dlgs.cpp:339
 #, c-format
 msgid "This is GpgOL version %s"
 msgstr ""
 
-#: src/olflange.cpp:482
+#: src/olflange.cpp:339
+msgid ""
+"You have installed a new version of GpgOL.\n"
+"\n"
+"Please open the option dialog and check that the settings are correct for "
+"your needs.  The option dialog can be found in the main menu at: Extras-"
+">Options->GpgOL.\n"
+msgstr ""
+
+#: src/olflange.cpp:506
 msgid ""
 "This version of Outlook is too old!\n"
 "\n"
index 8e26ebb..284fd4e 100644 (file)
@@ -1,5 +1,9 @@
 2008-03-07  Werner Koch  <wk@g10code.com>
 
+       * mapihelp.cpp (mapi_get_sender): New.
+       * mymapitags.h (PR_PRIMARY_SEND_ACCT): New.
+       * mimemaker.c (do_mime_sign): Pass the sender to the engine.
+
        * common.h (opt): Add field SVN_REVISION.
        * main.c (read_options, write_options): Set it.
        * olflange.cpp (GpgolExt): Print a warning on program update.
index 7ac1fc0..c7714a7 100644 (file)
@@ -948,6 +948,66 @@ mapi_get_message_class (LPMESSAGE message)
 
 
 
+/* Return teh sender of the message.  According to the specs this is
+   an UTF-8 string; we rely on that the UI server handles
+   internationalized domain names.  */ 
+char *
+mapi_get_sender (LPMESSAGE message)
+{
+  HRESULT hr;
+  LPSPropValue propval = NULL;
+  char *buf;
+  char *p0, *p;
+  
+  if (!message)
+    return NULL; /* No message: Nop. */
+
+  hr = HrGetOneProp ((LPMAPIPROP)message, PR_PRIMARY_SEND_ACCT, &propval);
+  if (FAILED (hr))
+    {
+      log_debug ("%s:%s: HrGetOneProp failed: hr=%#lx\n",
+                 SRCNAME, __func__, hr);
+      return NULL;
+    }
+    
+  if (PROP_TYPE (propval->ulPropTag) != PT_UNICODE) 
+    {
+      log_debug ("%s:%s: HrGetOneProp returns invalid type %lu\n",
+                 SRCNAME, __func__, PROP_TYPE (propval->ulPropTag) );
+      MAPIFreeBuffer (propval);
+      return NULL;
+    }
+  
+  buf = wchar_to_utf8 (propval->Value.lpszW);
+  MAPIFreeBuffer (propval);
+  if (!buf)
+    {
+      log_error ("%s:%s: error converting to utf8\n", SRCNAME, __func__);
+      return NULL;
+    }
+  /* The PR_PRIMARY_SEND_ACCT property seems to be divided into fields
+     using Ctrl-A as delimiter.  The first field looks like the ascii
+     formatted number of fields to follow, the second field like the
+     email account and the third seems to be a textual description of
+     that account.  We return the second field. */
+  p = strchr (buf, '\x01');
+  if (!p)
+    {
+      log_error ("%s:%s: unknown format of the value `%s'\n",
+                 SRCNAME, __func__, buf);
+      xfree (buf);
+      return NULL;
+    }
+  for (p0=buf, p++; *p && *p != '\x01';)
+    *p0++ = *p++;
+  *p0 = 0;
+  log_debug ("%s:%s: address is `%s'\n", SRCNAME, __func__, buf);
+  return buf;
+}
+
+
+
+
 /* Return the message type.  This function knows only about our own
    message types.  Returns MSGTYPE_UNKNOWN for any MESSAGE we have
    no special support for.  */
index b4a6335..ba256c4 100644 (file)
@@ -1,5 +1,5 @@
 /* mapihelp.h - Helper functions for MAPI
- *     Copyright (C) 2005, 2007 g10 Code GmbH
+ *     Copyright (C) 2005, 2007, 2008 g10 Code GmbH
  *
  * This file is part of GpgOL.
  * 
@@ -103,6 +103,7 @@ int mapi_set_header (LPMESSAGE msg, const char *name, const char *val);
 
 int mapi_change_message_class (LPMESSAGE message, int sync_override);
 char *mapi_get_message_class (LPMESSAGE message);
+char *mapi_get_sender (LPMESSAGE message);
 msgtype_t mapi_get_message_type (LPMESSAGE message);
 int mapi_to_mime (LPMESSAGE message, const char *filename);
 
index 58ccf03..0f8f276 100644 (file)
@@ -276,7 +276,7 @@ GpgolMessageEvents::OnWriteComplete (LPEXCHEXTCALLBACK eecb, ULONG flags)
   if (SUCCEEDED (hr))
     {
       protocol_t proto = m_pExchExt->m_protoSelection;
-      
+
       if (m_pExchExt->m_gpgEncrypt && m_pExchExt->m_gpgSign)
         rc = message_sign_encrypt (msg, proto, hWnd);
       else if (m_pExchExt->m_gpgEncrypt && !m_pExchExt->m_gpgSign)
index c5e0c49..43f62aa 100644 (file)
@@ -1184,7 +1184,8 @@ do_mime_sign (LPMESSAGE message, HWND hwnd, protocol_t protocol,
   /* Prepare the signing.  FIXME: figure out the signer of the mail.  */
   if (engine_create_filter (&filter, collect_signature, &sigbuffer))
     goto failure;
-  if (engine_sign_start (filter, hwnd, protocol, NULL, &protocol))
+  if (engine_sign_start (filter, hwnd, protocol, 
+                         mapi_get_sender (message), &protocol))
     goto failure;
 
   protocol = check_protocol (protocol);
index 4c7d746..7eda9b4 100644 (file)
 #define PR_PREPROCESS                           PROP_TAG( PT_BOOLEAN,   0x0E22)
 #define PR_ORIGINATING_MTA_CERTIFICATE          PROP_TAG( PT_BINARY,    0x0E25)
 #define PR_PROOF_OF_SUBMISSION                  PROP_TAG( PT_BINARY,    0x0E26)
+#define PR_PRIMARY_SEND_ACCT                    PROP_TAG( PT_UNICODE,   0x0E28)
 #define PR_ENTRYID                              PROP_TAG( PT_BINARY,    0x0FFF)
 #define PR_OBJECT_TYPE                          PROP_TAG( PT_LONG,      0x0FFE)
 #define PR_ICON                                 PROP_TAG( PT_BINARY,    0x0FFD)