2002-04-25 Marcus Brinkmann <marcus@g10code.de>
[pinentry.git] / ChangeLog
1 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
2
3         * gtk/pinentry-gtk.c (create_window): Use ok and cancel value if
4         provided.
5
6 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
7
8         * qt/pinentrycontroller.h: New members _ok and _cancel.
9         * qt/pinentrycontroller.cpp (registerCommands): Add SETOK and SETCANCEL.
10         (assuanOk): New method.
11         (assuanCancel): Likewise.
12
13 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
14
15         * curses/pinentry-curses.c (dialog_create): Grok the new ok and
16         cancel members to set the pbutton texts, rather than parsing the
17         prompt in the confirm case.
18
19         * pinentry/pinentry.h (struct pinentry): Add new members ok and cancel.
20         * pinentry/pinentry.c (register_commands): Add new commands SETOK
21         and SETCANCEL to set button texts.
22         (struct pinentry pinentry): Add initializers for new members.
23         (cmd_setok): New function.
24         (cmd_setcancel): Likewise.
25
26 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
27
28         * curses/pinentry-curses.c (dialog_create): Add '<' and '>' around
29         the user provided button texts.  Replace sizeof by strlen to fix
30         size calculation of ok and cancel button.
31
32 2002-04-23  Marcus Brinkmann  <marcus@g10code.de>
33
34         * pinentry/pinentry.h (struct pinentry): New variables lc_ctype
35         and lc_messages.
36         * pinentry/pinentry.c (usage): New options --lc-ctype and
37         --lc-messages.
38         (pinentry_parse_opts): Likewise.
39         (option_handler): Likewise.
40         (struct pinentry pinentry): New initializers for new members.
41
42         * curses/pinentry-curses.c (convert_utf8_string): New function.
43         (struct dialog): New members ok and cancel.
44         (dialog_create): New variables ERR, DESCRIPTION, ERROR, PROMPT,
45         OK, and CANCEL.  Initialize them with the localised versions of
46         the pinentry strings.  If in confirm mode, split up the prompt at
47         '|' and use the values as button texts.  Use localised strings.
48         (dialog_switch_pos): Use localised strings.
49         (dialog_run): Free dialog strings.
50
51         * acinclude.m4 (AM_ICONV): New check from gettext.
52         * configure.ac: Run AM_ICONV if curses pinentry is build.
53         Don't check for inttypes.h, don't check size of unsigned int or
54         unsigned long.
55         (LIBCAP): Move check to interface independent part.
56
57 2002-04-21  Steffen Hansen  <steffen@hrhansen.dk>
58
59         * Removed X11 dependency and use Qt for grabbing the keyboard.
60         * Clear the lineedit before asking the user for the PIN.
61
62 2002-04-12  Steffen Hansen  <steffen@hrhansen.dk>
63
64         * Enable pinentry-qt if Qt is found
65
66 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
67
68         * qt: New directory.
69         * qt/Makefile.am, qt/cppmemory.cpp, qt/main.cpp,
70         pinentrycontroller.cpp, qt/pinentrycontroller.h,
71         qt/pinentrydialog.cpp, qt/pinentrydialog.h: New file, copied from
72         kde/.
73         * kde: Directory removed.
74         * kde/Makefile.am, kde/cppmemory.cpp, kde/main.cpp,
75         kde/pinentry.desktop, kde/pinentrycontroller.cpp,
76         kde/pinentrycontroller.h, kde/pinentrydialog.cpp,
77         kde/pinentrydialog.h: Files removed.
78         * acinclude.m4: Removed the KE checks and completely overhauled
79         the Qt checks, putting all Qt checks in their own namespace QT_,
80         and make it declare QT_-prefixed variables for linking and
81         compilation.
82         * configure.ac: Use the new Qt checks instead the KDE checks.
83         Replace "kde" with "qt" everywhere.
84         * Makefile.am: Replace "kde" with "qt" everywhere.
85         
86 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
87
88         * acinclude.m4: Reworked the Qt and KDE checks, cutting out a lot
89         of dead and not-so-dead wood.  Gave all KDE checks proper names.
90         * configure.ac: Use the new names for the KDE checks.
91
92 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
93
94         * kde/Makefile.am (EXTRA_DIST): Remove variable.
95         (install-data-local): Remove target.
96         (uninstall-local): Likewise.
97
98 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
99
100         Released 0.6.0.
101         
102         * configure.ac: Set version number to 0.6.
103         * NEWS: Add information for 0.6.0.
104         * secmem/Makefile.am (libsecmem_a_SOURCES): Replace secmem.h with memory.
105         * kde/Makefile.am (pinentry_kde_SOURCES): Move
106         pinentrydialog.moc.cpp and pinentrycontroller.moc.cpp to ...
107         (nodist_pinentry_kde_SOURCES): ... this new target.
108
109 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
110
111         * acinclude.m4: A lot of new checks more or less straight from KDE's
112         admin/acinclude.m4.in.
113         * configure.ac (AC_CANONICAL_HOST): Call that macro.
114         (AC_CHECK_COMPILERS, AC_PATH_KDE): Call those macros if KDE
115         pinentry is enabled.
116         * kde/Makefile.am (CXXFLAGS, XXX_PREFIX, XXX_KDE_DEFINES, LIB_QT,
117         LIB_KDECORE, LIB_KDEUI, KDE_RPATH, MOC, kde_appsdir): Variables removed.
118         (AM_CPPFLAGS): Replace XXX_KDE_DEFINES by all_includes.
119         (pinentry_kde_LDFLAGS): Add all_libraries.
120         * README: Document that automatic check is not possible for KDE.
121
122 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
123
124         * curses/pinentry-curses.c (dialog_run): Add handling for TAB key.
125         (dialog_create): New variable description_x.  Calculate dimension
126         of multi-line description correctly.
127
128 2002-04-04  Marcus Brinkmann  <marcus@g10code.de>
129
130         * pinentry/pinentry.h (struct pinentry): New members DISPLAY,
131         TTYNAME and TTYTYPE.
132         * pinentry/pinentry.c (pinentry): Likewise.
133         * pinentry/pinentry.c: Include <string.h>.
134         (usage): Add new options --display,
135         --ttyname and --ttytype.
136         (option_handler): Likewise.
137         (pinentry_parse_opts): Likewise.
138
139         * curses/pinentry-curses.c (dialog_cmd_handler): Use
140         PINENTRY->ttyname and PINENTRY->ttytype.
141
142 2002-03-30  Marcus Brinkmann  <marcus@g10code.de>
143
144         * acinclude.m4: Add AM_PATH_GLIB and AM_PATH_GTK.
145
146 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
147
148         * configure.ac: Choose a more appropriate AC_CONFIG_SRCDIR.
149
150 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
151
152         * kde/Makefile.am (pinentry_kde_LDADD): Link with $(LIBCAP).
153         * gtk/Makefile.am (install-exec-local): Moved to ...
154         * Makefile.am (install-exec-local): ... here.
155
156 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
157
158         * kde/Makefile.am (kde_appsdir): New variable.
159         * kde/Makefile.am (install-data-local): Use DESTDIR.
160         (uninstall-local): Likewise.
161
162 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
163
164         Merge of the gpinentry and curses pinentry program into the
165         pinentry distribution.  For this, the structure of the repository
166         has been thoroughly overhauled.  Some of the changes:
167         * secmem: New directory with secure memory allocation code.
168         * pinentry: New directory with pinentry support library.
169         * curses: New directory with curses frontend.
170         * gtk: New directory with GTK+ frontend.
171         * kde: New directory with only the core of the old kpinentry program.
172         * admin: Directory removed.
173         * po: Directory removed.
174         * kpinentry: Directory removed.
175         * doc: Directory removed.
176         * jnlib: Directory removed.x
177
178         The changes in more detail:
179         * AUTHORS: Add authors of other pinentry frontends.
180         * ChangeLog: Add the one from gpinentry.
181         * Makefile.am: Completely rewritten.
182         * README: Add content.
183         * TODO: Add content.
184         * NEWS: New file from gpinentry.
185         * THANKS: New file from gpinentry.
186         * acinclude.m4: New file.
187         * configure.ac: New file which configures for all frontends.
188         * curses/Makefile.am, curses/pinentry-curses.c: New files for
189         curses frontend.
190         * gtk/Makefile.am, gtk/gtksecentry.c, gtk/gtksecentry.h,
191         gtk/pinentry-gtk.c: New files, modified from gpinentry, for GTK+
192         frontend.
193         * kde/Makefile.am, kde/cppmemory.cpp, kde/main.cpp,
194         kde/pinentry.desktop, kde/pinentrycontroller.cpp,
195         kde/pinentrycontroller.h, kde/pinentrydialog.cpp,
196         kde/pinentrydialog.h: New files, modified from kpinentry, for KDE
197         frontend.
198         * pinentry/Makefile.am, pinentry/pinentry.c, pinentry/pinentry.h:
199         New files containing pinentry support library, partly factored out
200         from gpinentry.
201         * secmem/Makefile.am, secmem/memory.h, secmem/secmem-util.h,
202         secmem/secmem.c, secmem/util.c, secmem/util.h: New files
203         containing secure memory allocation code common to all pinentry
204         frontends.
205         * Makefile.dist, acconfig.h, configure.files, configure.in.in:
206         Files removed in favor of new configure.ac.
207         * pinentry.lsm: Removed file never used.
208         * stamp-h.in: Removed generated file.
209         * admin/ChangeLog, admin/Makefile.common, admin/acinclude.m4.in,
210         admin/am_edit, admin/am_edit.py, admin/conf.change.pl,
211         admin/config.guess, admin/config.pl, admin/config.sub,
212         admin/configure.in.min, admin/debianrules, admin/depcomp,
213         admin/install-sh, admin/libtool.m4.in, admin/ltcf-c.sh,
214         admin/ltcf-cxx.sh, admin/ltcf-gcj.sh, admin/ltconfig,
215         admin/ltmain.sh, admin/missing, admin/mkinstalldirs, admin/ylwrap:
216         Removed KDE build suite in favor of configure.ac.
217         * doc/Makefile.am, doc/en/Makefile.am, doc/en/index.docbook:
218         Removed files never used.
219         * jnlib/ChangeLog, jnlib/Makefile.am, jnlib/argparse.c,
220         jnlib/argparse.h jnlib/dotlock.c, jnlib/dotlock.h,
221         jnlib/libjnlib-config.h, jnlib/logging.c, jnlib/logging.h,
222         jnlib/mischelp.h, jnlib/stringhelp.c, jnlib/stringhelp.h,
223         jnlib/strlist.c, jnlib/strlist.h, jnlib/types.h, jnlib/xmalloc.c,
224         jnlib/xmalloc.h: Removed files no longer used.
225         * kpinentry/Makefile.am, kpinentry/cppmemory.cpp,
226         kpinentry/cppmemory.h, kpinentry/i18n.h, kpinentry/main.cpp,
227         kpinentry/memory.h, kpinentry/pinentry.desktop,
228         kpinentry/pinentrycontroller.cpp, kpinentry/pinentrycontroller.h,
229         kpinentry/pinentrydialog.cpp, kpinentry/pinentrydialog.h,
230         kpinentry/secmem.cpp, kpinentry/util.cpp, kpinentry/util.h:
231         Removed files in favor of new files in kde/.
232         * po/Makefile.am, po/pinentry.pot: Removed files never used.
233
234         * autogen.sh: New file.
235
236 2002-03-04  Werner Koch  <wk@gnupg.org>
237
238         * gpinentry.c (enter_callback): New
239         (create_window): Connect it to the entry field.
240
241 2002-02-18  Werner Koch  <wk@gnupg.org>
242
243         Released 0.5.1.
244
245         * gpinentry.c (create_window): Add CONFIRM_MODE.
246         (cmd_confirm): Implemented.
247
248         * assuan/:  Updated from NewPG.
249
250 2002-01-20  Werner Koch  <wk@gnupg.org>
251
252         * gpinentry.c (option_handler): New to allow changing of the grab
253         status.
254         (grab_keyboard): Shortcut this when global grab is not set.
255
256 2002-01-04  Werner Koch  <wk@gnupg.org>
257
258         Released 0.5.0.
259         
260         * configure.ac: Bumbed version
261
262         * util.h (xtoi_1, xtoi_2): New.
263         * gpinentry.c (strcpy_escaped): New
264         (cmd_setdesc, cmd_seterror): Use it here to allo multiline texts.
265
266         * gpinentry: Removed debugging outbut
267         (create_window): Tweaked layout.
268
269 2001-12-07  Werner Koch  <wk@gnupg.org>
270
271         New package gpinentry based on quintuple-agent.
272         
273         Removed all stuff except for the basic configuration stuff and
274         what is needed to build gpinentry.  Also removed i18n support.
275         * gpinentry.c: Renamed from secret-query.c
276
277 2001-02-12  Robert Bihlmeyer  <robbe@orcus.priv.at>
278
279         * 1.0.0 released. Woo-hoo!
280
281         * configure.in, NEWS: Bumped version.
282
283 2001-02-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
284
285         * agent.c (make_tmpdir): Honor $TMPDIR.
286
287         (agent): Would exit on every minor problem. Now, we just close the
288         offending connection.
289         Ignore SIGPIPE, so that EPIPE will close connection.
290
291 2001-01-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
292
293         * secmem.c: Move one include statement so that the thing compiles.
294
295         * secret-query.c (main): Minor source cosmetics.
296
297 2000-11-16  Robert Bihlmeyer  <robbe@orcus.priv.at>
298
299         * gtksecentry.c (gtk_secure_entry_insert_text): Secured a couple
300         of memory (de)allocations that were missed. Thanks to John Steele
301         <jhs28@eng.cam.ac.uk> for spotting these.
302
303 2000-11-10  Robert Bihlmeyer  <robbe@orcus.priv.at>
304
305         * Thoughts: Removed in favor of new TODO.
306
307         * README: Remove content and refer to doc/manual.info instead.
308
309         * agent.c (do_get): Would burn badly on a premature exit of the
310         query program (which would occur routinely if you selected /cancel/).
311
312 2000-10-25  Robert Bihlmeyer  <robbe@orcus.priv.at>
313
314         * memory.h: Include sys/types.h for size_t.
315
316 2000-10-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
317
318         * README: Removed apology about missing documentation.
319         Updated paragraph about Linux capability patch.
320         Typo & Refill.
321
322 2000-10-03  Robert Bihlmeyer  <robbe@orcus.priv.at>
323
324         * 0.9 released.
325
326         * Makefile.am (EXTRA_DIST): Distribute BUGS (the file, that is).
327
328         * configure.in, NEWS: Bumped version.
329
330         * Makefile.am, configure.in: Add debian subdir.
331
332         * README: Recommend GTK+.
333         Update list of checked platforms.
334
335 2000-10-02  Robert Bihlmeyer  <robbe@orcus.priv.at>
336
337         * secret-query.c (ok): Simplify.
338         Put empty line between headers and secret.
339         (usage): Document '--help' and '--version'.
340
341         * agent.c (do_get): Use enhanced secret-query output to fill in
342         options.
343
344 2000-10-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
345
346         * secret-query.c (main): Clarify error.
347
348         * client.c (query_options): New global variable.
349         (main): New option '--query-options' to pass options to the query
350         program.
351         (xgetpass): Use it.
352
353         * agent.c (main): New option '--query-options' to pass options to
354         the query program.
355         (do_get): Use 'query_options'.
356
357         * acconfig.h, configure.in: Add QUERY_PROGRAM definition.
358         * client.c: Remove here.
359         * agent.c (do_get): Use it here, too.
360
361         * secret-query.c (main): New option '--no-global-grab' introduced,
362         that prevents keyboard grabbing unless the window has focus.
363
364 2000-09-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
365
366         * secret-query.c (usage): Add two missing pieces of "\n\".
367
368         * agent.c (main): --nofork is now the default, and the option is
369         deprecated. New option --fork added to turn forking on again.
370         Close stdout (and stderr unless debugging) even when not forking,
371         so that normal usage inside eval is still possible.
372         (agent): Exit gracefully on HUP, so that logging out now kills the
373         agent. 
374
375         * README (Contact Information): Old URL - duh!
376         (Using Secret Agent): We no longer fork per default.
377
378         * Makefile.am (lib/libutil.a): New target, allows targets that not
379         automatically recurse (but still depend on libutil.a) to succeed.
380
381 2000-07-20  Robert Bihlmeyer  <robbe@orcus.priv.at>
382
383         * secret-query.c (usage): New function.
384         (main): Parse options: debug, enhanced, help, version.
385         Turn on locale support.
386         If enhanced, insert widgets to ask for timeout and insurance.
387         (ok): If enhanced, print more information on exit.
388         (grab_keyboard): Die if grab was unsuccessful.
389
390 2000-05-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
391
392         * 0.8 released.
393
394         * configure.in, NEWS: Bumped version.
395
396         * Makefile.am (SUBDIRS): Include doc.
397
398         * configure.in, acconfig.h: Check for ssize_t.
399         Check for vsnprintf(), strdup().
400         Generate doc/Makefile.
401
402         * apgp.c, agpg.c, agentlib.c, util.c: Include more stuff.
403
404         * agent.c (do_get): Use asprintf() instead of snprintf() so we
405         don't need to roll our own for yet another function.
406         Fix some includes.
407
408         * acinclude.m4: gettext macros copied from automake and fixed.
409
410 2000-05-30  Robert Bihlmeyer  <robbe@orcus.priv.at>
411
412         * configure.in, Makefile.am: Properly include doc subdir.
413
414 2000-05-29  Robert Bihlmeyer  <robbe@orcus.priv.at>
415
416         * configure.in, acconfig.h: Add test for XMESSAGE path.
417
418         * client.c (main): Decode command from string to integer code
419         first, then evaluate that in ifs.
420
421         * secret-ask.c: New file, external ask-for-confirmation utility.
422
423         * configure.in, Makefile.am: Add secret-ask to programs being
424         built when GTK is available. Rename QUERY to more descriptive
425         GTK_PROGRAMS.
426
427         * agent.c (do_get): If GTK is available, try executing secret-ask
428         first.
429         Only put the comment into the insure-question if there is a
430         comment.
431         (main): --csh was missing from usage message.
432
433 2000-04-23  Robert Bihlmeyer  <robbe@orcus.priv.at>
434
435         * secret-query.c (constrain_size): Lower window max_width to
436         accomodate bugs in GTK and Scwm.
437
438         * agent.c (main): Set x_enabled if X appears to be available.
439         Use it to selectively make FLAGS_INSURE supported.
440         (do_get): Use it instead of testing at every call.
441         (do_put): Requests containing unsupported flags fail.
442         (forget_old_stuff): Would not set next_deadline correctly.
443         (do_get): Implement FLAGS_INSURE.
444
445         * client.c (main): "list" format changed so that comment is to the
446         far right. Display the deadline as proper date/time, too.
447
448 1999-11-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
449
450         * agent.c (next_deadline): New global variable, holds time when
451         next secret has to be killed.
452         (store): Keep it up-to-date.
453         (forget_old_stuff): New function, reaps secrets ready to kill,
454         keeps next_deadline updated.
455         (agent): Use it on all secrets, whenever a deadline is active.
456
457 1999-11-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
458
459         * agent.h (request_put): Add flags, deadline. Increase REQUEST_MAGIC. 
460         (reply_get): Ditto, and increase REPLY_MAGIC.
461         * agent.c (store): Store flags, deadline in reply.
462         (do_put): Hand flags, deadline from request on to store().
463         (do_get): Store on-demand queried secrets without deadline or
464         special flags, for now.
465         (agent): Do not ignore obsolete clients, return an error reply.
466         * agentlib.c (agent_put): Add flags, deadline arguments, and copy
467         them into the request.
468         * agentlib.h (agent_put): Update prototype.
469 *       * client.c (main): Added --time-to-live (-t) and --insure (-i)
470         options, influencing PUT's deadline and flags, respectively.
471         (main): Change list format to include new attributes.
472
473 1999-11-05  Robert Bihlmeyer  <robbe@orcus.priv.at>
474
475         * configure.in: <getopt.h> check had redundant definition.
476         * acconfig.h: Remove here, too.
477
478         * configure.in: Check for <inttypes.h>. If not found, check for
479         unsigned {int, long} sizes.
480         * agent.h: Either include <inttypes.h>, or try to define uint32_t
481         yourself.
482         Need to include "config.h".
483
484 1999-11-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
485
486         * Makefile.am (signed-dist): New rule, generates sig for dist.
487         (%.sig): New rule, for detached signatures in general.
488
489         * configure.in: Check for ulong.
490         * acconfig.h: Document it.
491         * secmem.c: Unconditionally defining it is no longer necessary
492         here. But do include <sys/types.h> in all cases.
493
494         * 0.7 released.
495
496         * secmem.c: ulong is not defined on all systems.
497
498         * agent.h: <inttypes.h> should define `uint32_t' as per Unix98, so
499         we use that.
500
501 1999-11-02  Robert Bihlmeyer  <robbe@orcus.priv.at>
502
503         * agent.h: Augmented requests and replies with magic numbers.
504         Data structures heavily commented.
505         All structures and enums typedef'd.
506         * agent.c: Adapted.
507         (store): Set magic number in stored reply.
508         (do_put): Set magic number in reply.
509         (do_delete): Ditto.
510         (do_list): Ditto. 
511         (agent): Check magic number in request.
512         * agentlib.c: Adapted.
513         (send_request): Set magic number in request. Check it in reply.
514         * agentlib.h: Adapted.
515         * agpg.c: Adapted.
516         * apgp.c: Adapted.
517         * client.c: Adapted.
518
519 1999-10-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
520
521         * secmem.c: Instead of defining ulong directly, include
522         <sys/types.h>
523
524         * secret-query.c (constrain_size): New function, puts constrains
525         on size of toplevel window.
526         (grab_keyboard): Removed protection against multiple calls.
527         (ungrab_keyboard): New function, cancelling a keyboard grab.
528         (main): Hang `grab_keyboard' onto map-event which makes it
529         actually work, hang `ungrab_keyboard' onto unmap-event.
530         Hang `constrain_size' onto size-request.
531
532         * secmem.c: ulong was undefined on some systems.
533
534 1999-10-19  Robert Bihlmeyer  <robbe@orcus.priv.at>
535
536         * Makefile.am (install-exec-local): Ignore setcap errors.
537
538         * apgp.c: New program, based on agpg.c, but for pgp2.6.
539         * Makefile.am (bin_PROGRAMS, apgp_SOURCES): Added it.
540
541         * agpg.c (GPG): New constant.
542         (find_id, main): Use it throughout.
543         (find_id): Forgot to pclose on success.
544
545         * secret-query.c (main): Don't expand anything.
546         Use a button box for the buttons.
547         Prompt label can be overridden from the commandline.
548         * agent.c (do_get): Make spawned secret-query show the id.
549         * client.c (xgetpass): Pass prompt to secret-query.
550         (main): Include id in xgetpass prompt.
551
552 1999-10-14  Robert Bihlmeyer  <robbe@orcus.priv.at>
553
554         * configure.in: setcap must be searched outside the usual user
555         PATH, too.
556         * Makefile.am (install-exec-local): Set cap_ipc_lock permitted on
557         installed binaries, if possible.
558
559         * agent.c (xdup2): New function, dup2 with error handling.
560         (move_fd): New function, moves fds.
561         (store): New function, abstracted out from do_put.
562         (do_put): Use it.
563         (do_get): If secret was not found, and DISPLAY is set, try to
564         query the user about it. If successful, store it.
565         (main): Route standard file descriptors to /dev/null rather than
566         just closing them. The latter would confuse children.
567
568 1999-10-13  Robert Bihlmeyer  <robbe@orcus.priv.at>
569
570         * gtksecentry.c, gtksecentry.h: New files, being slightly modified
571         versions of GTK+'s gtkentry.[ch], spiffed up to use secure memory.
572         * secret-query.c (ok, unselect, main): Replace GtkEntry with
573         GtkSecureEntry.
574         (main): Initialize secure memory.
575         * Makefile.am (secret_query_SOURCES): Added gtksecentry.[ch].
576
577         * README (Security): New chapter.
578
579         * configure.in, acconfig.h: Check for POSIX capabilities, and the
580         setcap program.
581         * Makefile.am: Link LIBCAP to those binaries using secmem.c.
582
583         * util.h: Include <sys/types.h> for size_t.
584
585 1999-09-21  Robert Bihlmeyer  <robbe@orcus.priv.at>
586
587         * secmem.c: Synced with gnupg-1.0 (top new feature: capabilities).
588         (log_fatal): New function, logs to stderr, and dies.
589
590 1999-09-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
591
592         * secmem.c (log_info): New function, logs to stderr.
593
594         * agent.c (agent): select() expects the number of fds, not the
595         highest fd. So remember that number.
596
597         * agent.c (agent): Don't use FD_SETSIZE, which is not defined on
598         all systems. Remember the number of the highest descriptor
599         instead.
600
601         * configure.in: Replace getline() instead of getdelim() because
602         this is the function we really need. Still check for getdelim(),
603         though - there are systems out there where this is provided, but
604         getline() is not.
605
606 1999-09-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
607
608         * 0.6 released.
609
610         * configure.in: Bump version.
611
612         * NEWS: Updated.
613
614 1999-08-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
615
616         * util.c (init_uids, lower_privs, raise_privs, drop_privs): New
617         functions, for setuid binaries, extracted from agent.c.
618         * util.h: Add prototypes for them.
619         * agpg.c (main): Use them.
620         * client.c (main): Ditto.
621         * agent.c (main): Ditto. Removed code that did the same.
622         Unconditionally include "asprintf.h" (it protects itself now).
623
624 1999-08-25  Robert Bihlmeyer  <robbe@orcus.priv.at>
625
626         * Makefile.am (SUBDIRS): Process . before test so that "make
627         check" always builds all in . first.
628
629 1999-08-21  Robert Bihlmeyer  <robbe@orcus.priv.at>
630
631         * secret-query.c: Include "config.h".
632
633         * agent.h (reply_list_entry, reply_list): New reply structures.
634         * agent.c (send_list_entry): New function.
635         (do_list): First send number of entries, then each entry via
636         send_list_entry().
637         * agentlib.c (agent_list): Read entries returned by LIST request.
638         * client.c (main): Output all entries returned by agent_list().
639
640         * agentlib.c (agent_put): Don't construct PUT request in insecure
641         stack space.
642
643 1999-08-20  Robert Bihlmeyer  <robbe@orcus.priv.at>
644
645         * NEWS: Bump patchlevel.
646
647         * configure.in: Bump patchlevel.
648         Check for missing setenv().
649
650 1999-08-09  Robert Bihlmeyer  <robbe@orcus.priv.at>
651
652         * configure.in: Check for strsignal().
653
654         * client-test: Obsoleted by test/client.
655
656         * Makefile.am (SUBDIRS): New subdirectory.
657         * configure.in (AC_OUTPUT): Add here, too.
658
659         * 0.5 released.
660
661         * README: Explain why secret-client will not output secrets to a
662         tty, and mention the cat-trick.
663
664         * agent.c (main): If seteuid is not available, don't use it and
665         issue a warning if running setuid.
666
667         * configure.in: Run together two REPLACE_FUNCS.
668         Check for seteuid.
669
670         * client-test: Mask out insecure memory warnings.
671
672         * agentlib.c (send_request): Let the calling functions reserve
673         space for the reply, but offer a simple way for simple requests.
674         (agent_get): Allocate secure memory.
675
676         * agent.c (main): Moved secmem_init() after the fork, since that
677         seemingly munlock's all pages.
678         Drop priviledges just in case somebody wants to install this
679         suid-root.
680         Flush stdout.
681
682         * agpg.c (find_id): Would reorder arguments.
683         Initialize opt_version.
684         (main): Initialize secure memory.
685
686         * Makefile.am (agpg_SOURCES): Link with secure memory module.
687
688         * client.c (usage): Fixed another program name reference.
689
690 1999-08-06  Robert Bihlmeyer  <robbe@orcus.priv.at>
691
692         * configure.in: Conditionally define HAVE_GTK.
693         * acconfig.h: Add here too.
694
695         * client.c (xgetpass): Use "secret-query" only if it was built.
696         (main): Don't output secret (GET command) to ttys.
697
698         * agpg.c (find_id): Also print own version if "--version" is given.
699         (main): Check agent_init() errors.
700         Print error if exec fails.
701
702         * agent.c (main): Added an option to produce csh-compatible
703         output.
704
705         * agent.c, client.c: Forgot the terminating NULL in long options.
706         Fixed the program names in usage and version output.
707
708         * agent.c (create_socket): AF_UNIX and PF_UNIX are Unix98, so
709         that's what we use. AF_LOCAL, PF_LOCAL removed.
710         * agentlib.c (agent_init): Ditto.
711
712 1999-08-05  Robert Bihlmeyer  <robbe@orcus.priv.at>
713
714         * 0.4 released.
715
716         * configure.in: Bumped version.
717         Check for missing getdelim.
718
719         * cgpg: Removed, obsoleted by agpg.
720         * Makefile.am: Here, too.
721
722         * agpg.c (find_id): New function.
723         (main): Use it.
724
725         * Makefile.am (INCLUDES): Put GTK_FLAGS and GLIB_FLAGS here. It
726         is the easiest way for sources needing it, and it won't hurt those 
727         that don't.
728         (agent.o): Explicit command removed accordingly.
729
730 1999-08-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
731
732         * configure.in: Need double quoting in nested AC_MSG_WARN.
733
734         * client.c (xgetpass): If no tty is available, but a DISPLAY is,
735         fork off "secure-query" to read the secret.
736         Put the fgets into a loop that keeps reading until all of the
737         secret is read.
738
739         * client-test: Unset DISPLAY, so that "secret-query" is never used.
740
741 1999-08-03  Robert Bihlmeyer  <robbe@orcus.priv.at>
742
743         * agpg.c: New file, first cut at a C version of the gpg wrapper,
744         written in a hurry (20 keys waiting to be signed, and a growling
745         stomach).
746         * Makefile.am: Add it to built programs.
747         (LDADD): New default.
748         (secret_client_LDADD): Removed, since it was identical to default.
749
750 1999-08-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
751
752         * secret-query.c: New program, queries the user for a password.
753         * Makefile.am (bin_PROGRAMS): Added it.
754         * configure.in: Check for GTK+, build "secret-query" only when
755         that is available.
756
757         * cgpg: Extra argument for ID is no longer necessary. cgpg will
758         scan the gpg args for switches that affect user-id, and determine
759         the right key itself. Per convention, the key-id is used by "GET".
760
761         * configure.in: The project name is now "secret-agent".
762
763         * Makefile.am: "agent" & "client" renamed to "secret-agent" &
764         "secret-client", respectively.
765         * client-test: Adapt to new names.
766
767         * Thoughts: Removed discussion of other names.
768         Added indication of which things already work.
769
770         * agent.c (make_tmpdir): Removed occurance of "gpg-agent."
771
772         * README: First proper version.
773
774         * client-test: Context diffs are more portable then unified diffs.
775
776         * agent.c, agent.h, agentlib.c, agentlib.h, client.c, memory.h,
777         util.c, util.h: Banner updated to new name.
778
779 1999-07-29  Robert Bihlmeyer  <robbe@orcus.priv.at>
780
781         * configure.in: Check for missing asprintf.
782         Check if -lsocket is needed.
783
784         * secmem.c (secmem_dump_stats): Replace usage of ulong.
785
786         * Makefile.am (INCLUDES): Add the lib subdirectory to include search.
787
788         * agent.c: Forgot to include <string.h>.
789         Include RYO asprintf header if this function is missing.
790         For the sake of compatibility, provide a definition for AF_LOCAL,
791         PF_LOCAL, if missing.
792         * agentlib.c: Ditto.
793
794 1999-07-28  Robert Bihlmeyer  <robbe@orcus.priv.at>
795
796         * Makefile.am (client_SOURCES): Add "secmem.c", "memory.h".
797
798         * client.c (xgetpass): Use secmem_malloc() instead of RYO.
799         (main): Init and shutdown secmem.
800
801 1999-07-27  Robert Bihlmeyer  <robbe@orcus.priv.at>
802
803         * Makefile.am (agent_SOURCES): Add "secmem.c", "i18n.h", "memory.h".
804         (client_SOURCES): Add "i18n.h".
805
806         * client.c (main): Exit on agent_init() failure.
807
808         * agent.c (main): Init secmem.
809         Make --debug switch cumulative.
810         (cleanup): Shutdown secmem.
811         (do_put): Use secmem for storage of secrets.
812         (do_delete): Use secmem_free(). Since this wipes the memory on its 
813         own, wipe() is superflous now.
814         (agent): Use secmem for inbound requests.
815         (delete_secret): New function, takes part of do_delete's
816         functionality.
817         (do_put): Use it to remove old versions stored under the same id.
818         (do_delete): Use it to delete secrets.
819
820         * memory.h: New file.
821
822         * secmem.c: New file, snarfed from GnuPG and modified slightly.
823
824         * acinclude.m4: New file.
825         * configure.in: (ALL_LINGUAS): Expanded list of available
826         languages. Most of them only have a few translations from gpg,
827         tough ...
828         getopt_long test was commented out for debugging,
829         and left such. Fixed.
830         Check for mlock.
831         * acconfig.h: Comment HAVE_BROKEN_MLOCK.
832
833         * cgpg: A space was missing.
834
835         * i18n.h: New file, centralizing the gettext macro defs.
836
837         * agent.c (BLIND): New macro, that blinds out a secret if debug
838         level is too low.
839         (do_put): Use it.
840         (do_get): Use it.
841         Include i18n.h.
842
843         * agentlib.c: Include i18n.h
844         
845         * client.c (usage): New function.
846         Usage-message made gettext-friendly.
847         (xgetpass): Use perror() instead of fprintf().
848         (main): Use it.
849         Make comment an optional argument of PUT.
850         Include i18n.h.
851
852 1999-07-26  Robert Bihlmeyer  <robbe@orcus.priv.at>
853
854         * Makefile.am (client_LDADD): Add lib/libutil.a for portability.
855         (agent_LDADD): Ditto.
856         (SUBDIRS): Add lib directory.
857         (bin_SCRIPTS): New with cgpg, so it gets installed, too.
858
859         * configure.in: Add lib/Makefile to output.
860
861 1999-07-24  Robert Bihlmeyer  <robbe@orcus.priv.at>
862
863         * cgpg: New file.
864         * Makefile.am (EXTRA_DIST): Added it.
865
866         * agent.c: Moved inclusion of config.h before inclusion of
867         libintl.h since the latter needs HAVE_LC_MESSAGE.
868         * client.c: Ditto.
869         * clientlib.c: Ditto.
870
871         * client-test: Update for new client semantics.
872
873         * client.c (check_status): Use debugmsg(). Do nothing if not
874         debugging.
875         (xgetpass): New function, getpass replacement that uses mlock'ed
876         memory.
877         (main): PUT now asks for the secret rather then getting it from
878         the commandline.
879         GET prints only the secret to stdout.
880
881         * configure.in: Rearranged.
882         Check for socklen_t.
883         * acconfig.h: Added a definition for it.
884
885         * client.c: Include packaged getopt.h if the system doesn't provide 
886         one. 
887         * agent.c: Ditto.
888         (create_socket): Replace AF_FILE, PF_FILE with AF_LOCAL, PF_LOCAL
889         for portability.
890         * agentlib.c (agent_init): Ditto.
891         Explicitly cast addr to a sockaddr pointer.
892
893         * Makefile.am (client_LDADD): Added @INTLLIBS@.
894         (agent_LDADD): Ditto.
895
896 1999-07-19  Robert Bihlmeyer  <robbe@orcus.priv.at>
897
898         * configure.in: Check for getopt.h and getopt_long.
899         * acconfig.h (HAVE_GETOPT_H): New define.
900         * lib/getopt.c, lib/getopt1.c, lib/getopt.h: Added.
901
902 1999-07-18  Robert Bihlmeyer  <robbe@orcus.priv.at>
903
904         * 0.2 released.
905
906         * NEWS: Updated.
907
908         * Makefile.am (agent.o): Mentioning the source explicitly does not 
909         work for srcdir!=builddir.
910
911         * client.c (main): Function arguments are not always evaluated in
912         order, so drop the neat ++optind in favor of optind+1, optind+2,
913         etc.
914
915         * configure.in: Upped version.
916
917 1999-06-28  Robert Bihlmeyer  <robbe@orcus.priv.at>
918
919         * util.h: Added multi-inclusion guard.
920
921         * agent.c Include "util.h".
922         (main): Forgot to exit at end.
923         (do_delete): Assume that value is a string and wipe it accordingly.
924
925         * configure.in (--enable-debug): New switch.
926
927         * agent.h (status_t): Added STATUS_COMM_ERR code.
928         Added multi-inclusion guard.
929
930         * client.c (main): Abstracted out most functionality into a
931         function library, namely:
932         * agentlib.c: New file.
933         * agentlib.h: New file.
934         * Makefile.am (client_SOURCES): Added agentlib.c, agentlib.h.
935
936         * Makefile.am (INCLUDES): GLIB_CFLAGS moved again, this time to
937         the agent.o target. 
938
939 1999-06-15  Robert Bihlmeyer  <robbe@orcus.priv.at>
940
941         * 0.1 released.
942
943         * Makefile.am (agent_CFLAGS): Removed - did not work.
944         (INCLUDES): Moved the GLIB stuff here.
945
946 1999-06-14  Robert Bihlmeyer  <robbe@orcus.priv.at>
947
948         * configure.in (ALL_LINGUAS): Added `de'.
949
950         * agent.c (do_get): Added more debugmsgs.
951         (do_put): Wouldn't allocate enough for `value'.
952         (main): New option "--nofork" prevents forking.
953         Use macros for the std filedescriptor numbers.
954         Only close stderr if not debugging.
955         (main): Make Usage string gettext-friendly.
956
957         * client-test (cleanup): New function.
958         Call it on shell exit.
959         (client): New function.
960         Use it instead of calling client binary directly.
961         diff client output with expected one in GET testcases.
962
963 1999-06-13  Robert Bihlmeyer  <robbe@orcus.priv.at>
964
965         * agent.c (failed_reply): New constant.
966         (do_list): Use it.
967         (do_put): The hash key was overwritten - strdup it.
968         Construct a GET reply and save that in the hash.
969         (do_get): Just send the preconstructed reply if the id is present, 
970         and failed_reply otherwise.
971         (do_delete): Actually free the hashed stuff.
972
973         * client.c: Exit with error if agent returned STATUS_FAIL.
974
975         * Makefile.am (EXTRA_DIST): Added autogen.sh, Thoughts,
976         client-test.
977         (TESTS): Added client-test.
978         (AUTOMAKE_OPTIONS): Added gnits. 
979