aboutsummaryrefslogtreecommitdiffstats
path: root/tests/run-genkey.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-09-14 07:51:16 +0000
committerWerner Koch <[email protected]>2016-09-14 07:51:16 +0000
commitcc353701b0fde4c811ddc1e9a91b852dfe9f4e06 (patch)
tree73404f8a95c81599e873ef27e6edb454ddc1a52a /tests/run-genkey.c
parentcore: Use const char * where appropriate. (diff)
downloadgpgme-cc353701b0fde4c811ddc1e9a91b852dfe9f4e06.tar.gz
gpgme-cc353701b0fde4c811ddc1e9a91b852dfe9f4e06.zip
core: New function gpgme_op_createsubkey.
* src/genkey.c (createsubkey_start): New. (gpgme_op_createsubkey_start, gpgme_op_createsubkey): New. * src/gpgme.def, src/libgpgme.vers: Add them. * src/engine-gpg.c (gpg_createkey): Factor some code out to ... (gpg_add_algo_usage_expire): new. (gpg_addkey): Implement. * tests/run-genkey.c: Add option --addkey. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tests/run-genkey.c')
-rw-r--r--tests/run-genkey.c41
1 files changed, 36 insertions, 5 deletions
diff --git a/tests/run-genkey.c b/tests/run-genkey.c
index 74d4038e..3b645025 100644
--- a/tests/run-genkey.c
+++ b/tests/run-genkey.c
@@ -201,6 +201,7 @@ show_usage (int ex)
{
fputs ("usage: " PGM " [options] USERID [ALGO [USAGE [EXPIRESECONDS]]]\n\n"
"Options:\n"
+ " --addkey add a subkey to the key with USERID\n"
" --verbose run in verbose mode\n"
" --status print status lines from the backend\n"
" --progress print progress info\n"
@@ -224,6 +225,7 @@ main (int argc, char **argv)
int print_status = 0;
int print_progress = 0;
int use_loopback = 0;
+ int addkey = 0;
const char *userid;
const char *algo = NULL;
unsigned int flags = 0;
@@ -243,6 +245,11 @@ main (int argc, char **argv)
}
else if (!strcmp (*argv, "--help"))
show_usage (0);
+ else if (!strcmp (*argv, "--addkey"))
+ {
+ addkey = 1;
+ argc--; argv++;
+ }
else if (!strcmp (*argv, "--verbose"))
{
verbose = 1;
@@ -316,12 +323,36 @@ main (int argc, char **argv)
gpgme_set_passphrase_cb (ctx, passphrase_cb, NULL);
}
- err = gpgme_op_createkey (ctx, userid, algo, 0, expire, NULL, flags);
- if (err)
+ if (addkey)
{
- fprintf (stderr, PGM ": gpgme_op_createkey failed: %s\n",
- gpg_strerror (err));
- exit (1);
+ gpgme_key_t akey;
+
+ err = gpgme_get_key (ctx, userid, &akey, 1);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error getting secret key for '%s': %s\n",
+ userid, gpg_strerror (err));
+ exit (1);
+ }
+
+ err = gpgme_op_createsubkey (ctx, akey, algo, 0, expire, flags);
+ if (err)
+ {
+ fprintf (stderr, PGM ": gpgme_op_createsubkey failed: %s\n",
+ gpg_strerror (err));
+ exit (1);
+ }
+ gpgme_key_unref (akey);
+ }
+ else
+ {
+ err = gpgme_op_createkey (ctx, userid, algo, 0, expire, NULL, flags);
+ if (err)
+ {
+ fprintf (stderr, PGM ": gpgme_op_createkey failed: %s\n",
+ gpg_strerror (err));
+ exit (1);
+ }
}
result = gpgme_op_genkey_result (ctx);