padding.go 637 B

12345678910111213141516171819202122232425262728293031
  1. package protocol
  2. import (
  3. "math/rand"
  4. )
  5. const (
  6. paddingChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  7. )
  8. // padding specifies a half-open range [Min, Max).
  9. type padding struct {
  10. Min int
  11. Max int
  12. }
  13. func (p padding) String() string {
  14. n := p.Min + rand.Intn(p.Max-p.Min)
  15. bs := make([]byte, n)
  16. for i := range bs {
  17. bs[i] = paddingChars[rand.Intn(len(paddingChars))]
  18. }
  19. return string(bs)
  20. }
  21. var (
  22. authRequestPadding = padding{Min: 256, Max: 2048}
  23. authResponsePadding = padding{Min: 256, Max: 2048}
  24. tcpRequestPadding = padding{Min: 64, Max: 512}
  25. tcpResponsePadding = padding{Min: 128, Max: 1024}
  26. )