aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-gpg.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-09-14 09:40:34 +0000
committerWerner Koch <[email protected]>2016-09-14 09:40:34 +0000
commit3210f3e4725afc5ee2810b9a1361918ec9c42ca4 (patch)
tree742cdfee9596708ce838d88ca47236162821817e /src/engine-gpg.c
parentcore: New function gpgme_op_createsubkey. (diff)
downloadgpgme-3210f3e4725afc5ee2810b9a1361918ec9c42ca4.tar.gz
gpgme-3210f3e4725afc5ee2810b9a1361918ec9c42ca4.zip
core: New function gpgme_op_adduid.
* src/genkey.c: Replace most error codes GPG_ERR_INV_VALUE by GPG_ERR_INV_ARG. (struct op_data_t): Add field UIDMODE. (genkey_status_handler): Use UIDMODE. (adduid_start): New. (gpgme_op_adduid_start, gpgme_op_adduid): New. * src/gpgme.def, src/libgpgme.vers: Add them. * tests/run-genkey.c: Add option --adduid. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r--src/engine-gpg.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 5a16f805..d2b6dd34 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -2114,11 +2114,25 @@ gpg_addkey (engine_gpg_t gpg,
static gpgme_error_t
gpg_adduid (engine_gpg_t gpg,
- const char *userid,
- unsigned int flags,
- int use_armor)
+ gpgme_key_t key,
+ const char *userid)
{
- return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
+ gpgme_error_t err;
+
+ if (!key || !key->fpr || !userid)
+ return gpg_error (GPG_ERR_INV_ARG);
+
+ err = add_arg (gpg, "--quick-adduid");
+ if (!err)
+ err = add_arg (gpg, "--");
+ if (!err)
+ err = add_arg (gpg, key->fpr);
+ if (!err)
+ err = add_arg (gpg, userid);
+
+ if (!err)
+ err = start (gpg);
+ return err;
}
@@ -2170,7 +2184,7 @@ gpg_genkey (void *engine,
else if (!userid && key)
err = gpg_addkey (gpg, algo, expires, key, flags, use_armor);
else if (userid && key && !algo)
- err = gpg_adduid (gpg, userid, flags, use_armor);
+ err = gpg_adduid (gpg, key, userid);
else
err = gpg_error (GPG_ERR_INV_VALUE);