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.
This commit is contained in:
Werner Koch 2014-05-08 11:31:30 +02:00
parent 62711e5614
commit 991cde9e79
5 changed files with 30 additions and 3 deletions

3
NEWS
View File

@ -12,6 +12,8 @@ Noteworthy changes in version 1.5.0 (unreleased)
* Add feature to use the gpgme I/O subsystem to run arbitrary * Add feature to use the gpgme I/O subsystem to run arbitrary
commands. commands.
* Add flag to force encryption without the default comprtession step.
* Interface changes relative to the 1.4.3 release: * Interface changes relative to the 1.4.3 release:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gpgme_get_dirinfo NEW. gpgme_get_dirinfo NEW.
@ -20,6 +22,7 @@ Noteworthy changes in version 1.5.0 (unreleased)
GPGME_PROTOCOL_SPAWN NEW. GPGME_PROTOCOL_SPAWN NEW.
GPGME_SPAWN_DETACHED NEW. GPGME_SPAWN_DETACHED NEW.
GPGME_SPAWN_ALLOW_SET_FG NEW. GPGME_SPAWN_ALLOW_SET_FG NEW.
GPGME_ENCRYPT_NO_COMPRESS NEW.
Noteworthy changes in version 1.4.3 (2013-08-12) Noteworthy changes in version 1.4.3 (2013-08-12)

View 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 default or hidden default recipients as configured in the crypto
backend should be included. This can be useful for managing different backend should be included. This can be useful for managing different
user profiles. 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 @end table
If @code{GPG_ERR_UNUSABLE_PUBKEY} is returned, some recipients in If @code{GPG_ERR_UNUSABLE_PUBKEY} is returned, some recipients in

View File

@ -1662,6 +1662,9 @@ gpg_encrypt (void *engine, gpgme_key_t recp[], gpgme_encrypt_flags_t flags,
if (!err && use_armor) if (!err && use_armor)
err = add_arg (gpg, "--armor"); err = add_arg (gpg, "--armor");
if (!err && (flags & GPGME_ENCRYPT_NO_COMPRESS))
err = add_arg (gpg, "--compress-algo=none");
if (!symmetric) if (!symmetric)
{ {
/* If we know that all recipients are valid (full or ultimate trust) /* 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) if (!err && use_armor)
err = add_arg (gpg, "--armor"); err = add_arg (gpg, "--armor");
if (!err && (flags & GPGME_ENCRYPT_NO_COMPRESS))
err = add_arg (gpg, "--compress-algo=none");
if (!symmetric) if (!symmetric)
{ {
/* If we know that all recipients are valid (full or ultimate trust) /* If we know that all recipients are valid (full or ultimate trust)

View File

@ -2806,6 +2806,8 @@ _cmd_sign_encrypt (assuan_context_t ctx, char *line, int sign)
flags |= GPGME_ENCRYPT_PREPARE; flags |= GPGME_ENCRYPT_PREPARE;
if (strstr (line, "--expect-sign")) if (strstr (line, "--expect-sign"))
flags |= GPGME_ENCRYPT_EXPECT_SIGN; flags |= GPGME_ENCRYPT_EXPECT_SIGN;
if (strstr (line, "--no-compress"))
flags |= GPGME_ENCRYPT_NO_COMPRESS;
inp_fd = server->input_fd; inp_fd = server->input_fd;
inp_fn = server->input_filename; 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[] = static const char hlp_encrypt[] =
"ENCRYPT [--always-trust] [--no-encrypt-to]\n" "ENCRYPT [--always-trust] [--no-encrypt-to]\n"
" [--prepare] [--expect-sign]\n" " [--no-compress] [--prepare] [--expect-sign]\n"
"\n" "\n"
"Encrypt the object set by the last INPUT command to\n" "Encrypt the object set by the last INPUT command to\n"
"the keys specified by previous RECIPIENT commands. \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[] = static const char hlp_sign_encrypt[] =
"SIGN_ENCRYPT [--always-trust] [--no-encrypt-to]\n" "SIGN_ENCRYPT [--always-trust] [--no-encrypt-to]\n"
" [--prepare] [--expect-sign]\n" " [--no-compress] [--prepare] [--expect-sign]\n"
"\n" "\n"
"Sign the object set by the last INPUT command with the\n" "Sign the object set by the last INPUT command with the\n"
"keys specified by previous SIGNER commands and encrypt\n" "keys specified by previous SIGNER commands and encrypt\n"

View File

@ -1283,7 +1283,8 @@ typedef enum
GPGME_ENCRYPT_ALWAYS_TRUST = 1, GPGME_ENCRYPT_ALWAYS_TRUST = 1,
GPGME_ENCRYPT_NO_ENCRYPT_TO = 2, GPGME_ENCRYPT_NO_ENCRYPT_TO = 2,
GPGME_ENCRYPT_PREPARE = 4, GPGME_ENCRYPT_PREPARE = 4,
GPGME_ENCRYPT_EXPECT_SIGN = 8 GPGME_ENCRYPT_EXPECT_SIGN = 8,
GPGME_ENCRYPT_NO_COMPRESS = 16
} }
gpgme_encrypt_flags_t; gpgme_encrypt_flags_t;