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