From af371097e0ab4fea9c377c8bff61a138b4fed5f5 Mon Sep 17 00:00:00 2001 From: Ilya Chesnokov Date: Wed, 26 Aug 2020 19:05:06 +0300 Subject: [PATCH] break for cycle in getEncryptionKeyIDs (#74) break cycle on literal/aead/encrypted/compressed packets --- crypto/message.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/crypto/message.go b/crypto/message.go index d3921b9..f738d54 100644 --- a/crypto/message.go +++ b/crypto/message.go @@ -228,14 +228,22 @@ func (msg *PGPMessage) getEncryptionKeyIDs() ([]uint64, bool) { packets := packet.NewReader(bytes.NewReader(msg.Data)) var err error var ids []uint64 + var encryptedKey *packet.EncryptedKey +Loop: for { var p packet.Packet if p, err = packets.Next(); err == io.EOF { break } - enc, ok := p.(*packet.EncryptedKey) - if ok { - ids = append(ids, enc.KeyId) + switch p := p.(type) { + case *packet.EncryptedKey: + encryptedKey = p + ids = append(ids, encryptedKey.KeyId) + case *packet.SymmetricallyEncrypted, + *packet.AEADEncrypted, + *packet.Compressed, + *packet.LiteralData: + break Loop } } if len(ids) > 0 {