You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by bl...@apache.org on 2003/11/12 05:26:09 UTC
cvs commit: xml-security/c/src basicTests.pl basicTests
blautenb 2003/11/11 20:26:09
Added: c/src basicTests.pl
Removed: c/src basicTests
Log:
Test script now in perl for better cross platform support
Revision Changes Path
1.1 xml-security/c/src/basicTests.pl
Index: basicTests.pl
===================================================================
#
# The Apache Software License, Version 1.1
#
#
# Copyright (c) 1999 The Apache Software Foundation. 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. The end-user documentation included with the redistribution,
# if any, must include the following acknowledgment:
# "This product includes software developed by the
# Apache Software Foundation (http://www.apache.org/)."
# Alternately, this acknowledgment may appear in the software itself,
# if and wherever such third-party acknowledgments normally appear.
#
# 4. The names "<WebSig>" and "Apache Software Foundation" must
# not be used to endorse or promote products derived from this
# software without prior written permission. For written
# permission, please contact apache@apache.org.
#
# 5. Products derived from this software may not be called "Apache",
# nor may "Apache" appear in their name, without prior written
# permission of the Apache Software Foundation.
#
# THIS SOFTWARE IS PROVIDED ``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 APACHE SOFTWARE FOUNDATION 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.
# ====================================================================
#
# This software consists of voluntary contributions made by many
# individuals on behalf of the Apache Software Foundation and was
# originally based on software copyright (c) 2001, Institute for
# Data Communications Systems, <http://www.nue.et-inf.uni-siegen.de/>.
# The development of this software was partly funded by the European
# Commission in the <WebSig> project in the ISIS Programme.
# For more information on the Apache Software Foundation, please see
# <http://www.apache.org/>.
# A perl based test script for running all the interop examples
# There can be a number of failures.
#
# 1. the file http://xmldsig.pothole.com/xml-stylesheet.txt no
# longer exists. I have it on a test http server to make these
# tests work.
# 2. If you are not online to the Internet, the checks for documents
# at www.w3.org will also fail.
require 5.000;
use strict;
# Counters
my $dsig_failure_count = 0;
my $dsig_pass_count = 0;
my $xenc_failure_count = 0;
my $xenc_pass_count = 0;
my $failure_count = 0;
my $pass_count = 0;
my $total_dsig_count = 0;
my $total_xenc_count = 0;
# Checksig setup
my $checksig_args = "-x";
# Program setup
my $checksig = "../bin/checksig";
my $cipher = "../bin/cipher";
# Directory setup
my $data_dir = "../../data";
# Digital Signature Tests
my $dsig_file = 0;
my $dsig_args = 1;
my @dsig_array=(
"at/iaik/ixsil/coreFeatures/signatures/anonymousReferenceSignature.xml,-a",
"at/iaik/ixsil/coreFeatures/signatures/manifestSignature.xml,",
# will fail if no network
"at/iaik/ixsil/coreFeatures/signatures/signatureTypesSignature.xml,",
"at/iaik/ixsil/signatureAlgorithms/signatures/dSASignature.xml,",
"at/iaik/ixsil/signatureAlgorithms/signatures/hMACShortSignature.xml,-h secret",
"at/iaik/ixsil/signatureAlgorithms/signatures/hMACSignature.xml,-h secret",
"at/iaik/ixsil/signatureAlgorithms/signatures/rSASignature.xml,",
"at/iaik/ixsil/transforms/signatures/base64DecodeSignature.xml,",
"at/iaik/ixsil/transforms/signatures/c14nSignature.xml,",
"at/iaik/ixsil/transforms/signatures/envelopedSignatureSignature.xml,",
"at/iaik/ixsil/transforms/signatures/xPathSignature.xml,",
"com/rsasecurity/bdournaee/certj201_enveloped.xml,",
"com/rsasecurity/bdournaee/certj201_enveloping.xml,",
"ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/signature.xml,",
"ie/baltimore/merlin-examples/merlin-exc-c14n-one/exc-signature.xml,",
"ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-keyname.xml,-i",
"ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-retrievalmethod-rawx509crt.xml,-i",
"ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-crt-crl.xml,-i",
"ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-crt.xml,",
"ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-is.xml,-i",
"ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-ski.xml,-i",
"ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-sn.xml,-i",
"ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa.xml,",
"ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-b64-dsa.xml,",
"ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa.xml,",
"ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40.xml,-h secret",
"ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1.xml,-h secret",
"ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa.xml,",
"ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-b64-dsa.xml,",
"ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-dsa.xml,",
# These two are removed, as this is a pre-release syntax that the library
# does not understand
# testSig $data_dir/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl.xml
# testSig $data_dir/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature.xml
"ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/signature.xml,",
"interop/c14n/Y1/exc-signature.xml,",
# MD5 now implemented
"interop/c14n/Y2/signature-joseph-exc.xml,",
"interop/c14n/Y3/signature.xml,",
"interop/c14n/Y4/signature.xml,",
"interop/c14n/Y5/signature.xml,",
"interop/c14n/Y5/signatureCommented.xml,",
# XPath Filter
"interop/xfilter2/merlin-xpath-filter2-three/sign-spec.xml,",
"interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl.xml,",
);
# XML Encryption Tests
my $xenc_result = 0;
my $xenc_file = 1;
my $xenc_args = 2;
my @xenc_array=(
#bad-encrypt-content-aes128-cbc-kw-aes192.xml
#decryption-transform-except.xml
#decryption-transform.xml
"<Number>1234 567890 12345</Number>,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml,-i -de",
"<Number>1234 567890 12345</Number>,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml,-i -de",
"<Number>1234 567890 12345</Number>,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml,-i -de",
"top secret message,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml,-i",
"top secret message,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml,-i",
"top secret message,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml,-i",
"top secret message,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml,-i",
"<Number>1234 567890 12345</Number>,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml,-i -de",
# CipherRef now supported
"<Number>1234 567890 12345</Number>,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml,-i -de",
"<Number>1234 567890 12345</Number>,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml,-i -de",
"<Number>1234 567890 12345</Number>,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml,-i -de",
"<Number>1234 567890 12345</Number>,ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml,-i -de",
# Unsupported Key-wraps
#encrypt-content-aes192-cbc-dh-sha512.xml
#encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
#encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml
# Don't yet support encrypted keysin signatures (or SHA-2/Ripemd)
#encsig-hmac-sha256-dh.xml
#encsig-hmac-sha256-kw-tripledes-dh.xml
#encsig-hmac-sha256-rsa-1_5.xml
#encsig-hmac-sha256-rsa-oaep-mgf1p.xml
#encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml
#encsig-sha256-hmac-sha256-kw-aes128.xml
#encsig-sha384-hmac-sha384-kw-aes192.xml
#encsig-sha512-hmac-sha512-kw-aes256.xml
# Don't yet check for bad encryption
#bad-encrypt-content-aes128-cbc-kw-aes192.xml
# Don't yet support signature decryption transforms
#decryption-transform-except.xml
#decryption-transform.xml
);
# Run the signature tests
print "\n\n";
print "Running XML Digital Signature Interop Tests\n";
print "-------------------------------------------\n\n";
foreach (@dsig_array) {
$total_dsig_count++;
my @fields = split(/\,/, $_);
my $file_name = $fields[$dsig_file];
my $args = $fields[$dsig_args];
my $result = `$checksig $checksig_args $args $data_dir/$file_name`;
if ($? == 0) {
print "$file_name OK\n";
$dsig_pass_count++;
}
else {
print "\nFAILURE\n";
print "---------\n";
print "\n$file_name failed. \n\nMessage was \n\n$result\n\n";
print "---------\n\n";
$dsig_failure_count++;
}
};
print "\n\n";
print "DSIG Tests complete\n\n";
print "Total Tests = $total_dsig_count\n";
print "Number Passed = $dsig_pass_count\n";
print "Number Failed = $dsig_failure_count\n\n";
print "-------------------------------------------\n\n";
# Now run the encryption tests
print "\n\n";
print "Running XML Encryption Interop Tests\n";
print "------------------------------------\n\n";
foreach (@xenc_array) {
$total_xenc_count++;
my @fields = split(/\s*,\s*/, $_);
my $expected_result = $fields[$xenc_result];
my $file_name = $fields[$xenc_file];
my $args = $fields[$xenc_args];
my $result = `$cipher $args $data_dir/$file_name`;
if ($? == 0 && $result =~ /$expected_result/) {
print "$file_name OK\n";
$xenc_pass_count++;
}
else {
print "\nFAILURE\n";
print "---------\n";
print "\n$file_name failed. \n\nOutut was \n\n$result\n\n";
print "---------\n\n";
$xenc_failure_count++;
}
};
print "\n\n";
print "XENC Tests complete\n\n";
print "Total Tests = $total_xenc_count\n";
print "Number Passed = $xenc_pass_count\n";
print "Number Failed = $xenc_failure_count\n\n";
my $total_count = $total_dsig_count + $total_xenc_count;
my $total_passed = $dsig_pass_count + $xenc_pass_count;
my $total_failed = $dsig_failure_count + $xenc_failure_count;
print "All tests complete.\n\n";
print "Total Tests = $total_count\n";
print "Total Passed = $total_passed\n";
print "Total Failed = $total_failed\n\n";