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