[xmlsec] cleanup tests



commit 0f1f1ffb1b39dc541494461a06809b76b8afd21b
Author: Aleksey Sanin <aleksey aleksey com>
Date:   Fri Apr 30 14:50:54 2010 -0700

    cleanup tests

 Makefile.am       |   65 +++++++--
 tests/testDSig.sh |  185 ++-----------------------
 tests/testEnc.sh  |  325 ++++++++++++++++++++-----------------------
 tests/testKeys.sh |  170 +++++++---------------
 tests/testXKMS.sh |  197 ++++++++++++--------------
 tests/testrun.sh  |  404 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 764 insertions(+), 582 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index a55dc74..85bff4a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -85,11 +85,28 @@ check: check-all check-info
 
 check-all: $(TEST_APP) 
 	@($(PRECHECK_COMMANDS) && \
-	for i in $(CHECK_CRYPTO_LIST) ; do \
-	    echo "=================== Checking xmlsec-$$i =================================" && \
-	    $(SHELL) ./tests/testKeys.sh $$i $(ABS_SRCDIR)/tests $(ABS_BUILDDIR)/$(TEST_APP) der && \
-	    $(SHELL) ./tests/testDSig.sh $$i $(ABS_SRCDIR)/tests $(ABS_BUILDDIR)/$(TEST_APP) der && \
-	    $(SHELL) ./tests/testEnc.sh  $$i $(ABS_SRCDIR)/tests $(ABS_BUILDDIR)/$(TEST_APP) der ; \
+	for crypto in $(CHECK_CRYPTO_LIST) ; do \
+	    echo "=================== Checking xmlsec-$$crypto =================================" && \
+	    $(SHELL) ./tests/testrun.sh \
+	        $(ABS_SRCDIR)/tests/testKeys.sh \
+	        $$crypto \
+	        $(ABS_SRCDIR)/tests \
+	        $(ABS_BUILDDIR)/$(TEST_APP) der \
+	    && \
+	    $(SHELL) ./tests/testrun.sh \
+	        $(ABS_SRCDIR)/tests/testDSig.sh \
+	        $$crypto \
+	        $(ABS_SRCDIR)/tests \
+	        $(ABS_BUILDDIR)/$(TEST_APP) \
+	        der \
+	    && \
+	    $(SHELL) ./tests/testrun.sh \
+	        $(ABS_SRCDIR)/tests/testEnc.sh \
+	        $$crypto \
+	        $(ABS_SRCDIR)/tests \
+	        $(ABS_BUILDDIR)/$(TEST_APP) \
+	        der \
+	    ; \
 	done; )
 
 check-info:
@@ -102,21 +119,45 @@ check-info:
 	@echo "--- when you use OpenSSL 0.9.6 (see the FAQ for details)             ---"
 	@echo "-------------------------- ATTENTION -----------------------------------"
 
-check-km: $(TEST_APP)
+check-keys: $(TEST_APP)
 	@($(PRECHECK_COMMANDS) && \
-	$(SHELL) ./tests/testKeys.sh default $(ABS_SRCDIR)/tests $(ABS_BUILDDIR)/$(TEST_APP) der)
+	$(SHELL) ./tests/testrun.sh \
+	    $(ABS_SRCDIR)/tests/testKeys.sh \
+	    default \
+	    $(ABS_SRCDIR)/tests \
+	    $(ABS_BUILDDIR)/$(TEST_APP) \
+	    der \
+	)
 
 check-dsig: $(TEST_APP) 	
 	@($(PRECHECK_COMMANDS) && \
-	$(SHELL) ./tests/testDSig.sh default $(ABS_SRCDIR)/tests $(ABS_BUILDDIR)/$(TEST_APP) der)
+	$(SHELL) ./tests/testrun.sh \
+	    $(ABS_SRCDIR)/tests/testDSig.sh \
+	    default \
+	    $(ABS_SRCDIR)/tests \
+	    $(ABS_BUILDDIR)/$(TEST_APP) \
+	    der \
+	)
 
-check-xkms: $(TEST_APP) 	
+check-enc: $(TEST_APP) 
 	@($(PRECHECK_COMMANDS) && \
-	$(SHELL) ./tests/testXKMS.sh default $(ABS_SRCDIR)/tests $(ABS_BUILDDIR)/$(TEST_APP) der)
+	$(SHELL) ./tests/testrun.sh \
+	    $(ABS_SRCDIR)/tests/testEnc.sh  \
+	    default \
+	    $(ABS_SRCDIR)/tests \
+	    $(ABS_BUILDDIR)/$(TEST_APP) \
+	    der \
+	)
 
-check-enc: $(TEST_APP) 
+check-xkms: $(TEST_APP) 	
 	@($(PRECHECK_COMMANDS) && \
-	$(SHELL) ./tests/testEnc.sh  default $(ABS_SRCDIR)/tests $(ABS_BUILDDIR)/$(TEST_APP) der)
+	$(SHELL) ./tests/testrun.sh \
+	    $(ABS_SRCDIR)/tests/testXKMS.sh \
+	    default \
+	    $(ABS_SRCDIR)/tests \
+	    $(ABS_BUILDDIR)/$(TEST_APP) \
+	    der \
+	)
 
 memcheck-res:
 	@grep -i lost /tmp/*.log | sed 's/==.*== *//' | sort -u
