aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-gpg.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2013-05-22 14:30:12 +0000
committerWerner Koch <[email protected]>2013-05-22 14:31:51 +0000
commit567e6481d767af60390d649897b897a8b0e7e9a5 (patch)
tree4ebe710383116afcad1f84e9f974760ffb481243 /src/engine-gpg.c
parentgpgme-tool: Allow for symmetric encryption. (diff)
downloadgpgme-567e6481d767af60390d649897b897a8b0e7e9a5.tar.gz
gpgme-567e6481d767af60390d649897b897a8b0e7e9a5.zip
Allow symmetric encryption with gpgme_op_encrypt_sign.
* src/encrypt-sign.c (encrypt_sym_status_handler): New. (encrypt_sign_start): Handle recp == NULL case. * src/engine-gpg.c (gpg_encrypt_sign): Implement symmetric encryption. * tests/gpg/t-encrypt-sign.c (main): Add a test case for this. -- Co-authored-by: Kyle L. Huff <[email protected]> GnuPG-bug-id: 1440
Diffstat (limited to '')
-rw-r--r--src/engine-gpg.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 3f025030..65012fab 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -1700,23 +1700,29 @@ gpg_encrypt_sign (void *engine, gpgme_key_t recp[],
{
engine_gpg_t gpg = engine;
gpgme_error_t err;
+ int symmetric = !recp;
+
+ err = add_arg (gpg, symmetric ? "--symmetric" : "--encrypt");
- err = add_arg (gpg, "--encrypt");
if (!err)
err = add_arg (gpg, "--sign");
if (!err && use_armor)
err = add_arg (gpg, "--armor");
- /* If we know that all recipients are valid (full or ultimate trust)
- we can suppress further checks. */
- if (!err && (flags & GPGME_ENCRYPT_ALWAYS_TRUST))
- err = add_arg (gpg, "--always-trust");
+ if (!symmetric)
+ {
+ /* If we know that all recipients are valid (full or ultimate trust)
+ we can suppress further checks. */
+ if (!err && (flags & GPGME_ENCRYPT_ALWAYS_TRUST))
+ err = add_arg (gpg, "--always-trust");
- if (!err)
- err = append_args_from_recipients (gpg, recp);
+ if (!err)
+ err = append_args_from_recipients (gpg, recp);
+ }
if (!err)
err = append_args_from_signers (gpg, ctx);
+
if (!err)
err = append_args_from_sig_notations (gpg, ctx);