aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-uiserver.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2009-11-10 16:32:11 +0000
committerWerner Koch <[email protected]>2009-11-10 16:32:11 +0000
commitd173e6e010c3447c6ebb1a5999d2e128392ed341 (patch)
tree5088234997468f73c7470c6a6dfae6e4d8ae86dc /src/engine-uiserver.c
parentPass fdpassing flag to assuan_socket_connect. (diff)
downloadgpgme-d173e6e010c3447c6ebb1a5999d2e128392ed341.tar.gz
gpgme-d173e6e010c3447c6ebb1a5999d2e128392ed341.zip
Make recipients command work.
Diffstat (limited to 'src/engine-uiserver.c')
-rw-r--r--src/engine-uiserver.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/engine-uiserver.c b/src/engine-uiserver.c
index cdcf683e..623dd593 100644
--- a/src/engine-uiserver.c
+++ b/src/engine-uiserver.c
@@ -1011,26 +1011,26 @@ set_recipients (engine_uiserver_t uiserver, gpgme_key_t recp[])
char *line;
int linelen;
int invalid_recipients = 0;
- int i = 0;
+ int i;
linelen = 10 + 40 + 1; /* "RECIPIENT " + guess + '\0'. */
line = malloc (10 + 40 + 1);
if (!line)
return gpg_error_from_errno (errno);
strcpy (line, "RECIPIENT ");
- while (!err && recp[i])
+ for (i=0; !err && recp[i]; i++)
{
- char *fpr;
+ char *uid;
int newlen;
- if (!recp[i]->subkeys || !recp[i]->subkeys->fpr)
+ /* We use only the first user ID of the key. */
+ if (!recp[i]->uids || !(uid=recp[i]->uids->uid) || !*uid)
{
invalid_recipients++;
continue;
}
- fpr = recp[i]->subkeys->fpr;
- newlen = 11 + strlen (fpr);
+ newlen = 11 + strlen (uid);
if (linelen < newlen)
{
char *newline = realloc (line, newlen);
@@ -1043,11 +1043,12 @@ set_recipients (engine_uiserver_t uiserver, gpgme_key_t recp[])
line = newline;
linelen = newlen;
}
- strcpy (&line[10], fpr);
+ /* FIXME: need to do proper escaping */
+ strcpy (&line[10], uid);
err = uiserver_assuan_simple_command (ctx, line, uiserver->status.fnc,
- uiserver->status.fnc_value);
- /* FIXME: This requires more work. */
+ uiserver->status.fnc_value);
+ /* FIXME: This might requires more work. */
if (gpg_err_code (err) == GPG_ERR_NO_PUBKEY)
invalid_recipients++;
else if (err)
@@ -1055,7 +1056,6 @@ set_recipients (engine_uiserver_t uiserver, gpgme_key_t recp[])
free (line);
return err;
}
- i++;
}
free (line);
return gpg_error (invalid_recipients