diff --git a/tests/testDSig.sh b/tests/testDSig.sh
index c39dcb1..7e25938 100755
--- a/tests/testDSig.sh
+++ b/tests/testDSig.sh
@@ -1,176 +1,17 @@
-#!/bin/sh -x
-
-OS_ARCH=`uname -o`
-OS_KERNEL=`uname -s`
-
-crypto=$1
-if [ "z$OS_ARCH" = "zCygwin" ] ; then
-	topfolder=`cygpath -wa $2`
-	xmlsec_app=`cygpath -a $3`
-else
-	topfolder=$2
-	xmlsec_app=$3
-fi
-file_format=$4
-
-pub_key_format=$file_format
-cert_format=$file_format
-priv_key_option="--pkcs12"
-priv_key_format="p12"
-
-# On Windows, one needs to specify Crypto Service Provider (CSP)
-# in the pkcs12 file to ensure it is loaded correctly to be used
-# with SHA2 algorithms. Worse, the CSP is different for XP and older 
-# versions
-if [ "z$OS_ARCH" = "zCygwin" ] ; then
-	if [ "z$OS_KERNEL" = "zCYGWIN_NT-5.1" ] ; then
-		priv_key_suffix="-winxp"
-	else
-		priv_key_suffix="-win"
-	fi
-else
-	priv_key_suffix=""
-fi
-
-if [ "z$TMPFOLDER" = "z" ] ; then
-    TMPFOLDER=/tmp
-fi
-timestamp=`date +%Y%m%d_%H%M%S` 
-if [ "z$OS_ARCH" = "zCygwin" ] ; then
-	tmpfile=`cygpath -wa $TMPFOLDER/testDSig.$timestamp-$$.tmp`
-	logfile=`cygpath -wa $TMPFOLDER/testDSig.$timestamp-$$.log`
-else
-	tmpfile=$TMPFOLDER/testDSig.$timestamp-$$.tmp
-	logfile=$TMPFOLDER/testDSig.$timestamp-$$.log
-fi
-
-script="$0"
-
-# prepate crypto config folder
-crypto_config=$TMPFOLDER/xmlsec-crypto-config
-keysfile=$crypto_config/keys.xml
-
-valgrind_suppression="--suppressions=$topfolder/openssl.supp --suppressions=$topfolder/nss.supp"
-valgrind_options="--leak-check=yes --show-reachable=yes --num-callers=32 -v"
-
-if [ "z$crypto" != "z" -a "z$crypto" != "zdefault" ] ; then
-    xmlsec_params="$xmlsec_params --crypto $crypto"
-fi
-xmlsec_params="$xmlsec_params --crypto-config $crypto_config"
-
-if [ -n "$DEBUG_MEMORY" ] ; then 
-    export VALGRIND="valgrind $valgrind_options"
-    export REPEAT=3
-    xmlsec_params="$xmlsec_params --repeat $REPEAT"
-fi
-
-if [ -n "$PERF_TEST" ] ; then 
-    xmlsec_params="$xmlsec_params --repeat $PERF_TEST"
-fi
-
-res_success="success"
-res_fail="fail"
-printRes() {
-    expected_res=$1
-    actual_res=$2
-
-    # convert status to string
-    if [ $actual_res = 0 ]; then
-        actual_res=$res_success
-    else
-        actual_res=$res_fail
-    fi
-
-    # check
-    if [ "z$expected_res" = "z$actual_res" ] ; then
-        echo "   OK"
-    elif [ "z$expected_res" = "z$res_fail" ] ; then
-        echo " Fail"
-    fi
-
-    # memlog
-    if [ -f .memdump ] ; then 
-        cat .memdump >> $logfile 
-    fi
-}
-
-execDSigTest() {
-    expected_res=$1
-    folder=$2
-    file=$3
-    req_transforms=$4
-    params1=$5
-    params2=$6
-    params3=$7
-    old_pwd=`pwd`
-    rm -f $tmpfile
-
-    # check params
-    if [ -n "$folder" ] ; then
-	cd $topfolder/$folder
-        full_file=$file
-	echo $folder/$file
-	echo "Test: $folder/$file in folder " `pwd` " ($expected_res)" >> $logfile
-    else
-	full_file=$topfolder/$file
-        echo $file 
-	echo "Test: $folder/$file ($expected_res)" >> $logfile
-    fi
-
-    if [ "z$expected_res" != "z$res_success" -a "z$expected_res" != "z$res_fail" ] ; then
-	echo " Bad parameter: expected_res=$expected_res"
-	cd $old_pwd
-	return
-    fi
-
-    # check transforms
-    if [ -n "$req_transforms" ] ; then
-	printf "    Checking required transforms                         "
-        echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $logfile
-	$xmlsec_app check-transforms $xmlsec_params $req_transforms >> $logfile 2>> $logfile
-	res=$?
-	if [ $res = 0 ]; then
-	    echo "   OK"
-	else
-	    echo " Skip"
-	    cd $old_pwd
-	    return
-	fi
-    fi
-
-    # run tests
-    if [ -n "$params1" ] ; then
-	printf "    Verify existing signature                            "
-	echo "$xmlsec_app verify $xmlsec_params $params1 $full_file.xml" >> $logfile
-	$VALGRIND $xmlsec_app verify $xmlsec_params $params1 $full_file.xml >> $logfile 2>> $logfile
-	printRes $expected_res $?
-    fi
-
-    if [ -n "$params2" -a -z "$PERF_TEST" ] ; then
-	printf "    Create new signature                                 "
-	echo "$xmlsec_app sign $xmlsec_params $params2 --output $tmpfile $full_file.tmpl" >> $logfile
-	$VALGRIND $xmlsec_app sign $xmlsec_params $params2 --output $tmpfile $full_file.tmpl >> $logfile 2>> $logfile
-	printRes $expected_res $?
-    fi
-    
-    if [ -n "$params3" -a -z "$PERF_TEST" ] ; then
-	printf "    Verify new signature                                 "
-	echo "$xmlsec_app verify $xmlsec_params $params3 $tmpfile" >> $logfile
-	$VALGRIND $xmlsec_app verify $xmlsec_params $params3 $tmpfile >> $logfile 2>> $logfile
-	printRes $expected_res $?
-    fi
-
-    # done
-    cd $old_pwd
-}
-
-echo "--- testDSig started for xmlsec-$crypto library ($timestamp)" 
+#!/bin/sh
+#
+# This script needs to be called from testrun.sh script
+#
+
+##########################################################################
+##########################################################################
+##########################################################################
+echo "--- testDSig started for xmlsec-$crypto library ($timestamp)"
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
 echo "--- log file is $logfile"
 echo "--- testDSig started for xmlsec-$crypto library ($timestamp)" >> $logfile
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $logfile
 
-
 ##########################################################################
 ##########################################################################
 ##########################################################################
@@ -861,7 +702,6 @@ execDSigTest $res_success \
 # test dynamic signature
 #
 ##########################################################################
-
 echo "Dynamic signature template"
 printf "    Create new signature                                 "
 echo "$xmlsec_app sign-tmpl $xmlsec_params --keys-file $keysfile --output $tmpfile" >> $logfile
@@ -932,9 +772,10 @@ execDSigTest $res_fail \
     "sha1 rsa-sha1" \
     "--trusted-$cert_format certs/rsa-ca-cert.$cert_format"
 
-rm -rf $tmpfile
-
+##########################################################################
+##########################################################################
+##########################################################################
 echo "--- testDSig finished" >> $logfile
 echo "--- testDSig finished"
-echo "--- detailed log is written to  $logfile" 
+echo "--- detailed log is written to  $logfile"
 
