List Info

Thread: OpenSSL: openssl/test/ runex.pl




OpenSSL: openssl/test/ runex.pl
country flaguser name
Germany
2008-03-12 20:04:48
  OpenSSL CVS Repository
  http://cvs.openssl.org/
 
____________________________________________________________
________________

  Server: cvs.openssl.org                  Name:   Dr.
Stephen Henson
  Root:   /v/openssl/cvs                   Email:  steveopenssl.org
  Module: openssl                          Date:  
13-Mar-2008 02:04:48
  Branch: HEAD                             Handle:
2008031301044700

  Added files:
    openssl/test            runex.pl

  Log:
    RFC4134 S/MIME examples test script.

  Summary:
    Revision    Changes     Path
    1.1         +281 -0     openssl/test/runex.pl
 
____________________________________________________________
________________

  patch -p0 <<' .'
  Index: openssl/test/runex.pl
 
============================================================
================
  $ cvs diff -u -r0 -r1.1 runex.pl
  --- /dev/null	2008-03-13 02:04:06 +0100
  +++ runex.pl	2008-03-13 02:04:48 +0100
   -0,0 +1,281 
  +# test/runex.pl
  +# Written by Dr Stephen N Henson (steveopenssl.org) for the OpenSSL
  +# project.
  +#
  +#
============================================================
========
  +# Copyright (c) 2008 The OpenSSL Project.  All rights
reserved.
  +#
  +# Redistribution and use in source and binary forms, with
or without
  +# modification, are permitted provided that the following
conditions
  +# are met:
  +#
  +# 1. Redistributions of source code must retain the above
copyright
  +#    notice, this list of conditions and the following
disclaimer. 
  +#
  +# 2. Redistributions in binary form must reproduce the
above copyright
  +#    notice, this list of conditions and the following
disclaimer in
  +#    the documentation and/or other materials provided
with the
  +#    distribution.
  +#
  +# 3. All advertising materials mentioning features or use
of this
  +#    software must display the following acknowledgment:
  +#    "This product includes software developed by
the OpenSSL Project
  +#    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)&
quot;
  +#
  +# 4. The names "OpenSSL Toolkit" and
"OpenSSL Project" must not be used to
  +#    endorse or promote products derived from this
software without
  +#    prior written permission. For written permission,
please contact
  +#    licensingOpenSSL.org.
  +#
  +# 5. Products derived from this software may not be
called "OpenSSL"
  +#    nor may "OpenSSL" appear in their names
without prior written
  +#    permission of the OpenSSL Project.
  +#
  +# 6. Redistributions of any form whatsoever must retain
the following
  +#    acknowledgment:
  +#    "This product includes software developed by
the OpenSSL Project
  +#    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)&
quot;
  +#
  +# THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS
IS'' AND ANY
  +# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE
  +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR
  +# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL
PROJECT OR
  +# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL,
  +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT
  +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES;
  +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION)
  +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT,
  +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE)
  +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED
  +# OF THE POSSIBILITY OF SUCH DAMAGE.
  +#
============================================================
========
  +
  +# Perl script to run tests against S/MIME examples in
RFC4134
  +# Assumes all files are extracted in an directory called
"examples"
  +
  +my $badttest = 0;
  +my $verbose = 1;
  +
  +my $cmscmd = "../apps/openssl cms";
  +my $convcmd = "../apps/openssl x509 -inform
