package tlstypes import "io" type RecordType uint8 const ( RecordTypeHandshake RecordType = 0x16 RecordTypeApplicationData RecordType = 0x17 RecordTypeChangeCipherSpec RecordType = 0x14 ) type HandshakeType uint8 const ( HandshakeTypeClient HandshakeType = 0x01 HandshakeTypeServer HandshakeType = 0x02 ) type CipherSuiteType uint8 const ( CipherSuiteType_TLS_AES_128_GCM_SHA256 CipherSuiteType = iota //nolint: stylecheck,golint,revive,nosnakecase CipherSuiteType_TLS_AES_256_GCM_SHA384 //nolint: stylecheck,golint,revive,nosnakecase CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256 //nolint: stylecheck,golint,revive,nosnakecase ) func (c CipherSuiteType) Bytes() []byte { switch c { case CipherSuiteType_TLS_AES_128_GCM_SHA256: //nolint: nosnakecase return CipherSuiteType_TLS_AES_128_GCM_SHA256_Bytes //nolint: nosnakecase case CipherSuiteType_TLS_AES_256_GCM_SHA384: //nolint: nosnakecase return CipherSuiteType_TLS_AES_256_GCM_SHA384_Bytes //nolint: nosnakecase case CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256: //nolint: nosnakecase return CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256_Bytes //nolint: nosnakecase } return CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256_Bytes //nolint: nosnakecase } type Version uint8 func (v Version) Bytes() []byte { switch v { case Version13: return Version13Bytes case Version12: return Version12Bytes case Version11: return Version11Bytes case Version10, VersionUnknown: return Version10Bytes } return Version10Bytes } const ( VersionUnknown Version = iota Version10 Version11 Version12 Version13 ) var ( Version10Bytes = []byte{0x03, 0x01} Version11Bytes = []byte{0x03, 0x02} Version12Bytes = []byte{0x03, 0x03} Version13Bytes = []byte{0x03, 0x04} CipherSuiteType_TLS_AES_128_GCM_SHA256_Bytes = []byte{0x13, 0x01} //nolint: stylecheck,golint,revive,nosnakecase CipherSuiteType_TLS_AES_256_GCM_SHA384_Bytes = []byte{0x13, 0x02} //nolint: stylecheck,golint,revive,nosnakecase CipherSuiteType_TLS_CHACHA20_POLY1305_SHA256_Bytes = []byte{0x13, 0x03} //nolint: stylecheck,golint,revive,nosnakecase ) type Byter interface { WriteBytes(io.Writer) Len() int } type RawBytes []byte func (r RawBytes) WriteBytes(writer io.Writer) { writer.Write(r) //nolint: errcheck } func (r RawBytes) Len() int { return len(r) }