]> wagner.pp.ru Git - openssl-gost/engine.git/blob - tcl_tests/runtest.sh
11fdedad284b14a88fdb233b41dd4de68308da0d
[openssl-gost/engine.git] / tcl_tests / runtest.sh
1 #!/bin/sh
2
3 # Состав набора тестов
4 # 1. Этот скрипт
5 # 2. Файлы *.try
6 # 3. Файлы *.tcl
7 # 4. Файлы *.ciphers
8 # 5. calcstat
9 # 6. oidfile
10 # 7. name2oid.tst
11
12 # Пререквизиты, которые должны быть установлены на машине:
13 # 1. tclsh.  Может называться с версией (см. список версий ниже в цикле
14 # перебора)
15 # 2. ssh (что характерно, называться должен именно так). Должен быть 
16 # настроен заход по ключам без пароля на lynx и все используемые эталонники.
17 # Ключи этих машин должны быть в knownhosts (с полными доменными именами 
18 # серверов, то есть lynx.lan.cryptocom.ru и т.д.)
19 # 3. Под Windows скрипт выполняется в среде MinGW, при этом нужно "донастроить"
20 # ssh, а именно создать в разделе реестра
21 # HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
22 # DWORD-ключ DisableUserTOSSetting=0 
23
24 CRYPTOPACK_MAIN_VERSION=3
25
26 if [ -z "$OPENSSL_APP" ]; then
27         if [ "$OS" != "Windows NT" -a "$OS" != "Windows_NT" ]; then
28                 if [ -x  /opt/cryptopack$CRYPTOPACK_MAIN_VERSION/bin/openssl ]; then
29                         OPENSSL_APP=/opt/cryptopack$CRYPTOPACK_MAIN_VERSION/bin/openssl
30                 elif [ -x /usr/local/cryptopack$CRYPTOPACK_MAIN_VERSION/bin/openssl ];then
31                         OPENSSL_APP=/usr/local/cryptopack$CRYPTOPACK_MAIN_VERSION/bin/openssl
32                 fi
33         else
34                 if [ -x c:/cryptopack$CRYPTOPACK_MAIN_VERSION/bin/openssl.exe ] ; then
35                         OPENSSL_APP=c:/cryptopack$CRYPTOPACK_MAIN_VERSION/bin/openssl.exe
36                 fi
37         fi
38 fi
39 if [ -z "$OPENSSL_APP" ]; then
40         echo "openssl not found"
41         exit 1
42 else 
43         echo "Using $OPENSSL_APP as openssl"
44 fi
45
46
47 if [ -z "$TCLSH" ]; then
48         for version in "" 8.4 84 8.5 85 8.6 86; do
49                 for command in tclsh$version; do
50                         for dir in `echo "/opt/cryptopack/bin:$PATH" | sed -e 's/:/ /g'`; do
51                                 echo "Checking $dir/$command"
52                                 if [ -x $dir/$command ]; then
53                                         TCLSH=$dir/$command
54                                         break 3
55                                 fi
56                         done
57                 done
58         done
59 fi
60
61 if [ -z "$TCLSH" ]; then
62         echo "tclsh not found in PATH, neither with nor without version, exiting"
63         exit 2
64 else
65         echo "Using $TCLSH as tclsh"
66 fi
67 TCLSH="$TCLSH -encoding utf-8"
68
69 APP_SUFFIX=`basename $OPENSSL_APP .exe|sed s/openssl//`
70 [ -n "$OPENSSL_APP" ]&& export OPENSSL_APP
71 ENGINE_NAME=`$TCLSH getengine.tcl`
72 export ENGINE_NAME
73 TESTDIR=`hostname`-$ENGINE_NAME
74 [ -n "$APP_SUFFIX" ] && TESTDIR=${TESTDIR}-${APP_SUFFIX}
75 [ -d ${TESTDIR} ] && rm -rf ${TESTDIR}
76 mkdir ${TESTDIR}
77 cp oidfile ${TESTDIR}
78 export TESTDIR
79
80 case "$ENGINE_NAME" in
81         gostkc3)
82                 BASE_TEST="1"
83                 ;;
84         cryptocom)
85                 BASE_TESTS="engine dgst mac pkcs8 enc req-genpkey req-newkey ca smime smime2 smimeenc cms cms2 cmsenc pkcs12 nopath ocsp ts ssl smime_io cms_io smimeenc_io cmsenc_io"
86                 OTHER_DIR=`echo $TESTDIR |sed 's/cryptocom/gost/'`
87                 ;;
88         gost)
89                 OTHER_DIR=`echo $TESTDIR |sed 's/gost/cryptocom/'`
90                 ;;
91         *)
92                 echo "No GOST=providing engine found" 1>&2
93                 exit 1;
94 esac
95 if [ -x copy_param ];  then
96         BASE_TESTS="$BASE_TESTS apache"
97 fi
98 PKCS7_COMPATIBILITY_TESTS="smime_cs cmsenc_cs cmsenc_sc"
99 SERVER_TESTS="cp20 cp21 csp36r4 csp39 csp4 csp4r3 csp5"
100 CLIENT_TESTS="cp20 cp21"
101 WINCLIENT_TESTS="p1-1xa-tls1-v-cp36r4-srv p1-1xa-tls1-v-cp39-srv p1-1xa-tls1-v-cp4-01 p2-1xa-tls1-v-cp4-01 p2-2xa-tls1-v-cp4-12S p2-5xa-tls1-v-cp4-12L p1-1xa-tls1-v-cp4r3-01 p2-1xa-tls1-v-cp4r3-01 p2-2xa-tls1-v-cp4r3-01 p2-5xa-tls1-v-cp4r3-01 p1-1xa-tls1_1-v-cp4r3-01 p2-1xa-tls1_1-v-cp4r3-01 p2-2xa-tls1_1-v-cp4r3-01 p2-5xa-tls1_1-v-cp4r3-01 p1-1xa-tls1_2-v-cp4r3-01 p2-1xa-tls1_2-v-cp4r3-01 p2-2xa-tls1_2-v-cp4r3-01 p2-5xa-tls1_2-v-cp4r3-01 p1-1xa-tls1-v-cp5-01 p2-1xa-tls1-v-cp5-01 p2-2xa-tls1-v-cp5-01 p2-5xa-tls1-v-cp5-01 p1-1xa-tls1_1-v-cp5-01 p2-1xa-tls1_1-v-cp5-01 p2-2xa-tls1_1-v-cp5-01 p2-5xa-tls1_1-v-cp5-01 p1-1xa-tls1_2-v-cp5-01 p2-1xa-tls1_2-v-cp5-01 p2-2xa-tls1_2-v-cp5-01 p2-5xa-tls1_2-v-cp5-01 p8k-5xa-tls1_2-v-cp5-01 p8k-2xa-tls1_2-v-cp5-01 p8m-5xa-tls1_2-v-cp5-01 p8m-2xa-tls1_2-v-cp5-01"
102 OPENSSL_DEBUG_MEMORY=on
103 export OPENSSL_DEBUG_MEMORY
104
105 fail=0
106 for t in $BASE_TESTS; do
107         $TCLSH $t.try || fail=1
108 done
109
110 ALG_LIST="rsa:1024 gost2001:XA gost2012_256:XA gost2012_512:A" OPENSSL_CONF=`pwd`/openssl-gost.cnf $TCLSH ssl.try -clientconf `pwd`/openssl-cryptocom.cnf || fail=1
111 ALG_LIST="rsa:1024 gost2001:XA gost2012_256:XA gost2012_512:A" OPENSSL_CONF=`pwd`/openssl-gost.cnf $TCLSH ssl.try -serverconf `pwd`/openssl-cryptocom.cnf || fail=1
112         
113 for t in $PKCS7_COMPATIBILITY_TESTS; do
114         $TCLSH $t.try || fail=1
115 done
116 for t in $SERVER_TESTS; do
117         $TCLSH server.try $t || fail=1
118 done
119 for t in $CLIENT_TESTS; do
120         $TCLSH client.try $t || fail=1
121 done
122 if [ -n "WINCLIENT_TESTS" ]; then
123         if [ -z "$CVS_RSH" ]; then
124                 CVS_RSH=ssh
125                 export CVS_RSH
126         fi      
127         for t in $WINCLIENT_TESTS; do
128                 $TCLSH wcli.try $t || fail=1
129         done
130 fi      
131 if [ -d $OTHER_DIR ]; then
132         OTHER_DIR=../${OTHER_DIR} $TCLSH interop.try
133 fi
134 if [ -d OtherVersion ] ; then
135         case "$ENGINE_NAME" in
136                 gostkc3)
137                         ;;
138                 cryptocom)
139                         OTHER_DIR=../OtherVersion ALG_LIST="gost2001:A gost2001:B gost2001:C" ENC_LIST="gost2001:A:1.2.643.2.2.31.3 gost2001:B:1.2.643.2.2.31.4 gost2001:C:1.2.643.2.2.31.2 gost2001:A:" $TCLSH interop.try
140                         ;;
141                 gost)
142                         OTHER_DIR=../OtherVersion ALG_LIST="gost2001:A gost2001:B gost2001:C" ENC_LIST="gost2001:A:1.2.643.2.2.31.3 gost2001:B:1.2.643.2.2.31.4 gost2001:C:1.2.643.2.2.31.2 gost2001:A:" $TCLSH interop.try
143                         ;;
144                 *)
145                         echo "No GOST=providing engine found" 1>&2
146                         exit 1;
147         esac
148 fi      
149 $TCLSH calcstat ${TESTDIR}/stats ${TESTDIR}/test.result
150 grep "leaked" ${TESTDIR}/*.log
151 if [ $fail  -ne 0 ]; then 
152         echo "Some tests FAILED."
153 fi      
154
155 exit $fail