Annotation of embedaddon/curl/docs/CIPHERS.md, revision 1.1.1.1
1.1 misho 1: # Ciphers
2:
3: With curl's options
4: [`CURLOPT_SSL_CIPHER_LIST`](https://curl.haxx.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html)
5: and
6: [`--ciphers`](https://curl.haxx.se/docs/manpage.html#--ciphers)
7: users can control which ciphers to consider when negotiating TLS connections.
8:
9: TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+ with options
10: [`CURLOPT_TLS13_CIPHERS`](https://curl.haxx.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
11: and
12: [`--tls13-ciphers`](https://curl.haxx.se/docs/manpage.html#--tls13-ciphers)
13: . If you are using a different SSL backend you can try setting TLS 1.3 cipher
14: suites by using the respective regular cipher option.
15:
16: The names of the known ciphers differ depending on which TLS backend that
17: libcurl was built to use. This is an attempt to list known cipher names.
18:
19: ## OpenSSL
20:
21: (based on [OpenSSL docs](https://www.openssl.org/docs/man1.1.0/apps/ciphers.html))
22:
23: When specifying multiple cipher names, separate them with colon (`:`).
24:
25: ### SSL3 cipher suites
26:
27: `NULL-MD5`
28: `NULL-SHA`
29: `RC4-MD5`
30: `RC4-SHA`
31: `IDEA-CBC-SHA`
32: `DES-CBC3-SHA`
33: `DH-DSS-DES-CBC3-SHA`
34: `DH-RSA-DES-CBC3-SHA`
35: `DHE-DSS-DES-CBC3-SHA`
36: `DHE-RSA-DES-CBC3-SHA`
37: `ADH-RC4-MD5`
38: `ADH-DES-CBC3-SHA`
39:
40: ### TLS v1.0 cipher suites
41:
42: `NULL-MD5`
43: `NULL-SHA`
44: `RC4-MD5`
45: `RC4-SHA`
46: `IDEA-CBC-SHA`
47: `DES-CBC3-SHA`
48: `DHE-DSS-DES-CBC3-SHA`
49: `DHE-RSA-DES-CBC3-SHA`
50: `ADH-RC4-MD5`
51: `ADH-DES-CBC3-SHA`
52:
53: ### AES ciphersuites from RFC3268, extending TLS v1.0
54:
55: `AES128-SHA`
56: `AES256-SHA`
57: `DH-DSS-AES128-SHA`
58: `DH-DSS-AES256-SHA`
59: `DH-RSA-AES128-SHA`
60: `DH-RSA-AES256-SHA`
61: `DHE-DSS-AES128-SHA`
62: `DHE-DSS-AES256-SHA`
63: `DHE-RSA-AES128-SHA`
64: `DHE-RSA-AES256-SHA`
65: `ADH-AES128-SHA`
66: `ADH-AES256-SHA`
67:
68: ### SEED ciphersuites from RFC4162, extending TLS v1.0
69:
70: `SEED-SHA`
71: `DH-DSS-SEED-SHA`
72: `DH-RSA-SEED-SHA`
73: `DHE-DSS-SEED-SHA`
74: `DHE-RSA-SEED-SHA`
75: `ADH-SEED-SHA`
76:
77: ### GOST ciphersuites, extending TLS v1.0
78:
79: `GOST94-GOST89-GOST89`
80: `GOST2001-GOST89-GOST89`
81: `GOST94-NULL-GOST94`
82: `GOST2001-NULL-GOST94`
83:
84: ### Elliptic curve cipher suites
85:
86: `ECDHE-RSA-NULL-SHA`
87: `ECDHE-RSA-RC4-SHA`
88: `ECDHE-RSA-DES-CBC3-SHA`
89: `ECDHE-RSA-AES128-SHA`
90: `ECDHE-RSA-AES256-SHA`
91: `ECDHE-ECDSA-NULL-SHA`
92: `ECDHE-ECDSA-RC4-SHA`
93: `ECDHE-ECDSA-DES-CBC3-SHA`
94: `ECDHE-ECDSA-AES128-SHA`
95: `ECDHE-ECDSA-AES256-SHA`
96: `AECDH-NULL-SHA`
97: `AECDH-RC4-SHA`
98: `AECDH-DES-CBC3-SHA`
99: `AECDH-AES128-SHA`
100: `AECDH-AES256-SHA`
101:
102: ### TLS v1.2 cipher suites
103:
104: `NULL-SHA256`
105: `AES128-SHA256`
106: `AES256-SHA256`
107: `AES128-GCM-SHA256`
108: `AES256-GCM-SHA384`
109: `DH-RSA-AES128-SHA256`
110: `DH-RSA-AES256-SHA256`
111: `DH-RSA-AES128-GCM-SHA256`
112: `DH-RSA-AES256-GCM-SHA384`
113: `DH-DSS-AES128-SHA256`
114: `DH-DSS-AES256-SHA256`
115: `DH-DSS-AES128-GCM-SHA256`
116: `DH-DSS-AES256-GCM-SHA384`
117: `DHE-RSA-AES128-SHA256`
118: `DHE-RSA-AES256-SHA256`
119: `DHE-RSA-AES128-GCM-SHA256`
120: `DHE-RSA-AES256-GCM-SHA384`
121: `DHE-DSS-AES128-SHA256`
122: `DHE-DSS-AES256-SHA256`
123: `DHE-DSS-AES128-GCM-SHA256`
124: `DHE-DSS-AES256-GCM-SHA384`
125: `ECDHE-RSA-AES128-SHA256`
126: `ECDHE-RSA-AES256-SHA384`
127: `ECDHE-RSA-AES128-GCM-SHA256`
128: `ECDHE-RSA-AES256-GCM-SHA384`
129: `ECDHE-ECDSA-AES128-SHA256`
130: `ECDHE-ECDSA-AES256-SHA384`
131: `ECDHE-ECDSA-AES128-GCM-SHA256`
132: `ECDHE-ECDSA-AES256-GCM-SHA384`
133: `ADH-AES128-SHA256`
134: `ADH-AES256-SHA256`
135: `ADH-AES128-GCM-SHA256`
136: `ADH-AES256-GCM-SHA384`
137: `AES128-CCM`
138: `AES256-CCM`
139: `DHE-RSA-AES128-CCM`
140: `DHE-RSA-AES256-CCM`
141: `AES128-CCM8`
142: `AES256-CCM8`
143: `DHE-RSA-AES128-CCM8`
144: `DHE-RSA-AES256-CCM8`
145: `ECDHE-ECDSA-AES128-CCM`
146: `ECDHE-ECDSA-AES256-CCM`
147: `ECDHE-ECDSA-AES128-CCM8`
148: `ECDHE-ECDSA-AES256-CCM8`
149:
150: ### Camellia HMAC-Based ciphersuites from RFC6367, extending TLS v1.2
151:
152: `ECDHE-ECDSA-CAMELLIA128-SHA256`
153: `ECDHE-ECDSA-CAMELLIA256-SHA384`
154: `ECDHE-RSA-CAMELLIA128-SHA256`
155: `ECDHE-RSA-CAMELLIA256-SHA384`
156:
157: ### TLS 1.3 cipher suites
158:
159: (Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`)
160:
161: `TLS_AES_256_GCM_SHA384`
162: `TLS_CHACHA20_POLY1305_SHA256`
163: `TLS_AES_128_GCM_SHA256`
164: `TLS_AES_128_CCM_8_SHA256`
165: `TLS_AES_128_CCM_SHA256`
166:
167: ## NSS
168:
169: ### Totally insecure
170:
171: `rc4`
172: `rc4-md5`
173: `rc4export`
174: `rc2`
175: `rc2export`
176: `des`
177: `desede3`
178:
179: ### SSL3/TLS cipher suites
180:
181: `rsa_rc4_128_md5`
182: `rsa_rc4_128_sha`
183: `rsa_3des_sha`
184: `rsa_des_sha`
185: `rsa_rc4_40_md5`
186: `rsa_rc2_40_md5`
187: `rsa_null_md5`
188: `rsa_null_sha`
189: `fips_3des_sha`
190: `fips_des_sha`
191: `fortezza`
192: `fortezza_rc4_128_sha`
193: `fortezza_null`
194:
195: ### TLS 1.0 Exportable 56-bit Cipher Suites
196:
197: `rsa_des_56_sha`
198: `rsa_rc4_56_sha`
199:
200: ### AES ciphers
201:
202: `dhe_dss_aes_128_cbc_sha`
203: `dhe_dss_aes_256_cbc_sha`
204: `dhe_rsa_aes_128_cbc_sha`
205: `dhe_rsa_aes_256_cbc_sha`
206: `rsa_aes_128_sha`
207: `rsa_aes_256_sha`
208:
209: ### ECC ciphers
210:
211: `ecdh_ecdsa_null_sha`
212: `ecdh_ecdsa_rc4_128_sha`
213: `ecdh_ecdsa_3des_sha`
214: `ecdh_ecdsa_aes_128_sha`
215: `ecdh_ecdsa_aes_256_sha`
216: `ecdhe_ecdsa_null_sha`
217: `ecdhe_ecdsa_rc4_128_sha`
218: `ecdhe_ecdsa_3des_sha`
219: `ecdhe_ecdsa_aes_128_sha`
220: `ecdhe_ecdsa_aes_256_sha`
221: `ecdh_rsa_null_sha`
222: `ecdh_rsa_128_sha`
223: `ecdh_rsa_3des_sha`
224: `ecdh_rsa_aes_128_sha`
225: `ecdh_rsa_aes_256_sha`
226: `ecdhe_rsa_null`
227: `ecdhe_rsa_rc4_128_sha`
228: `ecdhe_rsa_3des_sha`
229: `ecdhe_rsa_aes_128_sha`
230: `ecdhe_rsa_aes_256_sha`
231: `ecdh_anon_null_sha`
232: `ecdh_anon_rc4_128sha`
233: `ecdh_anon_3des_sha`
234: `ecdh_anon_aes_128_sha`
235: `ecdh_anon_aes_256_sha`
236:
237: ### HMAC-SHA256 cipher suites
238:
239: `rsa_null_sha_256`
240: `rsa_aes_128_cbc_sha_256`
241: `rsa_aes_256_cbc_sha_256`
242: `dhe_rsa_aes_128_cbc_sha_256`
243: `dhe_rsa_aes_256_cbc_sha_256`
244: `ecdhe_ecdsa_aes_128_cbc_sha_256`
245: `ecdhe_rsa_aes_128_cbc_sha_256`
246:
247: ### AES GCM cipher suites in RFC 5288 and RFC 5289
248:
249: `rsa_aes_128_gcm_sha_256`
250: `dhe_rsa_aes_128_gcm_sha_256`
251: `dhe_dss_aes_128_gcm_sha_256`
252: `ecdhe_ecdsa_aes_128_gcm_sha_256`
253: `ecdh_ecdsa_aes_128_gcm_sha_256`
254: `ecdhe_rsa_aes_128_gcm_sha_256`
255: `ecdh_rsa_aes_128_gcm_sha_256`
256:
257: ### cipher suites using SHA384
258:
259: `rsa_aes_256_gcm_sha_384`
260: `dhe_rsa_aes_256_gcm_sha_384`
261: `dhe_dss_aes_256_gcm_sha_384`
262: `ecdhe_ecdsa_aes_256_sha_384`
263: `ecdhe_rsa_aes_256_sha_384`
264: `ecdhe_ecdsa_aes_256_gcm_sha_384`
265: `ecdhe_rsa_aes_256_gcm_sha_384`
266:
267: ### chacha20-poly1305 cipher suites
268:
269: `ecdhe_rsa_chacha20_poly1305_sha_256`
270: `ecdhe_ecdsa_chacha20_poly1305_sha_256`
271: `dhe_rsa_chacha20_poly1305_sha_256`
272:
273: ### TLS 1.3 cipher suites
274:
275: `aes_128_gcm_sha_256`
276: `aes_256_gcm_sha_384`
277: `chacha20_poly1305_sha_256`
278:
279: ## GSKit
280:
281: Ciphers are internally defined as
282: [numeric codes](https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/gsk_attribute_set_buffer.htm),
283: but libcurl maps them to the following case-insensitive names.
284:
285: ### SSL2 cipher suites (insecure: disabled by default)
286:
287: `rc2-md5`
288: `rc4-md5`
289: `exp-rc2-md5`
290: `exp-rc4-md5`
291: `des-cbc-md5`
292: `des-cbc3-md5`
293:
294: ### SSL3 cipher suites
295:
296: `null-md5`
297: `null-sha`
298: `rc4-md5`
299: `rc4-sha`
300: `exp-rc2-cbc-md5`
301: `exp-rc4-md5`
302: `exp-des-cbc-sha`
303: `des-cbc3-sha`
304:
305: ### TLS v1.0 cipher suites
306:
307: `null-md5`
308: `null-sha`
309: `rc4-md5`
310: `rc4-sha`
311: `exp-rc2-cbc-md5`
312: `exp-rc4-md5`
313: `exp-des-cbc-sha`
314: `des-cbc3-sha`
315: `aes128-sha`
316: `aes256-sha`
317:
318: ### TLS v1.1 cipher suites
319:
320: `null-md5`
321: `null-sha`
322: `rc4-md5`
323: `rc4-sha`
324: `exp-des-cbc-sha`
325: `des-cbc3-sha`
326: `aes128-sha`
327: `aes256-sha`
328:
329: ### TLS v1.2 cipher suites
330:
331: `null-md5`
332: `null-sha`
333: `null-sha256`
334: `rc4-md5`
335: `rc4-sha`
336: `des-cbc3-sha`
337: `aes128-sha`
338: `aes256-sha`
339: `aes128-sha256`
340: `aes256-sha256`
341: `aes128-gcm-sha256`
342: `aes256-gcm-sha384`
343:
344: ## WolfSSL
345:
346: `RC4-SHA`,
347: `RC4-MD5`,
348: `DES-CBC3-SHA`,
349: `AES128-SHA`,
350: `AES256-SHA`,
351: `NULL-SHA`,
352: `NULL-SHA256`,
353: `DHE-RSA-AES128-SHA`,
354: `DHE-RSA-AES256-SHA`,
355: `DHE-PSK-AES256-GCM-SHA384`,
356: `DHE-PSK-AES128-GCM-SHA256`,
357: `PSK-AES256-GCM-SHA384`,
358: `PSK-AES128-GCM-SHA256`,
359: `DHE-PSK-AES256-CBC-SHA384`,
360: `DHE-PSK-AES128-CBC-SHA256`,
361: `PSK-AES256-CBC-SHA384`,
362: `PSK-AES128-CBC-SHA256`,
363: `PSK-AES128-CBC-SHA`,
364: `PSK-AES256-CBC-SHA`,
365: `DHE-PSK-AES128-CCM`,
366: `DHE-PSK-AES256-CCM`,
367: `PSK-AES128-CCM`,
368: `PSK-AES256-CCM`,
369: `PSK-AES128-CCM-8`,
370: `PSK-AES256-CCM-8`,
371: `DHE-PSK-NULL-SHA384`,
372: `DHE-PSK-NULL-SHA256`,
373: `PSK-NULL-SHA384`,
374: `PSK-NULL-SHA256`,
375: `PSK-NULL-SHA`,
376: `HC128-MD5`,
377: `HC128-SHA`,
378: `HC128-B2B256`,
379: `AES128-B2B256`,
380: `AES256-B2B256`,
381: `RABBIT-SHA`,
382: `NTRU-RC4-SHA`,
383: `NTRU-DES-CBC3-SHA`,
384: `NTRU-AES128-SHA`,
385: `NTRU-AES256-SHA`,
386: `AES128-CCM-8`,
387: `AES256-CCM-8`,
388: `ECDHE-ECDSA-AES128-CCM`,
389: `ECDHE-ECDSA-AES128-CCM-8`,
390: `ECDHE-ECDSA-AES256-CCM-8`,
391: `ECDHE-RSA-AES128-SHA`,
392: `ECDHE-RSA-AES256-SHA`,
393: `ECDHE-ECDSA-AES128-SHA`,
394: `ECDHE-ECDSA-AES256-SHA`,
395: `ECDHE-RSA-RC4-SHA`,
396: `ECDHE-RSA-DES-CBC3-SHA`,
397: `ECDHE-ECDSA-RC4-SHA`,
398: `ECDHE-ECDSA-DES-CBC3-SHA`,
399: `AES128-SHA256`,
400: `AES256-SHA256`,
401: `DHE-RSA-AES128-SHA256`,
402: `DHE-RSA-AES256-SHA256`,
403: `ECDH-RSA-AES128-SHA`,
404: `ECDH-RSA-AES256-SHA`,
405: `ECDH-ECDSA-AES128-SHA`,
406: `ECDH-ECDSA-AES256-SHA`,
407: `ECDH-RSA-RC4-SHA`,
408: `ECDH-RSA-DES-CBC3-SHA`,
409: `ECDH-ECDSA-RC4-SHA`,
410: `ECDH-ECDSA-DES-CBC3-SHA`,
411: `AES128-GCM-SHA256`,
412: `AES256-GCM-SHA384`,
413: `DHE-RSA-AES128-GCM-SHA256`,
414: `DHE-RSA-AES256-GCM-SHA384`,
415: `ECDHE-RSA-AES128-GCM-SHA256`,
416: `ECDHE-RSA-AES256-GCM-SHA384`,
417: `ECDHE-ECDSA-AES128-GCM-SHA256`,
418: `ECDHE-ECDSA-AES256-GCM-SHA384`,
419: `ECDH-RSA-AES128-GCM-SHA256`,
420: `ECDH-RSA-AES256-GCM-SHA384`,
421: `ECDH-ECDSA-AES128-GCM-SHA256`,
422: `ECDH-ECDSA-AES256-GCM-SHA384`,
423: `CAMELLIA128-SHA`,
424: `DHE-RSA-CAMELLIA128-SHA`,
425: `CAMELLIA256-SHA`,
426: `DHE-RSA-CAMELLIA256-SHA`,
427: `CAMELLIA128-SHA256`,
428: `DHE-RSA-CAMELLIA128-SHA256`,
429: `CAMELLIA256-SHA256`,
430: `DHE-RSA-CAMELLIA256-SHA256`,
431: `ECDHE-RSA-AES128-SHA256`,
432: `ECDHE-ECDSA-AES128-SHA256`,
433: `ECDH-RSA-AES128-SHA256`,
434: `ECDH-ECDSA-AES128-SHA256`,
435: `ECDHE-RSA-AES256-SHA384`,
436: `ECDHE-ECDSA-AES256-SHA384`,
437: `ECDH-RSA-AES256-SHA384`,
438: `ECDH-ECDSA-AES256-SHA384`,
439: `ECDHE-RSA-CHACHA20-POLY1305`,
440: `ECDHE-ECDSA-CHACHA20-POLY1305`,
441: `DHE-RSA-CHACHA20-POLY1305`,
442: `ECDHE-RSA-CHACHA20-POLY1305-OLD`,
443: `ECDHE-ECDSA-CHACHA20-POLY1305-OLD`,
444: `DHE-RSA-CHACHA20-POLY1305-OLD`,
445: `ADH-AES128-SHA`,
446: `QSH`,
447: `RENEGOTIATION-INFO`,
448: `IDEA-CBC-SHA`,
449: `ECDHE-ECDSA-NULL-SHA`,
450: `ECDHE-PSK-NULL-SHA256`,
451: `ECDHE-PSK-AES128-CBC-SHA256`,
452: `PSK-CHACHA20-POLY1305`,
453: `ECDHE-PSK-CHACHA20-POLY1305`,
454: `DHE-PSK-CHACHA20-POLY1305`,
455: `EDH-RSA-DES-CBC3-SHA`,
456:
457: ## Schannel
458:
459: Schannel allows the enabling and disabling of encryption algorithms, but not
460: specific ciphersuites. They are
461: [defined](https://docs.microsoft.com/windows/desktop/SecCrypto/alg-id) by
462: Microsoft.
463:
464: There is also the case that the selected algorithm is not supported by the
465: protocol or does not match the ciphers offered by the server during the SSL
466: negotiation. In this case curl will return error
467: `CURLE_SSL_CONNECT_ERROR (35) SEC_E_ALGORITHM_MISMATCH`
468: and the request will fail.
469:
470: `CALG_MD2`,
471: `CALG_MD4`,
472: `CALG_MD5`,
473: `CALG_SHA`,
474: `CALG_SHA1`,
475: `CALG_MAC`,
476: `CALG_RSA_SIGN`,
477: `CALG_DSS_SIGN`,
478: `CALG_NO_SIGN`,
479: `CALG_RSA_KEYX`,
480: `CALG_DES`,
481: `CALG_3DES_112`,
482: `CALG_3DES`,
483: `CALG_DESX`,
484: `CALG_RC2`,
485: `CALG_RC4`,
486: `CALG_SEAL`,
487: `CALG_DH_SF`,
488: `CALG_DH_EPHEM`,
489: `CALG_AGREEDKEY_ANY`,
490: `CALG_HUGHES_MD5`,
491: `CALG_SKIPJACK`,
492: `CALG_TEK`,
493: `CALG_CYLINK_MEK`,
494: `CALG_SSL3_SHAMD5`,
495: `CALG_SSL3_MASTER`,
496: `CALG_SCHANNEL_MASTER_HASH`,
497: `CALG_SCHANNEL_MAC_KEY`,
498: `CALG_SCHANNEL_ENC_KEY`,
499: `CALG_PCT1_MASTER`,
500: `CALG_SSL2_MASTER`,
501: `CALG_TLS1_MASTER`,
502: `CALG_RC5`,
503: `CALG_HMAC`,
504: `CALG_TLS1PRF`,
505: `CALG_HASH_REPLACE_OWF`,
506: `CALG_AES_128`,
507: `CALG_AES_192`,
508: `CALG_AES_256`,
509: `CALG_AES`,
510: `CALG_SHA_256`,
511: `CALG_SHA_384`,
512: `CALG_SHA_512`,
513: `CALG_ECDH`,
514: `CALG_ECMQV`,
515: `CALG_ECDSA`,
516: `CALG_ECDH_EPHEM`,
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>