2022-06-14 16:49:16 +02:00
|
|
|
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())
|
|
|
|
|
}
|
2023-04-06 11:38:15 +02:00
|
|
|
|
|
|
|
|
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())
|
|
|
|
|
}
|