remove entropy from packet packer

This commit is contained in:
Lucas Clemente
2016-08-30 21:46:40 +02:00
parent a4d4506f31
commit 6bb89d4902
4 changed files with 12 additions and 129 deletions

View File

@@ -8,14 +8,12 @@ import (
"github.com/lucas-clemente/quic-go/frames"
"github.com/lucas-clemente/quic-go/handshake"
"github.com/lucas-clemente/quic-go/protocol"
"github.com/lucas-clemente/quic-go/utils"
)
type packedPacket struct {
number protocol.PacketNumber
entropyBit bool
raw []byte
frames []frames.Frame
number protocol.PacketNumber
raw []byte
frames []frames.Frame
}
type packetPacker struct {
@@ -23,7 +21,6 @@ type packetPacker struct {
version protocol.VersionNumber
cryptoSetup *handshake.CryptoSetup
lastPacketNumber protocol.PacketNumber // TODO: remove when dropping support for QUIC 33
packetNumberGenerator *packetNumberGenerator
connectionParametersManager *handshake.ConnectionParametersManager
@@ -61,12 +58,7 @@ func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, con
p.controlFrames = append(p.controlFrames, controlFrames...)
}
var currentPacketNumber protocol.PacketNumber
if p.version <= protocol.Version33 {
currentPacketNumber = p.lastPacketNumber + 1
} else {
currentPacketNumber = p.packetNumberGenerator.Peek()
}
currentPacketNumber := p.packetNumberGenerator.Peek()
// cryptoSetup needs to be locked here, so that the AEADs are not changed between
// calling DiversificationNonce() and Seal().
@@ -132,20 +124,6 @@ func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, con
payloadStartIndex := buffer.Len()
// set entropy bit in Private Header, for QUIC version < 34
var entropyBit bool
if p.version < protocol.Version34 {
entropyBit, err = utils.RandomBit()
if err != nil {
return nil, err
}
if entropyBit {
buffer.WriteByte(1)
} else {
buffer.WriteByte(0)
}
}
for _, frame := range payloadFrames {
err := frame.Write(buffer, p.version)
if err != nil {
@@ -161,20 +139,15 @@ func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, con
p.cryptoSetup.Seal(raw[payloadStartIndex:payloadStartIndex], raw[payloadStartIndex:], currentPacketNumber, raw[:payloadStartIndex])
raw = raw[0 : buffer.Len()+12]
if p.version <= protocol.Version33 {
p.lastPacketNumber++
} else {
num := p.packetNumberGenerator.Pop()
if num != currentPacketNumber {
return nil, errors.New("PacketPacker BUG: Peeked and Popped packet numbers do not match.")
}
num := p.packetNumberGenerator.Pop()
if num != currentPacketNumber {
return nil, errors.New("PacketPacker BUG: Peeked and Popped packet numbers do not match.")
}
return &packedPacket{
number: currentPacketNumber,
entropyBit: entropyBit,
raw: raw,
frames: payloadFrames,
number: currentPacketNumber,
raw: raw,
frames: payloadFrames,
}, nil
}