diff --git a/tests/testEnc.sh b/tests/testEnc.sh
index 7fad5a6..2d3b2df 100755
--- a/tests/testEnc.sh
+++ b/tests/testEnc.sh
@@ -1,126 +1,11 @@
-#!/bin/sh 
-
-OS_ARCH=`uname -o`
-
-crypto=$1
-topfolder=$2
-xmlsec_app=$3
-file_format=$4
-
-pub_key_format=$file_format
-cert_format=$file_format
-priv_key_option="--pkcs12"
-priv_key_format="p12"
-
-if [ "z$TMPFOLDER" = "z" ] ; then
-    TMPFOLDER=/tmp
-fi
-
-timestamp=`date +%Y%m%d_%H%M%S` 
-tmpfile=$TMPFOLDER/testEnc.$timestamp-$$.tmp
-logfile=$TMPFOLDER/testEnc.$timestamp-$$.log
-script="$0"
-
-# prepate crypto config folder
-crypto_config=$TMPFOLDER/xmlsec-crypto-config
-keysfile=$crypto_config/keys.xml
-
-valgrind_suppression="--suppressions=$topfolder/openssl.supp --suppressions=$topfolder/nss.supp"
-valgrind_options="--leak-check=yes --show-reachable=yes --num-callers=32 -v"
-
-
-if [ "z$crypto" != "z" -a "z$crypto" != "zdefault" ] ; then
-    xmlsec_params="$xmlsec_params --crypto $crypto"
-fi
-xmlsec_params="$xmlsec_params --crypto-config $crypto_config"
-
-if [ -n "$DEBUG_MEMORY" ] ; then 
-    export VALGRIND="valgrind $valgrind_options"
-    export REPEAT=3
-    xmlsec_params="$xmlsec_params --repeat $REPEAT"
-fi
-
-if [ -n "$PERF_TEST" ] ; then 
-    export xmlsec_params="$xmlsec_params --repeat $PERF_TEST"
-fi
-
-printRes() {
-    if [ $1 = 0 ]; then
-	echo "   OK"
-    else 
-        echo " Fail"
-    fi
-    if [ -f .memdump ] ; then 
-	cat .memdump >> $logfile 
-    fi
-}
-
-execEncTest() {    
-    filename=$1
-    req_transforms=$2
-    params1=$3
-    params2=$4
-    params3=$5
-
-    echo $filename
-    echo $filename >>  $logfile 
-    file=$topfolder/$filename      
-
-    if [ -n "$req_transforms" ] ; then
-	printf "    Checking required transforms                         "
-        echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $logfile
-	$xmlsec_app check-transforms $xmlsec_params $req_transforms >> $logfile 2>> $logfile
-	res=$?
-	if [ $res = 0 ]; then
-    	    echo "   OK"	    
-	else
-	    echo " Skip"
-	    return
-	fi
-    fi
-    
-    printf "    Decrypt existing document                            "
-    rm -f $tmpfile
-
-    if [ "z$OS_ARCH" = "zCygwin" ] ; then
-	diff_param=-uw
-    else
-	diff_param=-u
-    fi
-
-    echo "$xmlsec_app decrypt $xmlsec_params $params1 $file.xml" >>  $logfile 
-    $VALGRIND $xmlsec_app decrypt $xmlsec_params $params1 $file.xml > $tmpfile 2>> $logfile
-    if [ $? = 0 ]; then
-	diff $diff_param $file.data $tmpfile >> $logfile 2>> $logfile
-	printRes $?
-    else 
-	echo " Error"
-    fi
-
-    if [ -n "$params2"  -a -z "$PERF_TEST" ] ; then
-	printf "    Encrypt document                                     "
-	rm -f $tmpfile
-	echo "$xmlsec_app encrypt $xmlsec_params $params2 --output $tmpfile $file.tmpl" >>  $logfile 
-	$VALGRIND $xmlsec_app encrypt $xmlsec_params $params2 --output $tmpfile $file.tmpl >> $logfile 2>> $logfile
-	printRes $?
-	
-	if [ -n "$params4" ] ; then 
-	    if [ -z "$VALGRIND" ] ; then
-	        printf "    Decrypt new document                                 "
-		echo "$xmlsec_app decrypt $xmlsec_params $params4 --output $tmpfile.2 $tmpfile" >>  $logfile 
-	        $VALGRIND $xmlsec_app decrypt $xmlsec_params $params4 --output $tmpfile.2 $tmpfile >> $logfile 2>> $logfile
-		if [ $? = 0 ]; then
-		    diff $diff_param $file.data $tmpfile.2 >> $logfile 2>> $logfile
-		    printRes $?
-    		else 
-		    echo " Error"
-		fi
-	    fi
-	fi
-    fi
-    rm -f $tmpfile $tmpfile.2
-}
+#!/bin/sh
+#
+# This script needs to be called from testrun.sh script
+#
 
+##########################################################################
+##########################################################################
+##########################################################################
 echo "--- testEnc started for xmlsec-$crypto library ($timestamp)"
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" 
 echo "--- log file is $logfile"
@@ -128,64 +13,89 @@ echo "--- testEnc started for xmlsec-$crypto library ($timestamp)" >> $logfile
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $logfile
 
 ##########################################################################
+##########################################################################
+##########################################################################
+echo "--------- Positive Testing ----------"
+
+##########################################################################
 #
 # aleksey-xmlenc-01
 #
 ##########################################################################
 
-execEncTest "aleksey-xmlenc-01/enc-des3cbc-keyname" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-des3cbc-keyname" \
     "tripledes-cbc" \
     "--keys-file $topfolder/keys/keys.xml" \
     "--keys-file $keysfile --binary-data $topfolder/aleksey-xmlenc-01/enc-des3cbc-keyname.data" \
     "--keys-file $keysfile"
 
-execEncTest "aleksey-xmlenc-01/enc-des3cbc-keyname2" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-des3cbc-keyname2" \
     "tripledes-cbc" \
     "--keys-file $topfolder/keys/keys.xml" \
     "--keys-file $keysfile --binary-data $topfolder/aleksey-xmlenc-01/enc-des3cbc-keyname2.data" \
     "--keys-file $keysfile"
 
-execEncTest "aleksey-xmlenc-01/enc-aes128cbc-keyname" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-aes128cbc-keyname" \
     "aes128-cbc" \
     "--keys-file $topfolder/keys/keys.xml" \
     "--keys-file $keysfile --binary-data $topfolder/aleksey-xmlenc-01/enc-aes128cbc-keyname.data" \
     "--keys-file $keysfile"
 
-execEncTest "aleksey-xmlenc-01/enc-aes192cbc-keyname" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-aes192cbc-keyname" \
     "aes192-cbc" \
     "--keys-file $topfolder/keys/keys.xml" \
     "--keys-file $keysfile --binary-data $topfolder/aleksey-xmlenc-01/enc-aes192cbc-keyname.data" \
     "--keys-file $keysfile"
 
-execEncTest "aleksey-xmlenc-01/enc-aes192cbc-keyname-ref" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-aes192cbc-keyname-ref" \
     "aes192-cbc" \
     "--keys-file $topfolder/keys/keys.xml"
 
-execEncTest "aleksey-xmlenc-01/enc-aes256cbc-keyname" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-aes256cbc-keyname" \
     "aes256-cbc" \
     "--keys-file $topfolder/keys/keys.xml" \
     "--keys-file $keysfile --binary-data $topfolder/aleksey-xmlenc-01/enc-aes256cbc-keyname.data" \
     "--keys-file $keysfile"
 
 execEncTest "aleksey-xmlenc-01/enc-des3cbc-keyname-content" \
-    "tripledes-cbc" \
+    "tripled$res_success \
+    "" \
+    es-cbc" \
     "--keys-file $topfolder/keys/keys.xml" \
     "--keys-file $keysfile --xml-data $topfolder/aleksey-xmlenc-01/enc-des3cbc-keyname-content.data --node-id Test" \
     "--keys-file $keysfile"
 
-execEncTest "aleksey-xmlenc-01/enc-des3cbc-keyname-element" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-des3cbc-keyname-element" \
     "tripledes-cbc" \
     "--keys-file $topfolder/keys/keys.xml" \
     "--keys-file $keysfile --xml-data $topfolder/aleksey-xmlenc-01/enc-des3cbc-keyname-element.data --node-id Test" \
     "--keys-file $keysfile"
 
-execEncTest "aleksey-xmlenc-01/enc-des3cbc-keyname-element-root" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-des3cbc-keyname-element-root" \
     "tripledes-cbc" \
     "--keys-file $topfolder/keys/keys.xml" \
     "--keys-file $keysfile --xml-data $topfolder/aleksey-xmlenc-01/enc-des3cbc-keyname-element-root.data --node-id Test" \
     "--keys-file $keysfile"
 
-execEncTest "aleksey-xmlenc-01/enc-des3cbc-aes192-keyname" \
+execEncTest $res_success \
+    "" \
+    "aleksey-xmlenc-01/enc-des3cbc-aes192-keyname" \
     "tripledes-cbc kw-aes192" \
     "--keys-file $topfolder/keys/keys.xml --enabled-key-data key-name,enc-key" \
     "--keys-file $keysfile  --session-key des-192  --binary-data $topfolder/aleksey-xmlenc-01/enc-des3cbc-aes192-keyname.data" \
@@ -197,65 +107,87 @@ execEncTest "aleksey-xmlenc-01/enc-des3cbc-aes192-keyname" \
 #
 ##########################################################################
 
