Fixed focus issues.
[pinentry.git] / ChangeLog
1 2007-06-26  Werner Koch  <wk@g10code.com>
2
3         * w32/Makefile.am (pinentry_w32_LDFLAGS): Add -mconsole again.
4
5         * w32/main.c (dlg_proc): Set focus.
6         (resize_button): New.  No code yet.
7         (dlg_proc): Call it for the buttons.
8         (w32_cmd_handler): Restore old foreground window.
9
10 2007-06-20  Werner Koch  <wk@g10code.com>
11
12         * w32/Makefile.am (pinentry_w32_LDFLAGS): Remove -mconsole.
13
14         * w32/main.c (wchar_to_utf8): New.
15         (ok_button_clicked): Use it.
16         (utf8_to_wchar): New.
17         (set_dlg_item_text): New.
18         (dlg_proc): Use new function so that we are able to correctly
19         display all prompts.
20         (main): Load LockSetForegroundWindow.
21         (dlg_proc): Call LockSetForegroundWindow via its fnc ptr.
22         (center_window): New.  Taken from GPGol.
23         (dlg_proc): Call it.
24         (w32_cmd_handler): Revamped the confirm mode.
25
26 2007-06-18  Werner Koch  <wk@g10code.com>
27
28         * w32/main.c (dlg_proc): Call LockSetForegroundWindow.
29
30         * Makefile.am (signed-dist, %.sig): Remove.
31
32         * autogen.sh: Modernized.
33
34 2007-05-10  Marcus Brinkmann  <marcus@g10code.de>
35
36         * pinentry/pinentry.h (pinentry_color_t): New type.
37         (struct pinentry): New members COLOR_FG, COLOR_FG_BRIGHT,
38         COLOR_BG, COLOR_SO.
39         * pinentry/pinentry.c (pinentry_parse_opts): Support new option --colors.
40         (parse_color): New function.
41         * pinentry/pinentry-curses.c (USE_COLORS): New macro.
42         (pinentry_color): New static variable.
43         (dialog_create): Redo color management.
44
45         * pinentry/pinentry-curses.c (dialog_create): Re-add calculation
46         of cancel button position.  Adjust calculation of OK button
47         position if it is the only one used.
48
49 2007-04-13  Marcus Brinkmann  <marcus@g10code.de>
50
51         * qt/secqlineedit.h (SecQLineEdit::contextMenuEvent,
52         SecQLineEdit::createPopupMenu): Remove prototype.
53         * qt/secqlineedit.cpp (SecQLineEdit::contextMenuEvent,
54         SecQLineEdit::createPopupMenu): Remove implementation.
55         Submitted by Tobias Koenig <tokoe@kde.org>.
56
57 2007-02-14  Werner Koch  <wk@g10code.com>
58
59         * pinentry/pinentry.h (struct pinentry): Add TOUCH_FILE.
60         * pinentry/pinentry.c (option_handler): New option "touch-file".
61         (pinentry_have_display): Ignore an empty DISPLAY.
62         * pinentry/pinentry-curses.c (do_touch_file): New.
63         (curses_cmd_handler): Call it.
64         * configure.ac: Check for utime.h.
65
66 2007-01-24  Werner Koch  <wk@g10code.com>
67
68         * pinentry/pinentry.c (cmd_message): New.
69         (cmd_confirm): New command option --one-button.
70         (cmd_getpin): Zeroise ONE_BUTTON.
71         * pinentry/pinentry.h (struct pinentry): Add field ONE_BUTTON.
72         * gtk/pinentry-gtk.c (create_window): Take care of new option.
73         * gtk+-2/pinentry-gtk-2.c (create_window): Ditto.
74         * pinentry/pinentry-curses.c (dialog_create): Ditto.
75         (dialog_create, dialog_switch_pos): Allow CANCEL to be optional.
76
77 2006-07-29  Marcus Brinkmann  <marcus@g10code.de>
78
79         * secmem/secmem.c (init_pool): Close FD after establishing the
80         mapping.
81
82 2005-09-28  Marcus Brinkmann  <marcus@g10code.de>
83
84         * configure.ac (PINENTRY_GTK): Error out if iconv is not found but
85         needed.
86
87         * config.rpath: New file from gettext.  Needed by iconv.m4.
88
89 2005-07-11  Marcus Brinkmann  <marcus@g10code.de>
90
91         * pinentry/pinentry-curses.c (dialog_switch_pos): Set the cursor
92         state to invisible before moving around.  Move the cursor to the
93         beginning of the dialog buttons for accessibility.
94
95 2005-06-16  Marcus Brinkmann  <marcus@g10code.de>
96
97         * pinentry/pinentry-curses.c (dialog_run): Only convert pin if a
98         pin actually exists.
99
100 2005-01-27  Werner Koch  <wk@g10code.com>
101
102         Released 0.7.2.
103         
104         * gtk+-2/Makefile.am: Removed padlock-keyhole.xpm.
105
106         * configure.ac: Use AC_GNU_SOURCE instead of the custom define.
107         Prefer gtk2 pinentry over qt.
108
109 2005-01-21  Marcus Brinkmann  <marcus@g10code.de>
110
111         * doc/pinentry.texi: Fix spelling errors.
112         Submitted by Ville Skytt√§.
113
114 2004-12-23  Werner Koch  <wk@g10code.com>
115
116         * w32/pinentry-w32.rc: Remove the default texts for description,
117         prompt and error.  Make it system modal.  Enlarge the description
118         field.
119
120 2004-12-22  Timo Schulz  <twoaday@g10code.com>
121
122         * w32/main.c: Remove all helper functions and use a callback
123         to set the dialog items directly.
124         (dlg_proc): Set 'result' to -1 to indicate cancel.
125         (ok_button_clicked): Adjusted. Set 'result' to the len of
126         the PIN to indicate success.
127         
128 2004-12-22  Werner Koch  <wk@g10code.com>
129
130         * w32/main.c: Simplified.
131         * w32/dialog.h, w32/dialog.c, w32/controller.h, w32/controller.c:
132         Removed
133         
134         * w32/resource.h, w32/pinentry-w32.rc, w32/main.c, w32/dialog.h
135         * w32/dialog.c, w32/controller.h, w32/controller.c
136         * w32/Makefile.am: New.  Based on Timo's work.
137
138         Update to automake 1.9.
139         
140         * autogen.sh (configure_ac): Add --build-w32 option.
141         * Makefile.am: Support for the W32 pinentry. 
142         * configure.ac: Ditto.  Reformatted some error messages.
143         Define the usual conditionals for W32.
144         Check for a couple of more usually required headers.
145
146         * pinentry/pinentry.h (sleep) [W32]: New.
147
148         * pinentry/pinentry.c: Include langinfo.h only if available.
149         (pinentry_loop) [DOSISH]: Don't do uid check.
150
151         * secmem/util.c [DOSISH]: Disable UID stuff.
152         
153 2004-09-27  Marcus Brinkmann  <marcus@g10code.de>
154
155         * acinclude.m4 (IU_LIB_NCURSES, IU_LIB_CURSES, IU_LIB_TERMCAP):
156         Moved to m4/curses.m4.
157         (AM_ICONV): Moved to m4/iconv.m4.
158         (AM_PATH_GLIB): Moved to m4/glib.m4.
159         (QT_FIND_FILE, QT_PATH_MOC, QT_PATH_X, QT_PRINT_PROGRAM,
160         QT_CHECK_VERSION, QT_PATH_1_3, QT_PATH, QT_CHECK_COMPILER_FLAG,
161         QT_REMOVE_FORBIDDEN, QT_VALIDIFY_CXXFLAGS, QT_CHECK_COMPILERS,
162         QT_CHECK_RPATH, QT_CHECK_LIBPTHREAD, QT_CHECK_PTHREAD_OPTION,
163         QT_CHECK_THREADING): Move to m4/qt.m4.
164
165 2004-09-21  Marcus Brinkmann  <marcus@g10code.de>
166
167         * qt/Makefile.am (pinentry_qt_LDFLAGS): Add $(QT_RPATH).
168         Requested by Leo Savernik <l.savernik@aon.at>.
169
170 2004-09-02  Marcus Brinkmann  <marcus@g10code.de>
171
172         * gtk+-2/padlock-keyhole.xpm: File removed.
173         * gtk+-2/pinentry-gtk-2.c (create_window): Use stock icon.
174         * gtk+-2/gtksecentry.h, gtk+-2/gtksecentry.c: Fix copyright notice.
175
176         Submitted by Albrecht Dress albrecht.dress@arcor.de.
177
178 2004-08-17  Marcus Brinkmann  <marcus@g10code.de>
179
180         * configure.ac: Invoke AC_PROG_LN_S.
181         (PINENTRY_DEFAULT): New variable.  Substitute it.  Fail if no
182         default can be determined.
183         * Makefile.am (install-exec-local): Install pinentry default link.
184
185         * configure.ac: Check for Gtk+-2.
186         * gtk+-2: New directory with gtk+-2 pinentry.
187         * gtk+-2/Makefile.am, gtk+-2/gtksecentry.h, gtk+-2/gtksecentry.c,
188         gtk+-2/pinentry-gtk-2.c, gtk+-2/padlock-keyhole.xpm: New files.
189         * Makefile.am (pinentry_gtk_2): New variable.
190         (SUBDIRS): Add pinentry_gtk_2.
191
192         Submitted by Albrecht Dress albrecht.dress@arcor.de.
193         
194 2004-08-04  Werner Koch  <wk@g10code.de>
195
196         * pinentry/pinentry.c (usage): Print help to stdout.
197
198 2004-07-30  Moritz Schulte  <moritz@g10code.com>
199
200         * qt/Makefile.am (ncurses_include): Removed
201         -I$(top_srcdir)/pinentry ...
202         (AM_CPPFLAGS): ... added: -I$(top_srcdir)/pinentry.  Thanks to
203         Peter Eisentraut.
204
205         * pinentry/pinentry.c (pinentry_utf8_to_local): Declare INPUT
206         const.
207         (pinentry_local_to_utf8): Likewise.
208         (pinentry_utf8_to_local, pinentry_local_to_utf8): Compile only, if
209         either Curses or GTK+ support is enabled.
210         * configure.ac: Do also check for libiconv when the GTK+ version
211         of pinentry is to be build.  Define PINENTRY_CURSES, PINENTRY_GTK,
212         PINENTRY_QT depending on which versions of pinentry should be
213         build.
214
215 2004-05-21  Marcus Brinkmann  <marcus@g10code.de>
216
217         * acinclude.m4 (QT_CHECK_DIRECT): Removed.
218         (QT_PATH_1_3): Do never invoke QT_CHECK_DIRECT.
219
220 2004-04-21  Werner Koch  <wk@gnupg.org>
221
222         Released 0.7.1.
223
224 2004-04-20  Werner Koch  <wk@gnupg.org>
225
226         * secmem/secmem.c [!ORIGINAL_GPG_VERSION]: Include util.h for some
227         typedefs and protos.
228         (secmem_free, secmem_term): Use wipememory2 instead of memset.
229
230         * autogen.sh (configure_ac): Fixed version check (s/==/=/).
231
232 2004-04-02  Thomas Schwinge  <schwinge@nic-nac-project.de>
233
234         * autogen.sh: Added ACLOCAL_FLAGS.
235
236 2004-02-23  Marcus Brinkmann  <marcus@g10code.de>
237
238         * qt/main.cpp: Include "pinentry.h", not <pinentry.h>.
239
240 2004-01-30  Werner Koch  <wk@gnupg.org>
241
242         * configure.ac (fopencookie): Remove that test.
243
244 2004-01-28  Moritz Schulte  <mo@g10code.com>
245
246         * gtk/gtksecentry.c:
247         (gtk_secure_entry_key_press): Treat GDK_KP_Enter just like
248         GDK_Return.
249
250 2004-01-18  Marcus Brinkmann  <marcus@g10code.de>
251
252         * qt/secqstring.cpp: Do not include "private/qunicodetables_p.h".
253         (isRightToLeft): De-optimize direction query.
254
255         * qt/secqinternal_p.h, qt/secqinternal.cpp: New files.
256         * qt/Makefile.am (pinentry_qt_SOURCES): Add secqinternal_p.h
257         and secqinternal.cpp.
258         (EXTRA_DIST): Add README.SecQ.
259         * qt/secqlineedit.cpp: Include "secqinternal_p.h".
260         (drawContents): Use SecQSharedDoubleBuffer.
261
262 2004-01-02  Werner Koch  <wk@gnupg.org>
263
264         * configure.ac: Early check for a c++ compiler.
265
266 2003-12-23  Werner Koch  <wk@gnupg.org>
267
268         Released 0.7.0.
269
270         Added Manifest files to all directories.
271
272 2003-12-22  Werner Koch  <wk@gnupg.org>
273
274         * qt/main.cpp: Include errno.h.
275         (main): Translate the --display option to -display, so that the Qt
276         init code can grasp it.
277
278         * doc/ChangeLog: Removed and merged with this file.
279         * doc/pinentry.texi: Cleaned up.
280         * doc/fdl.texi: Removed.
281
282         * pinentry/pinentry.h (struct pinentry): Added LOCALE_ERR.
283         * gtk/pinentry-gtk.c (button_clicked): Set the LOCAE_ERR flag.
284         * pinentry/pinentry-curses.c (dialog_run): Ditto.
285         * pinentry/pinentry.c (cmd_getpin, cmd_confirm): Check this flag.
286         (pinentry_local_to_utf8): Release the correct buffer in the error
287         case. Print diagnostics.
288         (pinentry_utf8_to_local): Print diagnostics.
289         (pinentry_parse_opts): Make short options work.
290         (pinentry_utf8_to_local): Pass nl_langinfo to iconv_open.
291
292         * gtk/pinentry-gtk.c (button_clicked): Use the right value as
293         input for the conversion.
294
295         * pinentry/pinentry.c: New variable THIS_PGMNAME.
296         (pinentry_init): Add arg PGMNAME and store it.  Use it at all
297         marked placed instead of the constant "pinentry".
298         (usage): Use it here too.
299         * curses/pinentry-curses.c (main): Call pinentry_init with our name. 
300         * qt/main.cpp (main): Ditto.
301         * gtk/pinentry-gtk.c (main): Ditto. 
302
303         * configure.ac: Check for mmap.
304
305         * secmem/util.h (wipememory2,wipememory,wipe): New.
306         * secmem/util.c (wipe): Removed.
307         * secmem/util.c (lower_privs, raise_privs): Commented out.
308
309         * pinentry/pinentry.c (pinentry_loop): Add paranoia check for
310         dropped privs.
311
312         * secmem/secmem.c (lock_pool): Cleanup syntax of cpp directives.
313
314         * gtk/pinentry-gtk.c (main): Print package name in the version line.
315         * curses/pinentry-curses.c (main): Ditto.
316         * qt/main.cpp (main): Ditto. Fixed typo.
317
318         * gtk/pinentry-gtk.c: Include memory.h.
319         
320 2003-12-20  Marcus Brinkmann  <marcus@g10code.de>
321
322         * pinentry/pinentry.h (struct pinentry): New member PARENT_WID.
323         * pinentry/pinentry.c (pinentry): Add new member here.
324         (usage): Add --parent-wid.
325         (pinentry_parse_opts): Add case for "parent-wid".
326         (option_handler): Same here.
327
328 2003-12-19  Marcus Brinkmann  <marcus@g10code.de>
329
330         * pinentry/pinentry.c (cmd_setcancel): Use strcpy_escaped.
331         (cmd_setok): Likewise.
332         (cmd_setprompt): Likewise.
333         (pinentry_utf8_to_local): Don't use
334         nl_langinfo, but just lc_ctype directly.
335         * pinentry/pinentry.c (cmd_getpin): Do not convert passphrase to
336         UTF-8 here.
337         * gtk/pinentry-gtk.c (button_clicked): Convert passphrase to UTF8
338         here.
339         * pinentry/pinentry-curses.c (dialog_run): Likewise.
340
341 2003-12-14  Marcus Brinkmann  <marcus@g10code.de>
342
343         * pinentry/pinentry.c (pinentry_init): Register secmem_term as
344         atexit function.  Set assuan malloc hooks to secmem.
345         (pinentry_parse_opts): Add break statement to silence gcc warning.
346         * pinentry/pinentry.c (cmd_getpin): If canceled, release and clear
347         PINENTRY->pin nevertheless.
348
349         * acinclude.m4 (qt_incdirs): Add /usr/include/qt3.
350         * qt/Makefile.am (pinentry_qt_SOURCES): Remove cppmemory.h,
351         cppmemory.cpp, pinentrycontroller.h, pinentrycontroller.cpp.
352         (nodist_pinentry_qt_SOURCES): Remove pinentrycontroller.moc.cpp.
353         (libcurses): Move ../pinentry/libpinentry.a from here to ...
354         (pinentry_qt_LDADD): ... here.  Change order a bit to make it
355         work.
356         * qt/cppmemory.h, qt/cppmemory.cpp, qt/pinentrycontroller.h,
357         qt/pinentrycontroller.cpp: Files removed.
358         * qt/secqstring.h, qt/secqstring.cpp, secqlineedit.h,
359         secqlineedit.cpp: New files.
360         * qt/Makefile.am (pinentry_qt_SOURCES): Add secqstring.h,
361         secqstring.cpp, secqlineedit.h, and secqlineedit.cpp.
362         (nodist_pinentry_qt_SOURCES): Add secqlineedit.moc.cpp.
363         * qt/main.cpp: Do not include "memory.h" or "secmem-util.h", nor
364         <new> or "pinentrycontroller.h".  Include <qapplication.h>,
365         <qmessagebox.h>, <qwidget.h> and "secqstring.h".  Always include
366         <pinentry.h>.
367         [USE_KDE]: Remove all instances.
368         (curses_main): Function removed.
369         (my_new_handler): Likewise.
370         (qt_main): Likewise.
371         (qt_cmd_handler): New function.
372         (pinentry_cmd_handler): Define always (to qt_cmd_handler).
373         (main): Rewritten.
374         * qt/pinentrydialog.cpp: Do not include <qlineedit.h>, but
375         "secqlineedit.h".
376         (PinEntryDialog::PinEntryDialog): Make _edit a SecQLineEdit
377         object.  Connect accepted SIGNAL to accept SLOT, and rejected
378         SIGNAL to reject SLOT.
379         (PinEntryDialog::setText): Make argument SecQString rather than
380         QString.
381         (PinEntryDialog::text): Likewise for return value.
382         * qt/pinentrydialog.h: Declare SecQString and SecQLineEdit classes.
383         (class PinEntryDialog): Disable property text (for now).  Adjust
384         argument of setText and return value of text, as well as type of
385         _edit.  
386
387 2003-12-09  Werner Koch  <wk@gnupg.org>
388
389         * README.CVS: New.
390         * Makefile.am (EXTRA_DIST): Add README.CVS
391         (ACLOCAL_AMFLAGS): New.
392         * configure.ac: Added min_automake_versions.
393         * autogen.sh: Revamped.
394
395 2003-04-23  Steffen Hansen  <steffen@klaralvdalens-datakonsult.se>
396
397         * configure.ac: Version 0.6.10-cvs
398
399 2003-04-23  Steffen Hansen  <steffen@klaralvdalens-datakonsult.se>
400
401         * configure.ac: Version 0.6.9
402         * qt/Makefile.am: Added moc files to DISTCLEANFILES
403         * qt/pinentrycontroller.cpp: Dont spew assuan debug stuff out on stderr.
404
405 2003-03-26  Steffen Hansen  <steffen@klaralvdalens-datakonsult.se>
406
407         * qt/cppmemory.cpp, qt/main.cpp: Only override array allocation
408           operators. This should take care of the reported memory-problems
409           and even make pinentry-qt use a bit less memory.
410
411 2003-02-15  Steffen Hansen  <steffen@klaralvdalens-datakonsult.se>
412
413         * qt/pinentrydialog.h, qt/pinentrydialog.cpp: Added icons 
414           for error/non-error messages.
415
416 2003-02-07  Marcus Brinkmann  <marcus@g10code.de>
417
418         Released 0.6.8.
419
420 2003-02-04  Steffen Hansen  <steffen@klaralvdalens-datakonsult.se>
421
422         * qt/main.cpp: Work around '--display' option. This fixes 
423           the pinentry-qt problem reported by several people lately.
424
425 2003-01-24  Werner Koch  <wk@gnupg.org>
426
427         * autogen.sh: Print a hint to use maintainer mode.
428
429 2002-12-24  Marcus Brinkmann  <marcus@g10code.de>
430
431         * pinentry/pinentry-curses.c (collect_line): New function.
432         (COPY_OUT, MAKE_BUTTON): New macros.
433         (dialog_create): Rewrite the initializing code and the description
434         calculation routine with word wrapping.
435
436 2002-11-20  Werner Koch  <wk@gnupg.org>
437
438         Released 0.6.7.
439
440         * pinentry/pinentry-curses.c (dialog_create): Better truncate
441         lines than to go into an infinite loop.  We need to implement word
442         wrap.
443         (dialog_run): Add DIALOG_POS_NONE to switch so prevent a warning.
444
445 2002-11-12  Werner Koch  <wk@gnupg.org>
446
447         * config.sub, config.guess: Updated from ftp.gnu.org/gnu/config
448         to version 2002-11-08.
449
450 2002-11-09  Werner Koch  <wk@gnupg.org>
451
452         Released 0.6.6.
453
454 2002-11-08  Werner Koch  <wk@gnupg.org>
455
456         * pinentry/pinentry-curses.c (convert_utf8_string): Renamed to 
457         * pinentry/pinentry.c (pinentry_utf8_to_local): this. Changed
458         callers.
459         (pinentry_local_to_utf8): New.
460         (cmd_getpin): Convert result back to UTF-8.
461         * gtk/pinentry-gtk.c (create_utf8_label): New.
462         (create_window): Use it here to set the prompts.
463
464 2002-11-06  Werner Koch  <wk@gnupg.org>
465
466         * pinentry/pinentry-curses.c (dialog_run): Fixed retrun value tests
467         for fopen.
468
469 2002-11-05  Werner Koch  <wk@gnupg.org>
470
471         * secmem/util.c (init_uids): Make it a prototype.
472
473         * gtk/pinentry-gtk.c (enter_callback): Changed argument name to
474         avoid shadowing warning.
475         (create_window): Removed unused variable I.
476         (ok): Not used, commented.
477
478         * pinentry/pinentry.c: Include headers for getpid and sleep
479         prototypes.
480
481         * secmem/util.h: Correctly declare functions taking no args. 
482
483         * gtk/pinentry-gtk.c: Move gtk headers to the top to avoid
484         compiler warnings about shadowing index etc.
485
486         * curses/pinentry-curses.c: Include stdio.h for the printf prototype.
487
488         * pinentry/pinentry-curses.c (dialog_switch_pos): Return a value.
489
490         * pinentry/pinentry.c (pinentry_have_display): New.
491         (pinentry_setbufferlen): Must return a value. Fixed documentation.
492         (usage): Print a question mark as a substitue for the program name.
493
494         * gtk/pinentry-gtk.c (main): use it here instead of getenv().
495         * qt/main.cpp (main): Ditto.
496
497 2002-10-11  Werner Koch  <wk@gnupg.org>
498
499         * configure.ac, Makefile.am: Added doc/ and tests for makeinfo
500
501         * doc/pinentry.texi, doc/Makefile.am: New.
502         * doc/gpl.texi, doc/fdl.texi: Added these standard files.
503
504 2002-09-30  Werner Koch  <wk@gnupg.org>
505
506         Released 0.6.5.
507         
508         * qt/pinentrycontroller.cpp (optionHandler): Make sure that a
509         value is returned.
510         * configure.ac: Use -Wall also for C++.
511
512 2002-08-19  Steffen Hansen  <steffen@hrhansen.dk>
513
514         * Relased 0.6.4.
515
516 2002-08-11  Steffen Hansen  <steffen@hrhansen.dk>
517
518         * Adapted pinentry-qt to new CONFIRM spec.
519
520 2002-06-26  Werner Koch  <wk@gnupg.org>
521
522         Release 0.6.3.
523
524 2002-05-24  Werner Koch  <wk@gnupg.org>
525
526         * AUTHORS: Added Marcus
527         * README: Fixed spelling of Quintuple-Agent. 
528
529 2002-05-13  Marcus Brinkmann  <marcus@g10code.de>
530
531         Released 0.6.2.
532         
533         * configure.ac: Set version number to 0.6.2.
534         * NEWS: Add information for 0.6.2.
535         * README: Update for release.
536
537 2002-05-09  Marcus Brinkmann  <marcus@g10code.de>
538
539         * configure.ac: Add option --enable-fallback-curses and bind it to
540         the ncurses check.  Add automake conditional
541         BUILD_LIBPINENTRY_CURSES and FALLBACK_CURSES. Add preprocessor
542         symbol FALLBACK_CURSES.
543
544         * curses/Makefile.am (AM_CPPFLAGS): Add $(NCURSES_INCLUDE).
545         (LDADD): Add ../pinentry/libpinentry-curses.a.
546         * curses/pinentry-curses.c: Include "pinentry-curses.h".
547         Moved most of the meat to ...
548         * pinentry/pinentry-curses.c: ... here.  New file.  Make all
549         functions and global variables static.
550         (dialog_cmd_handler): Rename to ...
551         (curses_cmd_handler): ... this.
552         * pinentry/pinentry-curses.h: New file.
553         * pinentry/Makefile.am (noinst_LIBRARIES)
554         [BUILD_LIBPINENTRY_CURSES]: Add libpinentry-curses.a.
555         (libpinentry_curses_a_SOURCES): New target.
556
557         * gtk/Makefile.am (INCLUDES): Moved all to ...
558         (AM_CPPFLAGS): ... here.
559         [CURSES_FALLBACK]: Define ncurses_include and libcurses.
560         (AM_CPPFLAGS): Add $(ncurses_include).
561         (LDADD): Add $(libcurses).
562         * gtk/pinentry-gtk.c: Rename TIMEOUT to TIME_OUT to avoid conflict
563         with curses.h.
564         [CURSES_FALLBACK]: Include "pinentry-curses.h".
565         (button_clicked): Likewise.
566         (create_window): Likewise.
567         (cmd_handler): Renamed to ...
568         (gtk_cmd_handler): ... this.
569         (pinentry_cmd_handler): Set to gtk_cmd_handler.
570         (main) [CURSES_FALLBACK]: Initialize GTK+ only if environment
571         variable DISPLAY is set, otherwise fall back to curses dialog.
572
573         * pinentry/pinentry.h: Protect against multiple inclusion.
574
575 2002-05-09  Marcus Brinkmann  <marcus@g10code.de>
576
577         * curses/pinentry-curses.c (dialog_create): Allow multi-line error
578         texts.
579
580         * pinentry/pinentry.c (cmd_seterror): Call strcpy_escaped, rather
581         than strcpy, to allow percent-escaping the error text.
582
583 2002-04-25  Steffen Hansen  <steffen@hrhansen.dk>
584
585         * pinentry-qt: Use ok and cancel value if
586         provided.
587
588 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
589
590         * gtk/pinentry-gtk.c (create_window): Use ok and cancel value if
591         provided.
592
593 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
594
595         * qt/pinentrycontroller.h: New members _ok and _cancel.
596         * qt/pinentrycontroller.cpp (registerCommands): Add SETOK and SETCANCEL.
597         (assuanOk): New method.
598         (assuanCancel): Likewise.
599
600 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
601
602         * curses/pinentry-curses.c (dialog_create): Grok the new ok and
603         cancel members to set the pbutton texts, rather than parsing the
604         prompt in the confirm case.
605
606         * pinentry/pinentry.h (struct pinentry): Add new members ok and cancel.
607         * pinentry/pinentry.c (register_commands): Add new commands SETOK
608         and SETCANCEL to set button texts.
609         (struct pinentry pinentry): Add initializers for new members.
610         (cmd_setok): New function.
611         (cmd_setcancel): Likewise.
612
613 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
614
615         * curses/pinentry-curses.c (dialog_create): Add '<' and '>' around
616         the user provided button texts.  Replace sizeof by strlen to fix
617         size calculation of ok and cancel button.
618
619 2002-04-23  Marcus Brinkmann  <marcus@g10code.de>
620
621         * pinentry/pinentry.h (struct pinentry): New variables lc_ctype
622         and lc_messages.
623         * pinentry/pinentry.c (usage): New options --lc-ctype and
624         --lc-messages.
625         (pinentry_parse_opts): Likewise.
626         (option_handler): Likewise.
627         (struct pinentry pinentry): New initializers for new members.
628
629         * curses/pinentry-curses.c (convert_utf8_string): New function.
630         (struct dialog): New members ok and cancel.
631         (dialog_create): New variables ERR, DESCRIPTION, ERROR, PROMPT,
632         OK, and CANCEL.  Initialize them with the localised versions of
633         the pinentry strings.  If in confirm mode, split up the prompt at
634         '|' and use the values as button texts.  Use localised strings.
635         (dialog_switch_pos): Use localised strings.
636         (dialog_run): Free dialog strings.
637
638         * acinclude.m4 (AM_ICONV): New check from gettext.
639         * configure.ac: Run AM_ICONV if curses pinentry is build.
640         Don't check for inttypes.h, don't check size of unsigned int or
641         unsigned long.
642         (LIBCAP): Move check to interface independent part.
643
644 2002-04-21  Steffen Hansen  <steffen@hrhansen.dk>
645
646         * Removed X11 dependency and use Qt for grabbing the keyboard.
647         * Clear the lineedit before asking the user for the PIN.
648
649 2002-04-12  Steffen Hansen  <steffen@hrhansen.dk>
650
651         * Enable pinentry-qt if Qt is found
652
653 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
654
655         * qt: New directory.
656         * qt/Makefile.am, qt/cppmemory.cpp, qt/main.cpp,
657         pinentrycontroller.cpp, qt/pinentrycontroller.h,
658         qt/pinentrydialog.cpp, qt/pinentrydialog.h: New file, copied from
659         kde/.
660         * kde: Directory removed.
661         * kde/Makefile.am, kde/cppmemory.cpp, kde/main.cpp,
662         kde/pinentry.desktop, kde/pinentrycontroller.cpp,
663         kde/pinentrycontroller.h, kde/pinentrydialog.cpp,
664         kde/pinentrydialog.h: Files removed.
665         * acinclude.m4: Removed the KE checks and completely overhauled
666         the Qt checks, putting all Qt checks in their own namespace QT_,
667         and make it declare QT_-prefixed variables for linking and
668         compilation.
669         * configure.ac: Use the new Qt checks instead the KDE checks.
670         Replace "kde" with "qt" everywhere.
671         * Makefile.am: Replace "kde" with "qt" everywhere.
672         
673 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
674
675         * acinclude.m4: Reworked the Qt and KDE checks, cutting out a lot
676         of dead and not-so-dead wood.  Gave all KDE checks proper names.
677         * configure.ac: Use the new names for the KDE checks.
678
679 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
680
681         * kde/Makefile.am (EXTRA_DIST): Remove variable.
682         (install-data-local): Remove target.
683         (uninstall-local): Likewise.
684
685 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
686
687         Released 0.6.0.
688         
689         * configure.ac: Set version number to 0.6.
690         * NEWS: Add information for 0.6.0.
691         * secmem/Makefile.am (libsecmem_a_SOURCES): Replace secmem.h with memory.
692         * kde/Makefile.am (pinentry_kde_SOURCES): Move
693         pinentrydialog.moc.cpp and pinentrycontroller.moc.cpp to ...
694         (nodist_pinentry_kde_SOURCES): ... this new target.
695
696 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
697
698         * acinclude.m4: A lot of new checks more or less straight from KDE's
699         admin/acinclude.m4.in.
700         * configure.ac (AC_CANONICAL_HOST): Call that macro.
701         (AC_CHECK_COMPILERS, AC_PATH_KDE): Call those macros if KDE
702         pinentry is enabled.
703         * kde/Makefile.am (CXXFLAGS, XXX_PREFIX, XXX_KDE_DEFINES, LIB_QT,
704         LIB_KDECORE, LIB_KDEUI, KDE_RPATH, MOC, kde_appsdir): Variables removed.
705         (AM_CPPFLAGS): Replace XXX_KDE_DEFINES by all_includes.
706         (pinentry_kde_LDFLAGS): Add all_libraries.
707         * README: Document that automatic check is not possible for KDE.
708
709 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
710
711         * curses/pinentry-curses.c (dialog_run): Add handling for TAB key.
712         (dialog_create): New variable description_x.  Calculate dimension
713         of multi-line description correctly.
714
715 2002-04-04  Marcus Brinkmann  <marcus@g10code.de>
716
717         * pinentry/pinentry.h (struct pinentry): New members DISPLAY,
718         TTYNAME and TTYTYPE.
719         * pinentry/pinentry.c (pinentry): Likewise.
720         * pinentry/pinentry.c: Include <string.h>.
721         (usage): Add new options --display,
722         --ttyname and --ttytype.
723         (option_handler): Likewise.
724         (pinentry_parse_opts): Likewise.
725
726         * curses/pinentry-curses.c (dialog_cmd_handler): Use
727         PINENTRY->ttyname and PINENTRY->ttytype.
728
729 2002-03-30  Marcus Brinkmann  <marcus@g10code.de>
730
731         * acinclude.m4: Add AM_PATH_GLIB and AM_PATH_GTK.
732
733 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
734
735         * configure.ac: Choose a more appropriate AC_CONFIG_SRCDIR.
736
737 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
738
739         * kde/Makefile.am (pinentry_kde_LDADD): Link with $(LIBCAP).
740         * gtk/Makefile.am (install-exec-local): Moved to ...
741         * Makefile.am (install-exec-local): ... here.
742
743 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
744
745         * kde/Makefile.am (kde_appsdir): New variable.
746         * kde/Makefile.am (install-data-local): Use DESTDIR.
747         (uninstall-local): Likewise.
748
749 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
750
751         Merge of the gpinentry and curses pinentry program into the
752         pinentry distribution.  For this, the structure of the repository
753         has been thoroughly overhauled.  Some of the changes:
754         * secmem: New directory with secure memory allocation code.
755         * pinentry: New directory with pinentry support library.
756         * curses: New directory with curses frontend.
757         * gtk: New directory with GTK+ frontend.
758         * kde: New directory with only the core of the old kpinentry program.
759         * admin: Directory removed.
760         * po: Directory removed.
761         * kpinentry: Directory removed.
762         * doc: Directory removed.
763         * jnlib: Directory removed.x
764
765         The changes in more detail:
766         * AUTHORS: Add authors of other pinentry frontends.
767         * ChangeLog: Add the one from gpinentry.
768         * Makefile.am: Completely rewritten.
769         * README: Add content.
770         * TODO: Add content.
771         * NEWS: New file from gpinentry.
772         * THANKS: New file from gpinentry.
773         * acinclude.m4: New file.
774         * configure.ac: New file which configures for all frontends.
775         * curses/Makefile.am, curses/pinentry-curses.c: New files for
776         curses frontend.
777         * gtk/Makefile.am, gtk/gtksecentry.c, gtk/gtksecentry.h,
778         gtk/pinentry-gtk.c: New files, modified from gpinentry, for GTK+
779         frontend.
780         * kde/Makefile.am, kde/cppmemory.cpp, kde/main.cpp,
781         kde/pinentry.desktop, kde/pinentrycontroller.cpp,
782         kde/pinentrycontroller.h, kde/pinentrydialog.cpp,
783         kde/pinentrydialog.h: New files, modified from kpinentry, for KDE
784         frontend.
785         * pinentry/Makefile.am, pinentry/pinentry.c, pinentry/pinentry.h:
786         New files containing pinentry support library, partly factored out
787         from gpinentry.
788         * secmem/Makefile.am, secmem/memory.h, secmem/secmem-util.h,
789         secmem/secmem.c, secmem/util.c, secmem/util.h: New files
790         containing secure memory allocation code common to all pinentry
791         frontends.
792         * Makefile.dist, acconfig.h, configure.files, configure.in.in:
793         Files removed in favor of new configure.ac.
794         * pinentry.lsm: Removed file never used.
795         * stamp-h.in: Removed generated file.
796         * admin/ChangeLog, admin/Makefile.common, admin/acinclude.m4.in,
797         admin/am_edit, admin/am_edit.py, admin/conf.change.pl,
798         admin/config.guess, admin/config.pl, admin/config.sub,
799         admin/configure.in.min, admin/debianrules, admin/depcomp,
800         admin/install-sh, admin/libtool.m4.in, admin/ltcf-c.sh,
801         admin/ltcf-cxx.sh, admin/ltcf-gcj.sh, admin/ltconfig,
802         admin/ltmain.sh, admin/missing, admin/mkinstalldirs, admin/ylwrap:
803         Removed KDE build suite in favor of configure.ac.
804         * doc/Makefile.am, doc/en/Makefile.am, doc/en/index.docbook:
805         Removed files never used.
806         * jnlib/ChangeLog, jnlib/Makefile.am, jnlib/argparse.c,
807         jnlib/argparse.h jnlib/dotlock.c, jnlib/dotlock.h,
808         jnlib/libjnlib-config.h, jnlib/logging.c, jnlib/logging.h,
809         jnlib/mischelp.h, jnlib/stringhelp.c, jnlib/stringhelp.h,
810         jnlib/strlist.c, jnlib/strlist.h, jnlib/types.h, jnlib/xmalloc.c,
811         jnlib/xmalloc.h: Removed files no longer used.
812         * kpinentry/Makefile.am, kpinentry/cppmemory.cpp,
813         kpinentry/cppmemory.h, kpinentry/i18n.h, kpinentry/main.cpp,
814         kpinentry/memory.h, kpinentry/pinentry.desktop,
815         kpinentry/pinentrycontroller.cpp, kpinentry/pinentrycontroller.h,
816         kpinentry/pinentrydialog.cpp, kpinentry/pinentrydialog.h,
817         kpinentry/secmem.cpp, kpinentry/util.cpp, kpinentry/util.h:
818         Removed files in favor of new files in kde/.
819         * po/Makefile.am, po/pinentry.pot: Removed files never used.
820
821         * autogen.sh: New file.
822
823 2002-03-04  Werner Koch  <wk@gnupg.org>
824
825         * gpinentry.c (enter_callback): New
826         (create_window): Connect it to the entry field.
827
828 2002-02-18  Werner Koch  <wk@gnupg.org>
829
830         Released 0.5.1.
831
832         * gpinentry.c (create_window): Add CONFIRM_MODE.
833         (cmd_confirm): Implemented.
834
835         * assuan/:  Updated from NewPG.
836
837 2002-01-20  Werner Koch  <wk@gnupg.org>
838
839         * gpinentry.c (option_handler): New to allow changing of the grab
840         status.
841         (grab_keyboard): Shortcut this when global grab is not set.
842
843 2002-01-04  Werner Koch  <wk@gnupg.org>
844
845         Released 0.5.0.
846         
847         * configure.ac: Bumbed version
848
849         * util.h (xtoi_1, xtoi_2): New.
850         * gpinentry.c (strcpy_escaped): New
851         (cmd_setdesc, cmd_seterror): Use it here to allo multiline texts.
852
853         * gpinentry: Removed debugging outbut
854         (create_window): Tweaked layout.
855
856 2001-12-07  Werner Koch  <wk@gnupg.org>
857
858         New package gpinentry based on quintuple-agent.
859         
860         Removed all stuff except for the basic configuration stuff and
861         what is needed to build gpinentry.  Also removed i18n support.
862         * gpinentry.c: Renamed from secret-query.c
863
864 2001-02-12  Robert Bihlmeyer  <robbe@orcus.priv.at>
865
866         * 1.0.0 released. Woo-hoo!
867
868         * configure.in, NEWS: Bumped version.
869
870 2001-02-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
871
872         * agent.c (make_tmpdir): Honor $TMPDIR.
873
874         (agent): Would exit on every minor problem. Now, we just close the
875         offending connection.
876         Ignore SIGPIPE, so that EPIPE will close connection.
877
878 2001-01-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
879
880         * secmem.c: Move one include statement so that the thing compiles.
881
882         * secret-query.c (main): Minor source cosmetics.
883
884 2000-11-16  Robert Bihlmeyer  <robbe@orcus.priv.at>
885
886         * gtksecentry.c (gtk_secure_entry_insert_text): Secured a couple
887         of memory (de)allocations that were missed. Thanks to John Steele
888         <jhs28@eng.cam.ac.uk> for spotting these.
889
890 2000-11-10  Robert Bihlmeyer  <robbe@orcus.priv.at>
891
892         * Thoughts: Removed in favor of new TODO.
893
894         * README: Remove content and refer to doc/manual.info instead.
895
896         * agent.c (do_get): Would burn badly on a premature exit of the
897         query program (which would occur routinely if you selected /cancel/).
898
899 2000-10-25  Robert Bihlmeyer  <robbe@orcus.priv.at>
900
901         * memory.h: Include sys/types.h for size_t.
902
903 2000-10-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
904
905         * README: Removed apology about missing documentation.
906         Updated paragraph about Linux capability patch.
907         Typo & Refill.
908
909 2000-10-03  Robert Bihlmeyer  <robbe@orcus.priv.at>
910
911         * 0.9 released.
912
913         * Makefile.am (EXTRA_DIST): Distribute BUGS (the file, that is).
914
915         * configure.in, NEWS: Bumped version.
916
917         * Makefile.am, configure.in: Add debian subdir.
918
919         * README: Recommend GTK+.
920         Update list of checked platforms.
921
922 2000-10-02  Robert Bihlmeyer  <robbe@orcus.priv.at>
923
924         * secret-query.c (ok): Simplify.
925         Put empty line between headers and secret.
926         (usage): Document '--help' and '--version'.
927
928         * agent.c (do_get): Use enhanced secret-query output to fill in
929         options.
930
931 2000-10-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
932
933         * secret-query.c (main): Clarify error.
934
935         * client.c (query_options): New global variable.
936         (main): New option '--query-options' to pass options to the query
937         program.
938         (xgetpass): Use it.
939
940         * agent.c (main): New option '--query-options' to pass options to
941         the query program.
942         (do_get): Use 'query_options'.
943
944         * acconfig.h, configure.in: Add QUERY_PROGRAM definition.
945         * client.c: Remove here.
946         * agent.c (do_get): Use it here, too.
947
948         * secret-query.c (main): New option '--no-global-grab' introduced,
949         that prevents keyboard grabbing unless the window has focus.
950
951 2000-09-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
952
953         * secret-query.c (usage): Add two missing pieces of "\n\".
954
955         * agent.c (main): --nofork is now the default, and the option is
956         deprecated. New option --fork added to turn forking on again.
957         Close stdout (and stderr unless debugging) even when not forking,
958         so that normal usage inside eval is still possible.
959         (agent): Exit gracefully on HUP, so that logging out now kills the
960         agent. 
961
962         * README (Contact Information): Old URL - duh!
963         (Using Secret Agent): We no longer fork per default.
964
965         * Makefile.am (lib/libutil.a): New target, allows targets that not
966         automatically recurse (but still depend on libutil.a) to succeed.
967
968 2000-07-20  Robert Bihlmeyer  <robbe@orcus.priv.at>
969
970         * secret-query.c (usage): New function.
971         (main): Parse options: debug, enhanced, help, version.
972         Turn on locale support.
973         If enhanced, insert widgets to ask for timeout and insurance.
974         (ok): If enhanced, print more information on exit.
975         (grab_keyboard): Die if grab was unsuccessful.
976
977 2000-05-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
978
979         * 0.8 released.
980
981         * configure.in, NEWS: Bumped version.
982
983         * Makefile.am (SUBDIRS): Include doc.
984
985         * configure.in, acconfig.h: Check for ssize_t.
986         Check for vsnprintf(), strdup().
987         Generate doc/Makefile.
988
989         * apgp.c, agpg.c, agentlib.c, util.c: Include more stuff.
990
991         * agent.c (do_get): Use asprintf() instead of snprintf() so we
992         don't need to roll our own for yet another function.
993         Fix some includes.
994
995         * acinclude.m4: gettext macros copied from automake and fixed.
996
997 2000-05-30  Robert Bihlmeyer  <robbe@orcus.priv.at>
998
999         * configure.in, Makefile.am: Properly include doc subdir.
1000
1001 2000-05-29  Robert Bihlmeyer  <robbe@orcus.priv.at>
1002
1003         * configure.in, acconfig.h: Add test for XMESSAGE path.
1004
1005         * client.c (main): Decode command from string to integer code
1006         first, then evaluate that in ifs.
1007
1008         * secret-ask.c: New file, external ask-for-confirmation utility.
1009
1010         * configure.in, Makefile.am: Add secret-ask to programs being
1011         built when GTK is available. Rename QUERY to more descriptive
1012         GTK_PROGRAMS.
1013
1014         * agent.c (do_get): If GTK is available, try executing secret-ask
1015         first.
1016         Only put the comment into the insure-question if there is a
1017         comment.
1018         (main): --csh was missing from usage message.
1019
1020 2000-04-23  Robert Bihlmeyer  <robbe@orcus.priv.at>
1021
1022         * secret-query.c (constrain_size): Lower window max_width to
1023         accomodate bugs in GTK and Scwm.
1024
1025         * agent.c (main): Set x_enabled if X appears to be available.
1026         Use it to selectively make FLAGS_INSURE supported.
1027         (do_get): Use it instead of testing at every call.
1028         (do_put): Requests containing unsupported flags fail.
1029         (forget_old_stuff): Would not set next_deadline correctly.
1030         (do_get): Implement FLAGS_INSURE.
1031
1032         * client.c (main): "list" format changed so that comment is to the
1033         far right. Display the deadline as proper date/time, too.
1034
1035 1999-11-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
1036
1037         * agent.c (next_deadline): New global variable, holds time when
1038         next secret has to be killed.
1039         (store): Keep it up-to-date.
1040         (forget_old_stuff): New function, reaps secrets ready to kill,
1041         keeps next_deadline updated.
1042         (agent): Use it on all secrets, whenever a deadline is active.
1043
1044 1999-11-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
1045
1046         * agent.h (request_put): Add flags, deadline. Increase REQUEST_MAGIC. 
1047         (reply_get): Ditto, and increase REPLY_MAGIC.
1048         * agent.c (store): Store flags, deadline in reply.
1049         (do_put): Hand flags, deadline from request on to store().
1050         (do_get): Store on-demand queried secrets without deadline or
1051         special flags, for now.
1052         (agent): Do not ignore obsolete clients, return an error reply.
1053         * agentlib.c (agent_put): Add flags, deadline arguments, and copy
1054         them into the request.
1055         * agentlib.h (agent_put): Update prototype.
1056 *       * client.c (main): Added --time-to-live (-t) and --insure (-i)
1057         options, influencing PUT's deadline and flags, respectively.
1058         (main): Change list format to include new attributes.
1059
1060 1999-11-05  Robert Bihlmeyer  <robbe@orcus.priv.at>
1061
1062         * configure.in: <getopt.h> check had redundant definition.
1063         * acconfig.h: Remove here, too.
1064
1065         * configure.in: Check for <inttypes.h>. If not found, check for
1066         unsigned {int, long} sizes.
1067         * agent.h: Either include <inttypes.h>, or try to define uint32_t
1068         yourself.
1069         Need to include "config.h".
1070
1071 1999-11-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
1072
1073         * Makefile.am (signed-dist): New rule, generates sig for dist.
1074         (%.sig): New rule, for detached signatures in general.
1075
1076         * configure.in: Check for ulong.
1077         * acconfig.h: Document it.
1078         * secmem.c: Unconditionally defining it is no longer necessary
1079         here. But do include <sys/types.h> in all cases.
1080
1081         * 0.7 released.
1082
1083         * secmem.c: ulong is not defined on all systems.
1084
1085         * agent.h: <inttypes.h> should define `uint32_t' as per Unix98, so
1086         we use that.
1087
1088 1999-11-02  Robert Bihlmeyer  <robbe@orcus.priv.at>
1089
1090         * agent.h: Augmented requests and replies with magic numbers.
1091         Data structures heavily commented.
1092         All structures and enums typedef'd.
1093         * agent.c: Adapted.
1094         (store): Set magic number in stored reply.
1095         (do_put): Set magic number in reply.
1096         (do_delete): Ditto.
1097         (do_list): Ditto. 
1098         (agent): Check magic number in request.
1099         * agentlib.c: Adapted.
1100         (send_request): Set magic number in request. Check it in reply.
1101         * agentlib.h: Adapted.
1102         * agpg.c: Adapted.
1103         * apgp.c: Adapted.
1104         * client.c: Adapted.
1105
1106 1999-10-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
1107
1108         * secmem.c: Instead of defining ulong directly, include
1109         <sys/types.h>
1110
1111         * secret-query.c (constrain_size): New function, puts constrains
1112         on size of toplevel window.
1113         (grab_keyboard): Removed protection against multiple calls.
1114         (ungrab_keyboard): New function, cancelling a keyboard grab.
1115         (main): Hang `grab_keyboard' onto map-event which makes it
1116         actually work, hang `ungrab_keyboard' onto unmap-event.
1117         Hang `constrain_size' onto size-request.
1118
1119         * secmem.c: ulong was undefined on some systems.
1120
1121 1999-10-19  Robert Bihlmeyer  <robbe@orcus.priv.at>
1122
1123         * Makefile.am (install-exec-local): Ignore setcap errors.
1124
1125         * apgp.c: New program, based on agpg.c, but for pgp2.6.
1126         * Makefile.am (bin_PROGRAMS, apgp_SOURCES): Added it.
1127
1128         * agpg.c (GPG): New constant.
1129         (find_id, main): Use it throughout.
1130         (find_id): Forgot to pclose on success.
1131
1132         * secret-query.c (main): Don't expand anything.
1133         Use a button box for the buttons.
1134         Prompt label can be overridden from the commandline.
1135         * agent.c (do_get): Make spawned secret-query show the id.
1136         * client.c (xgetpass): Pass prompt to secret-query.
1137         (main): Include id in xgetpass prompt.
1138
1139 1999-10-14  Robert Bihlmeyer  <robbe@orcus.priv.at>
1140
1141         * configure.in: setcap must be searched outside the usual user
1142         PATH, too.
1143         * Makefile.am (install-exec-local): Set cap_ipc_lock permitted on
1144         installed binaries, if possible.
1145
1146         * agent.c (xdup2): New function, dup2 with error handling.
1147         (move_fd): New function, moves fds.
1148         (store): New function, abstracted out from do_put.
1149         (do_put): Use it.
1150         (do_get): If secret was not found, and DISPLAY is set, try to
1151         query the user about it. If successful, store it.
1152         (main): Route standard file descriptors to /dev/null rather than
1153         just closing them. The latter would confuse children.
1154
1155 1999-10-13  Robert Bihlmeyer  <robbe@orcus.priv.at>
1156
1157         * gtksecentry.c, gtksecentry.h: New files, being slightly modified
1158         versions of GTK+'s gtkentry.[ch], spiffed up to use secure memory.
1159         * secret-query.c (ok, unselect, main): Replace GtkEntry with
1160         GtkSecureEntry.
1161         (main): Initialize secure memory.
1162         * Makefile.am (secret_query_SOURCES): Added gtksecentry.[ch].
1163
1164         * README (Security): New chapter.
1165
1166         * configure.in, acconfig.h: Check for POSIX capabilities, and the
1167         setcap program.
1168         * Makefile.am: Link LIBCAP to those binaries using secmem.c.
1169
1170         * util.h: Include <sys/types.h> for size_t.
1171
1172 1999-09-21  Robert Bihlmeyer  <robbe@orcus.priv.at>
1173
1174         * secmem.c: Synced with gnupg-1.0 (top new feature: capabilities).
1175         (log_fatal): New function, logs to stderr, and dies.
1176
1177 1999-09-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
1178
1179         * secmem.c (log_info): New function, logs to stderr.
1180
1181         * agent.c (agent): select() expects the number of fds, not the
1182         highest fd. So remember that number.
1183
1184         * agent.c (agent): Don't use FD_SETSIZE, which is not defined on
1185         all systems. Remember the number of the highest descriptor
1186         instead.
1187
1188         * configure.in: Replace getline() instead of getdelim() because
1189         this is the function we really need. Still check for getdelim(),
1190         though - there are systems out there where this is provided, but
1191         getline() is not.
1192
1193 1999-09-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
1194
1195         * 0.6 released.
1196
1197         * configure.in: Bump version.
1198
1199         * NEWS: Updated.
1200
1201 1999-08-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
1202
1203         * util.c (init_uids, lower_privs, raise_privs, drop_privs): New
1204         functions, for setuid binaries, extracted from agent.c.
1205         * util.h: Add prototypes for them.
1206         * agpg.c (main): Use them.
1207         * client.c (main): Ditto.
1208         * agent.c (main): Ditto. Removed code that did the same.
1209         Unconditionally include "asprintf.h" (it protects itself now).
1210
1211 1999-08-25  Robert Bihlmeyer  <robbe@orcus.priv.at>
1212
1213         * Makefile.am (SUBDIRS): Process . before test so that "make
1214         check" always builds all in . first.
1215
1216 1999-08-21  Robert Bihlmeyer  <robbe@orcus.priv.at>
1217
1218         * secret-query.c: Include "config.h".
1219
1220         * agent.h (reply_list_entry, reply_list): New reply structures.
1221         * agent.c (send_list_entry): New function.
1222         (do_list): First send number of entries, then each entry via
1223         send_list_entry().
1224         * agentlib.c (agent_list): Read entries returned by LIST request.
1225         * client.c (main): Output all entries returned by agent_list().
1226
1227         * agentlib.c (agent_put): Don't construct PUT request in insecure
1228         stack space.
1229
1230 1999-08-20  Robert Bihlmeyer  <robbe@orcus.priv.at>
1231
1232         * NEWS: Bump patchlevel.
1233
1234         * configure.in: Bump patchlevel.
1235         Check for missing setenv().
1236
1237 1999-08-09  Robert Bihlmeyer  <robbe@orcus.priv.at>
1238
1239         * configure.in: Check for strsignal().
1240
1241         * client-test: Obsoleted by test/client.
1242
1243         * Makefile.am (SUBDIRS): New subdirectory.
1244         * configure.in (AC_OUTPUT): Add here, too.
1245
1246         * 0.5 released.
1247
1248         * README: Explain why secret-client will not output secrets to a
1249         tty, and mention the cat-trick.
1250
1251         * agent.c (main): If seteuid is not available, don't use it and
1252         issue a warning if running setuid.
1253
1254         * configure.in: Run together two REPLACE_FUNCS.
1255         Check for seteuid.
1256
1257         * client-test: Mask out insecure memory warnings.
1258
1259         * agentlib.c (send_request): Let the calling functions reserve
1260         space for the reply, but offer a simple way for simple requests.
1261         (agent_get): Allocate secure memory.
1262
1263         * agent.c (main): Moved secmem_init() after the fork, since that
1264         seemingly munlock's all pages.
1265         Drop priviledges just in case somebody wants to install this
1266         suid-root.
1267         Flush stdout.
1268
1269         * agpg.c (find_id): Would reorder arguments.
1270         Initialize opt_version.
1271         (main): Initialize secure memory.
1272
1273         * Makefile.am (agpg_SOURCES): Link with secure memory module.
1274
1275         * client.c (usage): Fixed another program name reference.
1276
1277 1999-08-06  Robert Bihlmeyer  <robbe@orcus.priv.at>
1278
1279         * configure.in: Conditionally define HAVE_GTK.
1280         * acconfig.h: Add here too.
1281
1282         * client.c (xgetpass): Use "secret-query" only if it was built.
1283         (main): Don't output secret (GET command) to ttys.
1284
1285         * agpg.c (find_id): Also print own version if "--version" is given.
1286         (main): Check agent_init() errors.
1287         Print error if exec fails.
1288
1289         * agent.c (main): Added an option to produce csh-compatible
1290         output.
1291
1292         * agent.c, client.c: Forgot the terminating NULL in long options.
1293         Fixed the program names in usage and version output.
1294
1295         * agent.c (create_socket): AF_UNIX and PF_UNIX are Unix98, so
1296         that's what we use. AF_LOCAL, PF_LOCAL removed.
1297         * agentlib.c (agent_init): Ditto.
1298
1299 1999-08-05  Robert Bihlmeyer  <robbe@orcus.priv.at>
1300
1301         * 0.4 released.
1302
1303         * configure.in: Bumped version.
1304         Check for missing getdelim.
1305
1306         * cgpg: Removed, obsoleted by agpg.
1307         * Makefile.am: Here, too.
1308
1309         * agpg.c (find_id): New function.
1310         (main): Use it.
1311
1312         * Makefile.am (INCLUDES): Put GTK_FLAGS and GLIB_FLAGS here. It
1313         is the easiest way for sources needing it, and it won't hurt those 
1314         that don't.
1315         (agent.o): Explicit command removed accordingly.
1316
1317 1999-08-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
1318
1319         * configure.in: Need double quoting in nested AC_MSG_WARN.
1320
1321         * client.c (xgetpass): If no tty is available, but a DISPLAY is,
1322         fork off "secure-query" to read the secret.
1323         Put the fgets into a loop that keeps reading until all of the
1324         secret is read.
1325
1326         * client-test: Unset DISPLAY, so that "secret-query" is never used.
1327
1328 1999-08-03  Robert Bihlmeyer  <robbe@orcus.priv.at>
1329
1330         * agpg.c: New file, first cut at a C version of the gpg wrapper,
1331         written in a hurry (20 keys waiting to be signed, and a growling
1332         stomach).
1333         * Makefile.am: Add it to built programs.
1334         (LDADD): New default.
1335         (secret_client_LDADD): Removed, since it was identical to default.
1336
1337 1999-08-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
1338
1339         * secret-query.c: New program, queries the user for a password.
1340         * Makefile.am (bin_PROGRAMS): Added it.
1341         * configure.in: Check for GTK+, build "secret-query" only when
1342         that is available.
1343
1344         * cgpg: Extra argument for ID is no longer necessary. cgpg will
1345         scan the gpg args for switches that affect user-id, and determine
1346         the right key itself. Per convention, the key-id is used by "GET".
1347
1348         * configure.in: The project name is now "secret-agent".
1349
1350         * Makefile.am: "agent" & "client" renamed to "secret-agent" &
1351         "secret-client", respectively.
1352         * client-test: Adapt to new names.
1353
1354         * Thoughts: Removed discussion of other names.
1355         Added indication of which things already work.
1356
1357         * agent.c (make_tmpdir): Removed occurance of "gpg-agent."
1358
1359         * README: First proper version.
1360
1361         * client-test: Context diffs are more portable then unified diffs.
1362
1363         * agent.c, agent.h, agentlib.c, agentlib.h, client.c, memory.h,
1364         util.c, util.h: Banner updated to new name.
1365
1366 1999-07-29  Robert Bihlmeyer  <robbe@orcus.priv.at>
1367
1368         * configure.in: Check for missing asprintf.
1369         Check if -lsocket is needed.
1370
1371         * secmem.c (secmem_dump_stats): Replace usage of ulong.
1372
1373         * Makefile.am (INCLUDES): Add the lib subdirectory to include search.
1374
1375         * agent.c: Forgot to include <string.h>.
1376         Include RYO asprintf header if this function is missing.
1377         For the sake of compatibility, provide a definition for AF_LOCAL,
1378         PF_LOCAL, if missing.
1379         * agentlib.c: Ditto.
1380
1381 1999-07-28  Robert Bihlmeyer  <robbe@orcus.priv.at>
1382
1383         * Makefile.am (client_SOURCES): Add "secmem.c", "memory.h".
1384
1385         * client.c (xgetpass): Use secmem_malloc() instead of RYO.
1386         (main): Init and shutdown secmem.
1387
1388 1999-07-27  Robert Bihlmeyer  <robbe@orcus.priv.at>
1389
1390         * Makefile.am (agent_SOURCES): Add "secmem.c", "i18n.h", "memory.h".
1391         (client_SOURCES): Add "i18n.h".
1392
1393         * client.c (main): Exit on agent_init() failure.
1394
1395         * agent.c (main): Init secmem.
1396         Make --debug switch cumulative.
1397         (cleanup): Shutdown secmem.
1398         (do_put): Use secmem for storage of secrets.
1399         (do_delete): Use secmem_free(). Since this wipes the memory on its 
1400         own, wipe() is superflous now.
1401         (agent): Use secmem for inbound requests.
1402         (delete_secret): New function, takes part of do_delete's
1403         functionality.
1404         (do_put): Use it to remove old versions stored under the same id.
1405         (do_delete): Use it to delete secrets.
1406
1407         * memory.h: New file.
1408
1409         * secmem.c: New file, snarfed from GnuPG and modified slightly.
1410
1411         * acinclude.m4: New file.
1412         * configure.in: (ALL_LINGUAS): Expanded list of available
1413         languages. Most of them only have a few translations from gpg,
1414         tough ...
1415         getopt_long test was commented out for debugging,
1416         and left such. Fixed.
1417         Check for mlock.
1418         * acconfig.h: Comment HAVE_BROKEN_MLOCK.
1419
1420         * cgpg: A space was missing.
1421
1422         * i18n.h: New file, centralizing the gettext macro defs.
1423
1424         * agent.c (BLIND): New macro, that blinds out a secret if debug
1425         level is too low.
1426         (do_put): Use it.
1427         (do_get): Use it.
1428         Include i18n.h.
1429
1430         * agentlib.c: Include i18n.h
1431         
1432         * client.c (usage): New function.
1433         Usage-message made gettext-friendly.
1434         (xgetpass): Use perror() instead of fprintf().
1435         (main): Use it.
1436         Make comment an optional argument of PUT.
1437         Include i18n.h.
1438
1439 1999-07-26  Robert Bihlmeyer  <robbe@orcus.priv.at>
1440
1441         * Makefile.am (client_LDADD): Add lib/libutil.a for portability.
1442         (agent_LDADD): Ditto.
1443         (SUBDIRS): Add lib directory.
1444         (bin_SCRIPTS): New with cgpg, so it gets installed, too.
1445
1446         * configure.in: Add lib/Makefile to output.
1447
1448 1999-07-24  Robert Bihlmeyer  <robbe@orcus.priv.at>
1449
1450         * cgpg: New file.
1451         * Makefile.am (EXTRA_DIST): Added it.
1452
1453         * agent.c: Moved inclusion of config.h before inclusion of
1454         libintl.h since the latter needs HAVE_LC_MESSAGE.
1455         * client.c: Ditto.
1456         * clientlib.c: Ditto.
1457
1458         * client-test: Update for new client semantics.
1459
1460         * client.c (check_status): Use debugmsg(). Do nothing if not
1461         debugging.
1462         (xgetpass): New function, getpass replacement that uses mlock'ed
1463         memory.
1464         (main): PUT now asks for the secret rather then getting it from
1465         the commandline.
1466         GET prints only the secret to stdout.
1467
1468         * configure.in: Rearranged.
1469         Check for socklen_t.
1470         * acconfig.h: Added a definition for it.
1471
1472         * client.c: Include packaged getopt.h if the system doesn't provide 
1473         one. 
1474         * agent.c: Ditto.
1475         (create_socket): Replace AF_FILE, PF_FILE with AF_LOCAL, PF_LOCAL
1476         for portability.
1477         * agentlib.c (agent_init): Ditto.
1478         Explicitly cast addr to a sockaddr pointer.
1479
1480         * Makefile.am (client_LDADD): Added @INTLLIBS@.
1481         (agent_LDADD): Ditto.
1482
1483 1999-07-19  Robert Bihlmeyer  <robbe@orcus.priv.at>
1484
1485         * configure.in: Check for getopt.h and getopt_long.
1486         * acconfig.h (HAVE_GETOPT_H): New define.
1487         * lib/getopt.c, lib/getopt1.c, lib/getopt.h: Added.
1488
1489 1999-07-18  Robert Bihlmeyer  <robbe@orcus.priv.at>
1490
1491         * 0.2 released.
1492
1493         * NEWS: Updated.
1494
1495         * Makefile.am (agent.o): Mentioning the source explicitly does not 
1496         work for srcdir!=builddir.
1497
1498         * client.c (main): Function arguments are not always evaluated in
1499         order, so drop the neat ++optind in favor of optind+1, optind+2,
1500         etc.
1501
1502         * configure.in: Upped version.
1503
1504 1999-06-28  Robert Bihlmeyer  <robbe@orcus.priv.at>
1505
1506         * util.h: Added multi-inclusion guard.
1507
1508         * agent.c Include "util.h".
1509         (main): Forgot to exit at end.
1510         (do_delete): Assume that value is a string and wipe it accordingly.
1511
1512         * configure.in (--enable-debug): New switch.
1513
1514         * agent.h (status_t): Added STATUS_COMM_ERR code.
1515         Added multi-inclusion guard.
1516
1517         * client.c (main): Abstracted out most functionality into a
1518         function library, namely:
1519         * agentlib.c: New file.
1520         * agentlib.h: New file.
1521         * Makefile.am (client_SOURCES): Added agentlib.c, agentlib.h.
1522
1523         * Makefile.am (INCLUDES): GLIB_CFLAGS moved again, this time to
1524         the agent.o target. 
1525
1526 1999-06-15  Robert Bihlmeyer  <robbe@orcus.priv.at>
1527
1528         * 0.1 released.
1529
1530         * Makefile.am (agent_CFLAGS): Removed - did not work.
1531         (INCLUDES): Moved the GLIB stuff here.
1532
1533 1999-06-14  Robert Bihlmeyer  <robbe@orcus.priv.at>
1534
1535         * configure.in (ALL_LINGUAS): Added `de'.
1536
1537         * agent.c (do_get): Added more debugmsgs.
1538         (do_put): Wouldn't allocate enough for `value'.
1539         (main): New option "--nofork" prevents forking.
1540         Use macros for the std filedescriptor numbers.
1541         Only close stderr if not debugging.
1542         (main): Make Usage string gettext-friendly.
1543
1544         * client-test (cleanup): New function.
1545         Call it on shell exit.
1546         (client): New function.
1547         Use it instead of calling client binary directly.
1548         diff client output with expected one in GET testcases.
1549
1550 1999-06-13  Robert Bihlmeyer  <robbe@orcus.priv.at>
1551
1552         * agent.c (failed_reply): New constant.
1553         (do_list): Use it.
1554         (do_put): The hash key was overwritten - strdup it.
1555         Construct a GET reply and save that in the hash.
1556         (do_get): Just send the preconstructed reply if the id is present, 
1557         and failed_reply otherwise.
1558         (do_delete): Actually free the hashed stuff.
1559
1560         * client.c: Exit with error if agent returned STATUS_FAIL.
1561
1562         * Makefile.am (EXTRA_DIST): Added autogen.sh, Thoughts,
1563         client-test.
1564         (TESTS): Added client-test.
1565         (AUTOMAKE_OPTIONS): Added gnits. 
1566
1567         
1568  Copyright 2002, 2003 g10 Code GmbH
1569
1570  This file is free software; as a special exception the author gives
1571  unlimited permission to copy and/or distribute it, with or without
1572  modifications, as long as this notice is preserved.
1573
1574  This file is distributed in the hope that it will be useful, but
1575  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1576  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.