mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
agent/
* gpg-agent.c: New option --pinentry-touch-file. (get_agent_socket_name): New. * agent.h (opt): Add pinentry_touch_file. * call-pinentry.c (start_pinentry): Send new option to the pinentry.
This commit is contained in:
parent
b46c93fb10
commit
5240d014f8
@ -1,3 +1,11 @@
|
||||
2007-02-14 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gpg-agent.c: New option --pinentry-touch-file.
|
||||
(get_agent_socket_name): New.
|
||||
* agent.h (opt): Add pinentry_touch_file.
|
||||
* call-pinentry.c (start_pinentry): Send new option to the
|
||||
pinentry.
|
||||
|
||||
2007-01-31 Moritz Schulte <moritz@g10code.com> (wk)
|
||||
|
||||
* command-ssh.c (stream_read_string): Initialize LENGTH to zero.
|
||||
|
@ -72,6 +72,10 @@ struct
|
||||
int disable_scdaemon; /* Never use the SCdaemon. */
|
||||
int no_grab; /* Don't let the pinentry grab the keyboard */
|
||||
|
||||
/* The name of the file pinentry shall tocuh before exiting. If
|
||||
this is not set the filoe name of the standard socket is used. */
|
||||
const char *pinentry_touch_file;
|
||||
|
||||
/* The default and maximum TTL of cache entries. */
|
||||
unsigned long def_cache_ttl; /* Default. */
|
||||
unsigned long def_cache_ttl_ssh; /* for SSH. */
|
||||
@ -186,6 +190,7 @@ cache_mode_t;
|
||||
|
||||
/*-- gpg-agent.c --*/
|
||||
void agent_exit (int rc) JNLIB_GCC_A_NR; /* Also implemented in other tools */
|
||||
const char *get_agent_socket_name (void);
|
||||
|
||||
/*-- command.c --*/
|
||||
gpg_error_t agent_write_status (ctrl_t ctrl, const char *keyword, ...);
|
||||
|
@ -181,6 +181,7 @@ start_pinentry (ctrl_t ctrl)
|
||||
int no_close_list[3];
|
||||
int i;
|
||||
pth_event_t evt;
|
||||
const char *tmpstr;
|
||||
|
||||
evt = pth_event (PTH_EVENT_TIME, pth_timeout (LOCK_TIMEOUT, 0));
|
||||
if (!pth_mutex_acquire (&entry_lock, 0, evt))
|
||||
@ -297,6 +298,30 @@ start_pinentry (ctrl_t ctrl)
|
||||
if (rc)
|
||||
return unlock_pinentry (rc);
|
||||
}
|
||||
|
||||
|
||||
/* Tell the pinentry the name of a file it shall touch after having
|
||||
messed with the tty. This is optional and only supported by
|
||||
newer pinentries and thus we do no error checking. */
|
||||
tmpstr = opt.pinentry_touch_file;
|
||||
if (tmpstr && !strcmp (tmpstr, "/dev/null"))
|
||||
tmpstr = NULL;
|
||||
else if (!tmpstr)
|
||||
tmpstr = get_agent_socket_name ();
|
||||
if (tmpstr)
|
||||
{
|
||||
char *optstr;
|
||||
|
||||
if (asprintf (&optstr, "OPTION touch-file=%s", tmpstr ) < 0 )
|
||||
;
|
||||
else
|
||||
{
|
||||
assuan_transact (entry_ctx, optstr, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL);
|
||||
free (optstr);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,7 @@ enum cmd_and_opt_values
|
||||
oBatch,
|
||||
|
||||
oPinentryProgram,
|
||||
oPinentryTouchFile,
|
||||
oDisplay,
|
||||
oTTYname,
|
||||
oTTYtype,
|
||||
@ -131,6 +132,7 @@ static ARGPARSE_OPTS opts[] = {
|
||||
|
||||
{ oPinentryProgram, "pinentry-program", 2 ,
|
||||
N_("|PGM|use PGM as the PIN-Entry program") },
|
||||
{ oPinentryTouchFile, "pinentry-touch-file", 2 , "@" },
|
||||
{ oScdaemonProgram, "scdaemon-program", 2 ,
|
||||
N_("|PGM|use PGM as the SCdaemon program") },
|
||||
{ oDisableScdaemon, "disable-scdaemon", 0, N_("do not use the SCdaemon") },
|
||||
@ -401,6 +403,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread)
|
||||
opt.debug = 0;
|
||||
opt.no_grab = 0;
|
||||
opt.pinentry_program = NULL;
|
||||
opt.pinentry_touch_file = NULL;
|
||||
opt.scdaemon_program = NULL;
|
||||
opt.def_cache_ttl = DEFAULT_CACHE_TTL;
|
||||
opt.def_cache_ttl_ssh = DEFAULT_CACHE_TTL_SSH;
|
||||
@ -437,6 +440,7 @@ parse_rereadable_options (ARGPARSE_ARGS *pargs, int reread)
|
||||
case oNoGrab: opt.no_grab = 1; break;
|
||||
|
||||
case oPinentryProgram: opt.pinentry_program = pargs->r.ret_str; break;
|
||||
case oPinentryTouchFile: opt.pinentry_touch_file = pargs->r.ret_str; break;
|
||||
case oScdaemonProgram: opt.scdaemon_program = pargs->r.ret_str; break;
|
||||
case oDisableScdaemon: opt.disable_scdaemon = 1; break;
|
||||
|
||||
@ -1186,6 +1190,16 @@ reread_configuration (void)
|
||||
}
|
||||
|
||||
|
||||
/* Return the file name of the socket we are using for native
|
||||
requests. */
|
||||
const char *
|
||||
get_agent_socket_name (void)
|
||||
{
|
||||
const char *s = socket_name;
|
||||
|
||||
return (s && *s)? s : NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Create a name for the socket. With USE_STANDARD_SOCKET given as
|
||||
|
@ -1,3 +1,7 @@
|
||||
2007-02-14 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gpg-agent.texi (Agent Options): Doc --pinentry-touch-file.
|
||||
|
||||
2007-02-05 Werner Koch <wk@g10code.com>
|
||||
|
||||
* debugging.texi (Common Problems): Tell how to export a private
|
||||
|
@ -344,6 +344,17 @@ shorter than this value a warning will be displayed. Defaults to 8.
|
||||
Use program @var{filename} as the PIN entry. The default is installation
|
||||
dependend and can be shown with the @code{--version} command.
|
||||
|
||||
@item --pinentry-touch-file @var{filename}
|
||||
@opindex pinentry-touch-file
|
||||
By default the file name of the socket gpg-agent is listening for
|
||||
requests is passed to Pinentry, so that it can touch that file before
|
||||
exiting (it does this only in curses mode). This option changes the
|
||||
file passed to Pinentry to @var{filename}. The special name
|
||||
@code{/dev/null} may be used to completely disable this feature. Note
|
||||
that Pinentry will not create that file, it will only change the
|
||||
modification and access time.
|
||||
|
||||
|
||||
@item --scdaemon-program @var{filename}
|
||||
@opindex scdaemon-program
|
||||
Use program @var{filename} as the Smartcard daemon. The default is
|
||||
|
@ -311,7 +311,7 @@ used by @command{gpgsm}.
|
||||
@subsection The DINSIG card application ``dinsig''
|
||||
|
||||
This is an application as described in the German draft standard
|
||||
@emph{DIN V 66291-1}. It is intended to be used by cards supporteing
|
||||
@emph{DIN V 66291-1}. It is intended to be used by cards supporting
|
||||
the German signature law and its bylaws (SigG and SigV).
|
||||
|
||||
@node PKCS#15 Card
|
||||
|
Loading…
x
Reference in New Issue
Block a user