aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2014-05-08 09:31:30 +0000
committerWerner Koch <[email protected]>2014-05-08 09:31:30 +0000
commit991cde9e79fec70aad093ded383c5574d30f9388 (patch)
treeb8739b6593d742b6cdf1b514da71d5af1ca86a39
parentw32: Fix another memleak on error. (diff)
downloadgpgme-991cde9e79fec70aad093ded383c5574d30f9388.tar.gz
gpgme-991cde9e79fec70aad093ded383c5574d30f9388.zip
Add GPGME_ENCRYPT_NO_COMPRESS flag.
* 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.
-rw-r--r--NEWS3
-rw-r--r--doc/gpgme.texi15
-rw-r--r--src/engine-gpg.c6
-rw-r--r--src/gpgme-tool.c6
-rw-r--r--src/gpgme.h.in3
5 files changed, 30 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index acba24df..5fb4808b 100644
--- 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)
diff --git a/doc/gpgme.texi b/doc/gpgme.texi
index 7697ff12..eaf1fcb7 100644
--- a/doc/gpgme.texi
+++ b/doc/gpgme.texi
@@ -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
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index ce9e3494..ede098ef 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -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)
diff --git a/src/gpgme-tool.c b/src/gpgme-tool.c
index a980347c..be8ed078 100644
--- a/src/gpgme-tool.c
+++ b/src/gpgme-tool.c
@@ -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"
diff --git a/src/gpgme.h.in b/src/gpgme.h.in
index 655602df..efc58ea5 100644
--- a/src/gpgme.h.in
+++ b/src/gpgme.h.in
@@ -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;