mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
rename to common/packetpadding
This commit is contained in:
parent
fbcb9bc863
commit
9e45772177
3 changed files with 5 additions and 5 deletions
49
common/packetpadding/container.go
Normal file
49
common/packetpadding/container.go
Normal file
|
@ -0,0 +1,49 @@
|
|||
package packetpadding
|
||||
|
||||
import "encoding/binary"
|
||||
|
||||
func New() PacketPaddingContainer {
|
||||
return packetPaddingContainer{}
|
||||
}
|
||||
|
||||
type packetPaddingContainer struct {
|
||||
}
|
||||
|
||||
func (c packetPaddingContainer) Pack(data_OWNERSHIP_RELINQUISHED []byte, paddingLength int) []byte {
|
||||
data := append(data_OWNERSHIP_RELINQUISHED, make([]byte, paddingLength)...)
|
||||
dataLength := len(data_OWNERSHIP_RELINQUISHED)
|
||||
data = binary.BigEndian.AppendUint16(data, uint16(dataLength))
|
||||
return data
|
||||
}
|
||||
|
||||
func (c packetPaddingContainer) Pad(paddingLength int) []byte {
|
||||
if assertPaddingLengthIsNotNegative := paddingLength < 0; assertPaddingLengthIsNotNegative {
|
||||
return nil
|
||||
}
|
||||
switch paddingLength {
|
||||
case 0:
|
||||
return []byte{}
|
||||
case 1:
|
||||
return []byte{0}
|
||||
case 2:
|
||||
return []byte{0, 0}
|
||||
default:
|
||||
return append(make([]byte, paddingLength-2), byte(paddingLength>>8), byte(paddingLength))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (c packetPaddingContainer) Unpack(wrappedData_OWNERSHIP_RELINQUISHED []byte) ([]byte, int) {
|
||||
dataLength := len(wrappedData_OWNERSHIP_RELINQUISHED)
|
||||
if dataLength < 2 {
|
||||
return nil, dataLength
|
||||
}
|
||||
|
||||
dataLen := int(binary.BigEndian.Uint16(wrappedData_OWNERSHIP_RELINQUISHED[dataLength-2:]))
|
||||
paddingLength := dataLength - dataLen - 2
|
||||
if paddingLength < 0 {
|
||||
return nil, paddingLength
|
||||
}
|
||||
|
||||
return wrappedData_OWNERSHIP_RELINQUISHED[:dataLen], paddingLength
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue