1#!/bin/bash
2#
3# This Source Code Form is subject to the terms of the Mozilla Public
4# License, v. 2.0. If a copy of the MPL was not distributed with this
5# file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#
8# PRIOR TO RUNNING THIS SCRIPT
9# you should adjust MAIL_COMMAND and QA_LIST
10#
11# External dependencies:
12# - install the NISCC test files, e.g. at /niscc (readonly OK)
13# - libfaketimeMT because the test certificates have expired
14# - build environment for building NSS
15# - gdb to analyze core files
16# - a command line mail tool (e.g. mailx)
17# - openssl to combine input PEM files into pkcs#12
18# - curl for obtaining version information from the web
19#
20
21################################################################################
22# Print script usage
23################################################################################
24usage()
25{
26    cat << EOF
27Usage: $0 [options]
28
29Test NSS library against NISCC SMIME and TLS testcases.
30
31Options:
32 -h, --help           print this help message and exit
33 -v, --verbose        enable extra verbose output
34     --niscc-home DIR use NISCC testcases from directory DIR (default /niscc)
35     --host HOST      use host HOST (default '127.0.0.1')
36     --threads X      set thread number to X (max. 10, default 10)
37     --out DIR        set DIR as output directory (default '/out')
38     --mail ADDRESS   send mail with test result to ADDRESS
39     --nss DIR        set NSS directory to DIR (default '~/niscc-hg/nss')
40     --nss-hack DIR   set hacked NSS directory to DIR (default '~/niscc-hg/nss_hack')
41     --log-store      store all the logs (only summary by default)
42     --no-build-test  don't pull and build tested NSS
43     --no-build-hack  don't pull and build hacked NSS
44     --test-system    test system installed NSS
45     --date DATE      use DATE in log archive name and outgoing email
46     --libfaketime path.so  use faketime library with LD_PRELOAD=path.so
47     --smallset       test only a very small subset
48
49All options are optional.
50All options (and possibly more) can be also set through environment variables.
51Commandline options have higher priority than environment variables.
52For more information please refer to the source code of this script.
53
54For a successfull run the script NEEDS the core file pattern to be 'core.*',
55e.g. 'core.%t'. You can check the current pattern in
56'/proc/sys/kernel/core_pattern'. Otherwise the test will be unable to detect
57any failures and will pass every time.
58
59It is recommended to use hacked and tested binaries in a location, where their
60absolute path is max. 80 characters. If their path is longer and a core file is
61generated, its properties may be incomplete.
62
63Return value of the script indicates how many failures it experienced.
64
65EOF
66    exit $1
67}
68
69################################################################################
70# Process command-line arguments
71################################################################################
72process_args()
73{
74    HELP="false"
75    args=`getopt -u -l "niscc-home:,host:,threads:,out:,verbose,mail:,nss:,nss-hack:,log-store,no-build-test,no-build-hack,help,test-system,date:,libfaketime:,smallset" -- "hv" $*`
76    [ "$?" != "0" ] && usage 1
77    set -- $args
78    for i; do
79        case "$i" in
80            -v|--verbose)
81                shift
82                VERBOSE="-v"
83                ;;
84            --niscc-home)
85                shift
86                NISCC_HOME="$1"
87                shift
88                ;;
89            --host)
90                shift
91                HOST="$1"
92                shift
93                ;;
94            --threads)
95                shift
96                THREADS="$1"
97                shift
98                ;;
99            --out)
100                shift
101                TEST_OUTPUT="$1"
102                shift
103                ;;
104            --mail)
105                shift
106                USE_MAIL="true"
107                QA_LIST="$1"
108                shift
109                ;;
110            --nss)
111                shift
112                LOCALDIST="$1"
113                shift
114                ;;
115            --nss-hack)
116                shift
117                NSS_HACK="$1"
118                shift
119                ;;
120            --log-store)
121                shift
122                LOG_STORE="true"
123                ;;
124            --no-build-test)
125                shift
126                NO_BUILD_TEST="true"
127                ;;
128            --no-build-hack)
129                shift
130                NO_BUILD_HACK="true"
131                ;;
132            -h|--help)
133                shift
134                HELP="true"
135                ;;
136            --test-system)
137                shift
138                TEST_SYSTEM="true"
139                ;;
140            --date)
141                shift
142                DATE="$1"
143                shift
144                ;;
145            --libfaketime)
146                shift
147                FAKETIMELIB="$1"
148                shift
149                ;;
150            --smallset)
151                shift
152                SMALLSET="true"
153                ;;
154            --)
155                ;;
156            *)
157                ;;
158        esac
159    done
160    [ $HELP = "true" ] && usage 0
161}
162
163################################################################################
164# Create and set needed and useful environment variables
165################################################################################
166create_environment()
167{
168    # Base location of NISCC testcases
169    export NISCC_HOME=${NISCC_HOME:-/niscc}
170
171    # Base location of NSS
172    export HG=${HG:-"$HOME/niscc-hg"}
173
174    # NSS being tested
175    export LOCALDIST=${LOCALDIST:-"${HG}/nss"}
176
177    # Hacked NSS - built with "NISCC_TEST=1"
178    export NSS_HACK=${NSS_HACK:-"${HG}/nss_hack"}
179
180    # Hostname of the testmachine
181    export HOST=${HOST:-127.0.0.1}
182
183    # Whether to store logfiles
184    export LOG_STORE=${LOG_STORE:-"false"}
185
186    # Whether to mail the summary
187    export USE_MAIL=${USE_MAIL:-"false"}
188
189    # How to mail summary
190    export MAIL_COMMAND=${MAIL_COMMAND:-"mailx -S smtp=smtp://your.smtp.server:25 -r your+niscc@email.address"}
191
192    # List of mail addresses where to send summary
193    export QA_LIST=${QA_LIST:-"result@recipient.address"}
194
195    # Whether to use 64b build
196    export USE_64=${USE_64:-1}
197
198    # Directory where to write all the output data (around 650MiB for each run)
199    export TEST_OUTPUT=${TEST_OUTPUT:-"$HOME/out"}
200
201    # How many threads to use in selfserv and strsclnt (max. 10)
202    export THREADS=${THREADS:-10}
203
204    # If true, do not build tthe tested version of NSS
205    export NO_BUILD_TEST=${NO_BUILD_TEST:-"false"}
206
207    # If true, do not build the special NSS version for NISCC
208    export NO_BUILD_HACK=${NO_BUILD_HACK:-"false"}
209
210    # If true, do not rebuild client and server directories
211    export NO_SETUP=${NO_SETUP:-"false"}
212
213    # Location of NISCC SSL/TLS testcases
214    export TEST=${TEST:-"${NISCC_HOME}/NISCC_SSL_testcases"}
215
216    # If true, then be extra verbose
217    export VERBOSE=${VERBOSE:-""}
218
219    # If true, test the system installed NSS
220    export TEST_SYSTEM=${TEST_SYSTEM:-"false"}
221    [ "$TEST_SYSTEM" = "true" ] && export NO_BUILD_TEST="true"
222
223    [ ! -z "$VERBOSE" ] && set -xv
224
225    # Real date for naming of archives (system date must be 2002-11-18 .. 2007-11-18 due to certificate validity
226    DATE=${DATE:-`date`}
227    export DATE=`date -d "$DATE" +%Y%m%d`
228
229    FAKETIMELIB=${FAKETIMELIB:-""}
230    export DATE=`date -d "$DATE" +%Y%m%d`
231
232    # Whether to test only a very small subset
233    export SMALLSET=${SMALLSET:-"false"}
234
235    # Create output dir if it doesn't exist
236    mkdir -p ${TEST_OUTPUT}
237}
238
239################################################################################
240# Do a HG pull of NSS
241################################################################################
242hg_pull()
243{
244    # Tested NSS - by default using HG default tip
245    if [ "$NO_BUILD_TEST" = "false" ]; then
246        echo "cloning NSS sources to be tested from HG"
247        [ ! -d "$LOCALDIST" ] && mkdir -p "$LOCALDIST"
248        cd "$LOCALDIST"
249        [ ! -d "$LOCALDIST/nspr" ] && hg clone --noupdate https://hg.mozilla.org/projects/nspr
250        cd nspr; hg pull; hg update -C -r default; cd ..
251        [ ! -d "$LOCALDIST/nss" ] && hg clone --noupdate https://hg.mozilla.org/projects/nss
252        cd nss; hg pull; hg update -C -r default; cd ..
253        #find . -exec touch {} \;
254    fi
255
256    # Hacked NSS - by default using some RTM version.
257    # Do not use HEAD for hacked NSS - it needs to be stable and bug-free
258    if [ "$NO_BUILD_HACK" = "false" ]; then
259        echo "cloning NSS sources for a hacked build from HG"
260        [ ! -d "$NSS_HACK" ] && mkdir -p "$NSS_HACK"
261        cd "$NSS_HACK"
262        NSPR_TAG=`curl --silent http://hg.mozilla.org/releases/mozilla-aurora/raw-file/default/nsprpub/TAG-INFO | head -1 | sed --regexp-extended 's/[[:space:]]//g' | awk '{print $1}'`
263        NSS_TAG=`curl --silent http://hg.mozilla.org/releases/mozilla-aurora/raw-file/default/security/nss/TAG-INFO | head -1 | sed --regexp-extended 's/[[:space:]]//g' | awk '{print $1}'`
264        [ ! -d "$NSS_HACK/nspr" ] && hg clone --noupdate https://hg.mozilla.org/projects/nspr
265        cd nspr; hg pull; hg update -C -r "$NSPR_TAG"; cd ..
266        [ ! -d "$NSS_HACK/nss" ] && hg clone --noupdate https://hg.mozilla.org/projects/nss
267        cd nss; hg pull; hg update -C -r "$NSS_TAG"; cd ..
268        #find . -exec touch {} \;
269    fi
270}
271
272################################################################################
273# Build NSS after setting make variable NISCC_TEST
274################################################################################
275build_NSS()
276{
277    # Tested NSS
278    if [ "$NO_BUILD_TEST" = "false" ]; then
279        echo "building NSS to be tested"
280        cd "$LOCALDIST"
281        unset NISCC_TEST
282        cd nss
283        gmake nss_clean_all &>> $TEST_OUTPUT/nisccBuildLog
284        gmake nss_build_all &>> $TEST_OUTPUT/nisccBuildLog
285    fi
286
287    # Hacked NSS
288    if [ "$NO_BUILD_HACK" = "false" ]; then
289        echo "building hacked NSS"
290        cd "$NSS_HACK"
291        export NISCC_TEST=1
292        cd nss
293        gmake nss_clean_all &>> $TEST_OUTPUT/nisccBuildLogHack
294        gmake nss_build_all &>> $TEST_OUTPUT/nisccBuildLogHack
295    fi
296
297    unset NISCC_TEST
298}
299
300################################################################################
301# Set build dir, bin and lib directories
302################################################################################
303init()
304{
305    # Enable useful core files to be generated in case of crash
306    ulimit -c unlimited
307
308    # Pattern of core files, they should be created in current directory
309    echo "core_pattern $(cat /proc/sys/kernel/core_pattern)" > "$TEST_OUTPUT/nisccLog00"
310
311    # gmake is needed in the path for this suite to run
312    echo "PATH $PATH" >> "$TEST_OUTPUT/nisccLog00"
313
314    # Find out hacked NSS version
315    DISTTYPE=`cd "$NSS_HACK/nss/tests/common"; gmake objdir_name`
316    echo "NSS_HACK DISTTYPE $DISTTYPE" >> "$TEST_OUTPUT/nisccLog00"
317    export HACKBIN="$NSS_HACK/dist/$DISTTYPE/bin"
318    export HACKLIB="$NSS_HACK/dist/$DISTTYPE/lib"
319
320    if [ "$TEST_SYSTEM" = "false" ]; then
321        # Find out nss version
322        DISTTYPE=`cd "$LOCALDIST/nss/tests/common"; gmake objdir_name`
323        echo "NSS DISTTYPE $DISTTYPE" >> "$TEST_OUTPUT/nisccLog00"
324        export TESTBIN="$LOCALDIST/dist/$DISTTYPE/bin"
325        export TESTLIB="$LOCALDIST/dist/$DISTTYPE/lib"
326        export TESTTOOLS="$TESTBIN"
327    else
328        # Using system installed NSS
329        echo "USING SYSTEM NSS" >> "$TEST_OUTPUT/nisccLog00"
330        export TESTBIN="/usr/bin"
331        if [ `uname -m` = "x86_64" ]; then
332            export TESTLIB="/usr/lib64"
333            export TESTTOOLS="/usr/lib64/nss/unsupported-tools"
334        else
335            export TESTLIB="/usr/lib"
336            export TESTTOOLS="/usr/lib/nss/unsupported-tools"
337        fi
338    fi
339
340    # Verify NISCC_TEST was set in the proper library
341    if strings "$HACKLIB/libssl3.so" | grep NISCC_TEST > /dev/null 2>&1; then
342        echo "$HACKLIB/libssl3.so contains NISCC_TEST" >> "$TEST_OUTPUT/nisccLog00"
343    else
344        echo "$HACKLIB/libssl3.so does NOT contain NISCC_TEST" >> "$TEST_OUTPUT/nisccLog00"
345    fi
346
347    if strings "$TESTLIB/libssl3.so" | grep NISCC_TEST > /dev/null 2>&1; then
348        echo "$TESTLIB/libssl3.so contains NISCC_TEST" >> "$TEST_OUTPUT/nisccLog00"
349    else
350        echo "$TESTLIB/libssl3.so does NOT contain NISCC_TEST" >> "$TEST_OUTPUT/nisccLog00"
351    fi
352}
353
354################################################################################
355# Setup simple client and server directory
356################################################################################
357ssl_setup_dirs_simple()
358{
359    [ "$NO_SETUP" = "true" ] && return
360
361    echo "Setting up working directories for SSL simple tests"
362
363    CLIENT="$TEST_OUTPUT/niscc_ssl/simple_client"
364    SERVER="$TEST_OUTPUT/niscc_ssl/simple_server"
365
366    # Generate .p12 files
367    openssl pkcs12 -export -inkey "$TEST/client_key.pem" -in "$TEST/client_crt.pem" -out "$TEST_OUTPUT/client_crt.p12" -passout pass:testtest1 -name "client_crt"
368    openssl pkcs12 -export -inkey "$TEST/server_key.pem" -in "$TEST/server_crt.pem" -out "$TEST_OUTPUT/server_crt.p12" -passout pass:testtest1 -name "server_crt"
369
370    # Setup simple client directory
371    rm -rf "$CLIENT"
372    mkdir -p "$CLIENT"
373    echo test > "$CLIENT/password-is-test.txt"
374    export LD_LIBRARY_PATH="$TESTLIB"
375    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
376    "${TESTBIN}/certutil" -N -d "$CLIENT" -f "$CLIENT/password-is-test.txt" >> "$TEST_OUTPUT/nisccLog00" 2>&1
377    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
378    "${TESTBIN}/certutil" -A -d "$CLIENT" -n rootca -i "$TEST/rootca.crt" -t "C,C," >> "$TEST_OUTPUT/nisccLog00" 2>&1
379    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
380    "${TESTBIN}/pk12util" -i "$TEST_OUTPUT/client_crt.p12" -d "$CLIENT" -k "$CLIENT/password-is-test.txt" -W testtest1 >> "$TEST_OUTPUT/nisccLog00" 2>&1
381    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
382    "${TESTBIN}/certutil" -L -d "$CLIENT" >> "$TEST_OUTPUT/nisccLog00" 2>&1
383
384    # File containg message used for terminating the server
385    echo "GET /stop HTTP/1.0" > "$CLIENT/stop.txt"
386    echo ""                  >> "$CLIENT/stop.txt"
387
388    # Setup simple server directory
389    rm -rf "$SERVER"
390    mkdir -p "$SERVER"
391    echo test > "$SERVER/password-is-test.txt"
392    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
393    "${TESTBIN}/certutil" -N -d "$SERVER" -f "$SERVER/password-is-test.txt" >> "$TEST_OUTPUT/nisccLog00" 2>&1
394    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
395    "${TESTBIN}/certutil" -A -d "$SERVER" -n rootca -i "$TEST/rootca.crt" -t "TC,C," >> "$TEST_OUTPUT/nisccLog00" 2>&1
396    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
397    "${TESTBIN}/pk12util" -i "$TEST_OUTPUT/server_crt.p12" -d "$SERVER" -k "$SERVER/password-is-test.txt" -W testtest1 >> "$TEST_OUTPUT/nisccLog00" 2>&1
398    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
399    "${TESTBIN}/certutil" -L -d "$SERVER" >> "$TEST_OUTPUT/nisccLog00" 2>&1
400
401    unset LD_LIBRARY_PATH
402}
403
404################################################################################
405# Setup resigned client and server directory
406################################################################################
407ssl_setup_dirs_resigned()
408{
409    [ "$NO_SETUP" = "true" ] && return
410
411    echo "Setting up working directories for SSL resigned tests"
412
413    CLIENT="$TEST_OUTPUT/niscc_ssl/resigned_client"
414    SERVER="$TEST_OUTPUT/niscc_ssl/resigned_server"
415
416    # Setup resigned client directory
417    rm -rf "$CLIENT"
418    mkdir -p "$CLIENT"
419    echo test > "$CLIENT/password-is-test.txt"
420    export LD_LIBRARY_PATH="$TESTLIB"
421    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
422    "${TESTBIN}/certutil" -N -d "$CLIENT" -f "$CLIENT/password-is-test.txt" >> "$TEST_OUTPUT/nisccLog00" 2>&1
423    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
424    "${TESTBIN}/certutil" -A -d "$CLIENT" -n rootca -i "$TEST/rootca.crt" -t "C,C," >> "$TEST_OUTPUT/nisccLog00" 2>&1
425    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
426    "${TESTBIN}/pk12util" -i "$TEST_OUTPUT/client_crt.p12" -d "$CLIENT" -k "$CLIENT/password-is-test.txt" -W testtest1 >> "$TEST_OUTPUT/nisccLog00" 2>&1
427    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
428    "${TESTBIN}/certutil" -L -d "$CLIENT" >> "$TEST_OUTPUT/nisccLog00" 2>&1
429
430    echo "GET /stop HTTP/1.0" > "$CLIENT/stop.txt"
431    echo ""                  >> "$CLIENT/stop.txt"
432
433    # Setup resigned server directory
434    rm -rf "$SERVER"
435    mkdir -p "$SERVER"
436    echo test > "$SERVER/password-is-test.txt"
437    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
438    "${TESTBIN}/certutil" -N -d "$SERVER" -f "$SERVER/password-is-test.txt" >> "$TEST_OUTPUT/nisccLog00" 2>&1
439    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
440    "${TESTBIN}/certutil" -A -d "$SERVER" -n rootca -i "$TEST/rootca.crt" -t "TC,C," >> "$TEST_OUTPUT/nisccLog00" 2>&1
441    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
442    "${TESTBIN}/pk12util" -i "$TEST_OUTPUT/server_crt.p12" -d "$SERVER" -k "$SERVER/password-is-test.txt" -W testtest1 >> "$TEST_OUTPUT/nisccLog00" 2>&1
443    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
444    "${TESTBIN}/certutil" -L -d "$SERVER" >> "$TEST_OUTPUT/nisccLog00" 2>&1
445
446    unset LD_LIBRARY_PATH
447}
448
449################################################################################
450# NISCC SMIME tests
451################################################################################
452niscc_smime()
453{
454    cd "$TEST_OUTPUT"
455    DATA="$NISCC_HOME/NISCC_SMIME_testcases"
456
457    [ ! -d niscc_smime ] && mkdir -p niscc_smime
458
459    export SMIME_CERT_DB_DIR=envDB
460    export NSS_STRICT_SHUTDOWN=1
461    export NSS_DISABLE_ARENA_FREE_LIST=1
462    export LD_LIBRARY_PATH="$TESTLIB"
463
464    # Generate .p12 files
465    openssl pkcs12 -export -inkey "$DATA/Client.key" -in "$DATA/Client.crt" -out Client.p12 -passout pass:testtest1 &>/dev/null
466    openssl pkcs12 -export -inkey "$DATA/CA.key" -in "$DATA/CA.crt" -out CA.p12 -passout pass:testtest1 &>/dev/null
467
468    # Generate envDB if needed
469    if [ ! -d "$SMIME_CERT_DB_DIR" ]; then
470        mkdir -p "$SMIME_CERT_DB_DIR"
471        echo testtest1 > password-is-testtest1.txt
472        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
473        "${TESTBIN}/certutil" -N -d "./$SMIME_CERT_DB_DIR" -f password-is-testtest1.txt > /dev/null 2>&1
474        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
475        "${TESTBIN}/certutil" -A -d "$SMIME_CERT_DB_DIR" -f password-is-testtest1.txt -i "$DATA/CA.crt" -n CA -t "TC,C,"
476        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
477        "${TESTBIN}/certutil" -A -d "$SMIME_CERT_DB_DIR" -f password-is-testtest1.txt -i "$DATA/Client.crt" -n Client -t "TC,C,"
478        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
479        "${TESTBIN}/pk12util" -i ./CA.p12 -d "$SMIME_CERT_DB_DIR" -k password-is-testtest1.txt -W testtest1
480        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
481        "${TESTBIN}/pk12util" -i ./Client.p12 -d "$SMIME_CERT_DB_DIR" -k password-is-testtest1.txt -W testtest1
482    fi
483
484    # if p7m-ed-m-files.txt does not exist, then generate it.
485    [ -f "$DATA/p7m-ed-m-files.txt" ] && sed "s|^|$DATA/|" "$DATA/p7m-ed-m-files.txt" > p7m-ed-m-files.txt
486    export P7M_ED_M_FILES=p7m-ed-m-files.txt
487    if [ "$SMALLSET" = "true" ]; then
488        [ ! -f "$P7M_ED_M_FILES" ] && find "$DATA"/p7m-ed-m-0* -type f -print | head -10 >> "$P7M_ED_M_FILES"
489    else
490        [ ! -f "$P7M_ED_M_FILES" ] && find "$DATA"/p7m-ed-m-0* -type f -print >> "$P7M_ED_M_FILES"
491    fi
492
493    # Test "p7m-ed-m*" testcases
494    echo "Testing SMIME enveloped data testcases"
495    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
496    "${TESTBIN}/cmsutil" $VERBOSE -D -d "$SMIME_CERT_DB_DIR" -p testtest1 -b -i "$P7M_ED_M_FILES" > niscc_smime/p7m-ed-m-results.txt 2>&1
497
498    export SMIME_CERT_DB_DIR=sigDB
499    # Generate sigDB if needed
500    if [ ! -d "$SMIME_CERT_DB_DIR" ]; then
501        mkdir -p "$SMIME_CERT_DB_DIR"
502        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
503        "${TESTBIN}/certutil" -N -d "$SMIME_CERT_DB_DIR" -f password-is-testtest1.txt
504        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
505        "${TESTBIN}/certutil" -A -d "$SMIME_CERT_DB_DIR" -i "$DATA/CA.crt" -n CA -t "TC,C,"
506        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
507        "${TESTBIN}/certutil" -A -d "$SMIME_CERT_DB_DIR" -i "$DATA/Client.crt" -n Client -t "TC,C,"
508    fi
509
510    # if p7m-sd-dt-files.txt does not exist, then generate it.
511    [ -f "$DATA/p7m-sd-dt-files.txt" ] && sed "s|^|$DATA/|" "$DATA/p7m-sd-dt-files.txt" > p7m-sd-dt-files.txt
512    export P7M_SD_DT_FILES=p7m-sd-dt-files.txt
513    if [ "$SMALLSET" = "true" ]; then
514        [ ! -f "$P7M_SD_DT_FILES" ] && find "$DATA"/p7m-sd-dt-[cm]-* -type f -print | head -10 >> "$P7M_SD_DT_FILES"
515    else
516        [ ! -f "$P7M_SD_DT_FILES" ] && find "$DATA"/p7m-sd-dt-[cm]-* -type f -print >> "$P7M_SD_DT_FILES"
517    fi
518
519    [ ! -f detached.txt ] && touch detached.txt
520
521    # Test "p7m-sd-dt*" testcases
522    echo "Testing SMIME detached signed data testcases"
523    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
524    "${TESTBIN}/cmsutil" $VERBOSE -D -d "$SMIME_CERT_DB_DIR" -c detached.txt -b -i "$P7M_SD_DT_FILES" > niscc_smime/p7m-sd-dt-results.txt 2>&1
525
526    # if p7m-sd-op-files.txt does not exist, then generate it.
527    [ -f "$DATA/p7m-sd-op-files.txt" ] && sed "s|^|$DATA/|" "$DATA/p7m-sd-op-files.txt" > p7m-sd-op-files.txt
528    export P7M_SD_OP_FILES=p7m-sd-op-files.txt
529    if [ "$SMALLSET" = "true" ]; then
530        [ ! -f "$P7M_SD_OP_FILES" ] && find "$DATA"/p7m-sd-op-[cm]-* -type f -print | head -10 >> "$P7M_SD_OP_FILES"
531    else
532        [ ! -f "$P7M_SD_OP_FILES" ] && find "$DATA"/p7m-sd-op-[cm]-* -type f -print >> "$P7M_SD_OP_FILES"
533    fi
534
535    # Test "p7m-sd-op*" testcases
536    echo "Testing SMIME opaque signed data testcases"
537    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
538    "${TESTBIN}/cmsutil" $VERBOSE -D -d "$SMIME_CERT_DB_DIR" -b -i "$P7M_SD_OP_FILES" > niscc_smime/p7m-sd-op-results.txt 2>&1
539
540    unset LD_LIBRARY_PATH
541}
542
543################################################################################
544# Set env variables for NISCC SSL tests
545################################################################################
546niscc_ssl_init()
547{
548    export NSS_STRICT_SHUTDOWN=1
549    export NSS_DISABLE_ARENA_FREE_LIST=1
550    cd "$TEST_OUTPUT"
551}
552
553force_crash()
554{
555    echo "int main(int argc, char *argv[]) { int *i; i = (int*)(void*)1; *i = 1; }" > "$TEST_OUTPUT/crashme.c"
556    gcc -g -o "$TEST_OUTPUT/crashme" "$TEST_OUTPUT/crashme.c"
557    "$TEST_OUTPUT/crashme"
558}
559
560################################################################################
561# Do simple client auth tests
562# Use an altered client against the server
563################################################################################
564ssl_simple_client_auth()
565{
566    echo "Testing SSL simple client auth testcases"
567    export CLIENT="$TEST_OUTPUT/niscc_ssl/simple_client"
568    export SERVER="$TEST_OUTPUT/niscc_ssl/simple_server"
569    export PORT=8443
570    export START_AT=1
571    if [ "$SMALLSET" = "true" ]; then
572        export STOP_AT=10
573    else
574        export STOP_AT=106160
575    fi
576    unset NISCC_TEST
577    export LD_LIBRARY_PATH="$TESTLIB"
578    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
579    "${TESTTOOLS}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -rr -t $THREADS -w test > "$TEST_OUTPUT/nisccLog01" 2>&1 &
580
581    export NISCC_TEST="$TEST/simple_client"
582    export LD_LIBRARY_PATH="$HACKLIB"
583
584    for START in `seq $START_AT $THREADS $STOP_AT`; do
585        START_AT=$START \
586        STOP_AT=$(($START+$THREADS)) \
587        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
588        "${HACKBIN}/strsclnt" $VERBOSE -d "$CLIENT" -n client_crt -p $PORT -t $THREADS -c $THREADS -o -N -w test $HOST >> "$TEST_OUTPUT/nisccLog02" 2>&1
589    done
590
591    unset NISCC_TEST
592    echo "starting tstclnt to shutdown simple client selfserv process"
593    for i in `seq 5`; do
594        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
595        "${HACKBIN}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog02" 2>&1
596    done
597
598    unset LD_LIBRARY_PATH
599
600    sleep 1
601}
602
603################################################################################
604# Do simple server auth tests
605# Use an altered server against the client
606################################################################################
607ssl_simple_server_auth()
608{
609    echo "Testing SSL simple server auth testcases"
610    export CLIENT="$TEST_OUTPUT/niscc_ssl/simple_client"
611    export SERVER="$TEST_OUTPUT/niscc_ssl/simple_server"
612    export PORT=8444
613    export START_AT=00000001
614    if [ "$SMALLSET" = "true" ]; then
615        export STOP_AT=00000010
616    else
617        export STOP_AT=00106167
618    fi
619    export LD_LIBRARY_PATH="$HACKLIB"
620    export NISCC_TEST="$TEST/simple_server"
621    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
622    "${HACKBIN}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -t $THREADS -w test > "$TEST_OUTPUT/nisccLog03" 2>&1 &
623
624    unset NISCC_TEST
625    export LD_LIBRARY_PATH="$TESTLIB"
626    for START in `seq $START_AT $THREADS $STOP_AT`; do
627        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
628        "${TESTTOOLS}/strsclnt" $VERBOSE -d "$CLIENT" -p $PORT -t $THREADS -c $THREADS -o -N $HOST >> "$TEST_OUTPUT/nisccLog04" 2>&1
629    done
630
631    echo "starting tstclnt to shutdown simple server selfserv process"
632    for i in `seq 5`; do
633        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
634        "${TESTTOOLS}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog04" 2>&1
635    done
636
637    unset LD_LIBRARY_PATH
638
639    sleep 1
640}
641
642################################################################################
643# Do simple rootCA tests
644# Use an altered server against the client
645################################################################################
646ssl_simple_rootca()
647{
648    echo "Testing SSL simple rootCA testcases"
649    export CLIENT="$TEST_OUTPUT/niscc_ssl/simple_client"
650    export SERVER="$TEST_OUTPUT/niscc_ssl/simple_server"
651    export PORT=8445
652    export START_AT=1
653    if [ "$SMALLSET" = "true" ]; then
654        export STOP_AT=10
655    else
656        export STOP_AT=106190
657    fi
658    export LD_LIBRARY_PATH="$HACKLIB"
659    export NISCC_TEST="$TEST/simple_rootca"
660    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
661    "${HACKBIN}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -t $THREADS -w test > "$TEST_OUTPUT/nisccLog05" 2>&1 &
662
663    unset NISCC_TEST
664    export LD_LIBRARY_PATH="$TESTLIB"
665    for START in `seq $START_AT $THREADS $STOP_AT`; do
666        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
667        "${TESTTOOLS}/strsclnt" $VERBOSE -d "$CLIENT" -p $PORT -t $THREADS -c $THREADS -o -N $HOST >> "$TEST_OUTPUT/nisccLog06" 2>&1
668    done
669
670    echo "starting tstclnt to shutdown simple rootca selfserv process"
671    for i in `seq 5`; do
672        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
673        "${TESTTOOLS}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog06" 2>&1
674    done
675
676    unset LD_LIBRARY_PATH
677
678    sleep 1
679}
680
681################################################################################
682# Do resigned client auth tests
683# Use an altered client against the server
684################################################################################
685ssl_resigned_client_auth()
686{
687    echo "Testing SSL resigned client auth testcases"
688    export CLIENT="$TEST_OUTPUT/niscc_ssl/resigned_client"
689    export SERVER="$TEST_OUTPUT/niscc_ssl/resigned_server"
690    export PORT=8446
691    export START_AT=0
692    if [ "$SMALLSET" = "true" ]; then
693        export STOP_AT=9
694    else
695        export STOP_AT=99981
696    fi
697    unset NISCC_TEST
698    export LD_LIBRARY_PATH="$TESTLIB"
699    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
700    "${TESTTOOLS}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -rr -t $THREADS -w test > "$TEST_OUTPUT/nisccLog07" 2>&1 &
701
702    export NISCC_TEST="$TEST/resigned_client"
703    export LD_LIBRARY_PATH="$HACKLIB"
704
705    for START in `seq $START_AT $THREADS $STOP_AT`; do
706        START_AT=$START \
707        STOP_AT=$(($START+$THREADS)) \
708        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
709        "${HACKBIN}/strsclnt" $VERBOSE -d "$CLIENT" -n client_crt -p $PORT -t $THREADS -c $THREADS -o -N -w test $HOST >> "$TEST_OUTPUT/nisccLog08" 2>&1
710    done
711
712    unset NISCC_TEST
713    echo "starting tstclnt to shutdown resigned client selfserv process"
714    for i in `seq 5`; do
715        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
716        "${HACKBIN}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog08" 2>&1
717    done
718
719    unset LD_LIBRARY_PATH
720
721    sleep 1
722}
723
724################################################################################
725# Do resigned server auth tests
726# Use an altered server against the client
727################################################################################
728ssl_resigned_server_auth()
729{
730    echo "Testing SSL resigned server auth testcases"
731    export CLIENT="$TEST_OUTPUT/niscc_ssl/resigned_client"
732    export SERVER="$TEST_OUTPUT/niscc_ssl/resigned_server"
733    export PORT=8447
734    export START_AT=0
735    if [ "$SMALLSET" = "true" ]; then
736        export STOP_AT=9
737    else
738        export STOP_AT=100068
739    fi
740    export LD_LIBRARY_PATH="$HACKLIB"
741    export NISCC_TEST="$TEST/resigned_server"
742    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
743    "${HACKBIN}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -t $THREADS -w test > "$TEST_OUTPUT/nisccLog09" 2>&1 &
744
745    unset NISCC_TEST
746    export LD_LIBRARY_PATH="$TESTLIB"
747    for START in `seq $START_AT $THREADS $STOP_AT`; do
748        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
749        "${TESTTOOLS}/strsclnt" $VERBOSE -d "$CLIENT" -p $PORT -t $THREADS -c $THREADS -o -N $HOST >> "$TEST_OUTPUT/nisccLog10" 2>&1
750    done
751
752    echo "starting tstclnt to shutdown resigned server selfserv process"
753    for i in `seq 5`; do
754        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
755        "${TESTTOOLS}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog10" 2>&1
756    done
757
758    unset LD_LIBRARY_PATH
759
760    sleep 1
761}
762
763################################################################################
764# Do resigned rootCA tests
765# Use an altered server against the client
766################################################################################
767ssl_resigned_rootca()
768{
769    echo "Testing SSL resigned rootCA testcases"
770    export CLIENT="$TEST_OUTPUT/niscc_ssl/resigned_client"
771    export SERVER="$TEST_OUTPUT/niscc_ssl/resigned_server"
772    export PORT=8448
773    export START_AT=0
774    if [ "$SMALLSET" = "true" ]; then
775        export STOP_AT=9
776    else
777        export STOP_AT=99959
778    fi
779    export LD_LIBRARY_PATH="$HACKLIB"
780    export NISCC_TEST="$TEST/resigned_rootca"
781    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
782    "${HACKBIN}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -t $THREADS -w test > "$TEST_OUTPUT/nisccLog11" 2>&1 &
783
784    unset NISCC_TEST
785    export LD_LIBRARY_PATH="$TESTLIB"
786    for START in `seq $START_AT $THREADS $STOP_AT`; do
787        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
788        "${TESTTOOLS}/strsclnt" $VERBOSE -d "$CLIENT" -p $PORT -t $THREADS -c $THREADS -o -N $HOST >> "$TEST_OUTPUT/nisccLog12" 2>&1
789    done
790
791    echo "starting tstclnt to shutdown resigned rootca selfserv process"
792    for i in `seq 5`; do
793        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
794        "${TESTTOOLS}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog12" 2>&1
795    done
796
797    unset LD_LIBRARY_PATH
798
799    sleep 1
800}
801
802################################################################################
803# Email the test logfile, and if core found, notify of failure
804################################################################################
805mail_testLog()
806{
807    pushd "$TEST_OUTPUT"
808
809    # remove mozilla nss build false positives and core stored in previous runs
810    find . -name "core*" -print | grep -v coreconf | grep -v core_watch | grep -v archive >> crashLog
811    export SIZE=`cat crashLog | wc -l`
812
813    [ "$USE_MAIL" = "false" ] && return
814
815    # mail text
816    MT=mailText
817    rm -f $MT
818
819    if [ "$SIZE" -ne 1 ]; then
820        echo "### FAILED ###" >> $MT
821        echo "### Exactly one crash is expected." >> $MT
822        echo "### Zero means: crash detection is broken, fix the script!" >> $MT
823        echo "### > 1 means: robustness test failure, fix the bug! (check the logs)" >> $MT
824        cat crashLog >> nisccLogSummary
825        SUBJ="FAILED: NISCC TESTS (check file: crashLog)"
826    else
827        echo ":) PASSED :)" >> $MT
828        SUBJ="PASSED: NISCC tests"
829    fi
830
831    echo "Date used during test run: $DATE" >> $MT
832
833    echo "Count of lines in files:" >> $MT
834    wc -l crashLog nisccBuildLog nisccBuildLogHack nisccLog[0-9]* p7m-* |grep -vw total >> $MT
835    NUM=`cat nisccLog0[123456789] nisccLog1[12] | egrep -ic "success/passed"`
836    echo "Number of times the SSL tests reported success/passed (low expected): $NUM" >> $MT
837    NUM=`cat nisccLog0[123456789] nisccLog1[12] | egrep -ic "problem|failed|error"`
838    echo "Number of times the SSL tests reported problem/failed/error (high expected): $NUM" >> $MT
839    NUM=`cat niscc_smime/p7m*results.txt | egrep -ic "success/passed"`
840    echo "Number of times the S/MIME tests reported success/passed (low expected): $NUM" >> $MT
841    NUM=`cat niscc_smime/p7m*results.txt | egrep -ic "problem|failed|error"`
842    echo "Number of times the S/MIME tests reported problem/failed/error (high expected): $NUM" >> $MT
843    echo "==== tail of nisccBuildLog ====" >> $MT
844    tail -20 nisccBuildLog >> $MT
845    echo "===============================" >> $MT
846    echo "==== tail of nisccBuildLogHack ====" >> $MT
847    tail -20 nisccBuildLogHack >> $MT
848    echo "===================================" >> $MT
849
850    #NUM=``
851    #echo "Number of : $NUM" >> $MT
852
853    cat $MT | $MAIL_COMMAND -s "$SUBJ" $QA_LIST
854
855    popd
856}
857
858################################################################################
859# Summarize all logs
860################################################################################
861log_summary()
862{
863    echo "Summarizing all logs"
864    # Move old logs
865    [ -f "$TEST_OUTPUT/nisccLogSummary" ] && mv nisccLogSummary nisccLogSummary.old
866    [ -f "$TEST_OUTPUT/crashLog" ] && mv crashLog crashLog.old
867
868    for a in $TEST_OUTPUT/nisccLog[0-9]*; do
869        echo ================================== "$a"
870        grep -v using "$a" | sort | uniq -c | sort -b -n +0 -1
871    done > $TEST_OUTPUT/nisccLogSummary
872
873    for a in $TEST_OUTPUT/niscc_smime/p7m-*-results.txt; do
874        echo ================================== "$a"
875        grep -v using "$a" | sort | uniq -c | sort -b -n +0 -1
876    done >> $TEST_OUTPUT/nisccLogSummary
877}
878
879################################################################################
880# Process core files
881################################################################################
882core_process()
883{
884    echo "Processing core files"
885    cd "$TEST_OUTPUT"
886
887    for CORE in `cat crashLog`; do
888        FILE=`file "$CORE" | sed "s/.* from '//" | sed "s/'.*//"`
889        BINARY=`strings "$CORE" | grep "^${FILE}" | tail -1`
890        gdb "$BINARY" "$CORE" << EOF_GDB > "$CORE.details"
891where
892quit
893EOF_GDB
894    done
895}
896
897################################################################################
898# Move the old log files to save them, delete extra log files
899################################################################################
900move_files()
901{
902    echo "Moving and deleting log files"
903    cd "$TEST_OUTPUT"
904
905    rm -rf TRASH
906    mkdir TRASH
907
908    if [ "$LOG_STORE" = "true" ]; then
909        BRANCH=`echo $LOCALDIST | sed "s:.*/\(security.*\)/builds/.*:\1:"`
910        if [ "$BRANCH" = "$LOCALDIST" ]; then
911            ARCHIVE="$TEST_OUTPUT/archive"
912        else
913            ARCHIVE="$TEST_OUTPUT/archive/$BRANCH"
914        fi
915
916        # Check for archive directory
917        if [ ! -d "$ARCHIVE" ]; then
918            mkdir -p "$ARCHIVE"
919        fi
920
921        # Determine next log storage point
922        slot=`ls -1 "$ARCHIVE" | grep $DATE | wc -l`
923        slot=`expr $slot + 1`
924        location="$ARCHIVE/$DATE.$slot"
925        mkdir -p "$location"
926
927        # Archive the logs
928        mv nisccBuildLog "$location" 2> /dev/null
929        mv nisccBuildLogHack "$location" 2> /dev/null
930        mv nisccLogSummary "$location"
931        mv nisccLog* "$location"
932        mv niscc_smime/p7m-ed-m-results.txt "$location"
933        mv niscc_smime/p7m-sd-dt-results.txt "$location"
934        mv niscc_smime/p7m-sd-op-results.txt "$location"
935
936        # Archive any core files produced
937        for core in `cat "$TEST_OUTPUT/crashLog"`; do
938            mv "$core" "$location"
939            mv "$core.details" "$location"
940        done
941        mv crashLog "$location"
942    else
943        # Logs not stored => summaries, crashlog and corefiles not moved, other logs deleted
944        mv nisccLog00 nisccLog01 nisccLog02 nisccLog03 nisccLog04 nisccLog05 nisccLog06 nisccLog07 nisccLog08 nisccLog09 nisccLog10 nisccLog11 nisccLog12 TRASH/
945        mv niscc_smime/p7m-ed-m-results.txt niscc_smime/p7m-sd-dt-results.txt niscc_smime/p7m-sd-op-results.txt TRASH/
946    fi
947    mv envDB sigDB niscc_smime niscc_ssl TRASH/
948    mv CA.p12 Client.p12 client_crt.p12 server_crt.p12 TRASH/
949    mv p7m-ed-m-files.txt p7m-sd-dt-files.txt p7m-sd-op-files.txt password-is-testtest1.txt detached.txt TRASH/
950    mv crashme.c crashme TRASH/
951}
952
953################################################################################
954# Main
955################################################################################
956process_args $*
957create_environment
958hg_pull
959build_NSS
960init
961niscc_smime
962niscc_ssl_init
963force_crash
964ssl_setup_dirs_simple
965    ssl_simple_client_auth
966    ssl_simple_server_auth
967    ssl_simple_rootca
968ssl_setup_dirs_resigned
969    ssl_resigned_client_auth
970    ssl_resigned_server_auth
971    ssl_resigned_rootca
972# no idea what these commented-out lines are supposed to be!
973#ssl_setup_dirs_update
974#    ssl_update_server_auth der
975#    ssl_update_client_auth der
976#    ssl_update_server_auth resigned-der
977#    ssl_update_client_auth resigned-der
978log_summary
979mail_testLog
980core_process
981move_files
982exit $SIZE
983