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