@@ -348,6 +348,7 @@ HAS2_EARLYDATA=false
348348HAS_X448=false
349349HAS_X25519=false
350350HAS_SIGALGS=false
351+ OSSL_SUPPORTED_SIGALGS=""
351352HAS_PKUTIL=false
352353HAS_PKEY=false
353354HAS_NO_SSL2=false
@@ -8464,6 +8465,7 @@ extract_stapled_ocsp() {
84648465# arg2 is a list of protocols to try (tls1_2, tls1_1, tls1, ssl3) or empty (if all should be tried)
84658466get_server_certificate() {
84668467 local protocols_to_try proto
8468+ local s sigalg sigalgs=""
84678469 local success ret
84688470 local npn_params="" line
84698471 local ciphers_to_test=""
@@ -8499,12 +8501,20 @@ get_server_certificate() {
84998501 CERTIFICATE_LIST_ORDERING_PROBLEM=false
85008502 if [[ "$1" =~ tls1_3 ]]; then
85018503 [[ $(has_server_protocol "tls1_3") -eq 1 ]] && return 1
8502- if "$HAS_TLS13" && "$HAS_SIGALGS" && [[ "$1" =~ tls1_3_RSA || "$1" =~ tls1_3_ECDSA ]]; then
8503- if [[ "$1" =~ tls1_3_RSA ]]; then
8504- $OPENSSL s_client $(s_client_options "$STARTTLS $BUGS -showcerts -connect $NODEIP:$PORT $PROXY $SNI -tls1_3 -tlsextdebug -status -msg -sigalgs PSS+SHA256:PSS+SHA384:PSS+SHA512:rsa_pss_pss_sha256:rsa_pss_pss_sha384:rsa_pss_pss_sha512") </dev/null 2>$ERRFILE >$TMPFILE
8504+ sigalg="$(tolower "${1#tls1_3_}")"
8505+ [[ "$sigalg" == eddsa ]] && sigalg="ed"
8506+ if "$HAS_TLS13" && "$HAS_SIGALGS" && [[ "$OSSL_SUPPORTED_SIGALGS" =~ $sigalg || "$1" =~ tls1_3_RSA || "$1" =~ tls1_3_ECDSA ]]; then
8507+ if [[ "$OSSL_SUPPORTED_SIGALGS" =~ $sigalg ]]; then
8508+ for s in $OSSL_SUPPORTED_SIGALGS; do
8509+ [[ "$s" =~ $sigalg ]] && sigalgs+=":$s"
8510+ done
8511+ sigalgs="${sigalgs:1}"
8512+ elif [[ "$1" =~ tls1_3_RSA ]]; then
8513+ sigalgs="PSS+SHA256:PSS+SHA384:PSS+SHA512:rsa_pss_pss_sha256:rsa_pss_pss_sha384:rsa_pss_pss_sha512"
85058514 else
8506- $OPENSSL s_client $(s_client_options "$STARTTLS $BUGS -showcerts -connect $NODEIP:$PORT $PROXY $SNI -tls1_3 -tlsextdebug -status -msg - sigalgs ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512") </dev/null 2>$ERRFILE >$TMPFILE
8515+ sigalgs=" ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512"
85078516 fi
8517+ $OPENSSL s_client $(s_client_options "$STARTTLS $BUGS -showcerts -connect $NODEIP:$PORT $PROXY $SNI -tls1_3 -tlsextdebug -status -msg -sigalgs $sigalgs") </dev/null 2>$ERRFILE >$TMPFILE
85088518 sclient_connect_successful $? $TMPFILE || return 1
85098519 DETECTED_TLS_VERSION="0304"
85108520 extract_certificates "tls1_3"
@@ -21249,6 +21259,7 @@ find_openssl_binary() {
2124921259 HAS_NO_COMP=false
2125021260 HAS_CURVES=false
2125121261 OSSL_SUPPORTED_CURVES=""
21262+ OSSL_SUPPORTED_SIGALGS=""
2125221263 HAS_PKEY=false
2125321264 HAS_PKUTIL=false
2125421265 HAS_ALPN=false
@@ -21348,6 +21359,8 @@ find_openssl_binary() {
2134821359 OSSL_SUPPORTED_CURVES="${OSSL_SUPPORTED_CURVES//x25519/X25519}"
2134921360 OSSL_SUPPORTED_CURVES="${OSSL_SUPPORTED_CURVES//x448/X448}"
2135021361 fi
21362+ OSSL_SUPPORTED_SIGALGS="$($OPENSSL list -tls-signature-algorithms)"
21363+ OSSL_SUPPORTED_SIGALGS=" ${OSSL_SUPPORTED_SIGALGS//:/ } "
2135121364 fi
2135221365 if [[ -z "$OSSL_SUPPORTED_CURVES" ]]; then
2135321366 if $OPENSSL s_client -curves </dev/null 2>&1 | grep -aiq "unknown option"; then
@@ -21794,6 +21807,7 @@ HAS2_QUIC: $HAS2_QUIC
2179421807HAS_X448: $HAS_X448
2179521808HAS_X25519: $HAS_X25519
2179621809HAS_SIGALGS: $HAS_SIGALGS
21810+ OSSL_SUPPORTED_SIGALGS: $OSSL_SUPPORTED_SIGALGS
2179721811HAS_NO_SSL2: $HAS_NO_SSL2
2179821812HAS_SPDY: $HAS_SPDY
2179921813HAS_ALPN: $HAS_ALPN
0 commit comments