Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

handshake_frame_internal_test.go 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package obfuscated2
  2. import (
  3. "crypto/rand"
  4. "encoding/base64"
  5. "strconv"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/suite"
  9. )
  10. type HandshakeFrameTestSuite struct {
  11. suite.Suite
  12. }
  13. func (suite *HandshakeFrameTestSuite) Decode(value string) []byte {
  14. v, err := base64.RawStdEncoding.DecodeString(value)
  15. suite.NoError(err)
  16. return v
  17. }
  18. func (suite *HandshakeFrameTestSuite) Encode(value []byte) string {
  19. return base64.RawStdEncoding.EncodeToString(value)
  20. }
  21. func (suite *HandshakeFrameTestSuite) TestOk() {
  22. hf := handshakeFrame{}
  23. testFrame := suite.Decode(
  24. "L9TmCzzxl9bPKODBpZeVM/qqNUxQ/axxBup1S2ymbIfUd6f7YSyzzM9EmTFv2/XzGqJGEHuj2zofmUGBLghu5g")
  25. copy(hf.data[:], testFrame)
  26. suite.Equal("zyjgwaWXlTP6qjVMUP2scQbqdUtspmyH1Hen+2Ess8w", suite.Encode(hf.key()))
  27. suite.Equal("z0SZMW/b9fMaokYQe6PbOg", suite.Encode(hf.iv()))
  28. suite.Equal("H5lBgQ", suite.Encode(hf.connectionType()))
  29. suite.EqualValues(2094, hf.dc())
  30. inverted := hf.invert()
  31. suite.Equal("OtujexBGohrz9dtvMZlEz8yzLGH7p3fUh2ymbEt16gY", suite.Encode(inverted.key()))
  32. suite.Equal("caz9UEw1qvozlZelweAozw", suite.Encode(inverted.iv()))
  33. suite.Equal("H5lBgQ", suite.Encode(inverted.connectionType()))
  34. suite.EqualValues(2094, inverted.dc())
  35. }
  36. func (suite *HandshakeFrameTestSuite) TestDC() {
  37. testData := map[int16]int{
  38. 1: 1,
  39. -1: 1,
  40. 0: DefaultDC,
  41. }
  42. for k, v := range testData {
  43. incoming := k
  44. expected := v
  45. suite.T().Run(strconv.Itoa(int(incoming)), func(t *testing.T) {
  46. frame := handshakeFrame{}
  47. rand.Read(frame.data[:]) //nolint: errcheck
  48. frame.data[handshakeFrameOffsetDC] = byte(incoming)
  49. frame.data[handshakeFrameOffsetDC+1] = byte(incoming >> 8)
  50. assert.Equal(t, expected, frame.dc())
  51. })
  52. }
  53. }
  54. func TestHandshakeFrame(t *testing.T) {
  55. t.Parallel()
  56. suite.Run(t, &HandshakeFrameTestSuite{})
  57. }