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