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  )