-execEncTest "merlin-xmlenc-five/encrypt-data-aes128-cbc" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-data-aes128-cbc" \
     "aes128-cbc" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml --binary-data $topfolder/merlin-xmlenc-five/encrypt-data-aes128-cbc.data" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
 
-execEncTest "merlin-xmlenc-five/encrypt-content-tripledes-cbc" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-content-tripledes-cbc" \
     "tripledes-cbc" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml --enabled-key-data key-name --xml-data $topfolder/merlin-xmlenc-five/encrypt-content-tripledes-cbc.data --node-id Payment" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
 
-execEncTest "merlin-xmlenc-five/encrypt-content-aes256-cbc-prop" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-content-aes256-cbc-prop" \
     "aes256-cbc" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml --enabled-key-data key-name --xml-data $topfolder/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.data --node-id Payment" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
 
-execEncTest "merlin-xmlenc-five/encrypt-element-aes192-cbc-ref" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-element-aes192-cbc-ref" \
     "aes192-cbc" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
 
-execEncTest "merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5" \
     "aes128-cbc rsa-1_5" \
     "$priv_key_option $topfolder/merlin-xmlenc-five/rsapriv.$priv_key_format --pwd secret" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml --session-key aes-128 $priv_key_option $topfolder/merlin-xmlenc-five/rsapriv.$priv_key_format --xml-data $topfolder/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.data --node-id Purchase --pwd secret"  \
     "$priv_key_option $topfolder/merlin-xmlenc-five/rsapriv.$priv_key_format --pwd secret"
 
-execEncTest "merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p" \
     "tripledes-cbc rsa-oaep-mgf1p" \
     "$priv_key_option $topfolder/merlin-xmlenc-five/rsapriv.$priv_key_format --pwd secret" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml --session-key des-192 $priv_key_option $topfolder/merlin-xmlenc-five/rsapriv.$priv_key_format --binary-data $topfolder/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.data --pwd secret"  \
     "$priv_key_option $topfolder/merlin-xmlenc-five/rsapriv.$priv_key_format --pwd secret"
 
-execEncTest "merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes" \
     "aes256-cbc kw-tripledes" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml --session-key aes-256 --binary-data $topfolder/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.data" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
 
-execEncTest "merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192" \
     "aes128-cbc kw-aes192" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml --session-key aes-128 --node-name urn:example:po:PaymentInfo --xml-data $topfolder/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.data" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
 
-execEncTest "merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256" \
     "aes192-cbc kw-aes256" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml --session-key aes-192 --binary-data $topfolder/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.data" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
 
-execEncTest "merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128" \
     "tripledes-cbc kw-aes128" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml  --session-key des-192 --node-name urn:example:po:PaymentInfo --xml-data $topfolder/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.data" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
 
-execEncTest "merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256" \
+execEncTest $res_success \
+    "" \
+    "merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256" \
     "aes256-cbc kw-aes256" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" 
 
@@ -277,109 +209,145 @@ execEncTest "merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256"
 #
 ##########################################################################
 
-execEncTest "01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5" \
     "tripledes-cbc rsa-1_5" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
     "--session-key des-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.data --node-name http://example.org/paymentv2:CreditCard";  \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret"
 
-execEncTest "01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1" \
     "tripledes-cbc rsa-oaep-mgf1p" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
     "--session-key des-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.data --node-name http://example.org/paymentv2:CreditCard";  \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret"
 
-execEncTest "01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5" \
     "aes128-cbc rsa-1_5" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
     "--session-key aes-128 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.data --node-name http://example.org/paymentv2:CreditCard";  \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret"
 
-execEncTest "01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1" \
     "aes128-cbc rsa-oaep-mgf1p" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
     "--session-key aes-128 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.data --node-name http://example.org/paymentv2:CreditCard";  \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret"
 
-execEncTest "01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1" \
     "aes192-cbc rsa-oaep-mgf1p" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
     "--session-key aes-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.data --node-name http://example.org/paymentv2:CreditCard";  \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret"
 
-execEncTest "01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5" \
     "aes192-cbc rsa-1_5" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
     "--session-key aes-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.data --node-name http://example.org/paymentv2:CreditCard";  \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret"
 
-execEncTest "01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5" \
     "aes256-cbc rsa-1_5" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
     "--session-key aes-256 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.data --node-name http://example.org/paymentv2:CreditCard";  \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret"
 
-execEncTest "01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1" \
     "aes256-cbc rsa-oaep-mgf1p" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
     "--session-key aes-256 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.data --node-name http://example.org/paymentv2:CreditCard";  \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret"
 
-execEncTest "01-phaos-xmlenc-3/enc-element-3des-kw-3des" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-3des-kw-3des" \
     "tripledes-cbc kw-tripledes" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key des-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-3des-kw-3des.data --node-name http://example.org/paymentv2:CreditCard"; \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" 
 
-execEncTest "01-phaos-xmlenc-3/enc-content-aes128-kw-3des" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-content-aes128-kw-3des" \
     "aes128-cbc kw-tripledes" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key aes-128 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-content-aes128-kw-3des.data --node-name http://example.org/paymentv2:CreditCard"; \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" 
 
-execEncTest "01-phaos-xmlenc-3/enc-element-aes128-kw-aes128" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-aes128-kw-aes128" \
     "aes128-cbc kw-aes128" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key aes-128 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-aes128-kw-aes128.data --node-name http://example.org/paymentv2:CreditCard"; \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" 
 
-execEncTest "01-phaos-xmlenc-3/enc-element-aes128-kw-aes256" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-aes128-kw-aes256" \
     "aes128-cbc kw-aes256" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key aes-128 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-aes128-kw-aes256.data --node-name http://example.org/paymentv2:CreditCard"; \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" 
 
-execEncTest "01-phaos-xmlenc-3/enc-content-3des-kw-aes192" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-content-3des-kw-aes192" \
     "tripledes-cbc kw-aes192" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key des-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-content-3des-kw-aes192.data --node-name http://example.org/paymentv2:CreditCard"; \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" 
 
-execEncTest "01-phaos-xmlenc-3/enc-content-aes192-kw-aes256" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-content-aes192-kw-aes256" \
     "aes192-cbc kw-aes256" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key aes-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-content-aes192-kw-aes256.data --node-name http://example.org/paymentv2:CreditCard"; \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" 
 
-execEncTest "01-phaos-xmlenc-3/enc-element-aes192-kw-aes192" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-aes192-kw-aes192" \
     "aes192-cbc kw-aes192" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key aes-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-aes192-kw-aes192.data --node-name http://example.org/paymentv2:CreditCard"; \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" 
 
-execEncTest "01-phaos-xmlenc-3/enc-element-aes256-kw-aes256" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-element-aes256-kw-aes256" \
     "aes256-cbc kw-aes256" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key aes-256 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-element-aes256-kw-aes256.data --node-name http://example.org/paymentv2:CreditCard"; \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" 
 
-execEncTest "01-phaos-xmlenc-3/enc-text-3des-kw-aes256" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-text-3des-kw-aes256" \
     "tripledes-cbc kw-aes256" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key des-192 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-text-3des-kw-aes256.data --node-name http://example.org/paymentv2:CreditCard";  \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml"
 
