From 13350a0c0eb8937c299c394a88d6cb51d3356d1f Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Fri, 17 Apr 2015 20:07:13 +0200 Subject: [PATCH] Add the encryption test recipe This tests all available openssl cipher commands. Reviewed-by: Rich Salz --- test/recipes/20-test_enc.t | 65 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 test/recipes/20-test_enc.t diff --git a/test/recipes/20-test_enc.t b/test/recipes/20-test_enc.t new file mode 100644 index 0000000000..813e20120e --- /dev/null +++ b/test/recipes/20-test_enc.t @@ -0,0 +1,65 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use File::Spec::Functions qw/catfile/; +use File::Copy; +use File::Compare qw/compare_text/; +use File::Basename; +use Test::More; +use OpenSSL::Test qw/:DEFAULT top_file/; + +setup("test_enc"); + +# We do it this way, because setup() may have moved us around, +# so the directory portion of $0 might not be correct any more. +# However, the name hasn't changed. +my $testsrc = top_file("test","recipes",basename($0)); + +my $test = catfile(".", "p"); + +my $cmd = "openssl"; + +my @ciphers = + map { chomp; s/^\s+//; s/\s+$//; split /\s+/ } + run(app([$cmd, "list", "-cipher-commands"]), capture => 1); + +plan tests => 1 + (scalar @ciphers)*2; + +my $init = ok(copy($testsrc,$test)); + +if (!$init) { + diag("Trying to copy $testsrc to $test : $!"); +} + + SKIP: { + skip "Not initialized, skipping...", 11 unless $init; + + foreach my $c (@ciphers) { + my %variant = ("$c" => [], + "$c base64" => [ "-a" ]); + + foreach my $t (sort keys %variant) { + my $cipherfile = "$test.$c.cipher"; + my $clearfile = "$test.$c.clear"; + my @e = ( "$c", "-bufsize", "113", @{$variant{$t}}, "-e", "-k", "test" ); + my @d = ( "$c", "-bufsize", "157", @{$variant{$t}}, "-d", "-k", "test" ); + if ($c eq "cat") { + $cipherfile = "$test.cipher"; + $clearfile = "$test.clear"; + @e = ( "enc", @{$variant{$t}}, "-e" ); + @d = ( "enc", @{$variant{$t}}, "-d" ); + } + + ok(run(app([$cmd, @e], + stdin => $test, stdout => $cipherfile)) + && run(app([$cmd, @d], + stdin => $cipherfile, stdout => $clearfile)) + && compare_text($test,$clearfile) == 0, $t); + unlink $cipherfile, $clearfile; + } + } +} + +unlink $test; -- 2.25.1