mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
* command-ssh.c (get_passphrase): Removed.
(ssh_identity_register): Partly rewritten. (open_control_file, search_control_file, add_control_entry): New. (ssh_handler_request_identities): Return only files listed in our control file. * findkey.c (unprotect): Check for allocation error. * agent.h (opt): Add fields to record the startup terminal settings. * gpg-agent.c (main): Record them and do not force keep display with --enable-ssh-support. * command-ssh.c (start_command_handler_ssh): Use them here. * gpg-agent.c: Renamed option --ssh-support to --enable-ssh-support. * command.c (cmd_readkey): New. (register_commands): Register new command "READKEY". * command-ssh.c (ssh_request_process): Improved logging. * findkey.c (agent_write_private_key): Always use plain open. Don't depend on an umask for permissions. (agent_key_from_file): Factored file reading code out to .. (read_key_file): .. new function. (agent_public_key_from_file): New.
This commit is contained in:
parent
cf8f6d3cef
commit
4e5bf2fd93
9 changed files with 691 additions and 150 deletions
|
@ -1,5 +1,5 @@
|
|||
/* gpg-agent.c - The GnuPG Agent
|
||||
* Copyright (C) 2000, 2001, 2002, 2003,
|
||||
* Copyright (C) 2000, 2001, 2002, 2003, 2004,
|
||||
* 2005 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GnuPG.
|
||||
|
@ -147,7 +147,7 @@ static ARGPARSE_OPTS opts[] = {
|
|||
N_("allow clients to mark keys as \"trusted\"")},
|
||||
{ oAllowPresetPassphrase, "allow-preset-passphrase", 0,
|
||||
N_("allow presetting passphrase")},
|
||||
{ oSSHSupport, "ssh-support", 0, N_("enable secure ssh-agent emulation") },
|
||||
{ oSSHSupport, "enable-ssh-support", 0, N_("enable ssh-agent emulation") },
|
||||
{0}
|
||||
};
|
||||
|
||||
|
@ -458,7 +458,6 @@ main (int argc, char **argv )
|
|||
int standard_socket = 0;
|
||||
gpg_error_t err;
|
||||
|
||||
|
||||
set_strusage (my_strusage);
|
||||
gcry_control (GCRYCTL_SUSPEND_SECMEM_WARN);
|
||||
/* Please note that we may running SUID(ROOT), so be very CAREFUL
|
||||
|
@ -513,6 +512,23 @@ main (int argc, char **argv )
|
|||
|
||||
opt.homedir = default_homedir ();
|
||||
|
||||
/* Record the some original Denvironment settings. */
|
||||
opt.startup_display = getenv ("DISPLAY");
|
||||
if (opt.startup_display)
|
||||
opt.startup_display = xstrdup (opt.startup_display);
|
||||
opt.startup_ttyname = ttyname (0);
|
||||
if (opt.startup_ttyname)
|
||||
opt.startup_ttyname = xstrdup (opt.startup_ttyname);
|
||||
opt.startup_ttytype = getenv ("TERM");
|
||||
if (opt.startup_ttytype)
|
||||
opt.startup_ttytype = xstrdup (opt.startup_ttytype);
|
||||
/* Fixme: Neen to use the locale fucntion here. */
|
||||
opt.startup_lc_ctype = getenv ("LC_CTYPE");
|
||||
if (opt.startup_lc_ctype)
|
||||
opt.startup_lc_ctype = xstrdup (opt.startup_lc_ctype);
|
||||
opt.startup_lc_messages = getenv ("LC_MESSAGES");
|
||||
if (opt.startup_lc_messages)
|
||||
opt.startup_lc_messages = xstrdup (opt.startup_lc_messages);
|
||||
|
||||
/* Check whether we have a config file on the commandline */
|
||||
orig_argc = argc;
|
||||
|
@ -624,11 +640,7 @@ main (int argc, char **argv )
|
|||
case oKeepTTY: opt.keep_tty = 1; break;
|
||||
case oKeepDISPLAY: opt.keep_display = 1; break;
|
||||
|
||||
case oSSHSupport:
|
||||
opt.ssh_support = 1;
|
||||
opt.keep_tty = 1;
|
||||
opt.keep_display = 1;
|
||||
break;
|
||||
case oSSHSupport: opt.ssh_support = 1; break;
|
||||
|
||||
default : pargs.err = configfp? 1:2; break;
|
||||
}
|
||||
|
@ -784,7 +796,7 @@ main (int argc, char **argv )
|
|||
|
||||
/* Remove the DISPLAY variable so that a pinentry does not
|
||||
default to a specific display. There is still a default
|
||||
display when gpg-agent weas started using --display or a
|
||||
display when gpg-agent was started using --display or a
|
||||
client requested this using an OPTION command. */
|
||||
#ifndef HAVE_W32_SYSTEM
|
||||
if (!opt.keep_display)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue