1#!/bin/sh
2#
3# Copyright (c) 2006 - 2007 Kungliga Tekniska Högskolan
4# (Royal Institute of Technology, Stockholm, Sweden).
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions
9# are met:
10#
11# 1. Redistributions of source code must retain the above copyright
12#    notice, this list of conditions and the following disclaimer.
13#
14# 2. Redistributions in binary form must reproduce the above copyright
15#    notice, this list of conditions and the following disclaimer in the
16#    documentation and/or other materials provided with the distribution.
17#
18# 3. Neither the name of the Institute nor the names of its contributors
19#    may be used to endorse or promote products derived from this software
20#    without specific prior written permission.
21#
22# THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
23# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25# ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
26# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32# SUCH DAMAGE.
33#
34# Id
35#
36
37srcdir="@srcdir@"
38
39rsa="${TESTS_ENVIRONMENT} ./test_rsa@exeext@"
40engine="${TESTS_ENVIRONMENT} ./test_engine_dso@exeext@"
41rand="${TESTS_ENVIRONMENT} ./test_rand@exeext@"
42
43${engine} --test-random > /dev/null || { echo "missing random"; exit 77; }
44
45${rsa} --key=${srcdir}/rsakey.der || \
46	{ echo "rsa test failed" ; exit 1; }
47
48${rsa} --time-key=${srcdir}/rsakey.der || \
49	{ echo "rsa test failed" ; exit 1; }
50
51${rsa} --time-key=${srcdir}/rsakey2048.der || \
52	{ echo "rsa test failed" ; exit 1; }
53
54${rsa} --time-key=generate || \
55	{ echo "rsa test failed" ; exit 1; }
56
57${engine} --rsa=${srcdir}/rsakey.der || \
58	{ echo "engine test failed" ; exit 1; }
59
60${rsa} --loops=4 || { echo "rsa test for 4 loops failed" ; exit 1; }
61
62for a in unix fortuna egd w32crypto ;do
63	${rand} --method=${a} --file=crypto-test 2>error
64	res=$?
65	if test "X$res" != X0 ; then
66            grep "unknown method" error && \
67                { echo "random $a is not available" ; continue; }
68	    grep "random not ready yet" error || \
69		{ echo "random $a ready failing" ; cat error; exit 1; }
70	    echo "random method $a out for lunch"
71	    continue
72	fi
73	${rand} --method=${a} --file=crypto-test2 2>error
74	res=$?
75	if test "X$res" != X0 ; then
76	    grep "random not ready yet" error || \
77		{ echo "random $a ready failing" ; cat error; exit 1; }
78	    echo "random metod $a out for dinner"
79	    continue
80	fi
81	cmp crypto-test crypto-test2 && { echo "rand output same!" ; exit 1; }
82done
83
84./example_evp_cipher 1 ${srcdir}/test_crypto.in test-out-1 || \
85    { echo "1 failed" ; exit 1; }
86
87for a in 7 15 16 17 31 32 33 ; do
88    ./example_evp_cipher $a ${srcdir}/test_crypto.in test-out-$a
89    cmp test-out-1 test-out-$a || { echo "cmp $a failed" ; exit 1; }
90done
91
92#
93# Last time we run is w/o HOME and RANDFILE to make sure we can do
94# RAND_file_name() when the enviroment is lacking those.
95#
96
97if [ -e /dev/random -o -e /dev/urandom -o -e /dev/srandom -o -e /dev/arandom ] ; then
98
99    # try hard to unset HOME and RANDFILE
100    HOME=
101    RANDFILE=
102
103    unset HOME
104    unset RANDFILE
105
106    ${rand} --method=unix --file=unix 2>error
107    res=$?
108    if test "X$res" != X0 ; then
109        grep "unknown method" error && \
110        { echo "random unix is not available"; exit 0; }
111        grep "random not ready yet" error || \
112    	{ echo "random unix ready failing" ; cat error; exit 1; }
113        echo "random method unix out for lunch"
114        continue
115    fi
116
117fi
118
119exit 0
120