{
printf("Available TLS Ciphers, listed in order of preference:\n");
-#if (ENABLE_CRYPTO_OPENSSL && OPENSSL_VERSION_NUMBER >= 0x1010100fL)
- printf("\nFor TLS 1.3 and newer (--tls-ciphersuites):\n\n");
- show_available_tls_ciphers_list(cipher_list_tls13, tls_cert_profile, true);
-#else
- (void) cipher_list_tls13; /* Avoid unused warning */
-#endif
+ if (tls_version_max() >= TLS_VER_1_3)
+ {
+ printf("\nFor TLS 1.3 and newer (--tls-ciphersuites):\n\n");
+ show_available_tls_ciphers_list(cipher_list_tls13, tls_cert_profile, true);
+ }
printf("\nFor TLS 1.2 and older (--tls-cipher):\n\n");
show_available_tls_ciphers_list(cipher_list, tls_cert_profile, false);
tls_version_max(void)
{
#if defined(TLS1_3_VERSION)
+ /* If this is defined we can safely assume TLS 1.3 support */
return TLS_VER_1_3;
+#elif OPENSSL_VERSION_NUMBER >= 0x10100000L
+ /*
+ * If TLS_VER_1_3 is not defined, we were compiled against a version that
+ * did not support TLS 1.3.
+ *
+ * However, the library we are *linked* against might be OpenSSL 1.1.1
+ * and therefore supports TLS 1.3. This needs to be checked at runtime
+ * since we can be compiled against 1.1.0 and then the library can be
+ * upgraded to 1.1.1
+ */
+ if (OpenSSL_version_num() >= 0x1010100fL)
+ {
+ return TLS_VER_1_3;
+ }
+ else
+ {
+ return TLS_VER_1_2;
+ }
#elif defined(TLS1_2_VERSION) || defined(SSL_OP_NO_TLSv1_2)
return TLS_VER_1_2;
#elif defined(TLS1_1_VERSION) || defined(SSL_OP_NO_TLSv1_1)
{
return TLS1_2_VERSION;
}
-#if defined(TLS1_3_VERSION)
else if (ver == TLS_VER_1_3)
{
+ /*
+ * Supporting the library upgraded to TLS1.3 without recompile
+ * is enough to support here with a simple constant that the same
+ * as in the TLS 1.3, so spec it is very unlikely that OpenSSL
+ * will change this constant
+ */
+#ifndef TLS1_3_VERSION
+ /*
+ * We do not want to define TLS_VER_1_3 if not defined
+ * since other parts of the code use the existance of this macro
+ * as proxy for TLS 1.3 support
+ */
+ return 0x0304;
+#else
return TLS1_3_VERSION;
- }
#endif
+ }
return 0;
}
#if defined(TLS1_3_VERSION)
if (tls13)
{
- SSL_CTX_set_min_proto_version(tls_ctx.ctx, TLS1_3_VERSION);
+ SSL_CTX_set_min_proto_version(tls_ctx.ctx,
+ openssl_tls_version(TLS_VER_1_3));
tls_ctx_restrict_ciphers_tls13(&tls_ctx, cipher_list);
}
else