From 3d2f027d0f40e7ec4ab48cee89ff0ee10b423566 Mon Sep 17 00:00:00 2001 From: Andre Heinecke Date: Tue, 9 Aug 2016 11:40:29 +0200 Subject: core: Add support for mixed symmetric and asym enc * src/gpgme.h.in (gpgme_encrypt_flags_t): New flag GPGME_ENCRYPT_SYMMETRIC. * src/engine-gpg.c (gpg_encrypt): Also add --symmetric if the flag is given. * NEWS: Mention new flag. * tests/run-encrypt.c (show_usage): Extend for --symmetric. (main): Handle --symmetric. (main): Set passphrase_cb in loopback mode. (main): Fix encrypt call if no recipients are given. * tests/gpg/t-encrypt-mixed.c: New. * tests/gpg/Makefile.am (c_tests): Add new test. * doc/gpgme.texi: Document new flag. --- src/engine-gpg.c | 9 ++++++--- src/gpgme.h.in | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/engine-gpg.c b/src/engine-gpg.c index 942711f9..ae78d9d1 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -1718,9 +1718,12 @@ gpg_encrypt (void *engine, gpgme_key_t recp[], gpgme_encrypt_flags_t flags, { engine_gpg_t gpg = engine; gpgme_error_t err; - int symmetric = !recp; - err = add_arg (gpg, symmetric ? "--symmetric" : "--encrypt"); + if (recp) + err = add_arg (gpg, "--encrypt"); + + if (!err && ((flags & GPGME_ENCRYPT_SYMMETRIC) || !recp)) + err = add_arg (gpg, "--symmetric"); if (!err && use_armor) err = add_arg (gpg, "--armor"); @@ -1732,7 +1735,7 @@ gpg_encrypt (void *engine, gpgme_key_t recp[], gpgme_encrypt_flags_t flags, && have_gpg_version (gpg, "2.1.14")) err = add_arg (gpg, "--mimemode"); - if (!symmetric) + if (recp) { /* If we know that all recipients are valid (full or ultimate trust) we can suppress further checks. */ diff --git a/src/gpgme.h.in b/src/gpgme.h.in index c05686d8..56d15f4f 100644 --- a/src/gpgme.h.in +++ b/src/gpgme.h.in @@ -1392,7 +1392,8 @@ typedef enum GPGME_ENCRYPT_NO_ENCRYPT_TO = 2, GPGME_ENCRYPT_PREPARE = 4, GPGME_ENCRYPT_EXPECT_SIGN = 8, - GPGME_ENCRYPT_NO_COMPRESS = 16 + GPGME_ENCRYPT_NO_COMPRESS = 16, + GPGME_ENCRYPT_SYMMETRIC = 32 } gpgme_encrypt_flags_t; -- cgit v1.2.3