diff options
author | Werner Koch <[email protected]> | 2016-09-14 07:51:16 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-09-14 07:51:16 +0000 |
commit | cc353701b0fde4c811ddc1e9a91b852dfe9f4e06 (patch) | |
tree | 73404f8a95c81599e873ef27e6edb454ddc1a52a /tests/run-genkey.c | |
parent | core: Use const char * where appropriate. (diff) | |
download | gpgme-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.c | 41 |
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); |