github.com/inazumav/sing-box@v0.0.0-20230926072359-ab51429a14f1/transport/hysteria2/internal/protocol/padding.go (about) 1 package protocol 2 3 import ( 4 "math/rand" 5 ) 6 7 const ( 8 paddingChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 9 ) 10 11 // padding specifies a half-open range [Min, Max). 12 type padding struct { 13 Min int 14 Max int 15 } 16 17 func (p padding) String() string { 18 n := p.Min + rand.Intn(p.Max-p.Min) 19 bs := make([]byte, n) 20 for i := range bs { 21 bs[i] = paddingChars[rand.Intn(len(paddingChars))] 22 } 23 return string(bs) 24 } 25 26 var ( 27 authRequestPadding = padding{Min: 256, Max: 2048} 28 authResponsePadding = padding{Min: 256, Max: 2048} 29 tcpRequestPadding = padding{Min: 64, Max: 512} 30 tcpResponsePadding = padding{Min: 128, Max: 1024} 31 )