@@ -67,6 +67,108 @@ func (c *TlsConn) GetStateString() string {
67
67
return statStr
68
68
}
69
69
70
+ func (c * TlsConn ) GetTLSVersion () string {
71
+ if c .conn != nil {
72
+ stat := c .conn .ConnectionState ()
73
+ return GetVersionName (stat .Version )
74
+ }
75
+ return "none"
76
+ }
77
+
78
+ func GetVersionName (ver uint16 ) string {
79
+ switch ver {
80
+ case tls .VersionTLS10 :
81
+ return "TLSv1"
82
+ case tls .VersionTLS11 :
83
+ return "TLSv1.1"
84
+ case tls .VersionTLS12 :
85
+ return "TLSv1.2"
86
+ case tls .VersionTLS13 :
87
+ return "TLSv1.3"
88
+ default :
89
+ return ""
90
+ }
91
+ }
92
+
93
+ func (c * TlsConn ) GetCipherName () string {
94
+ if c .conn != nil {
95
+ stat := c .conn .ConnectionState ()
96
+ return GetCipherName (stat .CipherSuite )
97
+ }
98
+ return "none"
99
+ }
100
+
101
+ func GetCipherName (cipher uint16 ) string {
102
+ switch cipher {
103
+ case tls .TLS_RSA_WITH_RC4_128_SHA :
104
+ return "RSA-RC4-128-SHA"
105
+ case tls .TLS_RSA_WITH_3DES_EDE_CBC_SHA :
106
+ return "RSA-3DES-EDE-CBC-SHA"
107
+ case tls .TLS_RSA_WITH_AES_128_CBC_SHA :
108
+ return "AES128-SHA"
109
+ case tls .TLS_RSA_WITH_AES_256_CBC_SHA :
110
+ return "AES256-SHA"
111
+ case tls .TLS_RSA_WITH_AES_128_CBC_SHA256 :
112
+ return "RSA-AES-128-CBC-SHA256"
113
+ case tls .TLS_RSA_WITH_AES_128_GCM_SHA256 :
114
+ return "RSA-AES-128-GCM-SHA256"
115
+ case tls .TLS_RSA_WITH_AES_256_GCM_SHA384 :
116
+ return "RSA-AES-256-GCM-SHA384"
117
+ case tls .TLS_ECDHE_ECDSA_WITH_RC4_128_SHA :
118
+ return "ECDHE_ECDSA_RC4_128_SHA"
119
+ case tls .TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA :
120
+ return "ECDHE_ECDSA_AES128_CBC_SHA"
121
+ case tls .TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA :
122
+ return "ECDHE_ECDSA_AES_256_CBC_SHA"
123
+ case tls .TLS_ECDHE_RSA_WITH_RC4_128_SHA :
124
+ return "ECDHE_RSA_RC4_128_SHA"
125
+ case tls .TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA :
126
+ return "ECDHE_RSA_3DES_EDE_CBC_SHA"
127
+ case tls .TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA :
128
+ return "ECDHE_RSA_AES128_CBC_SHA"
129
+ case tls .TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA :
130
+ return "ECDHE_RSA_AES_256_CBC_SHA"
131
+ case tls .TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 :
132
+ return "ECDHE_ECDSA_AES128_CBC_SHA256"
133
+ case tls .TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 :
134
+ return "ECDHE_RSA_AES128_CBC_SHA256"
135
+ case tls .TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 :
136
+ return "ECDHE_RSA_AES128_GCM_SHA256"
137
+ case tls .TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 :
138
+ return "ECDHE_ECDSA_AES128_GCM_SHA256"
139
+ case tls .TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 :
140
+ return "ECDHE_RSA_AES256_GCM_SHA384"
141
+ case tls .TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 :
142
+ return "ECDHE_ECDSA_AES256_GCM_SHA384"
143
+ case tls .TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 :
144
+ return "ECDHE_RSA_CHACHA20_POLY1305"
145
+ case tls .TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 :
146
+ return "ECDHE_ECDSA_CHACHA20_POLY1305"
147
+ case tls .TLS_AES_128_GCM_SHA256 :
148
+ return "TLS_AES_128_GCM_SHA256"
149
+ case tls .TLS_AES_256_GCM_SHA384 :
150
+ return "TLS_AES_256_GCM_SHA384"
151
+ case tls .TLS_CHACHA20_POLY1305_SHA256 :
152
+ return "TLS_CHACHA20_POLY1305_SHA256"
153
+ case tls .TLS_FALLBACK_SCSV :
154
+ return "TLS_FALLBACK_SCSV"
155
+ default :
156
+ return "unknown"
157
+ }
158
+ }
159
+
160
+ func (c * TlsConn ) DidResume () string {
161
+ if c .conn != nil {
162
+ stat := c .conn .ConnectionState ()
163
+ if stat .DidResume {
164
+ return "Yes"
165
+ } else {
166
+ return "No"
167
+ }
168
+ }
169
+ return "No"
170
+ }
171
+
70
172
func (c * TlsConn ) IsServer () bool {
71
173
return c .isServer
72
174
}
0 commit comments