aboutsummaryrefslogtreecommitdiffstats
path: root/sm/call-agent.c
diff options
context:
space:
mode:
Diffstat (limited to 'sm/call-agent.c')
-rw-r--r--sm/call-agent.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/sm/call-agent.c b/sm/call-agent.c
index fe740964b..30a1b6480 100644
--- a/sm/call-agent.c
+++ b/sm/call-agent.c
@@ -301,7 +301,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,
+gpgsm_agent_pksign (const char *keygrip, const char *desc,
unsigned char *digest, size_t digestlen, int digestalgo,
char **r_buf, size_t *r_buflen )
{
@@ -328,6 +328,16 @@ gpgsm_agent_pksign (const char *keygrip,
if (rc)
return map_assuan_err (rc);
+ if (desc)
+ {
+ snprintf (line, DIM(line)-1, "SETKEYDESC %s", desc);
+ line[DIM(line)-1] = 0;
+ rc = assuan_transact (agent_ctx, line,
+ NULL, NULL, NULL, NULL, NULL, NULL);
+ if (rc)
+ return map_assuan_err (rc);
+ }
+
sprintf (line, "SETHASH %d ", digestalgo);
p = line + strlen (line);
for (i=0; i < digestlen ; i++, p += 2 )
@@ -376,7 +386,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,
+gpgsm_agent_pkdecrypt (const char *keygrip, const char *desc,
ksba_const_sexp_t ciphertext,
char **r_buf, size_t *r_buflen )
{
@@ -411,6 +421,16 @@ gpgsm_agent_pkdecrypt (const char *keygrip,
if (rc)
return map_assuan_err (rc);
+ if (desc)
+ {
+ snprintf (line, DIM(line)-1, "SETKEYDESC %s", desc);
+ line[DIM(line)-1] = 0;
+ rc = assuan_transact (agent_ctx, line,
+ NULL, NULL, NULL, NULL, NULL, NULL);
+ if (rc)
+ return map_assuan_err (rc);
+ }
+
init_membuf (&data, 1024);
cipher_parm.ctx = agent_ctx;
cipher_parm.ciphertext = ciphertext;