aboutsummaryrefslogtreecommitdiffstats
path: root/sm/call-agent.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2004-02-13 17:06:50 +0000
committerWerner Koch <[email protected]>2004-02-13 17:06:50 +0000
commit01486117e893f1a57460297937e6f6ff03fe6359 (patch)
tree18287194edd8a6b448d8d1841f154344bdf995ea /sm/call-agent.c
parent* command.c (cmd_setkeydesc): New. (diff)
downloadgnupg-01486117e893f1a57460297937e6f6ff03fe6359.tar.gz
gnupg-01486117e893f1a57460297937e6f6ff03fe6359.zip
* certcheck.c (gpgsm_create_cms_signature): Format a description
for use by the pinentry. * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP. * certdump.c (format_name_cookie, format_name_writer) (gpgsm_format_name): New. (gpgsm_format_serial): New. (gpgsm_format_keydesc): New. * call-agent.c (gpgsm_agent_pksign): New arg DESC. (gpgsm_agent_pkdecrypt): Ditto.
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;