Add unit tests for decryption of aead packets

This commit is contained in:
M. Thiercelin 2022-06-14 16:49:16 +02:00
parent 4cea9a0940
commit 373e1ad526
No known key found for this signature in database
GPG key ID: 29581E7E24EBEC0A
4 changed files with 96 additions and 0 deletions

View file

@ -4,6 +4,7 @@ import (
"encoding/base64"
"encoding/hex"
"errors"
"io/ioutil"
"testing"
"github.com/ProtonMail/gopenpgp/v2/constants"
@ -344,3 +345,42 @@ func TestAsymmetricKeyPacketDecryptionFailure(t *testing.T) {
_, err = ukr.DecryptSessionKey(keyPacket)
assert.Error(t, err, "gopenpgp: unable to decrypt session key")
}
func TestAEADDataPacketDecryption(t *testing.T) {
pgpMessageData, err := ioutil.ReadFile("testdata/gpg2.3-aead-pgp-message.pgp")
if err != nil {
t.Fatal("Expected no error when reading message data, got:", err)
}
pgpMessage := NewPGPMessage(pgpMessageData)
split, err := pgpMessage.SplitMessage()
if err != nil {
t.Fatal("Expected no error when splitting, got:", err)
}
aeadKey, err := NewKeyFromArmored(readTestFile("gpg2.3-aead-test-key.asc", false))
if err != nil {
t.Fatal("Expected no error when unarmoring key, got:", err)
}
aeadKeyUnlocked, err := aeadKey.Unlock([]byte("test"))
if err != nil {
t.Fatal("Expected no error when unlocking, got:", err)
}
kR, err := NewKeyRing(aeadKeyUnlocked)
if err != nil {
t.Fatal("Expected no error when creating the keyring, got:", err)
}
defer kR.ClearPrivateParams()
sessionKey, err := kR.DecryptSessionKey(split.GetBinaryKeyPacket())
if err != nil {
t.Fatal("Expected no error when decrypting session key, got:", err)
}
decrypted, err := sessionKey.Decrypt(split.GetBinaryDataPacket())
if err != nil {
t.Fatal("Expected no error when decrypting, got:", err)
}
assert.Exactly(t, "hello world\n", decrypted.GetString())
}