Code cleanups.
[gpgol.git] / src / ChangeLog
1 2007-10-22  Werner Koch  <wk@g10code.com>
2
3         * engine-assuan.c (connect_uiserver): Try to start the server.
4         (get_uiserver_name, replace_dollar_s, get_quoted_socket_name): New.
5
6         * main.c (REGKEY): Remove.
7         * common.h (GNUPG_REGKEY): New.
8         * common.c (default_homedir): Use it in place of a hard coded one.
9         (get_locale_dir): Ditto.
10         (gpgol_spawn_detached): New.
11
12 2007-10-18  Werner Koch  <wk@g10code.com>
13
14         * common.c (get_system_check_bitmap): New.
15
16         * decrypt.bmp, encrypt.bmp, sign.bmp, key_mana.bmp: Change
17         background color to pink and voila Outlook presents them
18         transparent.
19
20         * logo.bmp: Cleaned up to use just one color.
21         * olflange-dlgs.cpp (GPGOptionsDlgProc): Do not use LoadImage.
22
23 2007-10-16  Werner Koch  <wk@g10code.com>
24
25         * myexchext.h (EECMDID_): Add a few more of these constants.
26         * ext-commands.cpp (check_menu): New.
27         (toolbar_add_menu): Rename to ..
28         (add_menu): .. this.
29         (toolbar_from_tbe): Remove.
30         (add_toolbar): New.
31         (InstallCommands): Use new toolbar helper.
32         (QueryButtonInfo): Changed to use new toolbar helper.
33         (~GpgolExtCommands): New.
34
35         * engine.c (engine_encrypt_start): Add arg R_PROTOCOL.
36         * engine-assuan.c (op_assuan_encrypt): Add arg R_USED_PROTOCOL and
37         ask the server for it.
38         * mimemaker.c (sink_encryption_write_b64): New.
39         (mime_encrypt): Add S/MIME support.
40
41 2007-10-15  Werner Koch  <wk@g10code.com>
42
43         * engine-assuan.c (op_assuan_start_keymanager): New.
44         * engine.c (engine_start_keymanager): New.
45         * ext-commands.cpp (DoCommand): Call it.
46
47 2007-10-12  Werner Koch  <wk@g10code.com>
48
49         * gpgol-rsrcs.rc: Remove.
50         * dialogs.rc: Renamed from olflange-rsrcs.rc.
51         * dialogs.h: Rename for olflange-ids.h.  Changed all includers.
52         * Makefile.am: Adjust accordingly.
53
54         * verify-dialog.c (verify_dialog_box): Do not distinguish
55         languages.
56         (verify_dlg_set_labels): New.
57         (verify_dlg_proc): Call it.
58
59         * passphrase-dialog.c (passphrase_callback_box): Do not
60         distinguish languages.
61         (decrypt_key_dlg_set_labels): New.
62         (decrypt_key_dlg_proc): Call it.
63         (decrypt_key_ext_dlg_set_labels): New.
64         (decrypt_key_ext_dlg_proc): Call it.
65
66         * recipient-dialog.c (recipient_dialog_box): Do not distinguish
67         languages.
68         (recipient_dialog_box2): Ditto.
69         (recipient_dlg_set_labels): New.
70         (recipient_dlg_proc): Call it.
71
72 2007-10-11  Werner Koch  <wk@g10code.com>
73
74         * ext-commands.cpp (toolbar_add_menu): USe "@" to indicate a
75         separator and "" to ski the entry.  Changed callers.
76
77         * common.h (struct): Remove AUTO_SIGN_ATTACH.  Add ENABLE_SMIME.
78         * main.c (read_options, write_options): Save the new option.
79         * olflange-dlgs.cpp (GPGOptionsDlgProc): Implement new option and
80         print warning.
81         * mapihelp.cpp (mapi_change_message_class): Take care of enable_smime.
82         
83         * olflange-ids.h: Renumbered.
84         * olflange-rsrcs.rc: Keep only the english dialog and changed all
85         text to dummy texts.
86         * olflange-dlgs.cpp (set_labels): New.
87         (GPGOptionsDlgProc): Call it.
88         * property-sheets.cpp (GetPages): Do not distinguish languages.
89         * config-dialog.c (config_dialog_box): Ditto.
90         (config_dlg_set_labels): New.
91         * gpgol-rsrcs.rc (IDD_OPT): Move to olflange-rsrcs.rc and rename
92         to IDD_EXT_OPTIONS.
93         (IDD_OPT_DE): Remove.
94
95 2007-10-10  Werner Koch  <wk@g10code.com>
96
97         * main.c (read_options): Remove saveDecryptedAttachment.  Add
98         smimeDefault.
99
100 2007-10-08  Werner Koch  <wk@g10code.com>
101
102         * main.c (do_log): Remove trailing LF from w32 error message and
103         also print the numeric error code.
104
105 2007-09-25  Werner Koch  <wk@g10code.com>
106
107         * Makefile.am (gpgol_LDADD): Link against libassuan.
108
109         * util.h (DIM, DIMof): New.
110
111         * engine.c (filter_gpgme_read_cb): Implement nonblock feature.
112         (filter_gpgme_write_cb): Ditto.
113
114 2007-09-24  Werner Koch  <wk@g10code.com>
115
116         * common.c (standard_homedir, default_homedir): New. 
117         (w32_shgetfolderpath): Make static.
118
119 2007-09-21  Werner Koch  <wk@g10code.com>
120
121         * mimeparser.c (build_mimeinfo): New.
122         (finish_message): Store the mime structure.
123         * mapihelp.cpp (mapi_get_message_class): New.
124         (mapi_get_sig_status): New.
125         (get_gpgolprotectiv_tag, get_gpgolsigstatus_tag) 
126         (get_gpgolattachtype_tag): Factored code out to ...
127         (create_gpgol_tag): .. New.
128         (get_gpgolmimeinfo_tag): New.
129         (mapi_get_mime_info): New.
130
131 2007-09-20  Werner Koch  <wk@g10code.com>
132
133         * user-events.cpp, user-events.h:  New.
134         * olflange.h (class GpgolExt): Add member for it.
135         * olflange.cpp (QueryInterface): Hook it in.
136
137 2007-09-19  Werner Koch  <wk@g10code.com>
138
139         * mapihelp.cpp (mapi_has_sig_status): Return true if any sig
140         status is present.
141         (mapi_test_sig_status): New. Take semantics of the former
142         mapi_has_sig_status.  Changed all callers.
143         (mapi_change_message_class): Set sign status to n/a for other
144         message classed.
145         * mimemaker.c (finalize_message): Mark created messages.
146         (write_buffer_for_cb): Rename from write_buffer_voidarg and return
147         number of bytes written.
148         (collect_signature): Return number of bytes written.
149         
150         * mapihelp.h (struct mapi_attach_item_s): New member
151         PRIVATE_MAPITABLE.
152         * mapihelp.cpp (mapi_create_attach_table) 
153         (mapi_release_attach_table): Keep the mapi table oben and put
154         PR_ATATCH_NUM into the MAPIPOS member.
155         (mapi_get_gpgol_body_attachment): Use PR_ATATCH_NUM.
156
157         * mimeparser.c (finish_message): New.
158         (mime_decrypt, mime_verify): Call it.
159
160 2007-09-17  Werner Koch  <wk@g10code.com>
161
162         * olflange.cpp: Print gpgme version.
163
164 2007-09-14  Werner Koch  <wk@g10code.com>
165
166         * engine-gpgme.c: Rewrote most of it.
167
168 2007-09-13  Werner Koch  <wk@g10code.com>
169
170         * common.c (xrealloc): New.
171
172 2007-09-11  Werner Koch  <wk@g10code.com>
173
174         * engine-gpgme.c (op_encrypt_data): New.
175
176 2007-09-08  Werner Koch  <wk@g10code.com>
177
178         * engine.c: New.
179         * engine.h: Rewrite.  Factor existing stuff out to ..
180         * engine-gpgme.h: .. new.
181         * engine-assuan.h, engine-assuan.c: New.
182
183 2007-09-07  Werner Koch  <wk@g10code.com>
184
185         * common.c (qp_decode): Handle softe line breaks. 
186
187 2007-09-06  Werner Koch  <wk@g10code.com>
188
189         * mapihelp.cpp (mapi_get_body): New.
190
191         * mimeparser.c (protocol_t): Move to .. common.h.
192
193 2007-09-05  Werner Koch  <wk@g10code.com>
194
195         * mimemaker.c, mimemaker.h: New.
196
197 2007-08-31  Werner Koch  <wk@g10code.com>
198
199         * mapihelp.cpp (mapi_set_header): New.
200         * message.cpp (pgp_mime_from_clearsigned): New.
201         (message_verify): Use it.
202         * main.c: Call srand ().
203         * util.h (trailing_ws_p): New.
204         * common.c (generate_boundary): New.
205
206 2007-08-30  Werner Koch  <wk@g10code.com>
207
208         * message-events.h (class GpgolMessageEvents): Rename M_IS_SMIME
209         to M_PROCESSED.
210         * message-events.cpp (OnRead, OnReadComplete): Ditto.
211         (OnReadComplete): Remove preview decryption stuff.
212         (OnWriteComplete): Remove GpgMsg based code.
213         * ext-commands.cpp (DoCommand): Ditto
214         (InstallCommands): Do not init the watcher.
215         * olflange.cpp (GpgolExt): Do not init the watcher.
216         (GpgolExt): Do not clanup the watcher.
217         * main.c (DllMain): Ditto.
218         * gpgmsg.cpp, gpgmsg.hh: Remove.
219         * watcher.cpp: Remove
220         * pgpmime.c, pgpmime.h: Remove.
221
222         * mapihelp.h (MSGTYPE_GPGOL_CLEAR_SIGNED)
223         (MSGTYPE_GPGOL_PGP_MESSAGE): New.
224         * mapihelp.cpp (mapi_get_message_type): Map them.
225         (get_msgcls_from_pgp_lines): New.
226         (mapi_change_message_class): Detect old old style PGP messages.
227         (mapi_get_body_as_stream): New.
228         * message.cpp (message_verify, message_decrypt): Handle them.
229         * message-events.cpp (OnRead): Ditto.
230
231 2007-08-29  Werner Koch  <wk@g10code.com>
232
233         * ext-commands.h (class GpgolExtCommands): Add members
234         M_NCMDKEYMANAGER and M_NCMDDECRYPT.
235         * ext-commands.cpp (GpgolExtCommands): Initialize it.
236         (InstallCommands): Use them here instead of reusing another variable.
237         (DoCommand, Help, QueryHelpText, QueryButtonInfo): Restructured
238         for better readibility.
239
240 2007-08-21  Werner Koch  <wk@g10code.com>
241
242         * w32-gettext.c (SUBLANG_BENGALI_BANGLADESH): Fix to 2 as per MSDN.
243         (SUBLANG_PUNJABI_PAKISTAN): Remove as it is not in MSDN.
244         (SUBLANG_ROMANIAN_MOLDOVA): Remove as it is not in MSDN.
245         (SUBLANG_ROMANIAN_ROMANIA): Change to value 1 as per MSDN.
246
247 2007-08-13  Marcus Brinkmann  <marcus@g10code.de>
248
249         * Makefile.am (gpgol_SOURCES): Add common.h.
250
251 2007-08-06  Werner Koch  <wk@g10code.com>
252
253         Lots of changes to support S/MIME and to revamp most of the old
254         code.  More changes to follow.  The list of changes below is not
255         complete as it does not identfy all newly written code.
256         
257         * mimeparser.c: New. Based on pgpmime.c 
258
259         * display.cpp (update_display): Removed unused arg MSG.
260         (update_display): Set the body to an empty string even if it is
261         not HTML.
262
263         * olflange.cpp (Install): Print OL version only once.
264
265         * verify-dialog.c (verify_dialog_box): Add arg PROTOCOL.
266         (load_sigbox): Ditto.
267         (verify_dlg_proc): Changed title acccording to used protocol.
268
269         * Makefile.am (gpgol_LDADD): Add libadvapi due to our use of
270         CryptGenRandom.
271
272         * main.c (get_crypt_random, initialize_session_key): New. 
273         (DllMain): Initialize the session key.
274         (get_128bit_session_key, create_initialization_vector): New.
275
276         * serpent.c: New.  Taken from libgcrypt 1.3.0 and stripped down to
277         fit our needs.  Add CFB encryption API.
278         * serpent.h: New.
279
280         * mapihelp.cpp (mapi_mark_moss_attach): New.
281         * mymapitags.h (PR_ATTACHMENT_HIDDEN): New.
282
283         * display.cpp (open_inspector): New.
284
285         * mapihelp.cpp (mapi_get_binary_prop): New.
286
287         * engine-gpgme.c (op_verify_detached_sig_gpgme): Add arg
288         PROTOCOL.  Changed all callers to pass the OPENPGP protocol.
289
290         * common.c (b64_decode): Renamed from base64_decode and use new
291         type for the context.
292         (b64_init): New.
293         * pgpmime.c (qp_decode, base64_decode): Move to common.c and make
294         public.
295
296         * common.h (STRICT): Remove.
297         * intern.h: Rename to common.h.
298
299 2007-07-20  Werner Koch  <wk@g10code.com>
300
301         * myexchext.h (IOutlookExtItemEvents.): New.
302         * item-events.h, item-events.cpp: New.
303         * olflange.cpp (GpgolExt, QueryInterface): Hook it in.
304
305 2007-07-19  Werner Koch  <wk@g10code.com>
306
307         * attached-file-events.cpp: Renamed from attach.c.
308         * attached-file-events.h: Renamed from attach.h.  Removed some
309         inlines to the impl file.
310
311         * Makefile.am (gpgol_LDADD): Add libole32.
312
313 2007-07-18  Werner Koch  <wk@g10code.com>
314
315         * mapihelp.c (log_mapi_property): Support STRIGN8 and UNICODE.
316
317         * myexchext.h (IExchExtUserEvents, IExchExtSessionEvents): New
318         declarations.
319         * session-events.cpp, session-events.h: New.
320         * olflange.cpp (GpgolExt, QueryInterface): Hook session-events in.
321
322         * olflange.cpp (DllRegisterServer): Register only for interfaces
323         we really use.
324         (ext_context_name): New. Factored out from several places.
325         (Install): Initialize for Session context.
326
327         Renamed all CGPGExchExt* classes to Gpgol*.
328         
329         * olflange.h, olflange.cpp: Factor most code out to ..
330         * ext-commands.cpp, ext-commands.h, message-events.cpp
331         * message-events.h, property-sheets.cpp, property-sheets.h
332         * ol-ext-callback.cpp, ol-ext-callback.h: .. New.
333
334 2007-07-17  Werner Koch  <wk@g10code.com>
335
336         * Makefile.am (gpgol_LDADD): Add ws2_32.
337
338         * main.c (log_window_hierarchy, do_log_window_hierarchy): New.
339         * olflange.cpp (show_window_hierarchy): Replace by
340         log_window_hierarchy.
341         (g_initdll): Make static.
342         (InstallCommands): Factor some code out to ..
343         (toolbar_from_tbe, toolbar_add_menu): .. new.
344
345         * mapihelp.c, mapihelp.h: New. 
346         * olflange.cpp (show_mapi_property): Factor out to mapihelp.c
347         and rename to log_mapi_property.
348
349 2007-04-10  Werner Koch  <wk@g10code.com>
350
351         * display.cpp (find_message_window): Add arg LEVEL for debugging.
352         Ignore MsoCommand* Windows.  Fixes bug 735.
353
354 2006-10-14  Timo Schulz  <ts@g10code.de>
355
356         * recipient-dialog.c (lv_get_item_param): New.
357         (copy_item): Use it here to copy the opaque param.
358         (recipient_dlg_proc): And here to avoid the hidden column.
359         (initialize_rsetbox): Localize column names.
360
361         * olflange.cpp (get_outlook_property): Free returned BSTR.
362         (InstallCommands): Likewise.
363         
364 2009-09-06  Timo Schulz  <ts@g10code.de>
365
366         * recipient-dialog.c (recipient_dialog2): Do not free
367         key array here.
368         
369 2008-08-21  Timo Schulz  <ts@g10code.de>
370
371         * engine-gpgme.c (op_lookup_keys): Only add useable keys
372         and add all invalid keys to unknown.
373         * recipient-dialog.c (copy_item): Rewritten.
374         (initialize_keybox): Add comment to clarify use of fnd_keys.
375         (recipient_dialog_box): Simplified.
376         (find_item): Support partial search.
377         
378 2006-08-19  Timo Schulz  <ts@g10code.de>
379
380         * olflange-rsrcs.rc: Correct some dialog sizes.
381         * passphrase-dialog.c (decrypt_key_dlg_proc): Automatically
382         select the secret key if only one is available.
383         * config-dialog.c (GPGOptionsDlgProc): Passphrase cache
384         time is now requested in minutes but still internally
385         stored as seconds.
386         
387 2006-08-15  Timo Schulz  <ts@g10code.de>
388
389         * decrypt.bmp, encrypt.bmp: Restore format.
390         * olflange.cpp (OnWriteComplete): Correct exit code handling.
391         * recipient-dialog.c (initialize_rsetbox): Correct column width.
392         (recipient_dlg_proc): Do not show the cancel error any longer.
393         * passphrase-dialog.c (decrypt_key_dlg_proc): Likewise.
394         (decrypt_key_ext_dlg_proc): Ditto.
395         * olgpgcore.def: Deleted unused file.
396         
397 2006-06-14  Timo Schulz  <ts@g10code.com>
398
399         * gpgol-rscs.rc (IDD_OPT): The English version of the dialog
400         has no log file item. Add it.
401         
402 2006-05-22  Timo Schulz  <ts@g10code.com>
403
404         * verify-dialog.c (load_sigbox): A sigsum of 0 also indicates
405         a valid (good) signature.
406         
407 2006-04-25  Werner Koch  <wk@g10code.com>
408
409         * xmalloc.h: New.  Moved prototypes from util.h 
410         * w32-gettext.h:  Include it.
411         * common.c (utf8_to_wincp): Removed and replaced all callers by
412         utf8_to_native.
413         * common.c (wchar_to_utf8, utf8_to_wchar): Moved to ..
414         * w32-gettext.c: .. here.
415         (utf8_to_native): Make sure that we always return
416         a string and never NULL.
417         (native_to_utf8): New.
418         (native_to_wchar): New.
419         * gpgmsg.cpp (decrypt): Use native_to_utf8 for i18n strings
420         expected to be utf-8.
421         * pgpmime.c (pgpmime_decrypt, pgpmime_verify): Ditto.
422
423 2006-04-24  Werner Koch  <wk@g10code.com>
424
425         * gpgmsg.cpp (decrypt): New arg INFO_ONLY.
426         * olflange.cpp (OnReadComplete): Add code to call decrypt but with
427         INFO_ONLY if preview decryption has not been requested.
428         * main.c (read_options): New compatibility option no_preview_info.
429
430         * gpgmsg.cpp (getRecipients): Don't add the default key here.
431         (encrypt_and_sign): But do it here.
432         * engine-gpgme.c (op_get_one_key): New.
433
434 2006-04-22  Timo Schulz  <ts@g10code.com>
435
436         * common.c (utf8_to_wincp): Corrected utf8 decoding.
437         * passphrase-dialog.c (load_recipbox): Likewise.
438         * olflange-dlg.cpp (GPGOptionsDlgProc): Activate the
439         'confirm' button when the dialog state has been changed.
440         * olflange-rsrcs.rc (IDD_GPG_OPTIONS_DE): Change description.
441         
442 2006-03-28  Werner Koch  <wk@g10code.com>
443
444         * olflange-rsrcs.rc (IDD_GPG_OPTIONS_DE): Add new control box.
445         (IDD_GPG_OPTIONS): Updated to match German version.
446         * olflange-dlgs.cpp (GPGOptionsDlgProc): Ditto.
447         * gpgmsg.cpp (decrypt): Implemented PREFER_HTML option.
448         (get_long_attach_data): New.
449
450 2006-03-27  Werner Koch  <wk@g10code.com>
451
452         * engine-gpgme.c (op_verify_detached_sig_gpgme): New.
453
454         * pgpmime.c (pgpmime_verify): New. First take on a PGP/MIME
455         signature verification.
456
457         * gpgmsg.cpp (is_pgpmime): Renamed to is_pgpmime_enc.
458         (class GpgMsgImpl): Niew members media_type. media_subtype and
459         ct_protocol.
460         (get_msg_content_type): New.
461         (decrypt): Show a warning for PGP/MIME signed messages.
462
463 2006-03-26  Werner Koch  <wk@g10code.com>
464
465         * intern.h: New option PREFER_HTML.
466         * main.c (write_options, read_options): Ditto.
467
468 2006-03-20  Werner Koch <wk@g10code.com>
469
470         * olflange.cpp (Install): Also check major part of build version.
471         
472 2006-03-17  Timo Schulz  <ts@g10code.com>
473
474         * w32-gettext.c (utf8_to_native): Make it global.
475         * config-dialog.c (get_open_file_name): Make sure the selected
476         file really exists.
477         * passphrase-dialog.c (decrypt_dlg_proc): UTF8 conversion.
478         (passphrase_callback_box): Likewise.
479         * recipient-dialog.c (recipient_dlg_proc): Likewise.
480         * verify-dialog.c (load_akalist): Likewise.
481         (load_sigbox): Likewise.
482         * common.c (utf8_to_wincp): New.
483
484 2006-03-15  Werner Koch  <wk@g10code.com>
485
486         * olflange.cpp (Install): Print gpgol version for debugging.
487
488 2006-03-14  Timo Schulz  <ts@g10code.com>
489
490         * passphrase-dialog.c (decrypt_dlg_proc): When used
491         as a signing key selection dialog, use a different title.
492         * gpgol-rsrcs.rc: Use German titles for German dialog versions.
493         
494 2006-02-23  Werner Koch  <wk@g10code.com>
495
496         * main.c (read_options): Set default caching time to 10 minutes.
497
498 2006-01-16  Werner Koch  <wk@g10code.com>
499
500         * verify-dialog.c (load_sigbox): Give a hint in case of a bad
501         signature.
502
503         * gpgol-rsrcs.rc (IDD_ENC_DE): Add an informational header.
504
505 2005-12-07  Werner Koch  <wk@g10code.com>
506
507         * olflange.cpp (Install): Check the version and print a warning.
508
509         * olflange-dlgs.cpp (GPGOptionsDlgProc): Simplified the default
510         key code.
511
512         * config-dialog.c (store_config_value): Create key if it does not
513         exists.
514         (load_config_value_ext): Removed.
515
516 2005-12-06  Werner Koch  <wk@g10code.com>
517
518         * config-dialog.c (start_key_manager): Don't pass the options to
519         access.
520
521 2005-12-06  Werner Koch  <wk@g10code.com>
522
523         * gpgmsg.cpp (getRecipients): Add the default key to the list of
524         recipients.
525         * recipient-dialog.c (recipient_dlg_proc): Add the already found
526         keys to the selected ones.
527
528         * olflange.cpp (OnWriteComplete): Need to disable the deleting of
529         HTML bodys.
530
531 2005-12-05  Werner Koch  <wk@g10code.com>
532
533         * Makefile.am (gpgol_LDADD): Add -loleaut32.
534         * engine-gpgme.c (op_verify_detached_sig_mem): New.
535         * olflange.cpp (OnWriteComplete): Pass HTML flag to sign call.
536         (put_outlook_property): Need to use a BSTR for the sake of putting
537         HTMLBody.
538         * gpgmsg.cpp (sign): Add arg WANT_HTML.
539         (free_attach_info): New.  Use it in the destructor.
540         (createHtmlAttachment): New.
541         (encrypt_and_sign, sign): Use it here.
542         (writeAttestation): Don't write an empty attestation.
543
544 2005-12-02  Werner Koch  <wk@g10code.com>
545
546         * verify-dialog.c (verify_dialog_box): Actually allow for German
547         dialog.
548         * recipient-dialog.c (recipient_dialog_box) 
549         (recipient_dialog_box2): Ditto.
550         * passphrase-dialog.c (signer_dialog_box) 
551         (passphrase_callback_box): Ditto.
552
553         * intern.h (struct): New field PREVIEW_DECRYPT.  Use it instead os
554         the old compatibility flags.
555         * main.c (write_options, read_options): Store/load preview decrypt.
556         * config-dialog.c (config_dlg_proc): Removed homedir and gpgbinary
557         options as they are deprecated. Put logfile entry here.
558         * olflange-dlgs.cpp (GPGOptionsDlgProc): Remove logfile entry. Add
559         preview-decrypt checkbox.
560         * olflange.cpp (InstallCommands): Remove experimental preview
561         command.
562
563         * w32-gettext.c (gettext_localename): New.
564         * config-dialog.c (config_dialog_box): Use it here to match the
565         gettext behaviour.
566         (GetPages): Ditto.
567
568 2005-12-01  Werner Koch  <wk@g10code.com>
569
570         * engine-gpgme.c (op_decrypt_stream_to_gpgme, decrypt_stream) 
571         (op_decrypt): Add arg PREVIEW_MODE.
572         * pgpmime.c (pgpmime_decrypt): New arg PREVIEW_MODE.
573         (struct pgpmime_context): New field PREVIEW.
574         (message_cb, plaintext_handler): Handle preview mode.
575         * gpgmsg.cpp (class GpgMsgImpl): Renamed SILENT to PREVIEW.
576         (setSilent): Renamed to ..
577         (setPreview): .. this.
578         (decrypt): Handle preview mode.  Display a string while decrypting
579         PGP/MIME messages.
580
581         * display.cpp (update_display): New arg TEXT.
582         * gpgmsg.cpp (class GpgMsgImpl): Removed BODY_PLAIN and BODY.
583         (getDisplayText): Removed.
584         (loadBody): Changes to return the allocated body.
585         (getOrigText): Removed.
586         (getMessageType): Rewritten to take the body text as argument.
587         (decrypt): Pass plaintext directly to update_display.  Free
588         plaintext.
589         (sign, encrypt_and_sign): Likewise.
590
591         * olflange.cpp (OnWriteComplete): Always delete PR_BODY on error.
592
593 2005-11-30  Werner Koch  <wk@g10code.com>
594
595         * gpgmsg.cpp: Made more strings translatable.
596         * olflange.cpp: Replaced all LoadStrings by gettext calls.
597         * olflange-ids.h: Removed the IDS_ constants.
598         * olflange-rsrcs.rc: Removed the stringtables.
599
600         * common.c (get_root_key, read_w32_registry_string): New.  Taken
601         for libgpg-error.
602         * main.c (i18n_init): New.
603         (DllMain): Call it.
604         (get_locale_dir, drop_locale_dir): New.
605
606         * w32-gettext.c, w32-gettext.h: New.  Taken form libgpg-error.
607         Slightly modified due to the fact that gpgol is W32-only.
608         * util.h (_, N_): Define standard i18n macros.
609
610         * display.cpp (set_message_body): Do not delete a RTF property.
611
612         * util.h (SRCNAME): New.  Changed all __FILE__ to this.
613         * main.c (log_srcname): New.
614
615 2005-11-20  Werner Koch  <wk@g10code.com>
616
617         * gpgmsg.cpp (loadBody): For HTML try to read the HTMLBody from
618         the OOM as a last resort.
619         * olflange.cpp (get_outlook_property): New.
620         (put_outlook_property_int): New.
621
622 2005-11-15  Werner Koch  <wk@g10code.com>
623
624         * Makefile.am (gpgol_LDADD): Remove -lintl for now.
625
626         * olflange.cpp (OnWriteComplete): Make sure that we don't sent out
627         unencrypted stuff on error.
628         * display.cpp (set_message_body): Add arg IS_HTML.
629         (update_display): Ditto.
630
631         * gpgmsg.cpp (loadBody): New arg WANT_HTML.
632         (getOrigText): Ditto.
633
634         * olflange.h (class CGPGExchExtMessageEvents): Add M_WANT_HTML.
635         * olflange.cpp (OnWrite): Set it.
636         (OnWriteComplete): Pass its value to the encrypt functions.
637
638 2005-11-10  Werner Koch  <wk@g10code.com>
639
640         * config-dialog.c (start_key_manager): Changed invocation of
641         default keymanager.
642
643 2005-10-21  Marcus Brinkmann  <marcus@g10code.de>
644
645         * Makefile.am (libgpgme.a, libgpgme.a): New targets.
646         (gpgol_DEPENDENCIES): Add libgpgme.a and libgpg-error.a.
647         (clean-local): Likewise.
648         (gpgol_LDADD): Link to these local versions statically.
649
650 2005-10-20  Marcus Brinkmann  <marcus@g10code.de>
651
652         * mapi32.def: New file.
653         * Makefile.am (gpgol_DEPENDENCIES): New variable.
654         (libmapi32.a): New target.
655         (gpgol_LDADD): Replace mapi32.dll with "-L . -lmapi32".
656         (clean-local): New target.
657
658 2005-10-19  Werner Koch  <wk@g10code.com>
659
660         * gpgmsg.cpp (sign, encrypt_and_sign): Don't set the body first to
661         empty. If this is really required we should do this in
662         set_message_body.
663         (sign): Save changes. Set content type to text/plain.
664         (encrypt_and_sign): Save changes also for empty bodies.
665
666 2005-10-06  Werner Koch  <wk@g10code.com>
667
668         * gpgmsg.cpp (writeAttestation): Use gpgme_free for BUFFER.
669         * engine-gpgme.c (data_to_file): Ditto.
670
671 2005-10-06  Marcus Brinkmann  <marcus@g10code.de>
672
673         * Makefile.am (gpgol_DEPENDENCIES): New variable.
674         (libmapi32.a): New target.
675         (gpgol_LDADD): Replace mapi32.dll with "-L . -lmapi32".
676
677         * Makefile.am (gpgol_LDADD): Prefix gpgol.def and mapi32.dll with
678         $(srcdir).
679
680         * Makefile.am (.rc.o): Invoke windres with "-I .".
681
682         * Makefile.am (.rc.o): Invoke windres with -I $(srcdir).
683
684         * Makefile.am (gpgol_SOURCES): Add util.h.
685
686 2005-09-29  Werner Koch  <wk@g10code.com>
687
688         * gpgmsg.cpp (encrypt_and_sign): Pass signing key to encryption
689         function.
690
691         * passphrase-dialog.c (signer_dialog_box): New arg encrypting. 
692
693         * gpgmsg.cpp (encrypt_and_sign): Set content type.
694
695         * engine-gpgme.c (op_lookup_keys): Fixed multiple key detection.
696
697 2005-09-28  Werner Koch  <wk@g10code.com>
698
699         * olflange.cpp (DoCommand): Catch close command and resend to
700         avoid the "save changes?".
701
702         * display.cpp (update_display): Take care of utf-8 issues.
703         * common.c (latin1_to_utf8): New.
704         * pgpmime.c (latin1_data_write): New.
705         (plaintext_handler): Use it here.
706         (message_cb): Detect utf-8 encoding.
707
708         * main.c (read_options): Make sure that compat flags are always
709         properly initialized.
710
711         * display.cpp (find_message_window): First try to find the window
712         by class name.
713
714         * common.c (wchar_to_utf8_2): New.
715
716 2005-09-27  Werner Koch  <wk@g10code.com>
717
718         * pgpmime.c (pgpmime_decrypt): Pass a pseduo filename to the
719         decryption function.
720
721         * verify-dialog.c (load_sigbox): Get key direct from gpgme.
722         * passphrase-dialog.c (load_secbox, load_recipbox): Reworked.
723         (decrypt_key_dlg_proc, decrypt_key_ext_dlg_proc): Reworked.
724         (count_keys, release_keyarray): New.
725         (signer_dialog_box, passphrase_callback_box): Adjusted to above
726         changes.
727         * engine-gpgme.c (op_deinit): Remove keycache cleanup.
728         * Makefile.am (gpgol_SOURCES): Removed keycache.c, keycache.h.
729         * keycache.c, keycache.h: Removed.
730
731         * recipient-dialog.c (recipient_dialog_box) 
732         (recipient_dialog_box2): Rewritten and changed interface.
733         (load_rsetbox): Removed keycache stuff and rewrote to make use of
734         the keyarray.
735         (copy_item, initialize_keybox, recipient_dlg_proc): Ditto.
736         (keycache_to_key_array): Removed.
737         * engine-gpgme.c (op_lookup_keys): Rewritten, changed interface.
738         * gpgmsg.cpp (count_recipients): Renamed to ..
739         (count_strings): .. this.
740         (count_keys): New.
741         (free_recipient_array): Renamed to ..
742         (free_string_array): .. this.
743         (encrypt_and_sign): Adjusted for changes in op_lookup_keys and
744         recipient_dialog_box2.
745
746 2005-09-26  Werner Koch  <wk@g10code.com>
747
748         * passphrase-dialog.c (get_pubkey_algo_str): Add DSA and old Elgamal.
749
750         * gpgmsg.cpp (gatherAttachmentInfo): Ignore attachments we can't
751         open.
752
753         * main.c (write_options): Print message on error.  Rearranged to
754         make use of a table for all options.
755
756 2005-09-23  Werner Koch  <wk@g10code.com>
757
758         * recipient-dialog.c (recipient_dlg_proc): Removed
759         IDC_ENC_OPTARMOR stuff; it was not used.
760         (load_rsetbox): Fixed detection of encryption capability.
761
762         * gpgol-ids.h, gpgol-rsrcs.rc: Ditto.
763         
764 2005-09-22  Werner Koch  <wk@g10code.com>
765
766         * engine-gpgme.c (decrypt_stream): Use gpgme_op_decrypt_verify.
767
768         * gpgmsg.cpp (gatherAttachmentInfo): Ignore attestations when
769         checking for pgp/mime.
770
771         * pgpmime.c (pgpmime_decrypt): Added arg HWND.
772         (message_cb, plaintext_handler): Write attachments.
773         * pgpmime.c (base64_decode): New.
774         * rfc822parse.c (parse_field): Treat Content-Disposition special.
775
776         * gpgmsg.cpp (get_save_filename): Moved to ..
777         * common.c (get_save_filename): .. here.
778
779 2005-09-20  Timo Schulz  <ts@g10code.com>
780
781         * attach.c: New.
782         * attach.h: New.
783         * olflange.cpp (CGPGExchExt): Allocate class for
784         attached file events.
785         (QueryInterface): Return interface pointer for
786         attached file events.
787         * passphrase-dialog.c (load_secbox): Use new GPGME
788         interface.
789         (get_pubkey_algo_str): New.
790         * verify-dialog.c (load_sigbox): Likewise.
791         * recipient-dialog.c (load_recipbox): Likewise.
792
793 2005-09-19  Werner Koch  <wk@g10code.com>
794
795         * msgcache.c (flush_if_needed): New.
796         (msgcache_put): use it.
797         * intern.h (opt): New compatibility flags AUTO_DECRYPT and
798         NO_ATTESTATION.
799         * olflange.cpp (InstallCommands): Use watcher stuff only when this
800         option has been enabled.
801         * gpgmsg.cpp (decrypt): Take care of NO_ATTESTATION.
802         * main.c (DllMain): Removed debug output; this should not be
803         used before initialization!
804         * watcher.cpp: Include config.h.  Removed weird line endings.
805         * gpgmsg.cpp (encrypt_and_sign): Call SaveChanges.
806
807 2005-09-15  Timo Schulz  <ts@g10code.com>
808
809         * util.h: Provider watcher prototypes.
810         * watcher.cpp (watcher_init_hook): New.
811         (watcher_free_hook): New.
812         (watcher_set_callback_ctx): New.
813         (cbt_proc): New.
814         * display.cpp (find_message_window): Removed GpgMsg param.
815         Changed all callers.
816         
817 2005-09-15  Werner Koch  <wk@g10code.com>
818
819         * olflange.cpp (OnWriteComplete): Take care of EEME_FAILED.
820         (OnWrite): Check that we are encrypting only plain text messages.
821
822         * myexchext.h: Add flags used by OnReadComplete.
823
824 2005-09-14  Werner Koch  <wk@g10code.com>
825
826         * gpgmsg.cpp (writeAttestation): Add a content type.
827         (gatherAttachmentInfo): Detect whether we already have an attestation.
828         (decrypt): Don't create duplicate attestations.
829         (writeAttestation): Translate LF to CRLF.
830
831 2005-09-13  Werner Koch  <wk@g10code.com>
832
833         * pgpmime.c (pgpmime_decrypt): New arg ATTESTATION.
834         * engine-gpgme.c (add_verify_attestation): New.
835         (op_decrypt, op_verify_detached_sig, op_verify_detached_sig)
836         (op_verify_detached_sig): Add new arg ATTESTATION.  Changed all
837         callers.
838         (at_sig_summary, at_sig_validity, add_verify_attestation): New.
839         The code has been taken and modified from Mutt's crypt-gpgme.c and
840         entirely been writen by g10 Code.
841         (at_fingerprint): Ditto.
842
843         * gpgmsg.cpp (class GpgMsgImpl): New member ATTESTATION.  Use it
844         in all calls to the functions above.
845
846         * gpgmsg.cpp (decryptAttachment, decrypt): Save plaintext back
847         into the MAPI if desired.
848
849 2004-09-08  Timo Schulz  <ts@g10code.com>
850
851         * passphrase-dialog.c (lod_recipbox): Use gpgme directly
852         to resolve the keyids to userids.
853         * usermap.c, usermap.h: Removed.
854         * HashTable.cpp, HashTable.h: Removed.
855
856 2005-09-07  Timo Schulz  <ts@g10code.com>
857
858         * common.c: Removed unused code.
859         * intern.h: Likewise.
860
861 2005-09-07  Timo Schulz  <ts@g10code.com>
862
863         * olflange.cpp (ul_release): New. Wrapper with error checking
864         around UlRelease.
865         (InstallCommands): Separate test for type and if string is empty.
866         
867 2005-09-06  Werner Koch  <wk@g10code.com>
868
869         * engine-gpgme.c (op_decrypt_stream): Factored most code out to ..
870         (decrypt_stream): .. new.
871         (op_decrypt_stream_to_buffer): Simplified accordingly.  Fixed
872         possible buffer overflow when trying to make it a string. 
873         (op_decrypt_stream_to_gpgme): New.
874
875         * pgpmime.c, pgpmime.h: New.
876         * rfc822parse.h, rfc822parse.c: New.  Taken from GnuPG 1.9.
877
878 2005-09-06  Timo Schulz  <ts@g10code.com>
879
880         * config-dialog.c (get_open_file_name): Correctly terminated filter.
881         New parameter for the title. Changed all callers.
882         (get_folder): Likewise.
883         
884 2005-09-01  Werner Koch  <wk@g10code.com>
885
886         * gpgmsg.cpp (get_pgp_armor_type): New.
887         (gatherAttachmentInfo):  Enhanced to detect text/plain pgp.
888         (verify): Removed.
889         (decrypt): Do clearsig verification here.
890
891         * gpgmsg.cpp (decrypt): Kludge to workaround OL not updating a
892         window.
893         * msgcache.c (msgcache_get_from_mapi): New.
894         * display.cpp (find_message_window): Don't use the GpgMsg function
895         to to the string compare.
896         * gpgmsg.cpp (matchesString): Removed.
897
898         * msgcache.c (msgcache_set_active): Removed.
899         (msgcache_get): Rewritten.
900         (msgcache_put): Now uses PR_CONVERSATION_INDEX as key.  Update
901         existing entries.
902
903         * olflange.cpp (OnRead): Removed msgcache_set_active.
904         (InstallCommands): Now uses the ConversationIndex to match the
905         reply with the message.
906
907 2005-08-31  Werner Koch  <wk@g10code.com>
908
909         * olflange.cpp (DllRegisterServer): Define a CLSID and set the
910         ThreadingModel.
911
912 2005-08-30  Werner Koch  <wk@g10code.com>
913
914         Renamed from "outlgpg" to "gpgol".
915
916         More or less finished this major rewrite.
917
918 2005-08-26  Werner Koch  <wk@g10code.com>
919
920         * MapiGPGME.cpp, MapiGPGME.h: Removed.
921         * display.cpp, display.h: New. 
922
923 2005-08-23  Werner Koch  <wk@g10code.com>
924
925         * msgcache.c, msgcache.h: New.
926
927 2005-08-22  Werner Koch  <wk@g10code.com>
928
929         * olflange.cpp: Major cleanups and partly rewrites.
930
931 2005-08-18  Werner Koch  <wk@g10code.com>
932
933         * gpgmsg.cpp, gpgmsg.hh: New.
934         
935 2005-08-17  Werner Koch  <wk@g10code.com>
936
937         * MapiGPGME.cpp (setMessageAccess): Removed as it was only used at
938         one place.
939         (setRTFBody): Use the above code here directly..
940         (setWindow, setMessage): Removed.  We can't use that because there
941         is only one instance of this class.
942         (decrypt): Add args HWND and MSG.  Changed caller.
943         (getBody): Changed to ..
944         (get_body): .. plain function and add new arg MSG.  Changed all
945         callers.
946         (isHtmlMessage): Likewise changed to ..
947         (is_html_message): .. plain function and add new arg MSG.
948         (doCmd): Removed.
949
950         * common.c (utf8_to_wchar): New.
951
952         * MapiGPGME.cpp (passphraseCallback): Removed.
953         (getPassphrase, clearPassphrase, storePassphrase): Removed.
954         (add_html_line_endings): Rewritten.
955
956         * engine-gpgme.c (op_sign_encrypt_start): Removed because it is
957         not used anywhere.
958         (op_sign): Renamed to ..
959         (do_sign): .. this and made local.
960
961 2005-08-16  Werner Koch  <wk@g10code.com>
962
963         * MapiGPGME.cpp (signAttachment): Simplified.
964         * engine-gpgme.c (op_sign_file): Add arg TTL.
965         (op_sign_file_ext): Removed.
966         (op_sign_file_next): Renamed to ..
967         (do_sign_file): .. this and made local.
968         (do_sign_file): Updated to use new passphrase callback
969         semantics.
970         (op_decrypt_file): Ditto.
971         (free_recipients): Need to use gpgme_key_release and not just
972         free.
973
974         * engine-gpgme.c (do_decrypt): Factored some code out to ..
975         (update_passphrase_cache): .. new.
976         (op_sign_encrypt_file): Updated to use new passphrase callback
977         semantics.
978
979         * MapiGPGME.cpp (getBody): Properly distinguish property types.
980         (delete_buf): Removed macro.  We now use malloc for the body
981         string.  Changed other places to use delete directly for clarity.
982         (fail_if_null): Removed.  Replaced by direct tests and a call to
983         out_of_core.
984         (setDefaultKey): Now use malloc/free instead of new/delete.
985         Changed at other places too.
986         (getDefaultKey): Changed to return a const char *.
987
988         * common.c (wchar_to_utf8): New.
989         (out_of_core): Made global and call abort after displaying the
990         message box.
991
992 2005-08-14  Werner Koch  <wk@g10code.com>
993
994         * MapiGPGME.cpp (log_debug_w32): New.
995         (do_log): New arg W32ERR.  Make sure to print a trailing LF.
996
997         * passphrase-dialog.c (passphrase_callback_box): Revamped.
998         (free_decrypt_key): Wipe out a passphrase.  Remove superfluous
999         variable clearing.
1000         * util.h (wipememory2, wipememory): New.
1001         (wipestring): New.
1002         * engine-gpgme.c (op_decrypt): Renamed to ..
1003         (do_decrypt): .. this and made local.
1004         (clear_error_if_cancel): Removed as we inlined the code.
1005         (do_decrypt): Cleaned up.
1006         * main.c (DllMain): Initialize passcaching subsystem.
1007         * passcache.c, passcache.h: New.
1008         * intern.h: Include it here.
1009         * util.h: New.
1010
1011         * olflange.cpp (DllRegisterServer): Remove key for the old
1012         versions of this plugin.
1013
1014         Merged olgpgmain.dll and olgpgcore.dll into outlgpg.dll.
1015         
1016         * Makefile.am: Renamed target to outlgpg. Added required files.
1017         * olflange.cpp, olflange.h: Renamed from GPGExch.cpp and
1018         GPGExch.h.  Removed all the MFC cruft as it is not required - it
1019         was only used to get hands on the hInstance of the DLL; chnaged
1020         that to use the glob_hinst which gets set by DllMain.
1021         * outlgpg.def: New.
1022         * olflange-def.h: New.
1023         * olflange-dlgs.cpp: Renamed from GPGOptionsDlgs.cpp.
1024         * olflange-ids.h: Renamed from ../olflange/resource.h
1025         * olflange-rsrcs.rc: Renamed from ..olflange/olgpgmaindlgs.rc and
1026         stripped off unneedded stuff.
1027         * olgpgcoredlgs.rc: Renamed to ..
1028         * outlgpg-rsrcs.rc: .. this and stripped of cruft.
1029         * olgpgcoredlgs.h: Renamed to ..
1030         * outlgpg-ids.h: .. this.
1031         * versioninfo.rc.in: New.
1032         
1033 2005-08-12  Timo Schulz  <ts@g10code.com>
1034
1035         * config-dialog.c (sotre_extension_value, load_extension_value):
1036         Adjust registry key.
1037
1038 2005-08-12  Werner Koch  <wk@g10code.com>
1039
1040         * intern.h: Moved keycache prototypes to keycache.h.
1041         * MapiGPGME.cpp (lock_log, unlock_log): New.
1042         * engine-gpgme.c (op_init): Check GPGME version.
1043         * main.c (outlook_gpg_get_version): Removed as it is now derived
1044         from config.h.
1045         (DllMain): Initializes gpgme and mapigpgme.
1046         * MapiGPGME.cpp (initialize_mapi_gpgme): New.
1047
1048         * config-dialog.c (store_extension_value, load_extension_value):
1049         Changed key to "OutlGPG".
1050
1051         * MapiGPGME.h (class MapiGPGME): New methods versionString and
1052         showVersion.  Breaks ABI but it doesn't matter as we are also
1053         going to change the name of the project.
1054
1055         * Makefile.am: Renamed target to olgpgcore.
1056         * resource.h: Renamed to ...
1057         * olgpgcoredlgs.h: .. and removed cruft from generator.
1058         * gpgmedlgs.rc: Renamed to ..
1059         * olgpgcoredlgs.rc: ... and removed cruft.
1060         * libgpgmedlgs.def: Renamed to ..
1061         * olgpgcore.def: .. this.
1062         
1063 2005-08-11  Werner Koch  <wk@g10code.com>
1064
1065         * MapiGPGME.cpp (log_debug): New.  Rewrote the whole log stuff.
1066         It is not anymore per instance.
1067         (logDebug): New version with va_list arg.
1068
1069         * MapiGPGME.cpp (passphraseCallback): Use gpgme_error_t becuase
1070         C++ enforces enum types.
1071
1072         * engine-gpgme.c (op_lookup_keys): s/id/names/.  id is a reved
1073         word Obj-C and it is good style not to use it in plain C code.
1074         (op_sign_file_next): Use gpgme_passphrase_cb_t in declaration.
1075         (op_decrypt_next): Ditto.
1076
1077         * MapiGPGME.cpp (count_recipients): Renamed from countRecipients
1078         method, made local and changed both callers.
1079         (log_key_info): Changed output format.  New arg PREFIX. Changed
1080         callers.
1081         (add_html_line_endings): Renamed from addHtmlLineEndings method
1082         and made local.
1083         (logDebug): Open in text mode.  Removed all superfluous "\r" from
1084         callers.
1085
1086 2005-08-09  Timo Schulz  <ts@g10code.com>
1087
1088         * main.c (outlook_gpg_get_version): New.
1089         Use same version as the Outlook GPG plugin.
1090
1091         * MapiGPGME.cpp [!__MINGW32__]: Changed sequence of include files.
1092
1093 2005-08-09  Werner Koch  <wk@g10code.com>
1094
1095         * MapiGPGME.cpp (userid_from_key, keyid_from_key): New. Changed
1096         all calls to the deprecated gpgme_key_get_string_attr function by
1097         these.
1098
1099         * MapiGPGME.h, MapiGPGME.cpp: Splitted into interace and
1100         implementation.
1101         * HashTable.h (class HashTable): No need to dll export anything.
1102
1103 2005-08-08  Werner Koch  <wk@g10code.com>
1104
1105         * common.c (w32_shgetfolderpath): Added.
1106         * config-dialog.c (load_config_value_ext): use it here.
1107
1108 2005-07-21  Timo Schulz  <twoaday@g10code.com>
1109
1110         * MapiGPGME.cpp (decrypt): Only return if no valid PGP
1111         data was found and the message has no attachments.
1112         * engine-gpgme.c (op_encrypt): Use --textmode to fix 
1113         problems when the recipient OS has different line endings.
1114         For example Win32->Linux.
1115
1116 2005-07-20  Timo Schulz  <twoaday@g10code.com>
1117
1118         * MapiGPGME.cpp (addHtmlLineEndings): New.
1119         (encrypt):Use it here.
1120         (signEncrypt): Likewise. Free memory in case of errors.
1121         (decrypt): Free memory in case of the verify procedure.
1122         Issue a warning when the text of the mail could not be
1123         updated.
1124         (isMessageEncrypted): New.
1125         (countAttachments): Check for null pointers.
1126         (clearPassphrase): Likewise.
1127         * config-dialog.c (store_config_value): Support '%val%' input.
1128         * verify-dialog.c (load_akalist): Return the number of user-ids
1129         which were added.
1130         * passphrase-dialog.c (load_secbox): Make sure we really start
1131         to add the item data at the begin.
1132         * intern.h: Fixed GCC compiler problem.
1133
1134 2005-07-19  Timo Schulz  <twoaday@g10code.com>
1135
1136         * MapiGPGME.cpp (encrypt): Handle cancel.
1137         (encryptAttachments): If no attachments exist, close the table.
1138         (decryptAttachments): Likewise.
1139         (signAttachments): Likewise.
1140         (isHtmlBody): New.
1141         (isHtmlMessage): New.
1142         (setBody): Html support.
1143         (encrypt): Figure out if message is html and encode the right body.
1144         (signEncrypt): Likewise.
1145         (verify): Always use the non-html body for GPG input.
1146         (decrypt): Likewise.
1147
1148         * engine-gpgme.c (recipient_dialog_box2): Set cancel flag.
1149         (op_sign_start): Handle cancel.
1150         (recipient_dlg_proc): Make sure there is at least one selected
1151         key. Disable armor checkbox.
1152
1153 2005-07-19  Timo Schulz  <twoaday@g10code.com>
1154
1155         * MapiGPGME.cpp (~MapiGPGME): After releasing the
1156         memory, set all pointers to NULL. It seems that NT5
1157         bases operating systems are more pedantic with such
1158         issues than 9X based systems.
1159         (freeUnknownKeys): Likewise.
1160         (freeRecipients): Likewise.
1161         (encrypt): Outlook 2003 returns a body string which
1162         is not NULL but \0 with a length of 0. Handle it.
1163         (sign): Likewise.
1164         (signEncrypt): Likewise.
1165
1166         * engine-gpgme.c (free_recipients): New.
1167         (op_encrypt_start): Handle cancel and free memory.
1168
1169
1170 2005-07-18  Timo Schulz  <ts@g10code.com>
1171
1172         * gpgmedlgs.rc: Native language support for German.
1173
1174 2005-07-14  Timo Schulz  <ts@g10code.com>
1175
1176         * MapiGPGME.cpp: Add some missing MAPI constants.
1177         (passphrase_callback_box): Repair cancel button.
1178         (decrypt): If the user cancels the operation, do not
1179         alter the message text.
1180         * config-dialog.c (expand_path): New. From WinPT.
1181         (load_config_value): Support for REG_EXPAND_SZ.
1182         Suggested by Sebastian.
1183
1184 2005-07-13  Timo Schulz  <ts@g10code.de>
1185
1186         * MapiGPGME.cpp (sign): Ignore empty bodies.
1187         (signEncrypt): Likewise. Free recipient memory.
1188         (encrypt): Modify code so it really works.
1189         (attachPublicKey): New.
1190         * engine-gpgme.c (op_export_keys): New.
1191
1192 2005-07-12  Timo Schulz  <ts@g10code.de>
1193
1194         * MapiGPGME.cpp (displayError): New.
1195         (writeOptions): Use it here. Simplify the code.
1196         (signAttachments): New.
1197         (sign): Sign attachments. Noted by Ralf.
1198         (processAttachment): Support for sign-only.
1199
1200 2005-07-08  Timo Schulz  <ts@g10code.de>
1201
1202         * MapiGPGME.cpp (setEnableLogging): New.
1203         (getEnableLogging): New.
1204         (logDebug): Move all logging code to this function.
1205         (readOptions): Automatically enable logging if the
1206         'LogFile' registry entry is valid.
1207         (prepareLogging): New.
1208         (readOptions): Properly handle ""-strings.
1209         * config-dialog.c (does_file_exist): Allow to have
1210         parameters like '--keymanager' and cut them off before
1211         checking the existence.
1212         (start_key_manager): Free memory.
1213         (config_dlg_proc): Initialize pointer to 'NULL'.
1214         (SHFree): New. Special function to handle shell memory.
1215         (get_folder): Free memory.
1216         (does_folder_exist): New.
1217
1218 2005-07-06  Timo Schulz  <ts@g10code.de>
1219
1220         * MapiGPGME.cpp: s/ATTR_/ATT_.
1221         (saveDecryptedAttachment): Cut off the prefix.
1222         (clearConfig): New.
1223         (clearObject): New.
1224         (MapiGPGME): Use it here.
1225
1226         Use ATT_PREFIX instead of a hardcoded string.
1227
1228         * engine-gpgme.c
1229         (op_sign_file_next): New.
1230         (op_sign_file): Call op_sign_file2.
1231         (op_sign_file_ext): New.        
1232
1233 2005-07-05  Timo Schulz  <ts@g10code.de>
1234
1235         * MapiGPGME.cpp (readOptions, writeOptions):
1236         Support for the new 'auto sign attachment' flag.
1237         (signAttachment): New.
1238         (setSignAttachments): New.
1239         (getSignAttachments): New.
1240         * engine-gpgme.c (op_sign_file): Enable armor.
1241
1242 2005-07-03  Timo Schulz  <ts@g10code.com>
1243
1244         * MapiGPGME.cpp (processAttachment): Implement
1245         the decryption part and only use it if the 'save
1246         decrypted attachment' flag is set.
1247         (saveDecryptedAttachment): New.
1248         (writeOptions): Save 'decrypt attachment' flag.
1249         (readOptions): Load it here.
1250         (cleanupTempFiles): Check handle.
1251         (encrypt): If the message has no body skip the
1252         procedure.
1253         (op_decrypt_file): Set recipient callback.
1254         (decryptAttachments): We do not alter the attachment
1255         so there is no need to release it again.
1256
1257         Replace all 'free' with 'xfree'.
1258
1259 2005-07-01  Timo Schulz  <ts@g10code.com>
1260
1261         * MapiGPGME.cpp (processAttachment): Check that
1262         the file has a valid PGP extension before we try
1263         to decrypt the attachment.
1264         (checkAttachmentExtension): Check if the file
1265         extension is a vliad PGP extension.
1266
1267
1268 2005-06-30  Timo Schulz  <ts@g10code.com>
1269
1270         * MapiGPGME.cpp (processAttachment): Use a unique
1271         temp name to make a cleanup at the end easier.
1272         (cleanupTempFiles): Delete possible left over
1273         temp files.
1274         (~MapiGPGME): Use it here.
1275
1276 2005-06-22  Timo Schulz  <ts@g10code.com>
1277
1278         * MapiGPGME.cpp (processAttachment): Close attachment
1279         before we delete it.
1280         (streamOnFile): Directly use the attachment.
1281         (streamFromFile): Likewise.
1282         (closeAttachment): Renamed to..
1283         (releaseAttachment): ..this.
1284
1285 2005-06-21  Timo Schulz  <ts@g10code.com>
1286
1287         * MapiGPGME.cpp (getMessageType): Support all types.
1288         (streamOnFile): More straight forward now.
1289         (encryptAttachments): Get the attachment table first.
1290         (getAttachPathname): New.
1291         (processAttachment): Add new parameter for the position
1292         of the attachment.
1293         (streamFromFile): New.
1294         (generateTempname): New.
1295         * engine-gpgme.c (op_sign_encrypt_file): New.
1296
1297 2005-06-17  Timo Schulz  <ts@g10code.com>
1298
1299         * MapiGPGME.cpp (MapiGPGME): Initialize all attachment
1300         components to zero. Thanks to Sebstian for pointing this out.
1301
1302 2005-06-16  Timo Schulz  <ts@g10code.com>
1303
1304         * engine-gpgme.c (check_encrypt_result): New. Check if
1305         the encrypt procedure returned some invalid recipients.
1306         (op_encrypt): Use it here.
1307         (op_encrypt_file): Likewise.
1308         (op_sign_encrypt): Likewise.
1309         * missing.h: Removed unused constants.
1310         * verify-dialog.c (load_sigbox): Handle v3 RSA keys.
1311         * passphrase-dialog.c (load_secbox): Make sure the index 
1312         from the first loop matche the second. Which means skip
1313         all invalid keys also.
1314
1315 2005-06-13  Timo Schulz  <ts@g10code.com>
1316
1317         * MapiGPGME.cpp (writeOptions): New Option 'defaultKey'.
1318         (readOptions): Likewise. Force overwrite 'addDefaultKey'.       
1319
1320 2005-06-07  Timo Schulz  <ts@g10code.com>
1321
1322         * passphrase-dialog.c (decrypt_key_dlg_proc): Add a
1323         reference to the key object so it will be still valid
1324         after the dialog is destroyed.
1325         * MapiGPGME.cpp (freeUnknownKeys): Do not try to free
1326         the context if no keys are available. Fixed a segv.
1327         (signEncrypt): The new code now gets a persistent pointer
1328         to the key.
1329         * engine-gpgme.c (op_sign_encrypt): Load the right
1330         dialog to request the passphrase.
1331
1332 2005-06-05  Timo Schulz  <ts@g10code.com>
1333
1334         * passphrase-dialog.c (load_recipbox): Check ctx if null.
1335         (passphrase_callback_box): Different dialogs for sign
1336         and decrypt.
1337         (signer_dialog_box): Do not zero the context too early.
1338         * keycache.c (enum_gpg_seckeys): Also reload if ctx
1339         is NULL.
1340         * MapiGPGME.cpp (signEncrypt): Return if the user
1341         cancelled the signer selection dialog.   
1342         * recipient-dialog.c (recipient_dlg_proc): Check 'Text Mode'
1343         button.
1344         * keycache.c (enum_gpg_keys, enum_gpg_seckeys): Fully
1345         reset the keycache initializing it again. Thanks to Ralf.
1346
1347 2005-06-04  Timo Schulz  <ts@g10code.com>
1348
1349         * verify-dialog.c (load_sigbox): Only issue a warning
1350         if the key exists but is not valid.
1351         Get pkalgo from the signature.
1352         Fixed format string problem s/%d/%s.    
1353         * config-dialog.c (load_config_value): Close reg handle.
1354         (config_dlg_proc): Show error if the values could not
1355         be written to the registry.
1356
1357 2005-06-03  Timo Schulz  <ts@g10code.com>
1358
1359         * mapuser.c (new_usermap): New.
1360         (free_usermap): New.
1361         * engine-gpgme.c (op_decrypt): Return 'No_Seckey' if
1362         appropriate and not just 'Decrypt_Failed'.
1363         Set the gpgme_ctx_t object in the callback to allow
1364         to list the 'encrypt_to' entries.
1365         * passphrase-dialog.c (decrypt_key_dlg_proc): Make sure
1366         we only warn when there is a valid callback context.
1367         (load_secbox): New parameter 'ctlid'. Changed all callers.
1368         (load_recipbox): New. Use usermap to lookup user-id's.
1369         (decrypt_key_ext_dlg_proc): New dialog procedure for
1370         the callback mode.
1371         * HashTable.cpp (HashTable_new): New. C-interface.
1372         (HashTable_free): Likewise.
1373         (HashTable_get): Likewise.
1374         (HashTable_put): Likewise.
1375         (HashTable_get_i): Likewise.
1376         (HashTable_size): Likewise.
1377
1378 2005-05-29  Timo Schulz  <ts@g10code.com>
1379
1380         * passphrase-dialog.c (decrypt_key_dlg_proc): Warning
1381         if the user cancels the signing process.
1382         Make the passphrase field invisible if the key is used
1383         in selection mode.
1384         (recipient_dlg_proc): Likewise.
1385         (signer_dialog_box): Return -1 if the user cancelled the
1386         dialog.
1387         * engine-gpgme.c (op_sign): Set flags to '1' to indicate
1388         signing process.
1389         * config-dialog.c (does_file_exist): Use appropriate
1390         length for xmalloc. Noted by Sebastian.
1391
1392 2005-05-24  Timo Schulz  <ts@g10code.com>
1393
1394         * MapiGPGME.cpp (setXHeader): New.
1395         (getXHeader): New.
1396         * engine-gpgme.c (op_sign_file): Implemented.
1397
1398 2005-05-22  Timo Schulz  <ts@g10code.com>
1399
1400         * MapiGPGME.cpp (createAttachment): New.
1401         (deleteAttachment): New.
1402         (encryptAttachments): New.
1403         (encrypt): Also encrypt the attachments if possible.
1404         (signEncrypt): Likewise.
1405         (setEncodingFormat): New.
1406         (getEncodingFormat): New.
1407         (readOptions, writeOptions): Store encoding format.
1408         (MapiGPGME): The default encoding is 'CLASSIC'.
1409
1410 2005-05-21  Timo Schulz  <ts@g10code.com>
1411
1412         * HashTable.h: Export functions.
1413         * MapiGPGME.cpp (freeAttachments): New.
1414         (getAttachments): New.
1415         (openAttachment): New.
1416         (closeAttachment): New.
1417         (processAttachment): New.
1418         (hasAttachments): New.
1419         (countAttachments): New.
1420         (doCmdFile): New. Can handle files.
1421         (doCmdAttach): New. Can handle attachment action types.
1422         (signEncrypt): Release locusr key.
1423         * engine-gpgme.c (op_sign_file): New. Dummy.
1424         (op_sign_encrypt_file): New. Dummy.
1425
1426 2005-05-11  Timo Schulz  <ts@g10code.com>
1427
1428         * common.c (cache_item_new): New.
1429         (cache_item_free): New.
1430         * engine-gpgme.c (op_decrypt_start_ext): Return an cache item and
1431         not just the passphrase. Changed all caller.
1432         * MapiGPGME.cpp (passphraseCallback): Support caching.
1433         (decrypt): Likewise.
1434         (storePassphrase): Likewise.
1435         (getPassphrase): Likewise.
1436         * HashTable.cpp: New.
1437
1438 2005-05-10  Timo Schulz  <ts@g10code.com>
1439
1440         * passphrase-dialog.c (decrypt_key_dlg_proc): Reset 'hide state'.
1441         Show some text when the user entered a wrong passphrase.
1442         * MapiGPGME.cpp (findMessageWindow): New.
1443         (setRTFBody): New.
1444         (decrypt): Just change the window text, not the MAPI object.
1445         Call verify() if this is a clearsigned message.
1446         (getMessageType): New.
1447         (getAttachmentExtension): New.
1448         (verify): Extract text and set it.
1449         * engine-gpgme.c (op_decrypt): Spawn verify dialog if the text
1450         was also signed.
1451         (op_decrypt_file): New.
1452         * verify-dialog.c (load_sigbox): Avoid key cache and give more
1453         information.    
1454         * passphrase-dialog.c (decrypt_key_dlg_proc): Handle 'x' clicks.
1455         * logging.c (log_debug): Disable it for release versions.
1456
1457 2005-05-08  Timo Schulz  <ts@g10code.com>
1458
1459         * MapiGPGME.cpp (readOptions): Handle logfile.
1460         (writeOptions): Likewise.
1461         (storePassphrase): New.
1462         (clearPassphrase): New.
1463         (passphraseCallback): New. Needs to be static...
1464         (decrypt): Store passphrase if requested.
1465         (~MapiGPGME): Free memory.
1466         (streamOnFile): New.
1467         (getAttachMethod): New.
1468         (getAttachFilename): New.
1469         (setAttachMethod): New.
1470         (getAttachFilename): New.
1471         (getMessageHasAttachments): New.
1472         (getMessageFlags): New.
1473
1474         * engine-gpgme.c (op_decrypt): New. Factoured out
1475         code from...
1476         (op_decrypt_start): ..here. Now call op_decrypt
1477         with standard parameters.
1478         (op_decrypt_next): Allow to use a pre-defined 
1479         passphrase callback. Needed for caching.
1480
1481 2005-05-02  Timo Schulz  <ts@g10code.com>
1482
1483         * MapiGPGME.cpp (fail_if_null, delete_buf): New
1484         (doCmd): New.
1485         (setBody): If the body to set is empty, do nothing.
1486         (freeKeyArray): New.
1487         (readOptions): New.
1488         (writeOptions): New.
1489         Implement all getters and setters for the config code.
1490
1491         * keycache.c: Now that we use a DLL, we create a
1492         shared data segment for static data.
1493         (load_keycache_objects): New.
1494
1495 2005-05-01  Timo Schulz  <ts@g10code.com>
1496
1497         * MapiGPGME.cpp (rtfSync): New.
1498         * logging.c (log_debug): New.
1499         * common.c (xfree): New.
1500         * engine-gpgme.c (op_lookup_keys): Corrected offsets.
1501
1502 2005-04-29  Timo Schulz  <ts@g10code.com>
1503
1504         * engine-gpgme.c (op_encrypt_file): New.
1505
1506 2005-04-27  Timo Schulz  <ts@g10code.com>
1507
1508         * config-dialog.c (config_dialog_box): Add dialog
1509         item to select a GUI key manager.
1510         Check that the entered files really exist.
1511         (config_dlg_proc): Likewise.
1512         (does_file_exist): New.
1513
1514 2005-04-24  Timo Schulz  <ts@g10code.com>
1515
1516         * main.c (DllMain): New. With a static library it was not
1517         possible to have a separate resource file. Thus we use a
1518         DLL now which contains all needed dialogs.
1519         * common.c (set_global_hinstance): New.
1520         * libgpgmedlgs.def: New.
1521
1522 2005-04-18  Timo Schulz  <ts@g10code.com>
1523
1524         * recipient-dialog.c (recipient_dialog_box2): New
1525         way to show pre-selected keys.
1526         (copy_item): New paramenter for the pos.
1527         (find_item): Do not select the item.
1528
1529         * gpgmedlgs.rc (IDD_ENC): New label to describe
1530         the listbox.
1531
1532 2005-04-15  Timo Schulz  <ts@g10code.com>
1533
1534         * common.c (xmalloc, xcalloc, xstrdup): New.
1535         (out_of_core): New.
1536         * recipient-dialog.c (initialize_keybox): New.
1537         (find_item): New.
1538         * MapiGPGME.cpp (freeUnknownKeys): New.
1539         (signEncrypt): Show dialog to select a key if no
1540         default key was set.
1541
1542         * Replace all std-c alloc functions with x equivalents.
1543
1544 2005-04-13  Timo Schulz  <ts@g10code.com>
1545
1546         * engine-gpgme.c (do_init): Alloc keycache objects.
1547         (do_deinit): Cleanup the mess.
1548         (op_lookup_keys): New. Allow to find keys via the email.
1549
1550         * GPGME.cpp (MapiGPGME): New. MAPI interface.
1551
1552 2005-04-07  Timo Schulz  <ts@g10code.com>
1553
1554         * verify-dialog.c (load_akalist): New.
1555         (load_sigbox): Handle bad signatures.
1556         * keycache.c (enum_gpg_keys): Allow to reset the
1557         enum context.
1558         * config-dialog.c (get_open_file_name): Use MAX_PATH.
1559         (get_folder): Likewise.
1560         * recipient-dialog.c (load_rsetbox): Modify code to
1561         add the last keycache item.
1562         * passphrase-dialog.c (load_secbox): Likewise.