]>
Commit | Line | Data |
---|---|---|
e0a65194 RS |
1 | #! /usr/bin/env perl |
2 | # Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. | |
3 | # | |
4 | # Licensed under the OpenSSL license (the "License"). You may not use | |
5 | # this file except in compliance with the License. You can obtain a copy | |
6 | # in the file LICENSE in the source distribution or at | |
7 | # https://www.openssl.org/source/license.html | |
8 | ||
904ae334 RL |
9 | |
10 | use strict; | |
11 | use warnings; | |
12 | ||
13 | use File::Compare qw/compare_text/; | |
14 | use File::Copy; | |
904ae334 | 15 | use lib 'testlib'; |
42e0ccdf | 16 | use OpenSSL::Test qw/:DEFAULT/; |
904ae334 RL |
17 | |
18 | my %conversionforms = ( | |
8de4f3d3 RL |
19 | # Default conversion forms. Other series may be added with |
20 | # specific test types as key. | |
904ae334 | 21 | "*" => [ "d", "p" ], |
904ae334 RL |
22 | ); |
23 | sub tconversion { | |
24 | my $testtype = shift; | |
25 | my $t = shift; | |
26 | my @conversionforms = | |
27 | defined($conversionforms{$testtype}) ? | |
28 | @{$conversionforms{$testtype}} : | |
29 | @{$conversionforms{"*"}}; | |
30 | my @openssl_args = @_; | |
31 | if (!@openssl_args) { @openssl_args = ($testtype); } | |
32 | ||
33 | my $n = scalar @conversionforms; | |
34 | my $totaltests = | |
35 | 1 # for initializing | |
36 | + $n # initial conversions from p to all forms (A) | |
37 | + $n*$n # conversion from result of A to all forms (B) | |
38 | + 1 # comparing original test file to p form of A | |
39 | + $n*($n-1); # comparing first conversion to each fom in A with B | |
40 | $totaltests-- if ($testtype eq "p7d"); # no comparison of original test file | |
41 | plan tests => $totaltests; | |
42 | ||
43 | my @cmd = ("openssl", @openssl_args); | |
44 | ||
45 | my $init; | |
46 | if (scalar @openssl_args > 0 && $openssl_args[0] eq "pkey") { | |
47 | $init = ok(run(app([@cmd, "-in", $t, "-out", "$testtype-fff.p"])), | |
48 | 'initializing'); | |
49 | } else { | |
50 | $init = ok(copy($t, "$testtype-fff.p"), 'initializing'); | |
51 | } | |
52 | if (!$init) { | |
53 | diag("Trying to copy $t to $testtype-fff.p : $!"); | |
54 | } | |
55 | ||
56 | SKIP: { | |
57 | skip "Not initialized, skipping...", 22 unless $init; | |
58 | ||
59 | foreach my $to (@conversionforms) { | |
60 | ok(run(app([@cmd, | |
61 | "-in", "$testtype-fff.p", | |
62 | "-inform", "p", | |
9b56815d RL |
63 | "-out", "$testtype-f.$to", |
64 | "-outform", $to])), | |
65 | "p -> $to"); | |
904ae334 RL |
66 | } |
67 | ||
68 | foreach my $to (@conversionforms) { | |
69 | foreach my $from (@conversionforms) { | |
70 | ok(run(app([@cmd, | |
71 | "-in", "$testtype-f.$from", | |
72 | "-inform", $from, | |
9b56815d RL |
73 | "-out", "$testtype-ff.$from$to", |
74 | "-outform", $to])), | |
75 | "$from -> $to"); | |
904ae334 RL |
76 | } |
77 | } | |
78 | ||
79 | if ($testtype ne "p7d") { | |
4ada8be2 | 80 | is(cmp_text("$testtype-fff.p", "$testtype-f.p"), 0, |
904ae334 RL |
81 | 'comparing orig to p'); |
82 | } | |
83 | ||
84 | foreach my $to (@conversionforms) { | |
85 | next if $to eq "d"; | |
86 | foreach my $from (@conversionforms) { | |
4ada8be2 | 87 | is(cmp_text("$testtype-f.$to", "$testtype-ff.$from$to"), 0, |
904ae334 RL |
88 | "comparing $to to $from$to"); |
89 | } | |
90 | } | |
91 | } | |
92 | unlink glob "$testtype-f.*"; | |
93 | unlink glob "$testtype-ff.*"; | |
94 | unlink glob "$testtype-fff.*"; | |
95 | } | |
96 | ||
4ada8be2 AP |
97 | sub cmp_text { |
98 | return compare_text(@_, sub { | |
99 | $_[0] =~ s/\R//g; | |
100 | $_[1] =~ s/\R//g; | |
101 | return $_[0] ne $_[1]; | |
102 | }); | |
103 | } | |
104 | ||
904ae334 | 105 | 1; |