From 6d92d5fe210dce757ac270181f58851f02f0f253 Mon Sep 17 00:00:00 2001 From: 9seconds Date: Thu, 25 Mar 2021 17:40:38 +0300 Subject: [PATCH] Fix lint issues --- mtglib/internal/faketls/client_hello.go | 4 ++-- mtglib/internal/faketls/init.go | 2 ++ mtglib/internal/faketls/pools.go | 6 +++--- mtglib/internal/faketls/welcome.go | 24 ++++++++++++++---------- mtglib/proxy.go | 5 +++-- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/mtglib/internal/faketls/client_hello.go b/mtglib/internal/faketls/client_hello.go index 6f31ee6..b32eea0 100644 --- a/mtglib/internal/faketls/client_hello.go +++ b/mtglib/internal/faketls/client_hello.go @@ -44,7 +44,7 @@ func ParseClientHello(secret, handshake []byte) (ClientHello, error) { // mac is calculated for the whole record, not only // for the payload part mac := hmac.New(sha256.New, secret) - rec.Dump(mac) + rec.Dump(mac) // nolint: errcheck computedRandom := mac.Sum(nil) @@ -64,7 +64,7 @@ func ParseClientHello(secret, handshake []byte) (ClientHello, error) { hello.SessionID = make([]byte, handshake[ClientHelloSessionIDOffset]) copy(hello.SessionID, handshake[ClientHelloSessionIDOffset+1:]) - cipherSuiteOffset := ClientHelloSessionIDOffset + 1 + len(hello.SessionID) + 2 + cipherSuiteOffset := ClientHelloSessionIDOffset + len(hello.SessionID) + 3 // nolint: gomnd hello.CipherSuite = binary.BigEndian.Uint16(handshake[cipherSuiteOffset : cipherSuiteOffset+2]) return hello, nil diff --git a/mtglib/internal/faketls/init.go b/mtglib/internal/faketls/init.go index 5166cbf..54d1186 100644 --- a/mtglib/internal/faketls/init.go +++ b/mtglib/internal/faketls/init.go @@ -13,6 +13,8 @@ const ( HandshakeTypeClient = 0x01 HandshakeTypeServer = 0x02 + + ChangeCipherValue = 0x01 ) var ( diff --git a/mtglib/internal/faketls/pools.go b/mtglib/internal/faketls/pools.go index 35a7aea..52288b1 100644 --- a/mtglib/internal/faketls/pools.go +++ b/mtglib/internal/faketls/pools.go @@ -12,10 +12,10 @@ var bytesBufferPool = sync.Pool{ } func acquireBytesBuffer() *bytes.Buffer { - return bytesBufferPool.Get().(*bytes.Buffer) + return bytesBufferPool.Get().(*bytes.Buffer) } func releaseBytesBuffer(b *bytes.Buffer) { - b.Reset() - bytesBufferPool.Put(b) + b.Reset() + bytesBufferPool.Put(b) } diff --git a/mtglib/internal/faketls/welcome.go b/mtglib/internal/faketls/welcome.go index d943900..d0b48d2 100644 --- a/mtglib/internal/faketls/welcome.go +++ b/mtglib/internal/faketls/welcome.go @@ -23,30 +23,30 @@ func SendWelcomePacket(writer io.Writer, secret []byte, clientHello ClientHello) rec.Version = record.Version12 generateServerHello(&rec.Payload, clientHello) - rec.Dump(buf) + rec.Dump(buf) // nolint: errcheck rec.Reset() rec.Type = record.TypeChangeCipherSpec rec.Version = record.Version12 - rec.Payload.WriteByte(0x01) + rec.Payload.WriteByte(ChangeCipherValue) - rec.Dump(buf) + rec.Dump(buf) // nolint: errcheck rec.Reset() rec.Type = record.TypeApplicationData rec.Version = record.Version12 - if _, err := io.CopyN(&rec.Payload, rand.Reader, int64(1024+mrand.Intn(3092))); err != nil { + if _, err := io.CopyN(&rec.Payload, rand.Reader, int64(1024+mrand.Intn(3092))); err != nil { // nolint: gomnd panic(err) } - rec.Dump(buf) + rec.Dump(buf) // nolint: errcheck packet := buf.Bytes() mac := hmac.New(sha256.New, secret) - mac.Write(clientHello.Random[:]) - mac.Write(packet) + mac.Write(clientHello.Random[:]) // nolint: errcheck + mac.Write(packet) // nolint: errcheck copy(packet[WelcomePacketRandomOffset:], mac.Sum(nil)) @@ -75,7 +75,11 @@ func generateServerHello(writer io.Writer, clientHello ClientHello) { bodyBuf.Write(serverHelloSuffix) scalar := [32]byte{} - rand.Read(scalar[:]) + + if _, err := rand.Read(scalar[:]); err != nil { + panic(err) + } + curve, _ := curve25519.X25519(scalar[:], curve25519.Basepoint) bodyBuf.Write(curve) @@ -83,6 +87,6 @@ func generateServerHello(writer io.Writer, clientHello ClientHello) { binary.BigEndian.PutUint32(header[:], uint32(bodyBuf.Len())) header[0] = HandshakeTypeServer - writer.Write(header[:]) - bodyBuf.WriteTo(writer) + writer.Write(header[:]) // nolint: errcheck + bodyBuf.WriteTo(writer) // nolint: errcheck } diff --git a/mtglib/proxy.go b/mtglib/proxy.go index b9032c0..7bf9f7c 100644 --- a/mtglib/proxy.go +++ b/mtglib/proxy.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "io" "net" "sync" "time" @@ -121,7 +122,7 @@ func (p *Proxy) Shutdown() { p.workerPool.Release() } -func (p *Proxy) doFakeTLSHandshake(ctx *streamContext, conn net.Conn) error { +func (p *Proxy) doFakeTLSHandshake(ctx *streamContext, conn io.ReadWriter) error { rec := record.AcquireRecord() defer record.ReleaseRecord(rec) @@ -202,7 +203,7 @@ func (p *Proxy) doTelegramCall(ctx *streamContext) error { return nil } -func NewProxy(opts ProxyOpts) (*Proxy, error) { // nolint: cyclop +func NewProxy(opts ProxyOpts) (*Proxy, error) { // nolint: cyclop, funlen switch { case opts.Network == nil: return nil, ErrNetworkIsNotDefined