From 582e684a48eb4f3716cecf7dc73eb93046efcfad Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 1 Dec 2015 12:01:12 +0100 Subject: 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 --- tools/gpgtar-create.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'tools/gpgtar-create.c') 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); -- cgit v1.2.3