diff options
author | Justus Winter <[email protected]> | 2015-12-01 11:01:12 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2015-12-04 11:52:40 +0000 |
commit | 582e684a48eb4f3716cecf7dc73eb93046efcfad (patch) | |
tree | cff3e4c97fb5e661a5c44dfb5d0cf7bd8937f26e /tools/gpgtar-create.c | |
parent | tools/gpgtar: Implement signing. (diff) | |
download | gnupg-582e684a48eb4f3716cecf7dc73eb93046efcfad.tar.gz gnupg-582e684a48eb4f3716cecf7dc73eb93046efcfad.zip |
tools/gpgtar: Implement symmetric encryption.
* tests/openpgp/gpgtar.test: Add test case.
* tools/gpgtar-create.c (gpgtar_create): Pass '--symmetric' flag to
gpg.
* tools/gpgtar.c (parse_arguments): We do handle the argument now.
Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to '')
-rw-r--r-- | tools/gpgtar-create.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/tools/gpgtar-create.c b/tools/gpgtar-create.c index d5e3becf5..d8d1d54f1 100644 --- a/tools/gpgtar-create.c +++ b/tools/gpgtar-create.c @@ -896,9 +896,16 @@ gpgtar_create (char **inpattern, int encrypt, int sign) if (err) goto leave; + /* '--encrypt' may be combined with '--symmetric', but 'encrypt' + is set either way. Clear it if no recipients are specified. + XXX: Fix command handling. */ + if (opt.symmetric && opt.recipients == NULL) + encrypt = 0; + argv = xtrycalloc (strlist_length (opt.gpg_arguments) + 2 * strlist_length (opt.recipients) - + 1 + !!encrypt + !!sign + 2 * !!opt.user, + + 1 + !!encrypt + !!sign + 2 * !!opt.user + + !!opt.symmetric, sizeof *argv); if (argv == NULL) { @@ -915,6 +922,8 @@ gpgtar_create (char **inpattern, int encrypt, int sign) argv[i++] = "--local-user"; argv[i++] = opt.user; } + if (opt.symmetric) + argv[i++] = "--symmetric"; for (arg = opt.recipients; arg; arg = arg->next) { argv[i++] = "--recipient"; @@ -925,7 +934,8 @@ gpgtar_create (char **inpattern, int encrypt, int sign) argv[i++] = NULL; assert (i == strlist_length (opt.gpg_arguments) + 2 * strlist_length (opt.recipients) - + 1 + !!encrypt + !!sign + 2 * !!opt.user); + + 1 + !!encrypt + !!sign + 2 * !!opt.user + + !!opt.symmetric); err = sh_exec_tool_stream (opt.gpg_program, argv, outstream, cipher_stream); |