VersionSSL30 = 0x0300
)
+// VersionName returns the name for the provided TLS version number
+// (e.g. "TLS 1.3"), or a fallback representation of the value if the
+// version is not implemented by this package.
+func VersionName(version uint16) string {
+ switch version {
+ case VersionSSL30:
+ return "SSLv3"
+ case VersionTLS10:
+ return "TLS 1.0"
+ case VersionTLS11:
+ return "TLS 1.1"
+ case VersionTLS12:
+ return "TLS 1.2"
+ case VersionTLS13:
+ return "TLS 1.3"
+ default:
+ return fmt.Sprintf("0x%04X", version)
+ }
+}
+
const (
maxPlaintext = 16384 // maximum plaintext payload length
maxCiphertext = 16384 + 2048 // maximum ciphertext payload length
}
}
+func TestVersionName(t *testing.T) {
+ if got, exp := VersionName(VersionTLS13), "TLS 1.3"; got != exp {
+ t.Errorf("unexpected VersionName: got %q, expected %q", got, exp)
+ }
+ if got, exp := VersionName(0x12a), "0x012A"; got != exp {
+ t.Errorf("unexpected fallback VersionName: got %q, expected %q", got, exp)
+ }
+}
+
// http2isBadCipher is copied from net/http.
// TODO: if it ends up exposed somewhere, use that instead.
func http2isBadCipher(cipher uint16) bool {