github.com/zmap/zcrypto@v0.0.0-20240512203510-0fef58d9a9db/tls/tls_names.go (about)

     1  // Copyright 2015 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package tls
     6  
     7  import (
     8  	"strconv"
     9  	"strings"
    10  )
    11  
    12  var signatureNames map[uint8]string
    13  var hashNames map[uint8]string
    14  var cipherSuiteNames map[int]string
    15  var compressionNames map[uint8]string
    16  var curveNames map[uint16]string
    17  var pointFormatNames map[uint8]string
    18  var clientAuthTypeNames map[int]string
    19  var signatureSchemeNames map[uint16]string
    20  
    21  func init() {
    22  	// RFC 5246 7.4.1.4.1
    23  	signatureNames = make(map[uint8]string, 8)
    24  	// TODO FIXME: the RFC also defines anonymous(0) and (255).
    25  	signatureNames[signatureRSA] = "rsa"
    26  	signatureNames[signatureDSA] = "dsa"
    27  	signatureNames[signatureECDSA] = "ecdsa"
    28  
    29  	// RFC 5246 7.4.1.4.1
    30  	hashNames = make(map[uint8]string, 16)
    31  	// TODO FIXME: the RFC also defines none(0) and (255).
    32  	hashNames[hashMD5] = "md5"
    33  	hashNames[hashSHA1] = "sha1"
    34  	hashNames[hashSHA224] = "sha224"
    35  	hashNames[hashSHA256] = "sha256"
    36  	hashNames[hashSHA384] = "sha384"
    37  	hashNames[hashSHA512] = "sha512"
    38  
    39  	cipherSuiteNames = make(map[int]string, 512)
    40  	cipherSuiteNames[0x0000] = "TLS_NULL_WITH_NULL_NULL"
    41  	cipherSuiteNames[0x0001] = "TLS_RSA_WITH_NULL_MD5"
    42  	cipherSuiteNames[0x0002] = "TLS_RSA_WITH_NULL_SHA"
    43  	cipherSuiteNames[0x0003] = "TLS_RSA_EXPORT_WITH_RC4_40_MD5"
    44  	cipherSuiteNames[0x0004] = "TLS_RSA_WITH_RC4_128_MD5"
    45  	cipherSuiteNames[0x0005] = "TLS_RSA_WITH_RC4_128_SHA"
    46  	cipherSuiteNames[0x0006] = "TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5"
    47  	cipherSuiteNames[0x0007] = "TLS_RSA_WITH_IDEA_CBC_SHA"
    48  	cipherSuiteNames[0x0008] = "TLS_RSA_EXPORT_WITH_DES40_CBC_SHA"
    49  	cipherSuiteNames[0x0009] = "TLS_RSA_WITH_DES_CBC_SHA"
    50  	cipherSuiteNames[0x000A] = "TLS_RSA_WITH_3DES_EDE_CBC_SHA"
    51  	cipherSuiteNames[0x000B] = "TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"
    52  	cipherSuiteNames[0x000C] = "TLS_DH_DSS_WITH_DES_CBC_SHA"
    53  	cipherSuiteNames[0x000D] = "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA"
    54  	cipherSuiteNames[0x000E] = "TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"
    55  	cipherSuiteNames[0x000F] = "TLS_DH_RSA_WITH_DES_CBC_SHA"
    56  	cipherSuiteNames[0x0010] = "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA"
    57  	cipherSuiteNames[0x0011] = "TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"
    58  	cipherSuiteNames[0x0012] = "TLS_DHE_DSS_WITH_DES_CBC_SHA"
    59  	cipherSuiteNames[0x0013] = "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"
    60  	cipherSuiteNames[0x0014] = "TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"
    61  	cipherSuiteNames[0x0015] = "TLS_DHE_RSA_WITH_DES_CBC_SHA"
    62  	cipherSuiteNames[0x0016] = "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"
    63  	cipherSuiteNames[0x0017] = "TLS_DH_ANON_EXPORT_WITH_RC4_40_MD5"
    64  	cipherSuiteNames[0x0018] = "TLS_DH_ANON_WITH_RC4_128_MD5"
    65  	cipherSuiteNames[0x0019] = "TLS_DH_ANON_EXPORT_WITH_DES40_CBC_SHA"
    66  	cipherSuiteNames[0x001A] = "TLS_DH_ANON_WITH_DES_CBC_SHA"
    67  	cipherSuiteNames[0x001B] = "TLS_DH_ANON_WITH_3DES_EDE_CBC_SHA"
    68  	cipherSuiteNames[0x001C] = "SSL_FORTEZZA_KEA_WITH_NULL_SHA"
    69  	cipherSuiteNames[0x001D] = "SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA"
    70  	cipherSuiteNames[0x001E] = "TLS_KRB5_WITH_DES_CBC_SHA"
    71  	cipherSuiteNames[0x001F] = "TLS_KRB5_WITH_3DES_EDE_CBC_SHA"
    72  	cipherSuiteNames[0x0020] = "TLS_KRB5_WITH_RC4_128_SHA"
    73  	cipherSuiteNames[0x0021] = "TLS_KRB5_WITH_IDEA_CBC_SHA"
    74  	cipherSuiteNames[0x0022] = "TLS_KRB5_WITH_DES_CBC_MD5"
    75  	cipherSuiteNames[0x0023] = "TLS_KRB5_WITH_3DES_EDE_CBC_MD5"
    76  	cipherSuiteNames[0x0024] = "TLS_KRB5_WITH_RC4_128_MD5"
    77  	cipherSuiteNames[0x0025] = "TLS_KRB5_WITH_IDEA_CBC_MD5"
    78  	cipherSuiteNames[0x0026] = "TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA"
    79  	cipherSuiteNames[0x0027] = "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA"
    80  	cipherSuiteNames[0x0028] = "TLS_KRB5_EXPORT_WITH_RC4_40_SHA"
    81  	cipherSuiteNames[0x0029] = "TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"
    82  	cipherSuiteNames[0x002A] = "TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5"
    83  	cipherSuiteNames[0x002B] = "TLS_KRB5_EXPORT_WITH_RC4_40_MD5"
    84  	cipherSuiteNames[0x002C] = "TLS_PSK_WITH_NULL_SHA"
    85  	cipherSuiteNames[0x002D] = "TLS_DHE_PSK_WITH_NULL_SHA"
    86  	cipherSuiteNames[0x002E] = "TLS_RSA_PSK_WITH_NULL_SHA"
    87  	cipherSuiteNames[0x002F] = "TLS_RSA_WITH_AES_128_CBC_SHA"
    88  	cipherSuiteNames[0x0030] = "TLS_DH_DSS_WITH_AES_128_CBC_SHA"
    89  	cipherSuiteNames[0x0031] = "TLS_DH_RSA_WITH_AES_128_CBC_SHA"
    90  	cipherSuiteNames[0x0032] = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
    91  	cipherSuiteNames[0x0033] = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA"
    92  	cipherSuiteNames[0x0034] = "TLS_DH_ANON_WITH_AES_128_CBC_SHA"
    93  	cipherSuiteNames[0x0035] = "TLS_RSA_WITH_AES_256_CBC_SHA"
    94  	cipherSuiteNames[0x0036] = "TLS_DH_DSS_WITH_AES_256_CBC_SHA"
    95  	cipherSuiteNames[0x0037] = "TLS_DH_RSA_WITH_AES_256_CBC_SHA"
    96  	cipherSuiteNames[0x0038] = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA"
    97  	cipherSuiteNames[0x0039] = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
    98  	cipherSuiteNames[0x003A] = "TLS_DH_ANON_WITH_AES_256_CBC_SHA"
    99  	cipherSuiteNames[0x003B] = "TLS_RSA_WITH_NULL_SHA256"
   100  	cipherSuiteNames[0x003C] = "TLS_RSA_WITH_AES_128_CBC_SHA256"
   101  	cipherSuiteNames[0x003D] = "TLS_RSA_WITH_AES_256_CBC_SHA256"
   102  	cipherSuiteNames[0x003E] = "TLS_DH_DSS_WITH_AES_128_CBC_SHA256"
   103  	cipherSuiteNames[0x003F] = "TLS_DH_RSA_WITH_AES_128_CBC_SHA256"
   104  	cipherSuiteNames[0x0040] = "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"
   105  	cipherSuiteNames[0x0041] = "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA"
   106  	cipherSuiteNames[0x0042] = "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA"
   107  	cipherSuiteNames[0x0043] = "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA"
   108  	cipherSuiteNames[0x0044] = "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA"
   109  	cipherSuiteNames[0x0045] = "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA"
   110  	cipherSuiteNames[0x0046] = "TLS_DH_ANON_WITH_CAMELLIA_128_CBC_SHA"
   111  	cipherSuiteNames[0x0047] = "TLS_ECDH_ECDSA_WITH_NULL_SHA"
   112  	cipherSuiteNames[0x0048] = "TLS_ECDH_ECDSA_WITH_RC4_128_SHA"
   113  	cipherSuiteNames[0x0049] = "TLS_ECDH_ECDSA_WITH_DES_CBC_SHA"
   114  	cipherSuiteNames[0x004A] = "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA"
   115  	cipherSuiteNames[0x004B] = "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA"
   116  	cipherSuiteNames[0x004C] = "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA"
   117  	cipherSuiteNames[0x0060] = "TLS_RSA_EXPORT1024_WITH_RC4_56_MD5"
   118  	cipherSuiteNames[0x0061] = "TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5"
   119  	cipherSuiteNames[0x0062] = "TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA"
   120  	cipherSuiteNames[0x0063] = "TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA"
   121  	cipherSuiteNames[0x0064] = "TLS_RSA_EXPORT1024_WITH_RC4_56_SHA"
   122  	cipherSuiteNames[0x0065] = "TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA"
   123  	cipherSuiteNames[0x0066] = "TLS_DHE_DSS_WITH_RC4_128_SHA"
   124  	cipherSuiteNames[0x0067] = "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"
   125  	cipherSuiteNames[0x0068] = "TLS_DH_DSS_WITH_AES_256_CBC_SHA256"
   126  	cipherSuiteNames[0x0069] = "TLS_DH_RSA_WITH_AES_256_CBC_SHA256"
   127  	cipherSuiteNames[0x006A] = "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256"
   128  	cipherSuiteNames[0x006B] = "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256"
   129  	cipherSuiteNames[0x006C] = "TLS_DH_ANON_WITH_AES_128_CBC_SHA256"
   130  	cipherSuiteNames[0x006D] = "TLS_DH_ANON_WITH_AES_256_CBC_SHA256"
   131  	cipherSuiteNames[0x0080] = "TLS_GOSTR341094_WITH_28147_CNT_IMIT"
   132  	cipherSuiteNames[0x0081] = "TLS_GOSTR341001_WITH_28147_CNT_IMIT"
   133  	cipherSuiteNames[0x0082] = "TLS_GOSTR341094_WITH_NULL_GOSTR3411"
   134  	cipherSuiteNames[0x0083] = "TLS_GOSTR341001_WITH_NULL_GOSTR3411"
   135  	cipherSuiteNames[0x0084] = "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA"
   136  	cipherSuiteNames[0x0085] = "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA"
   137  	cipherSuiteNames[0x0086] = "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA"
   138  	cipherSuiteNames[0x0087] = "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA"
   139  	cipherSuiteNames[0x0088] = "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA"
   140  	cipherSuiteNames[0x0089] = "TLS_DH_ANON_WITH_CAMELLIA_256_CBC_SHA"
   141  	cipherSuiteNames[0x008A] = "TLS_PSK_WITH_RC4_128_SHA"
   142  	cipherSuiteNames[0x008B] = "TLS_PSK_WITH_3DES_EDE_CBC_SHA"
   143  	cipherSuiteNames[0x008C] = "TLS_PSK_WITH_AES_128_CBC_SHA"
   144  	cipherSuiteNames[0x008D] = "TLS_PSK_WITH_AES_256_CBC_SHA"
   145  	cipherSuiteNames[0x008E] = "TLS_DHE_PSK_WITH_RC4_128_SHA"
   146  	cipherSuiteNames[0x008F] = "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA"
   147  	cipherSuiteNames[0x0090] = "TLS_DHE_PSK_WITH_AES_128_CBC_SHA"
   148  	cipherSuiteNames[0x0091] = "TLS_DHE_PSK_WITH_AES_256_CBC_SHA"
   149  	cipherSuiteNames[0x0092] = "TLS_RSA_PSK_WITH_RC4_128_SHA"
   150  	cipherSuiteNames[0x0093] = "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA"
   151  	cipherSuiteNames[0x0094] = "TLS_RSA_PSK_WITH_AES_128_CBC_SHA"
   152  	cipherSuiteNames[0x0095] = "TLS_RSA_PSK_WITH_AES_256_CBC_SHA"
   153  	cipherSuiteNames[0x0096] = "TLS_RSA_WITH_SEED_CBC_SHA"
   154  	cipherSuiteNames[0x0097] = "TLS_DH_DSS_WITH_SEED_CBC_SHA"
   155  	cipherSuiteNames[0x0098] = "TLS_DH_RSA_WITH_SEED_CBC_SHA"
   156  	cipherSuiteNames[0x0099] = "TLS_DHE_DSS_WITH_SEED_CBC_SHA"
   157  	cipherSuiteNames[0x009A] = "TLS_DHE_RSA_WITH_SEED_CBC_SHA"
   158  	cipherSuiteNames[0x009B] = "TLS_DH_ANON_WITH_SEED_CBC_SHA"
   159  	cipherSuiteNames[0x009C] = "TLS_RSA_WITH_AES_128_GCM_SHA256"
   160  	cipherSuiteNames[0x009D] = "TLS_RSA_WITH_AES_256_GCM_SHA384"
   161  	cipherSuiteNames[0x009E] = "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"
   162  	cipherSuiteNames[0x009F] = "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384"
   163  	cipherSuiteNames[0x00A0] = "TLS_DH_RSA_WITH_AES_128_GCM_SHA256"
   164  	cipherSuiteNames[0x00A1] = "TLS_DH_RSA_WITH_AES_256_GCM_SHA384"
   165  	cipherSuiteNames[0x00A2] = "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256"
   166  	cipherSuiteNames[0x00A3] = "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384"
   167  	cipherSuiteNames[0x00A4] = "TLS_DH_DSS_WITH_AES_128_GCM_SHA256"
   168  	cipherSuiteNames[0x00A5] = "TLS_DH_DSS_WITH_AES_256_GCM_SHA384"
   169  	cipherSuiteNames[0x00A6] = "TLS_DH_ANON_WITH_AES_128_GCM_SHA256"
   170  	cipherSuiteNames[0x00A7] = "TLS_DH_ANON_WITH_AES_256_GCM_SHA384"
   171  	cipherSuiteNames[0x00A8] = "TLS_PSK_WITH_AES_128_GCM_SHA256"
   172  	cipherSuiteNames[0x00A9] = "TLS_PSK_WITH_AES_256_GCM_SHA384"
   173  	cipherSuiteNames[0x00AA] = "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256"
   174  	cipherSuiteNames[0x00AB] = "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384"
   175  	cipherSuiteNames[0x00AC] = "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256"
   176  	cipherSuiteNames[0x00AD] = "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384"
   177  	cipherSuiteNames[0x00AE] = "TLS_PSK_WITH_AES_128_CBC_SHA256"
   178  	cipherSuiteNames[0x00AF] = "TLS_PSK_WITH_AES_256_CBC_SHA384"
   179  	cipherSuiteNames[0x00B0] = "TLS_PSK_WITH_NULL_SHA256"
   180  	cipherSuiteNames[0x00B1] = "TLS_PSK_WITH_NULL_SHA384"
   181  	cipherSuiteNames[0x00B2] = "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256"
   182  	cipherSuiteNames[0x00B3] = "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384"
   183  	cipherSuiteNames[0x00B4] = "TLS_DHE_PSK_WITH_NULL_SHA256"
   184  	cipherSuiteNames[0x00B5] = "TLS_DHE_PSK_WITH_NULL_SHA384"
   185  	cipherSuiteNames[0x00B6] = "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256"
   186  	cipherSuiteNames[0x00B7] = "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384"
   187  	cipherSuiteNames[0x00B8] = "TLS_RSA_PSK_WITH_NULL_SHA256"
   188  	cipherSuiteNames[0x00B9] = "TLS_RSA_PSK_WITH_NULL_SHA384"
   189  	cipherSuiteNames[0x00BA] = "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256"
   190  	cipherSuiteNames[0x00BB] = "TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256"
   191  	cipherSuiteNames[0x00BC] = "TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256"
   192  	cipherSuiteNames[0x00BD] = "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256"
   193  	cipherSuiteNames[0x00BE] = "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"
   194  	cipherSuiteNames[0x00BF] = "TLS_DH_ANON_WITH_CAMELLIA_128_CBC_SHA256"
   195  	cipherSuiteNames[0x00C0] = "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256"
   196  	cipherSuiteNames[0x00C1] = "TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256"
   197  	cipherSuiteNames[0x00C2] = "TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256"
   198  	cipherSuiteNames[0x00C3] = "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256"
   199  	cipherSuiteNames[0x00C4] = "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256"
   200  	cipherSuiteNames[0x00C5] = "TLS_DH_ANON_WITH_CAMELLIA_256_CBC_SHA256"
   201  	cipherSuiteNames[0x00FF] = "TLS_RENEGO_PROTECTION_REQUEST"
   202  	cipherSuiteNames[0x5600] = "TLS_FALLBACK_SCSV"
   203  	cipherSuiteNames[0xC001] = "TLS_ECDH_ECDSA_WITH_NULL_SHA"
   204  	cipherSuiteNames[0xC002] = "TLS_ECDH_ECDSA_WITH_RC4_128_SHA"
   205  	cipherSuiteNames[0xC003] = "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA"
   206  	cipherSuiteNames[0xC004] = "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA"
   207  	cipherSuiteNames[0xC005] = "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA"
   208  	cipherSuiteNames[0xC006] = "TLS_ECDHE_ECDSA_WITH_NULL_SHA"
   209  	cipherSuiteNames[0xC007] = "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA"
   210  	cipherSuiteNames[0xC008] = "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"
   211  	cipherSuiteNames[0xC009] = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA"
   212  	cipherSuiteNames[0xC00A] = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"
   213  	cipherSuiteNames[0xC00B] = "TLS_ECDH_RSA_WITH_NULL_SHA"
   214  	cipherSuiteNames[0xC00C] = "TLS_ECDH_RSA_WITH_RC4_128_SHA"
   215  	cipherSuiteNames[0xC00D] = "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA"
   216  	cipherSuiteNames[0xC00E] = "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA"
   217  	cipherSuiteNames[0xC00F] = "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA"
   218  	cipherSuiteNames[0xC010] = "TLS_ECDHE_RSA_WITH_NULL_SHA"
   219  	cipherSuiteNames[0xC011] = "TLS_ECDHE_RSA_WITH_RC4_128_SHA"
   220  	cipherSuiteNames[0xC012] = "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"
   221  	cipherSuiteNames[0xC013] = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
   222  	cipherSuiteNames[0xC014] = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"
   223  	cipherSuiteNames[0xC015] = "TLS_ECDH_ANON_WITH_NULL_SHA"
   224  	cipherSuiteNames[0xC016] = "TLS_ECDH_ANON_WITH_RC4_128_SHA"
   225  	cipherSuiteNames[0xC017] = "TLS_ECDH_ANON_WITH_3DES_EDE_CBC_SHA"
   226  	cipherSuiteNames[0xC018] = "TLS_ECDH_ANON_WITH_AES_128_CBC_SHA"
   227  	cipherSuiteNames[0xC019] = "TLS_ECDH_ANON_WITH_AES_256_CBC_SHA"
   228  	cipherSuiteNames[0xC01A] = "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA"
   229  	cipherSuiteNames[0xC01B] = "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA"
   230  	cipherSuiteNames[0xC01C] = "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA"
   231  	cipherSuiteNames[0xC01D] = "TLS_SRP_SHA_WITH_AES_128_CBC_SHA"
   232  	cipherSuiteNames[0xC01E] = "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA"
   233  	cipherSuiteNames[0xC01F] = "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA"
   234  	cipherSuiteNames[0xC020] = "TLS_SRP_SHA_WITH_AES_256_CBC_SHA"
   235  	cipherSuiteNames[0xC021] = "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA"
   236  	cipherSuiteNames[0xC022] = "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA"
   237  	cipherSuiteNames[0xC023] = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"
   238  	cipherSuiteNames[0xC024] = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"
   239  	cipherSuiteNames[0xC025] = "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256"
   240  	cipherSuiteNames[0xC026] = "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384"
   241  	cipherSuiteNames[0xC027] = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
   242  	cipherSuiteNames[0xC028] = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"
   243  	cipherSuiteNames[0xC029] = "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256"
   244  	cipherSuiteNames[0xC02A] = "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384"
   245  	cipherSuiteNames[0xC02B] = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
   246  	cipherSuiteNames[0xC02C] = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
   247  	cipherSuiteNames[0xC02D] = "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256"
   248  	cipherSuiteNames[0xC02E] = "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384"
   249  	cipherSuiteNames[0xC02F] = "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
   250  	cipherSuiteNames[0xC030] = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
   251  	cipherSuiteNames[0xC031] = "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256"
   252  	cipherSuiteNames[0xC032] = "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384"
   253  	cipherSuiteNames[0xC033] = "TLS_ECDHE_PSK_WITH_RC4_128_SHA"
   254  	cipherSuiteNames[0xC034] = "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA"
   255  	cipherSuiteNames[0xC035] = "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA"
   256  	cipherSuiteNames[0xC036] = "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA"
   257  	cipherSuiteNames[0xC037] = "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256"
   258  	cipherSuiteNames[0xC038] = "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384"
   259  	cipherSuiteNames[0xC039] = "TLS_ECDHE_PSK_WITH_NULL_SHA"
   260  	cipherSuiteNames[0xC03A] = "TLS_ECDHE_PSK_WITH_NULL_SHA256"
   261  	cipherSuiteNames[0xC03B] = "TLS_ECDHE_PSK_WITH_NULL_SHA384"
   262  	cipherSuiteNames[0xC03C] = "TLS_RSA_WITH_ARIA_128_CBC_SHA256"
   263  	cipherSuiteNames[0xC03D] = "TLS_RSA_WITH_ARIA_256_CBC_SHA384"
   264  	cipherSuiteNames[0xC03E] = "TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256"
   265  	cipherSuiteNames[0xC03F] = "TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384"
   266  	cipherSuiteNames[0xC040] = "TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256"
   267  	cipherSuiteNames[0xC041] = "TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384"
   268  	cipherSuiteNames[0xC042] = "TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256"
   269  	cipherSuiteNames[0xC043] = "TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384"
   270  	cipherSuiteNames[0xC044] = "TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256"
   271  	cipherSuiteNames[0xC045] = "TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384"
   272  	cipherSuiteNames[0xC046] = "TLS_DH_ANON_WITH_ARIA_128_CBC_SHA256"
   273  	cipherSuiteNames[0xC047] = "TLS_DH_ANON_WITH_ARIA_256_CBC_SHA384"
   274  	cipherSuiteNames[0xC048] = "TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256"
   275  	cipherSuiteNames[0xC049] = "TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384"
   276  	cipherSuiteNames[0xC04A] = "TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256"
   277  	cipherSuiteNames[0xC04B] = "TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384"
   278  	cipherSuiteNames[0xC04C] = "TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256"
   279  	cipherSuiteNames[0xC04D] = "TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384"
   280  	cipherSuiteNames[0xC04E] = "TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256"
   281  	cipherSuiteNames[0xC04F] = "TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384"
   282  	cipherSuiteNames[0xC050] = "TLS_RSA_WITH_ARIA_128_GCM_SHA256"
   283  	cipherSuiteNames[0xC051] = "TLS_RSA_WITH_ARIA_256_GCM_SHA384"
   284  	cipherSuiteNames[0xC052] = "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256"
   285  	cipherSuiteNames[0xC053] = "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384"
   286  	cipherSuiteNames[0xC054] = "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256"
   287  	cipherSuiteNames[0xC055] = "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384"
   288  	cipherSuiteNames[0xC056] = "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256"
   289  	cipherSuiteNames[0xC057] = "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384"
   290  	cipherSuiteNames[0xC058] = "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256"
   291  	cipherSuiteNames[0xC059] = "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384"
   292  	cipherSuiteNames[0xC05A] = "TLS_DH_ANON_WITH_ARIA_128_GCM_SHA256"
   293  	cipherSuiteNames[0xC05B] = "TLS_DH_ANON_WITH_ARIA_256_GCM_SHA384"
   294  	cipherSuiteNames[0xC05C] = "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256"
   295  	cipherSuiteNames[0xC05D] = "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384"
   296  	cipherSuiteNames[0xC05E] = "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256"
   297  	cipherSuiteNames[0xC05F] = "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384"
   298  	cipherSuiteNames[0xC060] = "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256"
   299  	cipherSuiteNames[0xC061] = "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384"
   300  	cipherSuiteNames[0xC062] = "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256"
   301  	cipherSuiteNames[0xC063] = "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384"
   302  	cipherSuiteNames[0xC064] = "TLS_PSK_WITH_ARIA_128_CBC_SHA256"
   303  	cipherSuiteNames[0xC065] = "TLS_PSK_WITH_ARIA_256_CBC_SHA384"
   304  	cipherSuiteNames[0xC066] = "TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256"
   305  	cipherSuiteNames[0xC067] = "TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384"
   306  	cipherSuiteNames[0xC068] = "TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256"
   307  	cipherSuiteNames[0xC069] = "TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384"
   308  	cipherSuiteNames[0xC06A] = "TLS_PSK_WITH_ARIA_128_GCM_SHA256"
   309  	cipherSuiteNames[0xC06B] = "TLS_PSK_WITH_ARIA_256_GCM_SHA384"
   310  	cipherSuiteNames[0xC06C] = "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256"
   311  	cipherSuiteNames[0xC06D] = "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384"
   312  	cipherSuiteNames[0xC06E] = "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256"
   313  	cipherSuiteNames[0xC06F] = "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384"
   314  	cipherSuiteNames[0xC070] = "TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256"
   315  	cipherSuiteNames[0xC071] = "TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384"
   316  	cipherSuiteNames[0xC072] = "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"
   317  	cipherSuiteNames[0xC073] = "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"
   318  	cipherSuiteNames[0xC074] = "TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"
   319  	cipherSuiteNames[0xC075] = "TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"
   320  	cipherSuiteNames[0xC076] = "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"
   321  	cipherSuiteNames[0xC077] = "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384"
   322  	cipherSuiteNames[0xC078] = "TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256"
   323  	cipherSuiteNames[0xC079] = "TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384"
   324  	cipherSuiteNames[0xC07A] = "TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256"
   325  	cipherSuiteNames[0xC07B] = "TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384"
   326  	cipherSuiteNames[0xC07C] = "TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"
   327  	cipherSuiteNames[0xC07D] = "TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"
   328  	cipherSuiteNames[0xC07E] = "TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256"
   329  	cipherSuiteNames[0xC07F] = "TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384"
   330  	cipherSuiteNames[0xC080] = "TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256"
   331  	cipherSuiteNames[0xC081] = "TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384"
   332  	cipherSuiteNames[0xC082] = "TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256"
   333  	cipherSuiteNames[0xC083] = "TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384"
   334  	cipherSuiteNames[0xC084] = "TLS_DH_ANON_WITH_CAMELLIA_128_GCM_SHA256"
   335  	cipherSuiteNames[0xC085] = "TLS_DH_ANON_WITH_CAMELLIA_256_GCM_SHA384"
   336  	cipherSuiteNames[0xC086] = "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"
   337  	cipherSuiteNames[0xC087] = "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"
   338  	cipherSuiteNames[0xC088] = "TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"
   339  	cipherSuiteNames[0xC089] = "TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"
   340  	cipherSuiteNames[0xC08A] = "TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"
   341  	cipherSuiteNames[0xC08B] = "TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"
   342  	cipherSuiteNames[0xC08C] = "TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256"
   343  	cipherSuiteNames[0xC08D] = "TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384"
   344  	cipherSuiteNames[0xC08E] = "TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256"
   345  	cipherSuiteNames[0xC08F] = "TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384"
   346  	cipherSuiteNames[0xC090] = "TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256"
   347  	cipherSuiteNames[0xC091] = "TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384"
   348  	cipherSuiteNames[0xC092] = "TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256"
   349  	cipherSuiteNames[0xC093] = "TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384"
   350  	cipherSuiteNames[0xC094] = "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256"
   351  	cipherSuiteNames[0xC095] = "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384"
   352  	cipherSuiteNames[0xC096] = "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"
   353  	cipherSuiteNames[0xC097] = "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"
   354  	cipherSuiteNames[0xC098] = "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256"
   355  	cipherSuiteNames[0xC099] = "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384"
   356  	cipherSuiteNames[0xC09A] = "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"
   357  	cipherSuiteNames[0xC09B] = "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"
   358  	cipherSuiteNames[0xC09C] = "TLS_RSA_WITH_AES_128_CCM"
   359  	cipherSuiteNames[0xC09D] = "TLS_RSA_WITH_AES_256_CCM"
   360  	cipherSuiteNames[0xC09E] = "TLS_DHE_RSA_WITH_AES_128_CCM"
   361  	cipherSuiteNames[0xC09F] = "TLS_DHE_RSA_WITH_AES_256_CCM"
   362  	cipherSuiteNames[0xC0A0] = "TLS_RSA_WITH_AES_128_CCM_8"
   363  	cipherSuiteNames[0xC0A1] = "TLS_RSA_WITH_AES_256_CCM_8"
   364  	cipherSuiteNames[0xC0A2] = "TLS_DHE_RSA_WITH_AES_128_CCM_8"
   365  	cipherSuiteNames[0xC0A3] = "TLS_DHE_RSA_WITH_AES_256_CCM_8"
   366  	cipherSuiteNames[0xC0A4] = "TLS_PSK_WITH_AES_128_CCM"
   367  	cipherSuiteNames[0xC0A5] = "TLS_PSK_WITH_AES_256_CCM"
   368  	cipherSuiteNames[0xC0A6] = "TLS_DHE_PSK_WITH_AES_128_CCM"
   369  	cipherSuiteNames[0xC0A7] = "TLS_DHE_PSK_WITH_AES_256_CCM"
   370  	cipherSuiteNames[0xC0A8] = "TLS_PSK_WITH_AES_128_CCM_8"
   371  	cipherSuiteNames[0xC0A9] = "TLS_PSK_WITH_AES_256_CCM_8"
   372  	cipherSuiteNames[0xC0AA] = "TLS_PSK_DHE_WITH_AES_128_CCM_8"
   373  	cipherSuiteNames[0xC0AB] = "TLS_PSK_DHE_WITH_AES_256_CCM_8"
   374  	cipherSuiteNames[0xC0AC] = "TLS_ECDHE_ECDSA_WITH_AES_128_CCM"
   375  	cipherSuiteNames[0xC0AD] = "TLS_ECDHE_ECDSA_WITH_AES_256_CCM"
   376  	cipherSuiteNames[0xC0AE] = "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8"
   377  	cipherSuiteNames[0xC0AF] = "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8"
   378  	cipherSuiteNames[0xCAFE] = "TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256"
   379  	cipherSuiteNames[0xCC13] = "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256_OLD"
   380  	cipherSuiteNames[0xCC14] = "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256_OLD"
   381  	cipherSuiteNames[0xCC15] = "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256_OLD"
   382  	cipherSuiteNames[0xCCA8] = "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"
   383  	cipherSuiteNames[0xCCA9] = "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"
   384  	cipherSuiteNames[0xCCAA] = "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256"
   385  	cipherSuiteNames[0xFEFE] = "SSL_RSA_FIPS_WITH_DES_CBC_SHA"
   386  	cipherSuiteNames[0xFEFF] = "SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA"
   387  	cipherSuiteNames[0xFFE0] = "SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA"
   388  	cipherSuiteNames[0xFFE1] = "SSL_RSA_FIPS_WITH_DES_CBC_SHA"
   389  	cipherSuiteNames[0xFF80] = "SSL_RSA_WITH_RC2_CBC_MD5"
   390  	cipherSuiteNames[0xFF81] = "SSL_RSA_WITH_IDEA_CBC_MD5"
   391  	cipherSuiteNames[0xFF82] = "SSL_RSA_WITH_DES_CBC_MD5"
   392  	cipherSuiteNames[0xFF83] = "SSL_RSA_WITH_3DES_EDE_CBC_MD5"
   393  	cipherSuiteNames[0xFF03] = "SSL_EN_RC2_128_CBC_WITH_MD5"
   394  	cipherSuiteNames[0xFF85] = "OP_PCL_TLS10_AES_128_CBC_SHA512"
   395  
   396  	// https://www.iana.org/assignments/comp-meth-ids/comp-meth-ids.xhtml#comp-meth-ids-2
   397  	compressionNames = make(map[uint8]string)
   398  	compressionNames[0] = "NULL"
   399  	compressionNames[1] = "DEFLATE"
   400  	compressionNames[64] = "LZS"
   401  
   402  	// https://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
   403  	curveNames = make(map[uint16]string)
   404  	curveNames[1] = "sect163k1"
   405  	curveNames[2] = "sect163r1"
   406  	curveNames[3] = "sect163r2"
   407  	curveNames[4] = "sect193r1"
   408  	curveNames[5] = "sect193r2"
   409  	curveNames[6] = "sect233k1"
   410  	curveNames[7] = "sect233r1"
   411  	curveNames[8] = "sect239k1"
   412  	curveNames[9] = "sect283k1"
   413  	curveNames[10] = "sect283r1"
   414  	curveNames[11] = "sect409k1"
   415  	curveNames[12] = "sect409r1"
   416  	curveNames[13] = "sect571k1"
   417  	curveNames[14] = "sect571r1"
   418  	curveNames[15] = "secp160k1"
   419  	curveNames[16] = "secp160r1"
   420  	curveNames[17] = "secp160r2"
   421  	curveNames[18] = "secp192k1"
   422  	curveNames[19] = "secp192r1"
   423  	curveNames[20] = "secp224k1"
   424  	curveNames[21] = "secp224r1"
   425  	curveNames[22] = "secp256k1"
   426  	curveNames[23] = "secp256r1"
   427  	curveNames[24] = "secp384r1"
   428  	curveNames[25] = "secp521r1"
   429  	curveNames[26] = "brainpoolP256r1"
   430  	curveNames[27] = "brainpoolP384r1"
   431  	curveNames[28] = "brainpoolP512r1"
   432  	curveNames[29] = "ecdh_x25519" // TEMPORARY -- expires 1Mar2018
   433  	curveNames[30] = "ecdh_x448"   // TEMPORARY -- expires 1Mar2018
   434  	curveNames[256] = "ffdhe2048"
   435  	curveNames[257] = "ffdhe3072"
   436  	curveNames[258] = "ffdhe4096"
   437  	curveNames[259] = "ffdhe6144"
   438  	curveNames[260] = "ffdhe8192"
   439  	curveNames[65281] = "arbitrary_explicit_prime_curves"
   440  	curveNames[65282] = "arbitrary_explicit_char2_curves"
   441  
   442  	// https://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-9
   443  	pointFormatNames = make(map[uint8]string)
   444  	pointFormatNames[0] = "uncompressed"
   445  	pointFormatNames[1] = "ansiX962_compressed_prime"
   446  	pointFormatNames[2] = "ansiX962_compressed_char2"
   447  
   448  	// Name-value paires *are* not standardized, only dereferenced for JSON output
   449  	clientAuthTypeNames = make(map[int]string)
   450  	clientAuthTypeNames[0] = "NoClientCert"
   451  	clientAuthTypeNames[1] = "RequestClientCert"
   452  	clientAuthTypeNames[2] = "RequireAnyClientCert"
   453  	clientAuthTypeNames[3] = "VerifyClientCertIfGiven"
   454  	clientAuthTypeNames[4] = "RequireAndVerifyClientCert"
   455  
   456  	// https://tools.ietf.org/html/draft-ietf-tls-tls13-18#section-4.2.3
   457  	signatureSchemeNames = make(map[uint16]string)
   458  	signatureSchemeNames[uint16(PKCS1WithSHA1)] = "rsa_pkcs1_sha1"
   459  	signatureSchemeNames[uint16(PKCS1WithSHA256)] = "rsa_pkcs1_sha256"
   460  	signatureSchemeNames[uint16(PKCS1WithSHA384)] = "rsa_pkcs1_sha384"
   461  	signatureSchemeNames[uint16(PKCS1WithSHA512)] = "rsa_pkcs1_sha512"
   462  	signatureSchemeNames[uint16(PSSWithSHA256)] = "rsa_pss_sha256"
   463  	signatureSchemeNames[uint16(PSSWithSHA384)] = "rsa_pss_sha384"
   464  	signatureSchemeNames[uint16(PSSWithSHA512)] = "rsa_pss_sha512"
   465  	signatureSchemeNames[uint16(ECDSAWithP256AndSHA256)] = "ecdsa_secp256r1_sha256"
   466  	signatureSchemeNames[uint16(ECDSAWithP384AndSHA384)] = "ecdsa_secp384r1_sha384"
   467  	signatureSchemeNames[uint16(ECDSAWithP521AndSHA512)] = "ecdsa_secp521r1_sha512"
   468  	signatureSchemeNames[uint16(EdDSAWithEd25519)] = "ed25519"
   469  	signatureSchemeNames[uint16(EdDSAWithEd448)] = "ed448"
   470  }
   471  
   472  func nameForSignature(s uint8) string {
   473  	if name, ok := signatureNames[s]; ok {
   474  		return name
   475  	}
   476  	return "unknown." + strconv.Itoa(int(s))
   477  }
   478  
   479  func nameForHash(h uint8) string {
   480  	if name, ok := hashNames[h]; ok {
   481  		return name
   482  	}
   483  	num := strconv.Itoa(int(h))
   484  	return "unknown." + num
   485  }
   486  
   487  func signatureToName(n string) uint8 {
   488  	for k, v := range signatureNames {
   489  		if v == n {
   490  			return k
   491  		}
   492  	}
   493  	s, _ := strconv.ParseInt(strings.TrimPrefix(n, "unknown."), 10, 32)
   494  	return uint8(s)
   495  }
   496  
   497  func hashToName(n string) uint8 {
   498  	for k, v := range hashNames {
   499  		if v == n {
   500  			return k
   501  		}
   502  	}
   503  	h, _ := strconv.ParseInt(strings.TrimPrefix(n, "unknown."), 10, 32)
   504  	return uint8(h)
   505  }
   506  
   507  func nameForSuite(cs uint16) string {
   508  	cipher := CipherSuite(cs)
   509  	return cipher.String()
   510  }
   511  
   512  func (cs CipherSuite) Bytes() []byte {
   513  	return []byte{uint8(cs >> 8), uint8(cs)}
   514  }
   515  
   516  func (cs CipherSuite) String() string {
   517  	if name, ok := cipherSuiteNames[int(cs)]; ok {
   518  		return name
   519  	}
   520  	return "unknown"
   521  }
   522  
   523  func (cm CompressionMethod) String() string {
   524  	if name, ok := compressionNames[uint8(cm)]; ok {
   525  		return name
   526  	}
   527  	return "unknown"
   528  }
   529  
   530  func (curveID CurveID) String() string {
   531  	if name, ok := curveNames[uint16(curveID)]; ok {
   532  		return name
   533  	}
   534  	return "unknown"
   535  }
   536  
   537  func (pFormat PointFormat) String() string {
   538  	if name, ok := pointFormatNames[uint8(pFormat)]; ok {
   539  		return name
   540  	}
   541  	return "unknown"
   542  }
   543  
   544  func nameForCompressionMethod(cm uint8) string {
   545  	compressionMethod := CompressionMethod(cm)
   546  	return compressionMethod.String()
   547  }
   548  
   549  func nameForCurve(curveID uint16) string {
   550  	curve := CurveID(curveID)
   551  	return curve.String()
   552  }
   553  
   554  func nameForPointFormat(pFormat uint8) string {
   555  	format := PointFormat(pFormat)
   556  	return format.String()
   557  }
   558  
   559  func (v TLSVersion) Bytes() []byte {
   560  	return []byte{uint8(v >> 8), uint8(v)}
   561  }
   562  
   563  func (v TLSVersion) String() string {
   564  	switch v {
   565  	case 0x0300:
   566  		return "SSLv3"
   567  	case 0x0301:
   568  		return "TLSv1.0"
   569  	case 0x0302:
   570  		return "TLSv1.1"
   571  	case 0x0303:
   572  		return "TLSv1.2"
   573  	default:
   574  		return "unknown"
   575  	}
   576  }
   577  
   578  func nameForSignatureScheme(scheme uint16) string {
   579  	sigScheme := SignatureScheme(scheme)
   580  	return sigScheme.String()
   581  }
   582  
   583  func (sigScheme *SignatureScheme) String() string {
   584  	if name, ok := signatureSchemeNames[uint16(*sigScheme)]; ok {
   585  		return name
   586  	}
   587  	return "unknown"
   588  }
   589  
   590  func (sigScheme *SignatureScheme) Bytes() []byte {
   591  	return []byte{byte(*sigScheme >> 8), byte(*sigScheme)}
   592  }