[git] GPGME - branch, master, updated. gpgme-1.10.0-194-g3589da0

by Werner Koch cvs at cvs.gnupg.org
Tue Apr 17 12:47:44 CEST 2018


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".

The branch, master has been updated
       via  3589da0500f1c80717e658d103a0cb2751d27b49 (commit)
      from  c143ab692c7fc7cf2ec0aebe40b9479ee15eaba9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 3589da0500f1c80717e658d103a0cb2751d27b49
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Apr 17 12:40:30 2018 +0200

    core: New keyword --file for OpenPGP recpstring.
    
    * src/engine-gpg.c (append_args_from_recipients_string): Add new
    flags.
    --
    
    Now you can use gpgme to encrypt without first importing a key.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/doc/gpgme.texi b/doc/gpgme.texi
index c14780a..f5efec6 100644
--- a/doc/gpgme.texi
+++ b/doc/gpgme.texi
@@ -6188,12 +6188,32 @@ to first create key objects.  Leading and trailing white space is
 remove from each line in @var{recpstring}.  The keys are then passed
 verbatim to the backend engine.
 
-For the OpenPGP backend two special keywords are supported to modify
-the operation: If the keyword "--hidden" is given as a recipient, it
-is skipped but will trun all following key specifications to be hidden
-recipients.  If the keyword "--" is given as a recipient, it will be
-skipped but no keywords will be detected in all following key
-specifications.
+For the OpenPGP backend several special keywords are supported to
+modify the operation.  These keywords are given instead of a key
+specification.  The currently supported keywords are:
+
+ at table @code
+ at item --hidden
+ at itemx --no-hidden
+These keywords toggle between normal and hidden recipients for all
+following key specifications.  When a hidden recipient is requested
+the gpg option @option{-R} (or @option{-F} in file mode) is used
+instead of @option{-r} (@option{-f} in file mode).
+
+ at item --file
+ at itemx --no-file
+These keywords toggle between regular and file mode for all following
+key specification.  In file mode the option @option{-f} or @option{-F}
+is passed to gpg.  At least GnuPG version 2.1.14 is required to handle
+these options.  The @code{GPGME_ENCRYPT_WANT_ADDRESS} flag is ignored
+in file mode.
+
+ at item --
+This keyword disables all keyword detection up to the end of the
+string.  All keywords are treated as verbatim arguments.
+
+ at end table
+
 
 @end deftypefun
 
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index fdb786a..173e940 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -2001,9 +2001,11 @@ append_args_from_recipients_string (engine_gpg_t gpg,
                                     const char *string)
 {
   gpg_error_t err = 0;
+  gpgme_encrypt_flags_t orig_flags = flags;
   int any = 0;
   int ignore = 0;
   int hidden = 0;
+  int file = 0;
   const char *s;
   int n;
 
@@ -2028,10 +2030,22 @@ append_args_from_recipients_string (engine_gpg_t gpg,
         ignore = 1;
       else if (!ignore && n == 8 && !memcmp (string, "--hidden", 8))
         hidden = 1;
-      else if (n)
+      else if (!ignore && n == 11 && !memcmp (string, "--no-hidden", 11))
+        hidden = 0;
+      else if (!ignore && n == 6 && !memcmp (string, "--file", 6))
         {
-          /* Add arg if it is not empty.  */
-          err = add_arg (gpg, hidden? "-R":"-r");
+          file = 1;
+          /* Because the key is used as is we need to ignore this flag:  */
+          flags &= ~GPGME_ENCRYPT_WANT_ADDRESS;
+        }
+      else if (!ignore && n == 9 && !memcmp (string, "--no-file", 9))
+        {
+          file = 0;
+          flags = orig_flags;
+        }
+      else if (n) /* Not empty - use it.  */
+        {
+          err = add_arg (gpg, file? (hidden? "-F":"-f") : (hidden? "-R":"-r"));
           if (!err)
             err = add_arg_recipient_string (gpg, flags, string, n);
           if (!err)

-----------------------------------------------------------------------

Summary of changes:
 doc/gpgme.texi   | 32 ++++++++++++++++++++++++++------
 src/engine-gpg.c | 20 +++++++++++++++++---
 2 files changed, 43 insertions(+), 9 deletions(-)


hooks/post-receive
-- 
GnuPG Made Easy
http://git.gnupg.org




More information about the Gnupg-commits mailing list