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