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