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;