From fb1cdd7b0ebece16ffe60a30e4d01c5dbb1ca92b Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Sun, 11 Sep 2011 16:55:34 -0400 Subject: Handle pinentry-mode=loopback. When this mode is set an inquire will be sent to the client to retrieve the passphrase. This adds a new inquire keyword "NEW_PASSPHRASE" that the GENKEY and PASSWD commands use when generating a new key. --- agent/genkey.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'agent/genkey.c') diff --git a/agent/genkey.c b/agent/genkey.c index 09f1c72aa..85ba7023a 100644 --- a/agent/genkey.c +++ b/agent/genkey.c @@ -304,6 +304,23 @@ agent_ask_new_passphrase (ctrl_t ctrl, const char *prompt, *r_passphrase = NULL; + if (ctrl->pinentry_mode == PINENTRY_MODE_LOOPBACK) + { + size_t size; + size_t len = 100; + unsigned char *buffer; + + err = pinentry_loopback(ctrl, "NEW_PASSPHRASE", &buffer, &size, len); + if (err) + xfree(buffer); + else + { + buffer[size] = 0; + *r_passphrase = buffer; + } + return err; + } + pi = gcry_calloc_secure (2, sizeof (*pi) + 100); pi2 = pi + (sizeof *pi + 100); pi->max_length = 100; -- cgit v1.2.3