mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-20 14:37:08 +01:00
Try to start the agent before invoking the protect-tool.
This commit is contained in:
parent
12366d1e81
commit
0ca1cfe3b3
@ -1,3 +1,9 @@
|
|||||||
|
2008-10-23 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* import.c (popen_protect_tool): Add arg CTRL and assure that the
|
||||||
|
agent is running. Pass a value for CTRL from all caller.
|
||||||
|
* export.c (popen_protect_tool): Ditto.
|
||||||
|
|
||||||
2008-10-21 Werner Koch <wk@g10code.com>
|
2008-10-21 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* call-dirmngr.c (inq_certificate_parm_s): Add field CTRL.
|
* call-dirmngr.c (inq_certificate_parm_s): Add field CTRL.
|
||||||
|
11
sm/export.c
11
sm/export.c
@ -571,7 +571,7 @@ print_short_info (ksba_cert_t cert, FILE *fp, estream_t stream)
|
|||||||
|
|
||||||
|
|
||||||
static gpg_error_t
|
static gpg_error_t
|
||||||
popen_protect_tool (const char *pgmname,
|
popen_protect_tool (ctrl_t ctrl, const char *pgmname,
|
||||||
FILE *infile, FILE *outfile, FILE **statusfile,
|
FILE *infile, FILE *outfile, FILE **statusfile,
|
||||||
const char *prompt, const char *keygrip,
|
const char *prompt, const char *keygrip,
|
||||||
pid_t *pid)
|
pid_t *pid)
|
||||||
@ -579,6 +579,12 @@ popen_protect_tool (const char *pgmname,
|
|||||||
const char *argv[20];
|
const char *argv[20];
|
||||||
int i=0;
|
int i=0;
|
||||||
|
|
||||||
|
/* Make sure that the agent is running so that the protect tool is
|
||||||
|
able to ask for a passphrase. This has only an effect under W32
|
||||||
|
where the agent is started on demand; sending a NOP does not harm
|
||||||
|
on other platforms. */
|
||||||
|
gpgsm_agent_send_nop (ctrl);
|
||||||
|
|
||||||
argv[i++] = "--homedir";
|
argv[i++] = "--homedir";
|
||||||
argv[i++] = opt.homedir;
|
argv[i++] = opt.homedir;
|
||||||
argv[i++] = "--p12-export";
|
argv[i++] = "--p12-export";
|
||||||
@ -645,7 +651,8 @@ export_p12 (ctrl_t ctrl, const unsigned char *certimg, size_t certimglen,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = popen_protect_tool (pgmname, infp, outfp, &fp, prompt, keygrip, &pid);
|
err = popen_protect_tool (ctrl,
|
||||||
|
pgmname, infp, outfp, &fp, prompt, keygrip, &pid);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
pid = -1;
|
pid = -1;
|
||||||
|
10
sm/import.c
10
sm/import.c
@ -460,12 +460,18 @@ gpgsm_import_files (ctrl_t ctrl, int nfiles, char **files,
|
|||||||
output to OUTFILE and the pid of the process in PID. Returns 0 on
|
output to OUTFILE and the pid of the process in PID. Returns 0 on
|
||||||
success or an error code. */
|
success or an error code. */
|
||||||
static gpg_error_t
|
static gpg_error_t
|
||||||
popen_protect_tool (const char *pgmname,
|
popen_protect_tool (ctrl_t ctrl, const char *pgmname,
|
||||||
FILE *infile, FILE *outfile, FILE **statusfile, pid_t *pid)
|
FILE *infile, FILE *outfile, FILE **statusfile, pid_t *pid)
|
||||||
{
|
{
|
||||||
const char *argv[20];
|
const char *argv[20];
|
||||||
int i=0;
|
int i=0;
|
||||||
|
|
||||||
|
/* Make sure that the agent is running so that the protect tool is
|
||||||
|
able to ask for a passphrase. This has only an effect under W32
|
||||||
|
where the agent is started on demand; sending a NOP does not harm
|
||||||
|
on other platforms. */
|
||||||
|
gpgsm_agent_send_nop (ctrl);
|
||||||
|
|
||||||
argv[i++] = "--homedir";
|
argv[i++] = "--homedir";
|
||||||
argv[i++] = opt.homedir;
|
argv[i++] = opt.homedir;
|
||||||
argv[i++] = "--p12-import";
|
argv[i++] = "--p12-import";
|
||||||
@ -551,7 +557,7 @@ parse_p12 (ctrl_t ctrl, ksba_reader_t reader,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = popen_protect_tool (pgmname, tmpfp, certfp, &fp, &pid);
|
err = popen_protect_tool (ctrl, pgmname, tmpfp, certfp, &fp, &pid);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
pid = -1;
|
pid = -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user