New ssl-opt.sh test script
diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh
new file mode 100755
index 0000000..a845110
--- /dev/null
+++ b/tests/ssl-opt.sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# Test various options that are not covered by compat.sh
+#
+# Here the goal is not to cover every ciphersuite/version, but
+# rather specific options (max fragment length, truncated hmac, etc)
+# or procedures (session resumption from cache or ticket, renego, etc).
+#
+# Assumes all options are compiled in.
+
+PROGS_DIR='../programs/ssl'
+SRV_CMD="$PROGS_DIR/ssl_server2"
+CLI_CMD="$PROGS_DIR/ssl_client2"
+
+# Usage: run_test name srv_args cli_args cli_exit [option [...]]
+# Options:  -s pattern  pattern that must be present in server output
+#           -c pattern  pattern that must be present in client output
+#           -S pattern  pattern that must be absent in server output
+#           -C pattern  pattern that must be absent in client output
+run_test() {
+    echo -n "$1: "
+    shift
+
+    # run the commands
+    $SRV_CMD $1 > srv_out &
+    SRV_PID=$!
+    sleep 1
+    $CLI_CMD $2 > cli_out
+    CLI_EXIT=$?
+    echo SERVERQUIT | openssl s_client >/dev/null 2>&1
+    wait $SRV_PID
+    shift 2
+
+    # check client exit code
+    if [ "$1" = 0 -a "$CLI_EXIT" != 0 ]; then
+        echo "FAIL - client exit"
+        return
+    fi
+    shift
+
+    # check options
+    while [ $# -gt 0 ]
+    do
+        case $1 in
+            "-s")
+                if grep "$2" srv_out >/dev/null; then :; else
+                    echo "FAIL - -s $2"
+                    return
+                fi
+                ;;
+
+            "-c")
+                if grep "$2" cli_out >/dev/null; then :; else
+                    echo "FAIL - -c $2"
+                    return
+                fi
+                ;;
+
+            "-S")
+                if grep "$2" srv_out >/dev/null; then
+                    echo "FAIL - -S $2"
+                    return
+                fi
+                ;;
+
+            "-C")
+                if grep "$2" cli_out >/dev/null; then
+                    echo "FAIL - -C $2"
+                    return
+                fi
+                ;;
+
+            *)
+                echo "Unkown test: $1" >&2
+                exit 1
+        esac
+        shift 2
+    done
+
+    # if we're here, everything is ok
+    echo "PASS"
+    rm -r srv_out cli_out
+}
+
+killall -q openssl ssl_server ssl_server2
+
+run_test    "Truncated HMAC" \
+            "debug_level=5" \
+            "debug_level=5 trunc_hmac=1 \
+                force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
+            0 \
+            -s "dumping 'computed mac' (10 bytes)$"