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:
parent
22acd6e231
commit
4cea9a0940
1 changed files with 6 additions and 4 deletions
|
|
@ -327,17 +327,19 @@ func decryptStreamWithSessionKey(sk *SessionKey, messageReader io.Reader, verify
|
||||||
|
|
||||||
// Decrypt data packet
|
// Decrypt data packet
|
||||||
switch p := p.(type) {
|
switch p := p.(type) {
|
||||||
case *packet.SymmetricallyEncrypted:
|
case *packet.SymmetricallyEncrypted, *packet.AEADEncrypted:
|
||||||
dc, err := sk.GetCipherFunc()
|
dc, err := sk.GetCipherFunc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "gopenpgp: unable to decrypt with session key")
|
return nil, errors.Wrap(err, "gopenpgp: unable to decrypt with session key")
|
||||||
}
|
}
|
||||||
|
encryptedDataPacket, isDataPacket := p.(packet.EncryptedDataPacket)
|
||||||
decrypted, err = p.Decrypt(dc, sk.Key)
|
if !isDataPacket {
|
||||||
|
return nil, errors.Wrap(err, "gopenpgp: unknown data packet")
|
||||||
|
}
|
||||||
|
decrypted, err = encryptedDataPacket.Decrypt(dc, sk.Key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "gopenpgp: unable to decrypt symmetric packet")
|
return nil, errors.Wrap(err, "gopenpgp: unable to decrypt symmetric packet")
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, errors.New("gopenpgp: invalid packet type")
|
return nil, errors.New("gopenpgp: invalid packet type")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue