commit b5f4e541411a8ecb3074b2395a12e4d40f9eff15
parent a155a0aefef0243b8c383e61352c347e4402af33
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sat,  9 Nov 2019 23:10:08 +0100
make legacy ciphers for TLS a run-time option (-l), by default off.
Diffstat:
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/hurl.1 b/hurl.1
@@ -7,6 +7,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl m Ar filesize
+.Op Fl l
 .Op Fl t Ar timeout
 .Ar url
 .Sh DESCRIPTION
@@ -19,6 +20,8 @@ The options are as follows:
 .Bl -tag -width Ds
 .It Fl m Ar filesize
 Maximum size of the data in bytes.
+.It Fl l
+Enable legacy ciphers and negotiation for TLS (default off).
 .It Fl t Ar timeout
 Maximum time for the connection and fetching the data in seconds.
 The default is 10 seconds.
diff --git a/hurl.c b/hurl.c
@@ -43,6 +43,8 @@ char *argv0;
 static size_t config_maxresponsesiz = 0;
 /* time-out in seconds */
 static time_t config_timeout = 10;
+/* legacy ciphers? */
+static int config_legacy = 0;
 /* parsed uri */
 static struct uri u;
 /* raw command-line argument */
@@ -447,7 +449,7 @@ err:
 void
 usage(void)
 {
-	fprintf(stderr, "usage: %s [-m maxresponse] [-t timeout] url\n",
+	fprintf(stderr, "usage: %s [-l] [-m maxresponse] [-t timeout] url\n",
 	        argv0);
 	exit(1);
 }
@@ -467,6 +469,9 @@ main(int argc, char **argv)
 			usage();
 		config_maxresponsesiz = l;
 		break;
+	case 'l': /* legacy ciphers */
+		config_legacy = 1;
+		break;
 	case 't': /* timeout */
 		errno = 0;
 		l = strtoll(EARGF(usage()), &end, 10);
@@ -490,12 +495,12 @@ main(int argc, char **argv)
 			errx(1, "tls_init failed");
 		if (!(tls_config = tls_config_new()))
 			errx(1, "tls config failed");
-#ifdef SUPPORT_LEGACY
-		/* enable legacy cipher and negotiation. */
-		if (tls_config_set_ciphers(tls_config, "legacy"))
-			errx(1, "tls set ciphers failed: %s",
-			     tls_config_error(tls_config));
-#endif
+		if (config_legacy) {
+			/* enable legacy cipher and negotiation. */
+			if (tls_config_set_ciphers(tls_config, "legacy"))
+				errx(1, "tls set ciphers failed: %s",
+				     tls_config_error(tls_config));
+		}
 		if (!strcmp(u.proto, "https"))
 			memcpy(u.port, "443", 4);
 		statuscode = https_request();