aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-gpg.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2017-08-11 17:13:44 +0000
committerMarcus Brinkmann <[email protected]>2017-08-11 17:13:44 +0000
commita0cc6e01a8900b34cf231d8b5335ef3f85d01fdf (patch)
tree047fb190d1210a568692163ce2bc3de6e90ee045 /src/engine-gpg.c
parentdoc: Clarify import keys operation. (diff)
downloadgpgme-a0cc6e01a8900b34cf231d8b5335ef3f85d01fdf.tar.gz
gpgme-a0cc6e01a8900b34cf231d8b5335ef3f85d01fdf.zip
g10: Add new delete operations that allow more flags.
* NEWS: Document new interfaces. * doc/gpgme.texi: Document new interfaces. * src/gpgme.h.in (GPGME_DELETE_ALLOW_SECRET, GPGME_DELETE_FORCE, gpgme_op_delete_ext_start, gpgme_op_delete_ext): New. * src/delete.c (delete_start): Change allow_secret argument to flags. (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New functions. * src/engine-backend.h (delete): Change allow_secret argument to flags. * src/engine.c (_gpgme_engine_op_delete): Likewise. * src/engine.h (_gpgme_engine_op_delete): Likewise (for prototype). * src/engine-gpgsm.c (gpgsm_delete): Likewise. * src/engine-gpg.c (gpg_delete): Likewise. Implement GPGME_DELETE_FORCE. * src/gpgme.def (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New. * src/libgpgme.vers (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New. Signed-off-by: Marcus Brinkmann <[email protected]> GnuPG-bug-id: 2916
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r--src/engine-gpg.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 0c3a63ee..c749c972 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -1628,13 +1628,18 @@ gpg_decrypt (void *engine,
}
static gpgme_error_t
-gpg_delete (void *engine, gpgme_key_t key, int allow_secret)
+gpg_delete (void *engine, gpgme_key_t key, unsigned int flags)
{
engine_gpg_t gpg = engine;
- gpgme_error_t err;
+ gpgme_error_t err = 0;
+ int allow_secret = flags & GPGME_DELETE_ALLOW_SECRET;
+ int force = flags & GPGME_DELETE_FORCE;
- err = add_arg (gpg, allow_secret ? "--delete-secret-and-public-key"
- : "--delete-key");
+ if (force)
+ err = add_arg (gpg, "--yes");
+ if (!err)
+ err = add_arg (gpg, allow_secret ? "--delete-secret-and-public-key"
+ : "--delete-key");
if (!err)
err = add_arg (gpg, "--");
if (!err)