From 0294a5c0dd753786996e62236b7d8d524201ace4 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Fri, 1 Sep 2017 14:21:53 +0200 Subject: Improved handling of key-material --- src/send.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/send.go') diff --git a/src/send.go b/src/send.go index 7d4014a..c598ad4 100644 --- a/src/send.go +++ b/src/send.go @@ -349,12 +349,19 @@ func (device *Device) RoutineEncryption() { // encrypt content (append to header) binary.LittleEndian.PutUint64(nonce[4:], elem.nonce) - elem.packet = elem.keyPair.send.Seal( - header, - nonce[:], - elem.packet, - nil, - ) + elem.keyPair.send.mutex.RLock() + if elem.keyPair.send.aead == nil { + // very unlikely (the key was deleted during queuing) + elem.Drop() + } else { + elem.packet = elem.keyPair.send.aead.Seal( + header, + nonce[:], + elem.packet, + nil, + ) + } + elem.keyPair.send.mutex.RUnlock() elem.mutex.Unlock() // refresh key if necessary -- cgit v1.2.3