diff options
| author | Andre Heinecke <[email protected]> | 2016-08-09 09:40:29 +0000 | 
|---|---|---|
| committer | Andre Heinecke <[email protected]> | 2016-08-09 12:23:51 +0000 | 
| commit | 3d2f027d0f40e7ec4ab48cee89ff0ee10b423566 (patch) | |
| tree | 2ce3f95c548e471777506e85618e203c3ee73a16 /src | |
| parent | core: Let GPGME_PROTOCOL_ASSUAN pass Assuan comments through. (diff) | |
| download | gpgme-3d2f027d0f40e7ec4ab48cee89ff0ee10b423566.tar.gz gpgme-3d2f027d0f40e7ec4ab48cee89ff0ee10b423566.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/engine-gpg.c | 9 | ||||
| -rw-r--r-- | src/gpgme.h.in | 3 | 
2 files changed, 8 insertions, 4 deletions
| 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; | 
