cosmopolitan/third_party/mbedtls/getciphersuitename.c
Justine Tunney af645fcbec Make exciting improvements
- Add Lua backtraces to redbean!
- Wipe serving keys after redbean forks
- Audit redbean to remove free via exit
- Log SSL client ciphersuite preferences
- Increase ASAN malloc() backtrace depth
- Make GetSslRoots() behave as a singleton
- Move leaks.c from LIBC_TESTLIB to LIBC_LOG
- Add undocumented %n to printf() for newlines
- Fix redbean memory leak reindexing inode change
- Fix redbean memory leak with Fetch() DNS object
- Restore original environ after __cxa_finalize()
- Make backtrace always work after __cxa_finalize()
- Introduce COUNTEXPR() diagnostic / benchmark tool
- Fix a few more instances of errno being clobbered
- Consolidate the ANSI color disabling internal APIs
2022-03-18 03:02:00 -07:00

758 lines
22 KiB
C

/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:4;tab-width:4;coding:utf-8 -*-│
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
╞══════════════════════════════════════════════════════════════════════════════╡
│ Copyright The Mbed TLS Contributors │
│ │
│ Licensed under the Apache License, Version 2.0 (the "License"); │
│ you may not use this file except in compliance with the License. │
│ You may obtain a copy of the License at │
│ │
│ http://www.apache.org/licenses/LICENSE-2.0 │
│ │
│ Unless required by applicable law or agreed to in writing, software │
│ distributed under the License is distributed on an "AS IS" BASIS, │
│ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. │
│ See the License for the specific language governing permissions and │
│ limitations under the License. │
╚─────────────────────────────────────────────────────────────────────────────*/
#include "third_party/mbedtls/iana.h"
/**
* Returns ciphersuite name.
*
* This contains a superset of what's actually supported. It should
* include all IANA assignments.
*/
const char *GetCipherSuiteName(uint16_t x) {
switch (x) {
case 0x0000:
return "NULL-NULL-NULL";
case 0x0001:
return "RSA-NULL-MD5";
case 0x0002:
return "RSA-NULL-SHA";
case 0x0003:
return "RSA-EXPORT-RC4-40-MD5";
case 0x0004:
return "RSA-RC4-128-MD5";
case 0x0005:
return "RSA-RC4-128-SHA";
case 0x0006:
return "RSA-EXPORT-RC2-CBC-40-MD5";
case 0x0007:
return "RSA-IDEA-CBC-SHA";
case 0x0008:
return "RSA-EXPORT-DES40-CBC-SHA";
case 0x0009:
return "RSA-DES-CBC-SHA";
case 0x000A:
return "RSA-3DES-EDE-CBC-SHA";
case 0x000B:
return "DH-DSS-EXPORT-DES40-CBC-SHA";
case 0x000C:
return "DH-DSS-DES-CBC-SHA";
case 0x000D:
return "DH-DSS-3DES-EDE-CBC-SHA";
case 0x000E:
return "DH-RSA-EXPORT-DES40-CBC-SHA";
case 0x000F:
return "DH-RSA-DES-CBC-SHA";
case 0x0010:
return "DH-RSA-3DES-EDE-CBC-SHA";
case 0x0011:
return "DHE-DSS-EXPORT-DES40-CBC-SHA";
case 0x0012:
return "DHE-DSS-DES-CBC-SHA";
case 0x0013:
return "DHE-DSS-3DES-EDE-CBC-SHA";
case 0x0014:
return "DHE-RSA-EXPORT-DES40-CBC-SHA";
case 0x0015:
return "DHE-RSA-DES-CBC-SHA";
case 0x0016:
return "DHE-RSA-3DES-EDE-CBC-SHA";
case 0x0017:
return "DH-anon-EXPORT-RC4-40-MD5";
case 0x0018:
return "DH-anon-RC4-128-MD5";
case 0x0019:
return "DH-anon-EXPORT-DES40-CBC-SHA";
case 0x001A:
return "DH-anon-DES-CBC-SHA";
case 0x001B:
return "DH-anon-3DES-EDE-CBC-SHA";
case 0x001E:
return "KRB5-DES-CBC-SHA";
case 0x001F:
return "KRB5-3DES-EDE-CBC-SHA";
case 0x0020:
return "KRB5-RC4-128-SHA";
case 0x0021:
return "KRB5-IDEA-CBC-SHA";
case 0x0022:
return "KRB5-DES-CBC-MD5";
case 0x0023:
return "KRB5-3DES-EDE-CBC-MD5";
case 0x0024:
return "KRB5-RC4-128-MD5";
case 0x0025:
return "KRB5-IDEA-CBC-MD5";
case 0x0026:
return "KRB5-EXPORT-DES-CBC-40-SHA";
case 0x0027:
return "KRB5-EXPORT-RC2-CBC-40-SHA";
case 0x0028:
return "KRB5-EXPORT-RC4-40-SHA";
case 0x0029:
return "KRB5-EXPORT-DES-CBC-40-MD5";
case 0x002A:
return "KRB5-EXPORT-RC2-CBC-40-MD5";
case 0x002B:
return "KRB5-EXPORT-RC4-40-MD5";
case 0x002C:
return "PSK-NULL-SHA";
case 0x002D:
return "DHE-PSK-NULL-SHA";
case 0x002E:
return "RSA-PSK-NULL-SHA";
case 0x002F:
return "RSA-AES128-CBC-SHA";
case 0x0030:
return "DH-DSS-AES128-CBC-SHA";
case 0x0031:
return "DH-RSA-AES128-CBC-SHA";
case 0x0032:
return "DHE-DSS-AES128-CBC-SHA";
case 0x0033:
return "DHE-RSA-AES128-CBC-SHA";
case 0x0034:
return "DH-anon-AES128-CBC-SHA";
case 0x0035:
return "RSA-AES256-CBC-SHA";
case 0x0036:
return "DH-DSS-AES256-CBC-SHA";
case 0x0037:
return "DH-RSA-AES256-CBC-SHA";
case 0x0038:
return "DHE-DSS-AES256-CBC-SHA";
case 0x0039:
return "DHE-RSA-AES256-CBC-SHA";
case 0x003A:
return "DH-anon-AES256-CBC-SHA";
case 0x003B:
return "RSA-NULL-SHA256";
case 0x003C:
return "RSA-AES128-CBC-SHA256";
case 0x003D:
return "RSA-AES256-CBC-SHA256";
case 0x003E:
return "DH-DSS-AES128-CBC-SHA256";
case 0x003F:
return "DH-RSA-AES128-CBC-SHA256";
case 0x0040:
return "DHE-DSS-AES128-CBC-SHA256";
case 0x0041:
return "RSA-CAMELLIA128-CBC-SHA";
case 0x0042:
return "DH-DSS-CAMELLIA128-CBC-SHA";
case 0x0043:
return "DH-RSA-CAMELLIA128-CBC-SHA";
case 0x0044:
return "DHE-DSS-CAMELLIA128-CBC-SHA";
case 0x0045:
return "DHE-RSA-CAMELLIA128-CBC-SHA";
case 0x0046:
return "DH-anon-CAMELLIA128-CBC-SHA";
case 0x0067:
return "DHE-RSA-AES128-CBC-SHA256";
case 0x0068:
return "DH-DSS-AES256-CBC-SHA256";
case 0x0069:
return "DH-RSA-AES256-CBC-SHA256";
case 0x006A:
return "DHE-DSS-AES256-CBC-SHA256";
case 0x006B:
return "DHE-RSA-AES256-CBC-SHA256";
case 0x006C:
return "DH-anon-AES128-CBC-SHA256";
case 0x006D:
return "DH-anon-AES256-CBC-SHA256";
case 0x0084:
return "RSA-CAMELLIA256-CBC-SHA";
case 0x0085:
return "DH-DSS-CAMELLIA256-CBC-SHA";
case 0x0086:
return "DH-RSA-CAMELLIA256-CBC-SHA";
case 0x0087:
return "DHE-DSS-CAMELLIA256-CBC-SHA";
case 0x0088:
return "DHE-RSA-CAMELLIA256-CBC-SHA";
case 0x0089:
return "DH-anon-CAMELLIA256-CBC-SHA";
case 0x008A:
return "PSK-RC4-128-SHA";
case 0x008B:
return "PSK-3DES-EDE-CBC-SHA";
case 0x008C:
return "PSK-AES128-CBC-SHA";
case 0x008D:
return "PSK-AES256-CBC-SHA";
case 0x008E:
return "DHE-PSK-RC4-128-SHA";
case 0x008F:
return "DHE-PSK-3DES-EDE-CBC-SHA";
case 0x0090:
return "DHE-PSK-AES128-CBC-SHA";
case 0x0091:
return "DHE-PSK-AES256-CBC-SHA";
case 0x0092:
return "RSA-PSK-RC4-128-SHA";
case 0x0093:
return "RSA-PSK-3DES-EDE-CBC-SHA";
case 0x0094:
return "RSA-PSK-AES128-CBC-SHA";
case 0x0095:
return "RSA-PSK-AES256-CBC-SHA";
case 0x0096:
return "RSA-SEED-CBC-SHA";
case 0x0097:
return "DH-DSS-SEED-CBC-SHA";
case 0x0098:
return "DH-RSA-SEED-CBC-SHA";
case 0x0099:
return "DHE-DSS-SEED-CBC-SHA";
case 0x009A:
return "DHE-RSA-SEED-CBC-SHA";
case 0x009B:
return "DH-anon-SEED-CBC-SHA";
case 0x009C:
return "RSA-AES128-GCM-SHA256";
case 0x009D:
return "RSA-AES256-GCM-SHA384";
case 0x009E:
return "DHE-RSA-AES128-GCM-SHA256";
case 0x009F:
return "DHE-RSA-AES256-GCM-SHA384";
case 0x00A0:
return "DH-RSA-AES128-GCM-SHA256";
case 0x00A1:
return "DH-RSA-AES256-GCM-SHA384";
case 0x00A2:
return "DHE-DSS-AES128-GCM-SHA256";
case 0x00A3:
return "DHE-DSS-AES256-GCM-SHA384";
case 0x00A4:
return "DH-DSS-AES128-GCM-SHA256";
case 0x00A5:
return "DH-DSS-AES256-GCM-SHA384";
case 0x00A6:
return "DH-anon-AES128-GCM-SHA256";
case 0x00A7:
return "DH-anon-AES256-GCM-SHA384";
case 0x00A8:
return "PSK-AES128-GCM-SHA256";
case 0x00A9:
return "PSK-AES256-GCM-SHA384";
case 0x00AA:
return "DHE-PSK-AES128-GCM-SHA256";
case 0x00AB:
return "DHE-PSK-AES256-GCM-SHA384";
case 0x00AC:
return "RSA-PSK-AES128-GCM-SHA256";
case 0x00AD:
return "RSA-PSK-AES256-GCM-SHA384";
case 0x00AE:
return "PSK-AES128-CBC-SHA256";
case 0x00AF:
return "PSK-AES256-CBC-SHA384";
case 0x00B0:
return "PSK-NULL-SHA256";
case 0x00B1:
return "PSK-NULL-SHA384";
case 0x00B2:
return "DHE-PSK-AES128-CBC-SHA256";
case 0x00B3:
return "DHE-PSK-AES256-CBC-SHA384";
case 0x00B4:
return "DHE-PSK-NULL-SHA256";
case 0x00B5:
return "DHE-PSK-NULL-SHA384";
case 0x00B6:
return "RSA-PSK-AES128-CBC-SHA256";
case 0x00B7:
return "RSA-PSK-AES256-CBC-SHA384";
case 0x00B8:
return "RSA-PSK-NULL-SHA256";
case 0x00B9:
return "RSA-PSK-NULL-SHA384";
case 0x00BA:
return "RSA-CAMELLIA128-CBC-SHA256";
case 0x00BB:
return "DH-DSS-CAMELLIA128-CBC-SHA256";
case 0x00BC:
return "DH-RSA-CAMELLIA128-CBC-SHA256";
case 0x00BD:
return "DHE-DSS-CAMELLIA128-CBC-SHA256";
case 0x00BE:
return "DHE-RSA-CAMELLIA128-CBC-SHA256";
case 0x00BF:
return "DH-anon-CAMELLIA128-CBC-SHA256";
case 0x00C0:
return "RSA-CAMELLIA256-CBC-SHA256";
case 0x00C1:
return "DH-DSS-CAMELLIA256-CBC-SHA256";
case 0x00C2:
return "DH-RSA-CAMELLIA256-CBC-SHA256";
case 0x00C3:
return "DHE-DSS-CAMELLIA256-CBC-SHA256";
case 0x00C4:
return "DHE-RSA-CAMELLIA256-CBC-SHA256";
case 0x00C5:
return "DH-anon-CAMELLIA256-CBC-SHA256";
case 0x00C6:
return "SM4-GCM-SM3";
case 0x00C7:
return "SM4-CCM-SM3";
case 0x00FF:
return "EMPTY-RENEGOTIATION-INFO-SCSV";
case 0x1301:
return "AES128-GCM-SHA256";
case 0x1302:
return "AES256-GCM-SHA384";
case 0x1303:
return "CHACHA20-POLY1305-SHA256";
case 0x1304:
return "AES128-CCM-SHA256";
case 0x1305:
return "AES128-CCM8-SHA256";
case 0x5600:
return "FALLBACK-SCSV";
case 0xC001:
return "ECDH-ECDSA-NULL-SHA";
case 0xC002:
return "ECDH-ECDSA-RC4-128-SHA";
case 0xC003:
return "ECDH-ECDSA-3DES-EDE-CBC-SHA";
case 0xC004:
return "ECDH-ECDSA-AES128-CBC-SHA";
case 0xC005:
return "ECDH-ECDSA-AES256-CBC-SHA";
case 0xC006:
return "ECDHE-ECDSA-NULL-SHA";
case 0xC007:
return "ECDHE-ECDSA-RC4-128-SHA";
case 0xC008:
return "ECDHE-ECDSA-3DES-EDE-CBC-SHA";
case 0xC009:
return "ECDHE-ECDSA-AES128-CBC-SHA";
case 0xC00A:
return "ECDHE-ECDSA-AES256-CBC-SHA";
case 0xC00B:
return "ECDH-RSA-NULL-SHA";
case 0xC00C:
return "ECDH-RSA-RC4-128-SHA";
case 0xC00D:
return "ECDH-RSA-3DES-EDE-CBC-SHA";
case 0xC00E:
return "ECDH-RSA-AES128-CBC-SHA";
case 0xC00F:
return "ECDH-RSA-AES256-CBC-SHA";
case 0xC010:
return "ECDHE-RSA-NULL-SHA";
case 0xC011:
return "ECDHE-RSA-RC4-128-SHA";
case 0xC012:
return "ECDHE-RSA-3DES-EDE-CBC-SHA";
case 0xC013:
return "ECDHE-RSA-AES128-CBC-SHA";
case 0xC014:
return "ECDHE-RSA-AES256-CBC-SHA";
case 0xC015:
return "ECDH-anon-NULL-SHA";
case 0xC016:
return "ECDH-anon-RC4-128-SHA";
case 0xC017:
return "ECDH-anon-3DES-EDE-CBC-SHA";
case 0xC018:
return "ECDH-anon-AES128-CBC-SHA";
case 0xC019:
return "ECDH-anon-AES256-CBC-SHA";
case 0xC01A:
return "SRP-SHA-3DES-EDE-CBC-SHA";
case 0xC01B:
return "SRP-SHA-RSA-3DES-EDE-CBC-SHA";
case 0xC01C:
return "SRP-SHA-DSS-3DES-EDE-CBC-SHA";
case 0xC01D:
return "SRP-SHA-AES128-CBC-SHA";
case 0xC01E:
return "SRP-SHA-RSA-AES128-CBC-SHA";
case 0xC01F:
return "SRP-SHA-DSS-AES128-CBC-SHA";
case 0xC020:
return "SRP-SHA-AES256-CBC-SHA";
case 0xC021:
return "SRP-SHA-RSA-AES256-CBC-SHA";
case 0xC022:
return "SRP-SHA-DSS-AES256-CBC-SHA";
case 0xC023:
return "ECDHE-ECDSA-AES128-CBC-SHA256";
case 0xC024:
return "ECDHE-ECDSA-AES256-CBC-SHA384";
case 0xC025:
return "ECDH-ECDSA-AES128-CBC-SHA256";
case 0xC026:
return "ECDH-ECDSA-AES256-CBC-SHA384";
case 0xC027:
return "ECDHE-RSA-AES128-CBC-SHA256";
case 0xC028:
return "ECDHE-RSA-AES256-CBC-SHA384";
case 0xC029:
return "ECDH-RSA-AES128-CBC-SHA256";
case 0xC02A:
return "ECDH-RSA-AES256-CBC-SHA384";
case 0xC02B:
return "ECDHE-ECDSA-AES128-GCM-SHA256";
case 0xC02C:
return "ECDHE-ECDSA-AES256-GCM-SHA384";
case 0xC02D:
return "ECDH-ECDSA-AES128-GCM-SHA256";
case 0xC02E:
return "ECDH-ECDSA-AES256-GCM-SHA384";
case 0xC02F:
return "ECDHE-RSA-AES128-GCM-SHA256";
case 0xC030:
return "ECDHE-RSA-AES256-GCM-SHA384";
case 0xC031:
return "ECDH-RSA-AES128-GCM-SHA256";
case 0xC032:
return "ECDH-RSA-AES256-GCM-SHA384";
case 0xC033:
return "ECDHE-PSK-RC4-128-SHA";
case 0xC034:
return "ECDHE-PSK-3DES-EDE-CBC-SHA";
case 0xC035:
return "ECDHE-PSK-AES128-CBC-SHA";
case 0xC036:
return "ECDHE-PSK-AES256-CBC-SHA";
case 0xC037:
return "ECDHE-PSK-AES128-CBC-SHA256";
case 0xC038:
return "ECDHE-PSK-AES256-CBC-SHA384";
case 0xC039:
return "ECDHE-PSK-NULL-SHA";
case 0xC03A:
return "ECDHE-PSK-NULL-SHA256";
case 0xC03B:
return "ECDHE-PSK-NULL-SHA384";
case 0xC03C:
return "RSA-ARIA128-CBC-SHA256";
case 0xC03D:
return "RSA-ARIA256-CBC-SHA384";
case 0xC03E:
return "DH-DSS-ARIA128-CBC-SHA256";
case 0xC03F:
return "DH-DSS-ARIA256-CBC-SHA384";
case 0xC040:
return "DH-RSA-ARIA128-CBC-SHA256";
case 0xC041:
return "DH-RSA-ARIA256-CBC-SHA384";
case 0xC042:
return "DHE-DSS-ARIA128-CBC-SHA256";
case 0xC043:
return "DHE-DSS-ARIA256-CBC-SHA384";
case 0xC044:
return "DHE-RSA-ARIA128-CBC-SHA256";
case 0xC045:
return "DHE-RSA-ARIA256-CBC-SHA384";
case 0xC046:
return "DH-anon-ARIA128-CBC-SHA256";
case 0xC047:
return "DH-anon-ARIA256-CBC-SHA384";
case 0xC048:
return "ECDHE-ECDSA-ARIA128-CBC-SHA256";
case 0xC049:
return "ECDHE-ECDSA-ARIA256-CBC-SHA384";
case 0xC04A:
return "ECDH-ECDSA-ARIA128-CBC-SHA256";
case 0xC04B:
return "ECDH-ECDSA-ARIA256-CBC-SHA384";
case 0xC04C:
return "ECDHE-RSA-ARIA128-CBC-SHA256";
case 0xC04D:
return "ECDHE-RSA-ARIA256-CBC-SHA384";
case 0xC04E:
return "ECDH-RSA-ARIA128-CBC-SHA256";
case 0xC04F:
return "ECDH-RSA-ARIA256-CBC-SHA384";
case 0xC050:
return "RSA-ARIA128-GCM-SHA256";
case 0xC051:
return "RSA-ARIA256-GCM-SHA384";
case 0xC052:
return "DHE-RSA-ARIA128-GCM-SHA256";
case 0xC053:
return "DHE-RSA-ARIA256-GCM-SHA384";
case 0xC054:
return "DH-RSA-ARIA128-GCM-SHA256";
case 0xC055:
return "DH-RSA-ARIA256-GCM-SHA384";
case 0xC056:
return "DHE-DSS-ARIA128-GCM-SHA256";
case 0xC057:
return "DHE-DSS-ARIA256-GCM-SHA384";
case 0xC058:
return "DH-DSS-ARIA128-GCM-SHA256";
case 0xC059:
return "DH-DSS-ARIA256-GCM-SHA384";
case 0xC05A:
return "DH-anon-ARIA128-GCM-SHA256";
case 0xC05B:
return "DH-anon-ARIA256-GCM-SHA384";
case 0xC05C:
return "ECDHE-ECDSA-ARIA128-GCM-SHA256";
case 0xC05D:
return "ECDHE-ECDSA-ARIA256-GCM-SHA384";
case 0xC05E:
return "ECDH-ECDSA-ARIA128-GCM-SHA256";
case 0xC05F:
return "ECDH-ECDSA-ARIA256-GCM-SHA384";
case 0xC060:
return "ECDHE-RSA-ARIA128-GCM-SHA256";
case 0xC061:
return "ECDHE-RSA-ARIA256-GCM-SHA384";
case 0xC062:
return "ECDH-RSA-ARIA128-GCM-SHA256";
case 0xC063:
return "ECDH-RSA-ARIA256-GCM-SHA384";
case 0xC064:
return "PSK-ARIA128-CBC-SHA256";
case 0xC065:
return "PSK-ARIA256-CBC-SHA384";
case 0xC066:
return "DHE-PSK-ARIA128-CBC-SHA256";
case 0xC067:
return "DHE-PSK-ARIA256-CBC-SHA384";
case 0xC068:
return "RSA-PSK-ARIA128-CBC-SHA256";
case 0xC069:
return "RSA-PSK-ARIA256-CBC-SHA384";
case 0xC06A:
return "PSK-ARIA128-GCM-SHA256";
case 0xC06B:
return "PSK-ARIA256-GCM-SHA384";
case 0xC06C:
return "DHE-PSK-ARIA128-GCM-SHA256";
case 0xC06D:
return "DHE-PSK-ARIA256-GCM-SHA384";
case 0xC06E:
return "RSA-PSK-ARIA128-GCM-SHA256";
case 0xC06F:
return "RSA-PSK-ARIA256-GCM-SHA384";
case 0xC070:
return "ECDHE-PSK-ARIA128-CBC-SHA256";
case 0xC071:
return "ECDHE-PSK-ARIA256-CBC-SHA384";
case 0xC072:
return "ECDHE-ECDSA-CAMELLIA128-CBC-SHA256";
case 0xC073:
return "ECDHE-ECDSA-CAMELLIA256-CBC-SHA384";
case 0xC074:
return "ECDH-ECDSA-CAMELLIA128-CBC-SHA256";
case 0xC075:
return "ECDH-ECDSA-CAMELLIA256-CBC-SHA384";
case 0xC076:
return "ECDHE-RSA-CAMELLIA128-CBC-SHA256";
case 0xC077:
return "ECDHE-RSA-CAMELLIA256-CBC-SHA384";
case 0xC078:
return "ECDH-RSA-CAMELLIA128-CBC-SHA256";
case 0xC079:
return "ECDH-RSA-CAMELLIA256-CBC-SHA384";
case 0xC07A:
return "RSA-CAMELLIA128-GCM-SHA256";
case 0xC07B:
return "RSA-CAMELLIA256-GCM-SHA384";
case 0xC07C:
return "DHE-RSA-CAMELLIA128-GCM-SHA256";
case 0xC07D:
return "DHE-RSA-CAMELLIA256-GCM-SHA384";
case 0xC07E:
return "DH-RSA-CAMELLIA128-GCM-SHA256";
case 0xC07F:
return "DH-RSA-CAMELLIA256-GCM-SHA384";
case 0xC080:
return "DHE-DSS-CAMELLIA128-GCM-SHA256";
case 0xC081:
return "DHE-DSS-CAMELLIA256-GCM-SHA384";
case 0xC082:
return "DH-DSS-CAMELLIA128-GCM-SHA256";
case 0xC083:
return "DH-DSS-CAMELLIA256-GCM-SHA384";
case 0xC084:
return "DH-anon-CAMELLIA128-GCM-SHA256";
case 0xC085:
return "DH-anon-CAMELLIA256-GCM-SHA384";
case 0xC086:
return "ECDHE-ECDSA-CAMELLIA128-GCM-SHA256";
case 0xC087:
return "ECDHE-ECDSA-CAMELLIA256-GCM-SHA384";
case 0xC088:
return "ECDH-ECDSA-CAMELLIA128-GCM-SHA256";
case 0xC089:
return "ECDH-ECDSA-CAMELLIA256-GCM-SHA384";
case 0xC08A:
return "ECDHE-RSA-CAMELLIA128-GCM-SHA256";
case 0xC08B:
return "ECDHE-RSA-CAMELLIA256-GCM-SHA384";
case 0xC08C:
return "ECDH-RSA-CAMELLIA128-GCM-SHA256";
case 0xC08D:
return "ECDH-RSA-CAMELLIA256-GCM-SHA384";
case 0xC08E:
return "PSK-CAMELLIA128-GCM-SHA256";
case 0xC08F:
return "PSK-CAMELLIA256-GCM-SHA384";
case 0xC090:
return "DHE-PSK-CAMELLIA128-GCM-SHA256";
case 0xC091:
return "DHE-PSK-CAMELLIA256-GCM-SHA384";
case 0xC092:
return "RSA-PSK-CAMELLIA128-GCM-SHA256";
case 0xC093:
return "RSA-PSK-CAMELLIA256-GCM-SHA384";
case 0xC094:
return "PSK-CAMELLIA128-CBC-SHA256";
case 0xC095:
return "PSK-CAMELLIA256-CBC-SHA384";
case 0xC096:
return "DHE-PSK-CAMELLIA128-CBC-SHA256";
case 0xC097:
return "DHE-PSK-CAMELLIA256-CBC-SHA384";
case 0xC098:
return "RSA-PSK-CAMELLIA128-CBC-SHA256";
case 0xC099:
return "RSA-PSK-CAMELLIA256-CBC-SHA384";
case 0xC09A:
return "ECDHE-PSK-CAMELLIA128-CBC-SHA256";
case 0xC09B:
return "ECDHE-PSK-CAMELLIA256-CBC-SHA384";
case 0xC09C:
return "RSA-AES128-CCM";
case 0xC09D:
return "RSA-AES256-CCM";
case 0xC09E:
return "DHE-RSA-AES128-CCM";
case 0xC09F:
return "DHE-RSA-AES256-CCM";
case 0xC0A0:
return "RSA-AES128-CCM8";
case 0xC0A1:
return "RSA-AES256-CCM8";
case 0xC0A2:
return "DHE-RSA-AES128-CCM8";
case 0xC0A3:
return "DHE-RSA-AES256-CCM8";
case 0xC0A4:
return "PSK-AES128-CCM";
case 0xC0A5:
return "PSK-AES256-CCM";
case 0xC0A6:
return "DHE-PSK-AES128-CCM";
case 0xC0A7:
return "DHE-PSK-AES256-CCM";
case 0xC0A8:
return "PSK-AES128-CCM8";
case 0xC0A9:
return "PSK-AES256-CCM8";
case 0xC0AA:
return "PSK-DHE-AES128-CCM8";
case 0xC0AB:
return "PSK-DHE-AES256-CCM8";
case 0xC0AC:
return "ECDHE-ECDSA-AES128-CCM";
case 0xC0AD:
return "ECDHE-ECDSA-AES256-CCM";
case 0xC0AE:
return "ECDHE-ECDSA-AES128-CCM8";
case 0xC0AF:
return "ECDHE-ECDSA-AES256-CCM8";
case 0xC0B0:
return "ECCPWD-AES128-GCM-SHA256";
case 0xC0B1:
return "ECCPWD-AES256-GCM-SHA384";
case 0xC0B2:
return "ECCPWD-AES128-CCM-SHA256";
case 0xC0B3:
return "ECCPWD-AES256-CCM-SHA384";
case 0xC0B4:
return "SHA256-SHA256";
case 0xC0B5:
return "SHA384-SHA384";
case 0xC100:
return "GOSTR341112-256-KUZNYECHIK-CTR-OMAC";
case 0xC101:
return "GOSTR341112-256-MAGMA-CTR-OMAC";
case 0xC102:
return "GOSTR341112-256-28147-CNT-IMIT";
case 0xC103:
return "GOSTR341112-256-KUZNYECHIK-MGM-L";
case 0xC104:
return "GOSTR341112-256-MAGMA-MGM-L";
case 0xC105:
return "GOSTR341112-256-KUZNYECHIK-MGM-S";
case 0xC106:
return "GOSTR341112-256-MAGMA-MGM-S";
case 0xCCA8:
return "ECDHE-RSA-CHACHA20-POLY1305-SHA256";
case 0xCCA9:
return "ECDHE-ECDSA-CHACHA20-POLY1305-SHA256";
case 0xCCAA:
return "DHE-RSA-CHACHA20-POLY1305-SHA256";
case 0xCCAB:
return "PSK-CHACHA20-POLY1305-SHA256";
case 0xCCAC:
return "ECDHE-PSK-CHACHA20-POLY1305-SHA256";
case 0xCCAD:
return "DHE-PSK-CHACHA20-POLY1305-SHA256";
case 0xCCAE:
return "RSA-PSK-CHACHA20-POLY1305-SHA256";
case 0xD001:
return "ECDHE-PSK-AES128-GCM-SHA256";
case 0xD002:
return "ECDHE-PSK-AES256-GCM-SHA384";
case 0xD003:
return "ECDHE-PSK-AES128-CCM8-SHA256";
case 0xD005:
return "ECDHE-PSK-AES128-CCM-SHA256";
case 0x0A0A:
case 0x1A1A:
case 0x2A2A:
case 0x3A3A:
case 0x4A4A:
case 0x5A5A:
case 0x6A6A:
case 0x7A7A:
case 0x8A8A:
case 0x9A9A:
case 0xAAAA:
case 0xBABA:
case 0xCACA:
case 0xDADA:
case 0xEAEA:
case 0xFAFA:
return "GREASE-RFC8701";
case 0x0047 ... 0x004F:
case 0x0050 ... 0x0058:
case 0x0059 ... 0x005C:
case 0x0060 ... 0x0066:
case 0xFEFE ... 0xFEFF:
return "RESERVED-NO-CONFLICT";
case 0x001C ... 0x001D:
return "RESERVED-SSLV3-RFC5246";
case 0xFF00 ... 0xFFFF:
return "PRIVATE-USE-RFC8446";
default:
return "UNASSIGNED";
}
}