aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--common/ChangeLog5
-rw-r--r--common/simple-pwquery.c24
-rw-r--r--common/simple-pwquery.h3
3 files changed, 31 insertions, 1 deletions
diff --git a/common/ChangeLog b/common/ChangeLog
index e7905ea58..0ab9ac524 100644
--- a/common/ChangeLog
+++ b/common/ChangeLog
@@ -1,3 +1,8 @@
+2005-07-04 Marcus Brinkmann <[email protected]>
+
+ * simple-pwquery.h (simple_pwclear): New prototype.
+ * simple-pwquery.c (simple_pwclear): New function.
+
2005-06-15 Werner Koch <[email protected]>
* miscellaneous.c (make_printable_string): Made P a void*.
diff --git a/common/simple-pwquery.c b/common/simple-pwquery.c
index de3689810..f156ca3f1 100644
--- a/common/simple-pwquery.c
+++ b/common/simple-pwquery.c
@@ -546,6 +546,28 @@ simple_pwquery (const char *cacheid,
}
+/* Ask the gpg-agent to clear the passphrase for the cache ID CACHEID. */
+int
+simple_pwclear (const char *cacheid)
+{
+ char line[500];
+ char *p;
+
+ /* We need not more than 50 characters for the command and the
+ terminating nul. */
+ if (strlen (cacheid) * 3 > sizeof (line) - 50)
+ return SPWQ_PROTOCOL_ERROR;
+
+ strcpy (line, "CLEAR_PASSPHRASE ");
+ p = line + 17;
+ p = copy_and_escape (p, cacheid);
+ *p++ = '\n';
+ *p++ = '\0';
+
+ return simple_query (line);
+}
+
+
/* Perform the simple query QUERY (which must be new-line and 0
terminated) and return the error code. */
int
@@ -576,7 +598,7 @@ simple_query (const char *query)
rc = SPWQ_PROTOCOL_ERROR;
goto leave;
}
-
+
if (response[0] == 'O' && response[1] == 'K')
/* OK, do nothing. */;
else if ((nread > 7 && !memcmp (response, "ERR 111", 7)
diff --git a/common/simple-pwquery.h b/common/simple-pwquery.h
index c7ebf9401..e3270d6c5 100644
--- a/common/simple-pwquery.h
+++ b/common/simple-pwquery.h
@@ -57,6 +57,9 @@ char *simple_pwquery (const char *cacheid,
const char *description,
int *errorcode);
+/* Ask the gpg-agent to clear the passphrase for the cache ID CACHEID. */
+int simple_pwclear (const char *cacheid);
+
/* Perform the simple query QUERY (which must be new-line and 0
terminated) and return the error code. */
int simple_query (const char *query);