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.
This commit is contained in:
M. Thiercelin 2022-06-14 16:10:25 +02:00
parent 22acd6e231
commit 4cea9a0940
No known key found for this signature in database
GPG key ID: 29581E7E24EBEC0A

View file

@ -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")
}