DER";
  +my $exdir = "examples";
  +
  +my test_list = (
  +["3.1.bin"	=> "dataout"],
  +["3.2.bin"	=> "encode, dataout"],
  +["4.1.bin"	=> "encode, verifyder,
content, dss"],
  +["4.2.bin"	=> "encode, verifyder, cont,
rsa"],
  +["4.3.bin"	=> "encode, verifyder,
cont_extern, dss"],
  +["4.4.bin"	=> "encode, verifyder, cont,
dss"],
  +["4.5.bin"	=> "verifyder, content,
rsa"],
  +["4.6.bin"	=> "encode, verifyder, cont,
dss"],
  +["4.7.bin"	=> "encode, verifyder, cont,
dss"],
  +["4.8.eml"	=> "verifymime, dss"],
  +["4.9.eml"	=> "verifymime, dss"],
  +["4.10.bin"	=> "encode, verifyder,
cont, dss"],
  +["4.11.bin"	=> "encode"],
  +["5.1.bin"	=> "encode"],
  +["5.2.bin"	=> "encode"],
  +["6.0.bin"	=> "encode, digest,
cont"],
  +["7.1.bin"	=> "encode"],
  +["7.2.bin"	=> "encode"]
  +);
  +
  +	if (!-d $exdir)
  +		{
  +		print STDERR "FATAL ERROR: examples directory
missing!!n";
  +		exit 1;
  +		}
  +
  +	system ("$convcmd -in $exdir/CarlDSSSelf.cer -out
$exdir/CarlDSSSelf.pem");
  +	system ("$convcmd -in $exdir/CarlRSASelf.cer -out
$exdir/CarlRSASelf.pem");
  +
  +	$cafile = "$cmsdir/CarlRSASelf.pem" if $tlist
=~ /rsa/;
  +
  +foreach (test_list) {
  +	my ($file, $tlist) = $_;
  +	print "Example file $file:n";
  +	if ($tlist =~ /encode/)
  +		{
  +		run_reencode_test($exdir, $file);
  +		}
  +	if ($tlist =~ /dataout/)
  +		{
  +		run_dataout_test($exdir, $file);
  +		}
  +	if ($tlist =~ /verify/)
  +		{
  +		run_verify_test($exdir, $tlist, $file);
  +		}
  +	if ($tlist =~ /digest/)
  +		{
  +		run_digest_test($exdir, $tlist, $file);
  +		}
  +
  +}
  +
  +unlink "cms.out";
  +unlink "cms.err";
  +unlink "tmp.der";
  +unlink "tmp.txt";
  +
  +if ($badtest) {
  +	print "n$badtest TESTS FAILED!!n";
  +} else {
  +	print "n***All tests successful***n";
  +}
  +
  +
  +sub run_reencode_test
  +	{
  +	my ($cmsdir, $tfile) = _;
  +	unlink "tmp.der";
  +
  +	system ("$cmscmd -cmsout -inform DER -outform
DER" .
  +		" -in $cmsdir/$tfile -out tmp.der");
  +
  +	if ($?)
  +		{
  +		print "tReencode command FAILED!!n";
  +		$badtest++;
  +		}
  +	elsif (!cmp_files("$cmsdir/$tfile",
"tmp.der"))
  +		{
  +		print "tReencode FAILED!!n";
  +		$badtest++;
  +		}
  +	else
  +		{
  +		print "tReencode passedn" if $verbose;
  +		}
  +	}
  +
  +sub run_dataout_test
  +	{
  +	my ($cmsdir, $tfile) = _;
  +	unlink "tmp.txt";
  +
  +	system ("$cmscmd -data_out -inform DER" .
  +		" -in $cmsdir/$tfile -out tmp.txt");
  +
  +	if ($?)
  +		{
  +		print "tDataout command FAILED!!n";
  +		$badtest++;
  +		}
  +	elsif (!cmp_files("$cmsdir/ExContent.bin",
"tmp.txt"))
  +		{
  +		print "tDataout compare FAILED!!n";
  +		$badtest++;
  +		}
  +	else
  +		{
  +		print "tDataout passedn" if $verbose;
  +		}
  +	}
  +
  +sub run_verify_test
  +	{
  +	my ($cmsdir, $tlist, $tfile) = _;
  +	unlink "tmp.txt";
  +
  +	$form = "DER" if $tlist =~ /verifyder/;
  +	$form = "SMIME" if $tlist =~ /verifymime/;
  +	$cafile = "$cmsdir/CarlDSSSelf.pem" if $tlist
=~ /dss/;
  +	$cafile = "$cmsdir/CarlRSASelf.pem" if $tlist
=~ /rsa/;
  +
  +	$cmd = "$cmscmd -verify -inform $form" .
  +		" -CAfile $cafile" .
  +		" -in $cmsdir/$tfile -out tmp.txt";
  +
  +	$cmd .= " -content $cmsdir/ExContent.bin" if
$tlist =~ /cont_extern/;	
  +
  +	system ("$cmd 2>cms.err 1>cms.out");
  +
  +	if ($?)
  +		{
  +		print "tVerify command FAILED!!n";
  +		$badtest++;
  +		}
  +	elsif ($tlist =~ /cont/ &&
  +		!cmp_files("$cmsdir/ExContent.bin",
"tmp.txt"))
  +		{
  +		print "tVerify content compare FAILED!!n";
  +		$badtest++;
  +		}
  +	else
  +		{
  +		print "tVerify passedn" if $verbose;
  +		}
  +	}
  +
  +sub run_digest_test
  +	{
  +	my ($cmsdir, $tlist, $tfile) = _;
  +	unlink "tmp.txt";
  +
  +	system ("$cmscmd -digest_verify -inform DER"
.
  +		" -in $cmsdir/$tfile -out tmp.txt");
  +
  +	if ($?)
  +		{
  +		print "tDigest verify command FAILED!!n";
  +		$badtest++;
  +		}
  +	elsif ($tlist =~ /cont/ &&
  +		!cmp_files("$cmsdir/ExContent.bin",
"tmp.txt"))
  +		{
  +		print "tDigest verify content compare
FAILED!!n";
  +		$badtest++;
  +		}
  +	else
  +		{
  +		print "tDigest verify passedn" if
$verbose;
  +		}
  +	}
  +
  +sub cmp_files
  +	{
  +	my ($f1, $f2) = _;
  +	my ($fp1, $fp2);
  +
  +	my ($rd1, $rd2);
  +
  +	if (!open($fp1, "<$f1") ) {
  +		print STDERR "Can't Open file $f1n";
  +		return 0;
  +	}
  +
  +	if (!open($fp2, "<$f2") ) {
  +		print STDERR "Can't Open file $f2n";
  +		return 0;
  +	}
  +
  +	binmode $fp1;
  +	binmode $fp2;
  +
  +	my $ret = 0;
  +
  +	for (;;)
  +		{
  +		$n1 = sysread $fp1, $rd1, 4096;
  +		$n2 = sysread $fp2, $rd2, 4096;
  +		last if ($n1 != $n2);
  +		last if ($rd1 ne $rd2);
  +
  +		if ($n1 == 0)
  +			{
  +			$ret = 1;
  +			last;
  +			}
  +
  +		}
  +
  +	close $fp1;
  +	close $fp2;
  +
  +	return $ret;
  +
  +	}
  +
  +
   .
____________________________________________________________
__________
OpenSSL Project                                 http://www.openssl.org
CVS Repository Commit List                    
openssl-cvsopenssl.org
Automated List Manager                          
majordomoopenssl.org

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )