passforios-gopenpgp/crypto/keyring_message_test.go
2023-04-06 12:28:12 +02:00

80 lines
2.3 KiB
Go

package crypto
import (
"io/ioutil"
"testing"
"github.com/stretchr/testify/assert"
)
func TestAEADKeyRingDecryption(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)
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()
decrypted, err := kR.Decrypt(pgpMessage, nil, 0)
if err != nil {
t.Fatal("Expected no error when decrypting, got:", err)
}
assert.Exactly(t, "hello world\n", decrypted.GetString())
}
func TestTextMessageEncryptionWithSignatureAndContext(t *testing.T) {
var message = NewPlainMessageFromString("plain text")
var testContext = "test-context"
ciphertext, err := keyRingTestPublic.EncryptWithContext(message, keyRingTestPrivate, NewSigningContext(testContext, true))
if err != nil {
t.Fatal("Expected no error when encrypting, got:", err)
}
decrypted, err := keyRingTestPrivate.DecryptWithContext(
ciphertext,
keyRingTestPublic,
GetUnixTime(),
NewVerificationContext(testContext, true, 0),
)
if err != nil {
t.Fatal("Expected no error when decrypting, got:", err)
}
assert.Exactly(t, message.GetString(), decrypted.GetString())
}
func TestTextMessageEncryptionWithSignatureAndContextAndCompression(t *testing.T) {
var message = NewPlainMessageFromString("plain text")
var testContext = "test-context"
ciphertext, err := keyRingTestPublic.EncryptWithContextAndCompression(message, keyRingTestPrivate, NewSigningContext(testContext, true))
if err != nil {
t.Fatal("Expected no error when encrypting, got:", err)
}
decrypted, err := keyRingTestPrivate.DecryptWithContext(
ciphertext,
keyRingTestPublic,
GetUnixTime(),
NewVerificationContext(testContext, true, 0),
)
if err != nil {
t.Fatal("Expected no error when decrypting, got:", err)
}
assert.Exactly(t, message.GetString(), decrypted.GetString())
}