From: Richard Levitte Date: Fri, 17 Apr 2015 18:07:13 +0000 (+0200) Subject: Add the encryption test recipe X-Git-Tag: OpenSSL_1_1_0-pre1~682 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=13350a0c0eb8937c299c394a88d6cb51d3356d1f;p=oweals%2Fopenssl.git Add the encryption test recipe This tests all available openssl cipher commands. Reviewed-by: Rich Salz --- 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;