fix packet unpacker in-place encryption

This commit is contained in:
Lucas Clemente
2016-08-04 23:34:59 +02:00
parent 3fa0c12954
commit f5315af4db

View File

@@ -22,12 +22,14 @@ type packetUnpacker struct {
} }
func (u *packetUnpacker) Unpack(publicHeaderBinary []byte, hdr *PublicHeader, data []byte) (*unpackedPacket, error) { func (u *packetUnpacker) Unpack(publicHeaderBinary []byte, hdr *PublicHeader, data []byte) (*unpackedPacket, error) {
data, err := u.aead.Open(data[:0], data, hdr.PacketNumber, publicHeaderBinary) buf := getPacketBuffer()
defer putPacketBuffer(buf)
decrypted, err := u.aead.Open(buf, data, hdr.PacketNumber, publicHeaderBinary)
if err != nil { if err != nil {
// Wrap err in quicError so that public reset is sent by session // Wrap err in quicError so that public reset is sent by session
return nil, qerr.Error(qerr.DecryptionFailure, err.Error()) return nil, qerr.Error(qerr.DecryptionFailure, err.Error())
} }
r := bytes.NewReader(data) r := bytes.NewReader(decrypted)
// read private flag byte, for QUIC Version < 34 // read private flag byte, for QUIC Version < 34
var entropyBit bool var entropyBit bool