-execEncTest "01-phaos-xmlenc-3/enc-text-aes128-kw-aes192" \
+execEncTest $res_success \
+    "" \
+    "01-phaos-xmlenc-3/enc-text-aes128-kw-aes192" \
     "aes128-cbc kw-aes192" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml" \
     "--session-key aes-128 --keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-key-data key-name --xml-data $topfolder/01-phaos-xmlenc-3/enc-text-aes128-kw-aes192.data --node-name http://example.org/paymentv2:CreditCard";  \
@@ -393,38 +361,51 @@ execEncTest "01-phaos-xmlenc-3/enc-text-aes128-kw-aes192" \
 #01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml
 #01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml
 
-# test dynamic encryption
+##########################################################################
+#
+# test dynamicencryption
+#
+##########################################################################
 echo "Dynamic encryption template"
 printf "    Encrypt template                                     "
 echo "$xmlsec_app encrypt-tmpl $xmlsec_params --keys-file $keysfile --output $tmpfile" >> $logfile
 $VALGRIND $xmlsec_app encrypt-tmpl $xmlsec_params --keys-file $keysfile --output $tmpfile >> $logfile 2>> $logfile
-printRes $?
+printRes $res_success $?
 printf "    Decrypt document                                     "
 echo "$xmlsec_app decrypt $xmlsec_params $keysfile $tmpfile" >> $logfile
 $VALGRIND $xmlsec_app decrypt $xmlsec_params --keys-file $keysfile $tmpfile >> $logfile 2>> $logfile
-printRes $?
-
+printRes $res_success $?
 
 
+##########################################################################
+##########################################################################
+##########################################################################
 echo "--------- Negative Testing: Following tests MUST FAIL ----------"
 echo "--- detailed log is written to  $logfile" 
-execEncTest "01-phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des" \
+execEncTest $res_fail \
+    "" \
+    "01-phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des" \
     "" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml"
 
-execEncTest "aleksey-xmlenc-01/enc-aes192cbc-keyname-ref" \
+execEncTest $res_fail \
+    "" \
+    "aleksey-xmlenc-01/enc-aes192cbc-keyname-ref" \
     "" \
     "--keys-file $topfolder/keys/keys.xml --enabled-cipher-reference-uris empty" 
 
-execEncTest "01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5" \
+execEncTest $res_fail \
+    "" \
+    "01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5" \
     "" \
     "--keys-file $topfolder/01-phaos-xmlenc-3/keys.xml --enabled-retrieval-method-uris empty"
-    
+
 rm -rf $tmpfile
 
+##########################################################################
+##########################################################################
+##########################################################################
 echo "--- testEnc finished" >> $logfile
 echo "--- testEnc finished"
-echo "--- detailed log is written to  $logfile" 
-
-#more $logfile
+echo "--- detailed log is written to  $logfile"
 
diff --git a/tests/testKeys.sh b/tests/testKeys.sh
index 1b882f3..1bf7dc2 100755
--- a/tests/testKeys.sh
+++ b/tests/testKeys.sh
@@ -1,133 +1,69 @@
 #!/bin/sh
+#
+# This script needs to be called from testrun.sh script
+#
 
