summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-utilities/nbdkit/nbdkit/0002-Add-support-for-ssl-config.patch
blob: cec2813e903a2297c2c18e17c43b349829dc4aeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
diff --git a/plugins/curl/curl.c b/plugins/curl/curl.c
index 610511f7..92be4656 100644
--- a/plugins/curl/curl.c
+++ b/plugins/curl/curl.c
@@ -69,6 +69,8 @@ static const char *proxy = NULL;
 char *proxy_password = NULL;
 const char *proxy_user = NULL;
 bool sslverify = true;
+const char *ssl_version = NULL;
+const char *ssl_cipher_list = NULL;
 bool tcp_keepalive = false;
 bool tcp_nodelay = true;
 uint32_t timeout = 0;
@@ -232,6 +234,12 @@ curl_config (const char *key, const char *value)
     sslverify = r;
   }

+  else if (strcmp (key, "ssl-version") == 0)
+    ssl_version = value;
+
+  else if (strcmp (key, "ssl-cipher-list") == 0)
+    ssl_cipher_list = value;
+
   else if (strcmp (key, "tcp-keepalive") == 0) {
     r = nbdkit_parse_bool (value);
     if (r == -1)
@@ -302,6 +310,8 @@ curl_config_complete (void)
   "proxy-user=<USER>          The proxy user.\n" \
   "timeout=<TIMEOUT>          Set the timeout for requests (seconds).\n" \
   "sslverify=false            Do not verify SSL certificate of remote host.\n" \
+  "ssl-version=<VERSION>      Specify preferred TLS/SSL version.\n " \
+  "ssl-cipher-list=C1:C2:..   Specify TLS/SSL cipher suites to be used.\n" \
   "tcp-keepalive=true         Enable TCP keepalives.\n" \
   "tcp-nodelay=false          Disable Nagle’s algorithm.\n" \
   "unix-socket-path=<PATH>    Open Unix domain socket instead of TCP/IP.\n" \
@@ -418,6 +428,30 @@ curl_open (int readonly)
     curl_easy_setopt (h->c, CURLOPT_SSL_VERIFYPEER, 0L);
     curl_easy_setopt (h->c, CURLOPT_SSL_VERIFYHOST, 0L);
   }
+  if (ssl_version) {
+    if (strcmp (ssl_version, "tlsv1") == 0)
+      curl_easy_setopt (h->c, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
+    else if (strcmp (ssl_version, "sslv2") == 0)
+      curl_easy_setopt (h->c, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv2);
+    else if (strcmp (ssl_version, "sslv3") == 0)
+      curl_easy_setopt (h->c, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3);
+    else if (strcmp (ssl_version, "tlsv1.0") == 0)
+      curl_easy_setopt (h->c, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_0);
+    else if (strcmp (ssl_version, "tlsv1.1") == 0)
+      curl_easy_setopt (h->c, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);
+    else if (strcmp (ssl_version, "tlsv1.2") == 0)
+      curl_easy_setopt (h->c, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
+    else if (strcmp (ssl_version, "tlsv1.3") == 0)
+      curl_easy_setopt (h->c, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_3);
+    else {
+      display_curl_error (h, r, "curl_easy_setopt: CURLOPT_SSLVERSION [%s]",
+			  ssl_version);
+      goto err;
+    }
+
+  }
+  if (ssl_cipher_list)
+    curl_easy_setopt (h->c, CURLOPT_SSL_CIPHER_LIST, ssl_cipher_list);
   if (tcp_keepalive)
     curl_easy_setopt (h->c, CURLOPT_TCP_KEEPALIVE, 1L);
   if (!tcp_nodelay)