summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIngo Klöcker <dev@ingo-kloecker.de>2020-08-04 14:32:31 +0200
committerIngo Klöcker <dev@ingo-kloecker.de>2020-08-04 16:51:56 +0200
commitdb82e99a8a40c57a237dad030928d0fcf6b03ad7 (patch)
treedfda54ea9e78429d8e2d89238a371395b8142ad7 /tests
parent81db4122450bf7ba57ed478d89ae6e449c6e8366 (diff)
downloadgpgme-db82e99a8a40c57a237dad030928d0fcf6b03ad7.tar.gz
core: New function gpgme_op_setexpire.
* src/gpgme.h.in (gpgme_op_setexpire_start, gpgme_op_setexpire): New. * src/libgpgme.vers, src/gpgme.def: Add new functions. * src/genkey.c (setexpire): New. (gpgme_op_setexpire_start, gpgme_op_setexpire): New. * src/engine.h, src/engine.c: (_gpgme_engine_op_setexpire): New. * src/engine-backend.h (engine_ops): Add 'setexpire' and adjust all engine initializers. * src/engine-gpg.c (gpg_setexpire): New. (_gpgme_engine_ops_gpg): Set setexpire to gpg_setexpire. * doc/gpgme.texi: Document new functions. * tests/run-genkey.c: Add option --setexpire. -- This extends GPGME to support the --quick-set-expire command added by GnuPG 2.1.22. This allows changing subkeys expiry date without going through the editinteractor interface. Co-authored-by: Andre Heinecke <aheinecke@gnupg.org> GnuPG-bug-id: 4999
Diffstat (limited to 'tests')
-rw-r--r--tests/run-genkey.c79
1 files changed, 77 insertions, 2 deletions
diff --git a/tests/run-genkey.c b/tests/run-genkey.c
index fd9b42a7..f0f6e302 100644
--- a/tests/run-genkey.c
+++ b/tests/run-genkey.c
@@ -205,12 +205,15 @@ show_usage (int ex)
" for addkey: FPR [ALGO [USAGE [EXPIRESECONDS]]]\n"
" for adduid: FPR USERID\n"
" for revuid: FPR USERID\n"
+ " for setexpire: FPR EXPIRE [SUBFPRS]\n"
" for set-primary: FPR USERID\n"
"Options:\n"
" --addkey add a subkey to the key with FPR\n"
" --adduid add a user id to the key with FPR\n"
" --revuid revoke a user id from the key with FPR\n"
" --set-primary set the primary key flag on USERID\n"
+ " --setexpire set the expiration time of the key FPR\n"
+ " or of its subkeys SUBFPRS\n"
" --verbose run in verbose mode\n"
" --status print status lines from the backend\n"
" --progress print progress info\n"
@@ -238,12 +241,17 @@ main (int argc, char **argv)
int adduid = 0;
int revuid = 0;
int setpri = 0;
+ int setexpire = 0;
const char *userid;
const char *algo = NULL;
const char *newuserid = NULL;
+ const char *subfprs = NULL;
unsigned int flags = 0;
unsigned long expire = 0;
gpgme_genkey_result_t result;
+ int i;
+ size_t n;
+ char *subfprs_buffer = NULL;
if (argc)
{ argc--; argv++; }
@@ -264,6 +272,7 @@ main (int argc, char **argv)
adduid = 0;
revuid = 0;
setpri = 0;
+ setexpire = 0;
argc--; argv++;
}
else if (!strcmp (*argv, "--adduid"))
@@ -272,6 +281,7 @@ main (int argc, char **argv)
adduid = 1;
revuid = 0;
setpri = 0;
+ setexpire = 0;
argc--; argv++;
}
else if (!strcmp (*argv, "--revuid"))
@@ -280,6 +290,7 @@ main (int argc, char **argv)
adduid = 0;
revuid = 1;
setpri = 0;
+ setexpire = 0;
argc--; argv++;
}
else if (!strcmp (*argv, "--set-primary"))
@@ -288,6 +299,16 @@ main (int argc, char **argv)
adduid = 0;
revuid = 0;
setpri = 1;
+ setexpire = 0;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--setexpire"))
+ {
+ addkey = 0;
+ adduid = 0;
+ revuid = 0;
+ setpri = 0;
+ setexpire = 1;
argc--; argv++;
}
else if (!strcmp (*argv, "--verbose"))
@@ -341,6 +362,48 @@ main (int argc, char **argv)
userid = argv[0];
newuserid = argv[1];
}
+ else if (setexpire)
+ {
+ if (argc < 2)
+ {
+ show_usage (1);
+ }
+ userid = argv[0];
+ argc--; argv++;
+ expire = parse_expire_string (argv[0]);
+ argc--; argv++;
+ if (argc > 1)
+ {
+ /* Several subkey fprs given */
+ for (i=0, n = 0; i < argc; i++)
+ n += strlen (argv[1]) + 1;
+ n++;
+ subfprs_buffer = malloc (n);
+ if (!subfprs_buffer)
+ {
+ fprintf (stderr, PGM ": malloc failed: %s\n",
+ gpg_strerror (gpg_error_from_syserror ()));
+ exit (1);
+ }
+ *subfprs_buffer = 0;
+ for (i=0; i < argc; i++)
+ {
+ strcat (subfprs_buffer, argv[i]);
+ strcat (subfprs_buffer, "\n");
+ }
+ subfprs = subfprs_buffer;
+ }
+ else if (argc)
+ {
+ /* One subkey fpr (or '*') given */
+ subfprs = *argv;
+ }
+ else
+ {
+ /* No subkey fpr given. */
+ subfprs = NULL;
+ }
+ }
else
{
if (!argc || argc > 4)
@@ -373,7 +436,8 @@ main (int argc, char **argv)
gpgme_set_passphrase_cb (ctx, passphrase_cb, NULL);
}
- if (addkey || adduid || revuid || setpri)
+
+ if (addkey || adduid || revuid || setpri || setexpire)
{
gpgme_key_t akey;
@@ -425,6 +489,17 @@ main (int argc, char **argv)
exit (1);
}
}
+ else if (setexpire)
+ {
+ err = gpgme_op_setexpire (ctx, akey, expire, subfprs, 0);
+ if (err)
+ {
+ fprintf (stderr, PGM ": gpgme_op_setexpire failed: %s\n",
+ gpg_strerror (err));
+ exit (1);
+ }
+ }
+
gpgme_key_unref (akey);
}
else
@@ -438,7 +513,7 @@ main (int argc, char **argv)
}
}
- if (!setpri)
+ if (!setpri && !setexpire)
{
result = gpgme_op_genkey_result (ctx);
if (!result)