diff options
author | Werner Koch <[email protected]> | 2016-09-14 09:40:34 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-09-14 09:40:34 +0000 |
commit | 3210f3e4725afc5ee2810b9a1361918ec9c42ca4 (patch) | |
tree | 742cdfee9596708ce838d88ca47236162821817e /src/engine-gpg.c | |
parent | core: New function gpgme_op_createsubkey. (diff) | |
download | gpgme-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.c | 24 |
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); |