diff options
author | Peter Palfrader <peter@palfrader.org> | 2014-10-22 21:00:59 +0200 |
---|---|---|
committer | Peter Palfrader <peter@palfrader.org> | 2014-10-22 21:00:59 +0200 |
commit | 7d788514693cfc5c94bf9c4306ff9cc082e96330 (patch) | |
tree | 3e2f7607cf91ae453963c4177d5c3489f8b83bca /Echolot/Pinger/CPunk.pm | |
parent | 0de3b1bc5a595e0ca3ac73d73ed8a161a543f355 (diff) |
Work with newer GnuPG::Interface versions again
Newer GnuPG::Interface versions are more picky when it comes to command
and command_args. Previously, they would accept things in any order and
would not care which of the two arrays had which. Now, command_args is
really limited to have arguments for the command listed in command. Any
options go with, and in front of, the command.
Diffstat (limited to 'Echolot/Pinger/CPunk.pm')
-rw-r--r-- | Echolot/Pinger/CPunk.pm | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/Echolot/Pinger/CPunk.pm b/Echolot/Pinger/CPunk.pm index ccd679e..6240e2a 100644 --- a/Echolot/Pinger/CPunk.pm +++ b/Echolot/Pinger/CPunk.pm @@ -59,8 +59,8 @@ sub encrypt_to($$$$) { my ( $stdin_fh, $stdout_fh, $stderr_fh, $status_fh, $handles ) = Echolot::Tools::make_gpg_fds(); my $pid = $GnuPG->wrap_call( - commands => [ '--import' ], - command_args => [qw{--no-options --no-secmem-warning --no-default-keyring --fast-list-mode --keyring}, $keyring, '--', '-' ], + commands => [qw{--no-options --no-secmem-warning --no-default-keyring --fast-list-mode --keyring}, $keyring, '--import'], + command_args => ['--', '-' ], handles => $handles ); my ($stdout, $stderr, $status) = Echolot::Tools::readwrite_gpg($keys->{$recipient}->{'key'}, $stdin_fh, $stdout_fh, $stderr_fh, $status_fh); waitpid $pid, 0; @@ -88,12 +88,8 @@ sub encrypt_to($$$$) { armor => 1 ); ( $stdin_fh, $stdout_fh, $stderr_fh, $status_fh, $handles ) = Echolot::Tools::make_gpg_fds(); - my $command_args = [qw{--no-options --no-secmem-warning --always-trust --no-default-keyring --textmode --cipher-algo 3DES --keyring}, $keyring, '--recipient', $recipient]; my $plaintextfile; - #if ($pgp2compat) { - # push @$command_args, qw{--pgp2}; - #}; # Files are required for compaitibility with PGP 2.* # we also use files in all other cases since there is a bug in either GnuPG or GnuPG::Interface # that let Echolot die if in certain cases: @@ -109,9 +105,12 @@ sub encrypt_to($$$$) { close (F) or Echolot::Log::warn("Cannot close $plaintextfile."), return 0; - push @$command_args, $plaintextfile; - $pid = $GnuPG->encrypt( + my $commands = [qw{--no-options --no-secmem-warning --always-trust --no-default-keyring --textmode --cipher-algo 3DES --keyring}, $keyring, '--recipient', $recipient, '--encrypt']; + my $command_args = ['--', $plaintextfile]; + + $pid = $GnuPG->wrap_call( + commands => $commands, command_args => $command_args, handles => $handles ); ($stdout, $stderr, $status) = Echolot::Tools::readwrite_gpg('', $stdin_fh, $stdout_fh, $stderr_fh, $status_fh); @@ -125,7 +124,7 @@ sub encrypt_to($$$$) { return undef; (($status =~ /^\[GNUPG:\] BEGIN_ENCRYPTION\s/m) && ($status =~ /^\[GNUPG:\] END_ENCRYPTION\s/m)) or - Echolot::Log::info("GnuPG status '$status' didn't indicate message to '$recipient' was encrypted correctly (stderr: $stderr; args: ".join(' ', @$command_args).")."), + Echolot::Log::info("GnuPG status '$status' didn't indicate message to '$recipient' was encrypted correctly (stderr: $stderr; args: ".join(' ', @$commands, @$command_args).")."), return undef; unlink ($keyring) or |