-crypto=$1
-topfolder=$2
-xmlsec_app=$3
-file_format=$4
-
-pub_key_format=$file_format
-cert_format=$file_format
-priv_key_option="--pkcs12"
-priv_key_format="p12"
-
-if [ "z$TMPFOLDER" = "z" ] ; then
-    TMPFOLDER=/tmp
-fi
-
-timestamp=`date +%Y%m%d_%H%M%S` 
-tmpfile=$TMPFOLDER/testKeys.$timestamp-$$.tmp
-logfile=$TMPFOLDER/testKeys.$timestamp-$$.log
-script="$0"
-nssdbfolder=$topfolder/nssdb
-
-# prepate crypto config folder
-crypto_config=$TMPFOLDER/xmlsec-crypto-config
-keysfile=$crypto_config/keys.xml
-mkdir -p $crypto_config
-rm -rf $crypto_config/*
-
-valgrind_suppression="--suppressions=$topfolder/openssl.supp --suppressions=$topfolder/nss.supp"
-valgrind_options="--leak-check=yes --show-reachable=yes --num-callers=32 -v"
-
-
-if [ "z$crypto" != "z" -a "z$crypto" != "zdefault" ] ; then
-    xmlsec_params="$xmlsec_params --crypto $crypto"
-fi
-xmlsec_params="$xmlsec_params --crypto-config $crypto_config"
-
-if [ -n "$DEBUG_MEMORY" ] ; then 
-    export VALGRIND="valgrind $valgrind_options"
-    export REPEAT=3
-    xmlsec_params="$xmlsec_params --repeat $REPEAT"
-fi
-
-if [ -n "$PERF_TEST" ] ; then 
-    export xmlsec_params="$xmlsec_params --repeat $PERF_TEST"
-fi
-
-printRes() {	
-    if [ $1 = 0 ]; then
-	echo "   OK"
-    else 
-        echo " Fail"
-    fi
-    if [ -f .memdump ] ; then 
-	cat .memdump >> $logfile 
-    fi
-}
-
-execKeysTest() {
-    req_key_data=$1
-    key_name=$2
-    alg_name=$3
-
-    if [ -n "$req_key_data" ] ; then
-	printf "    Checking $req_key_data key data presense                      "
-        echo "$xmlsec_app check-key-data $xmlsec_params $req_key_data" >> $logfile
-	$xmlsec_app check-key-data $xmlsec_params $req_key_data >> $logfile 2>> $logfile
-	res=$?
-	if [ $res = 0 ]; then
-    	    echo "   OK"	    
-	else
-	    echo " Skip"
-	    return
-	fi
-    fi
-
-    printf "    Creating new key: $alg_name                           "
-
-    params="--gen-key:$key_name $alg_name"
-    if [ -f $keysfile ] ; then
-	params="$params --keys-file $keysfile"	
-    fi
-
-    echo "$xmlsec_app keys $params $xmlsec_params $keysfile" >>  $logfile 
-    $VALGRIND $xmlsec_app keys $params $xmlsec_params $keysfile >> $logfile 2>> $logfile
-    printRes $?
-}
-
+##########################################################################
+##########################################################################
+##########################################################################
 echo "--- testKeys started for xmlsec-$crypto library ($timestamp) ---"
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
 echo "--- log file is $logfile"
 echo "--- testKeys started for xmlsec-$crypto library ($timestamp) ---" >> $logfile
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $logfile
 
+# cleanup crypto config folder
+mkdir -p $crypto_config
+rm -rf $crypto_config/*
+
 # remove old keys file and copy NSS DB files if needed
 rm -rf $keysfile
 if [ "z$crypto" = "znss" ] ; then
     cp -f $nssdbfolder/*.db $crypto_config
 fi
 
-execKeysTest \
-	"hmac" \
-	"test-hmac-sha1" \
-	"hmac-192"
-execKeysTest \
-	"rsa " \
-	"test-rsa      " \
-	"rsa-1024"
-execKeysTest \
-	"dsa " \
-	"test-dsa      " \
-	"dsa-1024"
-execKeysTest \
-	"des " \
-	"test-des      " \
-    	"des-192 "
-execKeysTest \
-	"aes " \
-	"test-aes128   " \
-	"aes-128 "
-execKeysTest \
-	"aes " \
-	"test-aes192   " \
-	"aes-192 "
-execKeysTest \
-	"aes " \
-	"test-aes256   " \
-	"aes-256 "
-
+##########################################################################
+##########################################################################
+##########################################################################
+echo "--------- Positive Testing ----------"
+execKeysTest $res_success \
+    "hmac" \
+    "test-hmac-sha1" \
+    "hmac-192"
+
+execKeysTest $res_success \
+    "rsa " \
+    "test-rsa      " \
+    "rsa-1024"
+
+execKeysTest $res_success \
+    "dsa " \
+    "test-dsa      " \
+    "dsa-1024"
+
+execKeysTest $res_success \
+    "des " \
+    "test-des      " \
+    "des-192 "
+
+execKeysTest $res_success \
+    "aes " \
+    "test-aes128   " \
+    "aes-128 "
+
+execKeysTest $res_success \
+    "aes " \
+    "test-aes192   " \
+    "aes-192 "
+
+execKeysTest $res_success \
+    "aes " \
+    "test-aes256   " \
+    "aes-256 "
+
+##########################################################################
+##########################################################################
+##########################################################################
 echo "--- testKeys finished ---" >> $logfile
 echo "--- testKeys finished ---"
-echo "--- detailed log is written to  $logfile ---" 
-
+echo "--- detailed log is written to  $logfile ---"
diff --git a/tests/testXKMS.sh b/tests/testXKMS.sh
index 6c46c81..be972dd 100755
--- a/tests/testXKMS.sh
+++ b/tests/testXKMS.sh
@@ -1,149 +1,128 @@
 #!/bin/sh 
+#
+# This script needs to be called from testrun.sh script
+#
 
-crypto=$1
-topfolder=$2
-xmlsec_app=$3
-file_format=$4
-
-pub_key_format=$file_format
-cert_format=$file_format
-priv_key_option="--pkcs12"
-priv_key_format="p12"
-
-if [ "z$TMPFOLDER" = "z" ] ; then
-    TMPFOLDER=/tmp
-fi
-
-timestamp=`date +%Y%m%d_%H%M%S` 
-tmpfile=$TMPFOLDER/testXKMS.$timestamp-$$.tmp
-tmpfile2=$TMPFOLDER/testXKMS.$timestamp-$$-2.tmp
-tmpfile3=$TMPFOLDER/testXKMS.$timestamp-$$-3.tmp
-logfile=$TMPFOLDER/testXKMS.$timestamp-$$.log
-script="$0"
-
-# prepate crypto config folder
-crypto_config=$TMPFOLDER/xmlsec-crypto-config
-keysfile=$crypto_config/keys.xml
-
-valgrind_suppression="--suppressions=$topfolder/openssl.supp --suppressions=$topfolder/nss.supp"
-valgrind_options="--leak-check=yes --show-reachable=yes --num-callers=32 -v"
-
-if [ "z$crypto" != "z" -a "z$crypto" != "zdefault" ] ; then
-    xmlsec_params="$xmlsec_params --crypto $crypto"
-fi
-xmlsec_params="$xmlsec_params --crypto-config $crypto_config"
-
-if [ -n "$DEBUG_MEMORY" ] ; then 
-    export VALGRIND="valgrind $valgrind_options"
-    export REPEAT=3
-    xmlsec_params="$xmlsec_params --repeat $REPEAT"
-fi
-
-if [ -n "$PERF_TEST" ] ; then 
-    xmlsec_params="$xmlsec_params --repeat $PERF_TEST"
-fi
-
-# debug 
-# xmlsec_params="$xmlsec_params --xkms-stop-on-unknown-response-mechanism --xkms-stop-on-unknown-respond-with --xkms-stop-on-unknown-key-usage"
-        
-
-printRes() {
-    if [ $1 = 0 ]; then
-	echo "   OK"
-    else 
-        echo " Fail"
-    fi
-    if [ -f .memdump ] ; then 
-	cat .memdump >> $logfile 
-    fi
-}
-
-execXkmsServerRequestTest() {    
-    src_file=$topfolder/$1.xml
-    res_file=$topfolder/$1-$2.xml
-    echo "$1 ($2)"
-
-    rm -f $tmpfile $tmpfile2 $tmpfile3
-    
-    printf "    Processing xkms request                              "
-    echo "$xmlsec_app --xkms-server-request --output $tmpfile $xmlsec_params $3 $src_file" >> $logfile
-    $VALGRIND $xmlsec_app --xkms-server-request  --output $tmpfile $xmlsec_params $3 $src_file >> $logfile 2>> $logfile
-    if [ $? = 0 ]; then
-	# cleanup Id attribute because it is generated every time
-	sed 's/ Id="[^\"]*"/ Id=""/g' $res_file > $tmpfile2
-	sed 's/ Id="[^\"]*"/ Id=""/g' $tmpfile > $tmpfile3
-	diff $tmpfile2 $tmpfile3 >> $logfile 2>> $logfile
-	printRes $?
-    else 
-	echo " Error"
-    fi
-}
-
+##########################################################################
+##########################################################################
+##########################################################################
 echo "--- testXKMS started for xmlsec-$crypto library ($timestamp)" 
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
 echo "--- log file is $logfile"
 echo "--- testXKMS started for xmlsec-$crypto library ($timestamp)" >> $logfile
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $logfile
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/locate-example-1" "no-match" \
+##########################################################################
+##########################################################################
+##########################################################################
+echo "--------- Positive Testing ----------"
+
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/locate-example-1" \
+    "" \
+    "no-match" \
     "--xkms-service http://www.example.com/xkms";
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/locate-example-1" "bad-service" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/locate-example-1" \
+    "" \
+    "bad-service" \
     "--xkms-service http://www.example.com/xkms-bad-service";
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/locate-example-2" "no-match" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/locate-example-2" \
+    "" \
+    "no-match" \
     "--xkms-service http://www.example.com/xkms";
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/validate-example-1" "no-match" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/validate-example-1" \
+    "" \
+    "no-match" \
     "--xkms-service http://www.example.com/xkms";
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/locate-opaque-client-data" "no-match" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/locate-opaque-client-data" \
+    "" \
+    "no-match" \
     "--xkms-service http://www.example.com/xkms";
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/compound-example-1" "no-match" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/compound-example-1" \
+    "" \
+    "no-match" \
     "--xkms-service http://www.example.com/xkms";
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/status-request" "success" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/status-request" \
+    "" \
+    "success" \
     "--xkms-service http://www.example.com/xkms";
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/bad-request-name" "not-supported" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/bad-request-name" \
+    "" \
+    "not-supported" \
     "--xkms-service http://www.example.com/xkms";
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/soap12-locate-example-1" "no-match" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/soap12-locate-example-1" \
+    "" \
+    "no-match" \
     "--xkms-service http://www.example.com/xkms --xkms-format soap-1.2"
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/soap11-locate-example-1" "unsupported" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/soap11-locate-example-1" \
+    "" \
+    "unsupported" \
     "--xkms-service http://www.example.com/xkms --xkms-format soap-1.2"
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/soap12-bad-request-name" "msg-invalid" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/soap12-bad-request-name" \
+    "" \
+    "msg-invalid" \
     "--xkms-service http://www.example.com/xkms --xkms-format soap-1.2"
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/soap11-locate-example-1" "no-match" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/soap11-locate-example-1" \
+    "" \
+    "no-match" \
     "--xkms-service http://www.example.com/xkms --xkms-format soap-1.1"
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/soap12-locate-example-1" "unsupported" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/soap12-locate-example-1" \
+    "" \
+    "unsupported" \
     "--xkms-service http://www.example.com/xkms --xkms-format soap-1.1"
 
-execXkmsServerRequestTest \
-    "aleksey-xkms-01/soap11-bad-request-name" "msg-invalid" \
+execXkmsServerRequestTest $res_success \
+    "" \
+    "aleksey-xkms-01/soap11-bad-request-name" \
+    "" \
+    "msg-invalid" \
     "--xkms-service http://www.example.com/xkms --xkms-format soap-1.1"
 
+##########################################################################
+##########################################################################
+##########################################################################
+echo "--------- Negative Testing ----------"
 
-rm -f $tmpfile $tmpfile2 $tmpfile3
-
+##########################################################################
+##########################################################################
+##########################################################################
 echo "--- testXKMS finished" >> $logfile
 echo "--- testXKMS finished"
 echo "--- detailed log is written to  $logfile" 
diff --git a/tests/testrun.sh b/tests/testrun.sh
new file mode 100755
index 0000000..491d144
--- /dev/null
+++ b/tests/testrun.sh
@@ -0,0 +1,404 @@
+#!/bin/sh
+
+OS_ARCH=`uname -o`
+OS_KERNEL=`uname -s`
+
+#
+# Get command line params
+#
+testfile="$1"
+crypto="$2"
+topfolder="$3"
+xmlsec_app="$4"
+file_format="$5"
+timestamp=`date +%Y%m%d_%H%M%S`
+
+if [ "z$OS_ARCH" = "zCygwin" ] ; then
+    topfolder=`cygpath -wa "$topfolder"`
+    xmlsec_app=`cygpath -a "$xmlsec_app"`
+fi
+
+#
+# Setup keys config
+#
+pub_key_format=$file_format
+cert_format=$file_format
+priv_key_option="--pkcs12"
+priv_key_format="p12"
+
+# On Windows, one needs to specify Crypto Service Provider (CSP)
+# in the pkcs12 file to ensure it is loaded correctly to be used
+# with SHA2 algorithms. Worse, the CSP is different for XP and older 
+# versions
+if [ "z$OS_ARCH" = "zCygwin" ] ; then
+    if [ "z$OS_KERNEL" = "zCYGWIN_NT-5.1" ] ; then
+        priv_key_suffix="-winxp"
+    else
+        priv_key_suffix="-win"
+    fi
+else
+    priv_key_suffix=""
+fi
+
+#
+# Prepare folders
+#
+if [ "z$TMPFOLDER" = "z" ] ; then
+    TMPFOLDER=/tmp
+fi
+testname=`basename $testfile`
+if [ "z$OS_ARCH" = "zCygwin" ] ; then
+    tmpfile=`cygpath -wa $TMPFOLDER/$testname.$timestamp-$$.tmp`
+    logfile=`cygpath -wa $TMPFOLDER/$testname.$timestamp-$$.log`
+else
+    tmpfile=$TMPFOLDER/$testname.$timestamp-$$.tmp
+    logfile=$TMPFOLDER/$testname.$timestamp-$$.log
+fi
+
+#
+# Valgrind
+#
+valgrind_suppression="--suppressions=$topfolder/openssl.supp --suppressions=$topfolder/nss.supp"
+valgrind_options="--leak-check=yes --show-reachable=yes --num-callers=32 -v"
+if [ -n "$DEBUG_MEMORY" ] ; then 
+    export VALGRIND="valgrind $valgrind_options"
+    export REPEAT=3
+    xmlsec_params="$xmlsec_params --repeat $REPEAT"
+fi
+
+#
+# Setup crypto engine
+#
+crypto_config=$TMPFOLDER/xmlsec-crypto-config
+keysfile=$crypto_config/keys.xml
+if [ "z$crypto" != "z" -a "z$crypto" != "zdefault" ] ; then
+    xmlsec_params="$xmlsec_params --crypto $crypto"
+fi
+xmlsec_params="$xmlsec_params --crypto-config $crypto_config"
+
+#
+# Misc
+#
+if [ -n "$PERF_TEST" ] ; then 
+    xmlsec_params="$xmlsec_params --repeat $PERF_TEST"
+fi
+
+if [ "z$OS_ARCH" = "zCygwin" ] ; then
+    diff_param=-uw
+else
+    diff_param=-u
+fi
+
+#
+# Check the command result and print it to stdout
+#
+res_success="success"
+res_fail="fail"
+printRes() {
+    expected_res="$1"
+    actual_res="$2"
+
+    # convert status to string
+    if [ $actual_res = 0 ]; then
+        actual_res=$res_success
+    else
+        actual_res=$res_fail
+    fi
+
+    # check
+    if [ "z$expected_res" = "z$actual_res" ] ; then
+        echo "   OK"
+    else
+        echo " Fail"
+    fi
+
+    # memlog
+    if [ -f .memdump ] ; then
+        cat .memdump >> $logfile
+    fi
+}
+
+#
+# Keys Manager test function
+#
+execKeysTest() {
+    expected_res="$1"
+    req_key_data="$2"
+    key_name="$3"
+    alg_name="$4"
+
+    # check params
+    if [ "z$expected_res" != "z$res_success" -a "z$expected_res" != "z$res_fail" ] ; then
+        echo " Bad parameter: expected_res=$expected_res"
+        cd $old_pwd
+        return
+    fi
+    echo "Test: $alg_name ($expected_res)"
+
+    # check key data
+    if [ -n "$req_key_data" ] ; then
+        printf "    Checking required key data                            "
+        echo "$xmlsec_app check-key-data $xmlsec_params $req_key_data" >> $logfile
+        $xmlsec_app check-key-data $xmlsec_params $req_key_data >> $logfile 2>> $logfile
+        res=$?
+        if [ $res = 0 ]; then
+            echo "   OK"
+        else
+            echo " Skip"
+            return
+        fi
+    fi
+
+    # run tests
+    printf "    Creating new key                                      "
+    params="--gen-key:$key_name $alg_name"
+    if [ -f $keysfile ] ; then
+        params="$params --keys-file $keysfile"
+    fi
+    echo "$xmlsec_app keys $params $xmlsec_params $keysfile" >>  $logfile 
+    $VALGRIND $xmlsec_app keys $params $xmlsec_params $keysfile >> $logfile 2>> $logfile
+    printRes $expected_res $?
+}
+
+#
+# DSig test function
+#
+execDSigTest() {
+    expected_res="$1"
+    folder="$2"
+    filename="$3"
+    req_transforms="$4"
+    params1="$5"
+    params2="$6"
+    params3="$7"
+
+    # check params
+    if [ "z$expected_res" != "z$res_success" -a "z$expected_res" != "z$res_fail" ] ; then
+        echo " Bad parameter: expected_res=$expected_res"
+        cd $old_pwd
+        return
+    fi
+    if [ -n "$folder" ] ; then
+        cd $topfolder/$folder
+        full_file=$filename
+        echo $folder/$filename
+        echo "Test: $folder/$filename in folder " `pwd` " ($expected_res)" >> $logfile
+    else
+        full_file=$topfolder/$filename
+        echo $filename
+        echo "Test: $folder/$filename ($expected_res)" >> $logfile
+    fi
+
+
+    # check transforms
+    if [ -n "$req_transforms" ] ; then
+        printf "    Checking required transforms                         "
+        echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $logfile
+        $xmlsec_app check-transforms $xmlsec_params $req_transforms >> $logfile 2>> $logfile
+        res=$?
+        if [ $res = 0 ]; then
+            echo "   OK"
+        else
+            echo " Skip"
+            cd $old_pwd
+            return
+        fi
+    fi
+
+    # prepare
+    rm -f $tmpfile
+    old_pwd=`pwd`
+
+    # run tests
+    if [ -n "$params1" ] ; then
+        printf "    Verify existing signature                            "
+        echo "$xmlsec_app verify $xmlsec_params $params1 $full_file.xml" >> $logfile
+        $VALGRIND $xmlsec_app verify $xmlsec_params $params1 $full_file.xml >> $logfile 2>> $logfile
+        printRes $expected_res $?
+    fi
+
+    if [ -n "$params2" -a -z "$PERF_TEST" ] ; then
+        printf "    Create new signature                                 "
+        echo "$xmlsec_app sign $xmlsec_params $params2 --output $tmpfile $full_file.tmpl" >> $logfile
+        $VALGRIND $xmlsec_app sign $xmlsec_params $params2 --output $tmpfile $full_file.tmpl >> $logfile 2>> $logfile
+        printRes $expected_res $?
+    fi
+
+    if [ -n "$params3" -a -z "$PERF_TEST" ] ; then
+        printf "    Verify new signature                                 "
+        echo "$xmlsec_app verify $xmlsec_params $params3 $tmpfile" >> $logfile
+        $VALGRIND $xmlsec_app verify $xmlsec_params $params3 $tmpfile >> $logfile 2>> $logfile
+        printRes $expected_res $?
+    fi
+
+    # cleanup
+    cd $old_pwd
+    rm -f $tmpfile
+}
+
+#
+# Enc test function
+#
+execEncTest() {
+    expected_res="$1"
+    folder="$2"
+    filename="$3"
+    req_transforms="$4"
+    params1="$5"
+    params2="$6"
+    params3="$7"
+
+    # check params
+    if [ "z$expected_res" != "z$res_success" -a "z$expected_res" != "z$res_fail" ] ; then
+        echo " Bad parameter: expected_res=$expected_res"
+        cd $old_pwd
+        return
+    fi
+    if [ -n "$folder" ] ; then
+        cd $topfolder/$folder
+        full_file=$filename
+        echo $folder/$filename
+        echo "Test: $folder/$filename in folder " `pwd` " ($expected_res)" >> $logfile
+    else
+        full_file=$topfolder/$filename
+        echo $filename
+        echo "Test: $folder/$filename ($expected_res)" >> $logfile
+    fi
+
+    # check transforms
+    if [ -n "$req_transforms" ] ; then
+        printf "    Checking required transforms                         "
+        echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $logfile
+        $xmlsec_app check-transforms $xmlsec_params $req_transforms >> $logfile 2>> $logfile
+        res=$?
+        if [ $res = 0 ]; then
+            echo "   OK"
+        else
+            echo " Skip"
+            return
+        fi
+    fi
+
+    # prepare
+    rm -f $tmpfile $tmpfile.2
+    old_pwd=`pwd`
+
+    # run tests
+    if [ -n "$params1" ] ; then
+        rm -f $tmpfile
+        printf "    Decrypt existing document                            "
+        echo "$xmlsec_app decrypt $xmlsec_params $params1 $full_file.xml" >>  $logfile 
+        $VALGRIND $xmlsec_app decrypt $xmlsec_params $params1 $full_file.xml > $tmpfile 2>> $logfile
+        res=$?
+        if [ $res = 0 ]; then
+            diff $diff_param $full_file.data $tmpfile >> $logfile 2>> $logfile
+            printRes $expected_res $?
+        else
+            printRes $expected_res $res
+        fi
+    fi
+
+    if [ -n "$params2" -a -z "$PERF_TEST" ] ; then
+        rm -f $tmpfile
+        printf "    Encrypt document                                     "
+        echo "$xmlsec_app encrypt $xmlsec_params $params2 --output $tmpfile $full_file.tmpl" >>  $logfile 
+        $VALGRIND $xmlsec_app encrypt $xmlsec_params $params2 --output $tmpfile $full_file.tmpl >> $logfile 2>> $logfile
+        printRes $expected_res $?
+    fi
+
+    if [ -n "$params3" -a -z "$PERF_TEST" ] ; then 
+        rm -f $tmpfile.2
+        printf "    Decrypt new document                                 "
+        echo "$xmlsec_app decrypt $xmlsec_params $params3 --output $tmpfile.2 $tmpfile" >>  $logfile
+        $VALGRIND $xmlsec_app decrypt $xmlsec_params $params3 --output $tmpfile.2 $tmpfile >> $logfile 2>> $logfile
+        res=$?
+        if [ $res = 0 ]; then
+            diff $diff_param $full_file.data $tmpfile.2 >> $logfile 2>> $logfile
+            printRes $expected_res $?
+        else
+            printRes $expected_res $res
+        fi
+    fi
+
+    # cleanup
+    cd $old_pwd
+    rm -f $tmpfile $tmpfile.2
+}
+
+execXkmsServerRequestTest() {
+    expected_res="$1"
+    folder="$2"
+    filename="$3"
+    req_transforms="$4"
+    response="$5"
+    params1="$6"
+
+    # check params
+    if [ "z$expected_res" != "z$res_success" -a "z$expected_res" != "z$res_fail" ] ; then
+        echo " Bad parameter: expected_res=$expected_res"
+        cd $old_pwd
+        return
+    fi
+    if [ -n "$folder" ] ; then
+        cd $topfolder/$folder
+        full_file=$filename
+        full_resfile=$filename-$response
+        echo "$folder/$filename ($response)"
+        echo "Test: $folder/$filename in folder " `pwd` " $response ($expected_res)" >> $logfile
+    else
+        full_file=$topfolder/$filename
+        full_resfile=$topfolder/$filename-$response
+        echo "$filename ($response)"
+        echo "Test: $folder/$filename $response ($expected_res)" >> $logfile
+    fi
+
+    # check transforms
+    if [ -n "$req_transforms" ] ; then
+        printf "    Checking required transforms                         "
+        echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $logfile
+        $xmlsec_app check-transforms $xmlsec_params $req_transforms >> $logfile 2>> $logfile
+        res=$?
+        if [ $res = 0 ]; then
+            echo "   OK"
+        else
+            echo " Skip"
+            return
+        fi
+    fi
+
+    # prepare
+    rm -f $tmpfile $tmpfile.2 tmpfile.3
+    old_pwd=`pwd`
+
+    # run tests
+    if [ -n "$params1" ] ; then
+        printf "    Processing xkms request                              "
+        echo "$xmlsec_app --xkms-server-request --output $tmpfile $xmlsec_params $params1 $full_file.xml" >> $logfile
+        $VALGRIND $xmlsec_app --xkms-server-request  --output $tmpfile $xmlsec_params $params1 $full_file.xml >> $logfile 2>> $logfile
+        res=$?
+        if [ $res = 0 ]; then
+            # cleanup Id attribute because it is generated every time
+            sed 's/ Id="[^\"]*"/ Id=""/g' $full_resfile > $tmpfile.2
+            sed 's/ Id="[^\"]*"/ Id=""/g' $tmpfile > $tmpfile.3
+            diff $tmpfile.2 $tmpfile.3 >> $logfile 2>> $logfile
+            printRes $expected_res $?
+        else
+            printRes $expected_res $res
+        fi
+    fi
+
+    # cleanup
+    cd $old_pwd
+    rm -f $tmpfile $tmpfile.2 tmpfile.3
+}
+
+
+# prepare
+rm -rf $tmpfile $tmpfile.2 tmpfile.3
+
+# run tests
+source "$testfile"
+
+# cleanup
+rm -rf $tmpfile $tmpfile.2 tmpfile.3
+



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]