drop Handshake keys when receiving HANDSHAKE_DONE (as a client)

This commit is contained in:
Marten Seemann
2019-11-22 11:06:34 +08:00
parent f7fd5d2848
commit 12922bdec9
3 changed files with 28 additions and 11 deletions

View File

@@ -221,13 +221,6 @@ func (h *cryptoSetup) ChangeConnectionID(id protocol.ConnectionID) {
func (h *cryptoSetup) SetLargest1RTTAcked(pn protocol.PacketNumber) {
h.aead.SetLargestAcked(pn)
// drop handshake keys
if h.handshakeOpener != nil {
h.handshakeOpener = nil
h.handshakeSealer = nil
h.logger.Debugf("Dropping Handshake keys.")
h.runner.DropKeys(protocol.EncryptionHandshake)
}
}
func (h *cryptoSetup) RunHandshake() {
@@ -564,12 +557,18 @@ func (h *cryptoSetup) dropInitialKeys() {
}
func (h *cryptoSetup) DropHandshakeKeys() {
var dropped bool
h.mutex.Lock()
h.handshakeOpener = nil
h.handshakeSealer = nil
if h.handshakeOpener != nil {
h.handshakeOpener = nil
h.handshakeSealer = nil
dropped = true
}
h.mutex.Unlock()
h.runner.DropKeys(protocol.EncryptionHandshake)
h.logger.Debugf("Dropping Handshake keys.")
if dropped {
h.runner.DropKeys(protocol.EncryptionHandshake)
h.logger.Debugf("Dropping Handshake keys.")
}
}
func (h *cryptoSetup) GetInitialSealer() (LongHeaderSealer, error) {