From 741a5e49d1ed6b82af908ab34ede676d9de4240a Mon Sep 17 00:00:00 2001 From: David Cooper Date: Fri, 21 Mar 2025 08:11:54 -0700 Subject: [PATCH] Check for -sigalgs support This commit adds a check for -sigalgs support, and only uses this option if it is supported. --- testssl.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/testssl.sh b/testssl.sh index d9d10e4..a1db51f 100755 --- a/testssl.sh +++ b/testssl.sh @@ -343,6 +343,7 @@ HAS_SSL3=false HAS_TLS13=false HAS_X448=false HAS_X25519=false +HAS_SIGALGS=false HAS_PKUTIL=false HAS_PKEY=false HAS_NO_SSL2=false @@ -7512,7 +7513,7 @@ get_server_certificate() { CERTIFICATE_LIST_ORDERING_PROBLEM=false if [[ "$1" =~ "tls1_3" ]]; then [[ $(has_server_protocol "tls1_3") -eq 1 ]] && return 1 - if "$HAS_TLS13"; then + if "$HAS_TLS13" && "$HAS_SIGALGS"; then if [[ "$1" =~ "tls1_3_RSA" ]]; then $OPENSSL s_client $(s_client_options "$STARTTLS $BUGS -showcerts -connect $NODEIP:$PORT $PROXY $SNI -tls1_3 -tlsextdebug -status -msg -sigalgs PSS+SHA256:PSS+SHA384") $ERRFILE >$TMPFILE elif [[ "$1" =~ "tls1_3_ECDSA" ]]; then @@ -17248,6 +17249,7 @@ find_openssl_binary() { HAS_TLS13=false HAS_X448=false HAS_X25519=false + HAS_SIGALGS=false HAS_NO_SSL2=false HAS_NOSERVERNAME=false HAS_CIPHERSUITES=false @@ -17289,6 +17291,10 @@ find_openssl_binary() { $OPENSSL pkey -help 2>&1 | grep -q Error || HAS_PKEY=true $OPENSSL pkeyutl 2>&1 | grep -q Error || HAS_PKUTIL=true + if "$HAS_TLS13"; then + $OPENSSL s_client -tls1_3 -sigalgs PSS+SHA256:PSS+SHA384 $NXCONNECT &1 | grep -aiq "unknown option" || HAS_SIGALGS=true + fi + $OPENSSL s_client -noservername &1 | grep -aiq "unknown option" || HAS_NOSERVERNAME=true $OPENSSL s_client -ciphersuites &1 | grep -aiq "unknown option" || HAS_CIPHERSUITES=true @@ -17658,6 +17664,7 @@ HAS_SSL3: $HAS_SSL3 HAS_TLS13: $HAS_TLS13 HAS_X448: $HAS_X448 HAS_X25519: $HAS_X25519 +HAS_SIGALGS: $HAS_SIGALGS HAS_NO_SSL2: $HAS_NO_SSL2 HAS_SPDY: $HAS_SPDY HAS_ALPN: $HAS_ALPN