Annotation of embedaddon/curl/docs/CIPHERS.md, revision 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>