Detect GnuTLS presence and version in compat.sh
diff --git a/tests/compat.sh b/tests/compat.sh
index 69d2369..f915ea1 100755
--- a/tests/compat.sh
+++ b/tests/compat.sh
@@ -6,18 +6,11 @@
# with and without client authentication.
#
# Peer version requirements:
-# - OpenSSL 1.0.1e 11 Feb 2013
+# - OpenSSL 1.0.1e 11 Feb 2013 (probably since 1.0.1, tested with 1.0.1e)
# - GnuTLS 3.2.15 (probably works since 3.2.12 but tested only with 3.2.15)
set -u
-# test if those two are set in the environment before assigning defaults
-if [ -n "${GNUTLS_CLI:-}" -a -n "${GNUTLS_SERV:-}" ]; then
- GNUTLS_AVAILABLE=1
-else
- GNUTLS_AVAILABLE=0
-fi
-
# initialise counters
TESTS=0
FAILED=0
@@ -31,6 +24,21 @@
: ${GNUTLS_CLI:=gnutls-cli}
: ${GNUTLS_SERV:=gnutls-serv}
+# do we have a recent enough GnuTLS?
+if ( which $GNUTLS_CLI && which $GNUTLS_SERV ) >/dev/null; then
+ eval $( $GNUTLS_CLI --version | head -n1 | sed 's/.* \([0-9]*\)\.\([0-9]\)*\.\([0-9]*\)$/MAJOR="\1" MINOR="\2" PATCH="\3"/' )
+ if [ $MAJOR -lt 3 -o \
+ \( $MAJOR -eq 3 -a $MINOR -lt 2 \) -o \
+ \( $MAJOR -eq 3 -a $MINOR -eq 2 -a $PATCH -lt 15 \) ]
+ then
+ PEER_GNUTLS=""
+ else
+ PEER_GNUTLS=" GnuTLS"
+ fi
+else
+ PEER_GNUTLS=""
+fi
+
# default values for options
MODES="ssl3 tls1 tls1_1 tls1_2"
VERIFIES="NO YES"
@@ -39,12 +47,7 @@
EXCLUDE='NULL\|DES-CBC-' # avoid plain DES but keep 3DES-EDE-CBC (PolarSSL), DES-CBC3 (OpenSSL)
VERBOSE=""
MEMCHECK=0
-# GnuTLS not enabled by default
-if [ "$GNUTLS_AVAILABLE" -gt 0 ]; then
- PEERS="OpenSSL PolarSSL GnuTLS"
-else
- PEERS="OpenSSL PolarSSL"
-fi
+PEERS="OpenSSL$PEER_GNUTLS PolarSSL"
print_usage() {
echo "Usage: $0"