Fix all lint errors

This commit is contained in:
9seconds
2018-05-31 09:54:20 +03:00
parent 42e5be36bf
commit 4ad913add2
12 changed files with 101 additions and 47 deletions
+15 -4
View File
@@ -8,35 +8,43 @@ import (
"github.com/juju/errors"
)
// Obfuscated2 contains AES CTR encryption and decryption streams
// for telegram connection.
type Obfuscated2 struct {
decryptor cipher.Stream
encryptor cipher.Stream
}
// Encrypt encrypts given data.
func (o *Obfuscated2) Encrypt(data []byte) []byte {
buf := make([]byte, len(data))
o.encryptor.XORKeyStream(buf, data)
return buf
}
// Decrypt decrypts given data.
func (o *Obfuscated2) Decrypt(data []byte) []byte {
buf := make([]byte, len(data))
o.decryptor.XORKeyStream(buf, data)
return buf
}
// ParseObfuscated2ClientFrame parses client frame. Please check this link for
// details: http://telegra.ph/telegram-blocks-wtf-05-26
//
// Beware, link above is in russian.
func ParseObfuscated2ClientFrame(secret, data []byte) (*Obfuscated2, int16, error) {
frame := Frame(data)
decHasher := sha256.New()
decHasher.Write(frame.Key())
decHasher.Write(secret)
decHasher.Write(frame.Key()) // nolint: errcheck
decHasher.Write(secret) // nolint: errcheck
decryptor := makeStreamCipher(decHasher.Sum(nil), frame.IV())
invertedFrame := frame.Invert()
encHasher := sha256.New()
encHasher.Write(invertedFrame.Key())
encHasher.Write(secret)
encHasher.Write(invertedFrame.Key()) // nolint: errcheck
encHasher.Write(secret) // nolint: errcheck
encryptor := makeStreamCipher(encHasher.Sum(nil), invertedFrame.IV())
decryptedFrame := make(Frame, FrameLen)
@@ -53,6 +61,9 @@ func ParseObfuscated2ClientFrame(secret, data []byte) (*Obfuscated2, int16, erro
return obfs, decryptedFrame.DC(), nil
}
// MakeTelegramObfuscated2Frame creates new handshake frame to send to
// Telegram.
// https://blog.susanka.eu/how-telegram-obfuscates-its-mtproto-traffic/
func MakeTelegramObfuscated2Frame() (*Obfuscated2, Frame) {
frame := generateFrame()