aboutsummaryrefslogtreecommitdiffstats
path: root/sm/call-agent.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sm/call-agent.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/sm/call-agent.c b/sm/call-agent.c
index 15ae5eacc..2e8c75496 100644
--- a/sm/call-agent.c
+++ b/sm/call-agent.c
@@ -65,7 +65,7 @@ struct learn_parm_s {
/* Try to connect to the agent via socket or fork it off and work by
pipes. Handle the server's initial greeting */
static int
-start_agent (void)
+start_agent (ctrl_t ctrl)
{
int rc = 0;
char *infostr, *p;
@@ -86,6 +86,8 @@ start_agent (void)
if (opt.verbose)
log_info (_("no running gpg-agent - starting one\n"));
+
+ gpgsm_status (ctrl, STATUS_PROGRESS, "starting_agent ? 0 0");
if (fflush (NULL))
{
@@ -126,7 +128,7 @@ start_agent (void)
log_error (_("malformed GPG_AGENT_INFO environment variable\n"));
xfree (infostr);
force_pipe_server = 1;
- return start_agent ();
+ return start_agent (ctrl);
}
*p++ = 0;
pid = atoi (p);
@@ -139,7 +141,7 @@ start_agent (void)
prot);
xfree (infostr);
force_pipe_server = 1;
- return start_agent ();
+ return start_agent (ctrl);
}
rc = assuan_socket_connect (&ctx, infostr, pid);
@@ -148,7 +150,7 @@ start_agent (void)
{
log_error (_("can't connect to the agent - trying fall back\n"));
force_pipe_server = 1;
- return start_agent ();
+ return start_agent (ctrl);
}
}
@@ -188,7 +190,7 @@ membuf_data_cb (void *opaque, const void *buffer, size_t length)
/* Call the agent to do a sign operation using the key identified by
the hex string KEYGRIP. */
int
-gpgsm_agent_pksign (const char *keygrip, const char *desc,
+gpgsm_agent_pksign (ctrl_t ctrl, const char *keygrip, const char *desc,
unsigned char *digest, size_t digestlen, int digestalgo,
char **r_buf, size_t *r_buflen )
{
@@ -198,7 +200,7 @@ gpgsm_agent_pksign (const char *keygrip, const char *desc,
size_t len;
*r_buf = NULL;
- rc = start_agent ();
+ rc = start_agent (ctrl);
if (rc)
return rc;
@@ -273,7 +275,7 @@ inq_ciphertext_cb (void *opaque, const char *keyword)
/* Call the agent to do a decrypt operation using the key identified by
the hex string KEYGRIP. */
int
-gpgsm_agent_pkdecrypt (const char *keygrip, const char *desc,
+gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
ksba_const_sexp_t ciphertext,
char **r_buf, size_t *r_buflen )
{
@@ -293,7 +295,7 @@ gpgsm_agent_pkdecrypt (const char *keygrip, const char *desc,
if (!ciphertextlen)
return gpg_error (GPG_ERR_INV_VALUE);
- rc = start_agent ();
+ rc = start_agent (ctrl);
if (rc)
return rc;
@@ -371,7 +373,8 @@ inq_genkey_parms (void *opaque, const char *keyword)
/* Call the agent to generate a newkey */
int
-gpgsm_agent_genkey (ksba_const_sexp_t keyparms, ksba_sexp_t *r_pubkey)
+gpgsm_agent_genkey (ctrl_t ctrl,
+ ksba_const_sexp_t keyparms, ksba_sexp_t *r_pubkey)
{
int rc;
struct genkey_parm_s gk_parm;
@@ -380,7 +383,7 @@ gpgsm_agent_genkey (ksba_const_sexp_t keyparms, ksba_sexp_t *r_pubkey)
char *buf;
*r_pubkey = NULL;
- rc = start_agent ();
+ rc = start_agent (ctrl);
if (rc)
return rc;
@@ -418,13 +421,13 @@ gpgsm_agent_genkey (ksba_const_sexp_t keyparms, ksba_sexp_t *r_pubkey)
/* Ask the agent whether the certificate is in the list of trusted
keys */
int
-gpgsm_agent_istrusted (ksba_cert_t cert)
+gpgsm_agent_istrusted (ctrl_t ctrl, ksba_cert_t cert)
{
int rc;
char *fpr;
char line[ASSUAN_LINELENGTH];
- rc = start_agent ();
+ rc = start_agent (ctrl);
if (rc)
return rc;
@@ -445,13 +448,13 @@ gpgsm_agent_istrusted (ksba_cert_t cert)
/* Ask the agent to mark CERT as a trusted Root-CA one */
int
-gpgsm_agent_marktrusted (ksba_cert_t cert)
+gpgsm_agent_marktrusted (ctrl_t ctrl, ksba_cert_t cert)
{
int rc;
char *fpr, *dn;
char line[ASSUAN_LINELENGTH];
- rc = start_agent ();
+ rc = start_agent (ctrl);
if (rc)
return rc;
@@ -482,12 +485,12 @@ gpgsm_agent_marktrusted (ksba_cert_t cert)
/* Ask the agent whether the a corresponding secret key is available
for the given keygrip */
int
-gpgsm_agent_havekey (const char *hexkeygrip)
+gpgsm_agent_havekey (ctrl_t ctrl, const char *hexkeygrip)
{
int rc;
char line[ASSUAN_LINELENGTH];
- rc = start_agent ();
+ rc = start_agent (ctrl);
if (rc)
return rc;
@@ -572,14 +575,14 @@ learn_cb (void *opaque, const void *buffer, size_t length)
/* Call the agent to learn about a smartcard */
int
-gpgsm_agent_learn ()
+gpgsm_agent_learn (ctrl_t ctrl)
{
int rc;
struct learn_parm_s learn_parm;
membuf_t data;
size_t len;
- rc = start_agent ();
+ rc = start_agent (ctrl);
if (rc)
return rc;
@@ -601,12 +604,12 @@ gpgsm_agent_learn ()
HEXKEYGRIP. If DESC is not NULL, display instead of the default
description message. */
int
-gpgsm_agent_passwd (const char *hexkeygrip, const char *desc)
+gpgsm_agent_passwd (ctrl_t ctrl, const char *hexkeygrip, const char *desc)
{
int rc;
char line[ASSUAN_LINELENGTH];
- rc = start_agent ();
+ rc = start_agent (ctrl);
if (rc)
return rc;