diff options
author | Richard Levitte <levitte@openssl.org> | 2015-04-17 20:07:13 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2015-09-07 16:10:57 +0200 |
commit | 13350a0c0eb8937c299c394a88d6cb51d3356d1f (patch) | |
tree | 03b64e97d91c0bcab9f17291f8f52b240168790f /test/recipes/20-test_enc.t | |
parent | 894025c6428e7a78fb251e7a16522c3b7351f357 (diff) |
Add the encryption test recipe
This tests all available openssl cipher commands.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'test/recipes/20-test_enc.t')
-rw-r--r-- | test/recipes/20-test_enc.t | 65 |
1 files changed, 65 insertions, 0 deletions
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; |