From 4cea9a0940a81a9c528ebf1fbb99cd8846f79114 Mon Sep 17 00:00:00 2001 From: "M. Thiercelin" Date: Tue, 14 Jun 2022 16:10:25 +0200 Subject: [PATCH] Decrypt AEAD encrypted data packets with a session key Adds the support to decrypt AEAD encrypted data packets when decrypting the data packet with a session key directly. --- crypto/sessionkey.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/crypto/sessionkey.go b/crypto/sessionkey.go index 481e505..9750544 100644 --- a/crypto/sessionkey.go +++ b/crypto/sessionkey.go @@ -327,17 +327,19 @@ func decryptStreamWithSessionKey(sk *SessionKey, messageReader io.Reader, verify // Decrypt data packet switch p := p.(type) { - case *packet.SymmetricallyEncrypted: + case *packet.SymmetricallyEncrypted, *packet.AEADEncrypted: dc, err := sk.GetCipherFunc() if err != nil { return nil, errors.Wrap(err, "gopenpgp: unable to decrypt with session key") } - - decrypted, err = p.Decrypt(dc, sk.Key) + encryptedDataPacket, isDataPacket := p.(packet.EncryptedDataPacket) + if !isDataPacket { + return nil, errors.Wrap(err, "gopenpgp: unknown data packet") + } + decrypted, err = encryptedDataPacket.Decrypt(dc, sk.Key) if err != nil { return nil, errors.Wrap(err, "gopenpgp: unable to decrypt symmetric packet") } - default: return nil, errors.New("gopenpgp: invalid packet type") }