Add GPGME_ENCRYPT_NO_COMPRESS flag.
authorWerner Koch <wk@gnupg.org>
Thu, 8 May 2014 09:31:30 +0000 (11:31 +0200)
committerWerner Koch <wk@gnupg.org>
Thu, 8 May 2014 09:31:30 +0000 (11:31 +0200)
* src/gpgme.h.in (GPGME_ENCRYPT_NO_COMPRESS): New.
* src/engine-gpg.c (gpg_encrypt, gpg_encrypt_sign): Implement it.
* src/gpgme-tool.c (_cmd_sign_encrypt): Add option --no-compress.

NEWS
doc/gpgme.texi
src/engine-gpg.c
src/gpgme-tool.c
src/gpgme.h.in

diff --git a/NEWS b/NEWS
index acba24d..5fb4808 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,8 @@ Noteworthy changes in version 1.5.0 (unreleased)
  * Add feature to use the gpgme I/O subsystem to run arbitrary
    commands.
 
+ * Add flag to force encryption without the default comprtession step.
+
  * Interface changes relative to the 1.4.3 release:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  gpgme_get_dirinfo              NEW.
@@ -20,6 +22,7 @@ Noteworthy changes in version 1.5.0 (unreleased)
  GPGME_PROTOCOL_SPAWN           NEW.
  GPGME_SPAWN_DETACHED           NEW.
  GPGME_SPAWN_ALLOW_SET_FG       NEW.
+ GPGME_ENCRYPT_NO_COMPRESS      NEW.
 
 
 Noteworthy changes in version 1.4.3 (2013-08-12)
index 7697ff1..eaf1fcb 100644 (file)
@@ -5141,6 +5141,21 @@ The @code{GPGME_ENCRYPT_NO_ENCRYPT_TO} symbol specifies that no
 default or hidden default recipients as configured in the crypto
 backend should be included.  This can be useful for managing different
 user profiles.
+
+@item GPGME_ENCRYPT_NO_COMPRESS
+The @code{GPGME_ENCRYPT_NO_COMPRESS} symbol specifies that the
+plaintext shall not be compressed before it is encrypted.  This is
+in some cases useful if the length of the encrypted message
+may reveal information about the plaintext.
+
+@item GPGME_ENCRYPT_PREPARE
+@itemx GPGME_ENCRYPT_EXPECT_SIGN
+The @code{GPGME_ENCRYPT_PREPARE} symbol is used with the UI Server
+protocol to prepare an encryption (i.e. sending the
+@code{PREP_ENCRYPT} command).  With the
+@code{GPGME_ENCRYPT_EXPECT_SIGN} symbol the UI Server is advised to
+also expect a sign command.
+
 @end table
 
 If @code{GPG_ERR_UNUSABLE_PUBKEY} is returned, some recipients in
index ce9e349..ede098e 100644 (file)
@@ -1662,6 +1662,9 @@ gpg_encrypt (void *engine, gpgme_key_t recp[], gpgme_encrypt_flags_t flags,
   if (!err && use_armor)
     err = add_arg (gpg, "--armor");
 
+  if (!err && (flags & GPGME_ENCRYPT_NO_COMPRESS))
+    err = add_arg (gpg, "--compress-algo=none");
+
   if (!symmetric)
     {
       /* If we know that all recipients are valid (full or ultimate trust)
@@ -1719,6 +1722,9 @@ gpg_encrypt_sign (void *engine, gpgme_key_t recp[],
   if (!err && use_armor)
     err = add_arg (gpg, "--armor");
 
+  if (!err && (flags & GPGME_ENCRYPT_NO_COMPRESS))
+    err = add_arg (gpg, "--compress-algo=none");
+
   if (!symmetric)
     {
       /* If we know that all recipients are valid (full or ultimate trust)
index a980347..be8ed07 100644 (file)
@@ -2806,6 +2806,8 @@ _cmd_sign_encrypt (assuan_context_t ctx, char *line, int sign)
     flags |= GPGME_ENCRYPT_PREPARE;
   if (strstr (line, "--expect-sign"))
     flags |= GPGME_ENCRYPT_EXPECT_SIGN;
+  if (strstr (line, "--no-compress"))
+    flags |= GPGME_ENCRYPT_NO_COMPRESS;
 
   inp_fd = server->input_fd;
   inp_fn = server->input_filename;
@@ -2842,7 +2844,7 @@ _cmd_sign_encrypt (assuan_context_t ctx, char *line, int sign)
 
 static const char hlp_encrypt[] =
   "ENCRYPT [--always-trust] [--no-encrypt-to]\n"
-  "  [--prepare] [--expect-sign]\n"
+  "  [--no-compress] [--prepare] [--expect-sign]\n"
   "\n"
   "Encrypt the object set by the last INPUT command to\n"
   "the keys specified by previous RECIPIENT commands.  \n"
@@ -2857,7 +2859,7 @@ cmd_encrypt (assuan_context_t ctx, char *line)
 
 static const char hlp_sign_encrypt[] =
   "SIGN_ENCRYPT [--always-trust] [--no-encrypt-to]\n"
-  "  [--prepare] [--expect-sign]\n"
+  "  [--no-compress] [--prepare] [--expect-sign]\n"
   "\n"
   "Sign the object set by the last INPUT command with the\n"
   "keys specified by previous SIGNER commands and encrypt\n"
index 655602d..efc58ea 100644 (file)
@@ -1283,7 +1283,8 @@ typedef enum
     GPGME_ENCRYPT_ALWAYS_TRUST = 1,
     GPGME_ENCRYPT_NO_ENCRYPT_TO = 2,
     GPGME_ENCRYPT_PREPARE = 4,
-    GPGME_ENCRYPT_EXPECT_SIGN = 8
+    GPGME_ENCRYPT_EXPECT_SIGN = 8,
+    GPGME_ENCRYPT_NO_COMPRESS = 16
   }
 gpgme_encrypt_flags_t;