Skip to content

Commit 392c2e0

Browse files
wusslerM. Thiercelin
authored and
M. Thiercelin
committed
Switch go-crypto to proton branch and add tests for forwarding and symmetric keys
1 parent 5037273 commit 392c2e0

File tree

6 files changed

+109
-3
lines changed

6 files changed

+109
-3
lines changed

crypto/proton_test.go

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package crypto
2+
3+
import (
4+
"encoding/base64"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestForwardeeDecryption(t *testing.T) {
11+
pgp.latestServerTime = 1679044110
12+
defer func() {
13+
pgp.latestServerTime = testTime
14+
}()
15+
16+
forwardeeKey, err := NewKeyFromArmored(readTestFile("key_forwardee", false))
17+
if err != nil {
18+
t.Fatal("Expected no error while unarmoring private keyring, got:", err)
19+
}
20+
21+
forwardeeKeyRing, err := NewKeyRing(forwardeeKey)
22+
if err != nil {
23+
t.Fatal("Expected no error while building private keyring, got:", err)
24+
}
25+
26+
pgpMessage, err := NewPGPMessageFromArmored(readTestFile("message_forwardee", false))
27+
if err != nil {
28+
t.Fatal("Expected no error while reading ciphertext, got:", err)
29+
}
30+
31+
plainMessage, err := forwardeeKeyRing.Decrypt(pgpMessage, nil, 0)
32+
if err != nil {
33+
t.Fatal("Expected no error while decrypting/verifying, got:", err)
34+
}
35+
36+
assert.Exactly(t, "Message for Bob", plainMessage.GetString())
37+
}
38+
39+
func TestSymmetricKeys(t *testing.T) {
40+
pgp.latestServerTime = 1679044110
41+
defer func() {
42+
pgp.latestServerTime = testTime
43+
}()
44+
45+
symmetricKey, err := NewKeyFromArmored(readTestFile("key_symmetric", false))
46+
if err != nil {
47+
t.Fatal("Expected no error while unarmoring private keyring, got:", err)
48+
}
49+
50+
symmetricKeyRing, err := NewKeyRing(symmetricKey)
51+
if err != nil {
52+
t.Fatal("Expected no error while building private keyring, got:", err)
53+
}
54+
55+
binData, _ := base64.StdEncoding.DecodeString("ExXmnSiQ2QCey20YLH6qlLhkY3xnIBC1AwlIXwK/HvY=")
56+
var message = NewPlainMessage(binData)
57+
58+
ciphertext, err := symmetricKeyRing.Encrypt(message, nil)
59+
if err != nil {
60+
t.Fatal("Expected no error when encrypting, got:", err)
61+
}
62+
63+
decrypted, err := symmetricKeyRing.Decrypt(ciphertext, nil, 0)
64+
if err != nil {
65+
t.Fatal("Expected no error when decrypting, got:", err)
66+
}
67+
assert.Exactly(t, message.GetBinary(), decrypted.GetBinary())
68+
}

crypto/testdata/key_forwardee

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN PGP PRIVATE KEY BLOCK-----
2+
3+
xVgEZAdtGBYJKwYBBAHaRw8BAQdAcNgHyRGEaqGmzEqEwCobfUkyrJnY8faBvsf9
4+
R2c5ZzYAAP9bFL4nPBdo04ei0C2IAh5RXOpmuejGC3GAIn/UmL5cYQ+XzRtjaGFy
5+
bGVzIDxjaGFybGVzQHByb3Rvbi5tZT7CigQTFggAPAUCZAdtGAmQFXJtmBzDhdcW
6+
IQRl2gNflypl1XjRUV8Vcm2YHMOF1wIbAwIeAQIZAQILBwIVCAIWAAIiAQAAJKYA
7+
/2qY16Ozyo5erNz51UrKViEoWbEpwY3XaFVNzrw+b54YAQC7zXkf/t5ieylvjmA/
8+
LJz3/qgH5GxZRYAH9NTpWyW1AsdxBGQHbRgSCisGAQQBl1UBBQEBB0CxmxoJsHTW
9+
TiETWh47ot+kwNA1hCk1IYB9WwKxkXYyIBf/CgmKXzV1ODP/mRmtiBYVV+VQk5MF
10+
EAAA/1NW8D8nMc2ky140sPhQrwkeR7rVLKP2fe5n4BEtAnVQEB3CeAQYFggAKgUC
11+
ZAdtGAmQFXJtmBzDhdcWIQRl2gNflypl1XjRUV8Vcm2YHMOF1wIbUAAAl/8A/iIS
12+
zWBsBR8VnoOVfEE+VQk6YAi7cTSjcMjfsIez9FYtAQDKo9aCMhUohYyqvhZjn8aS
13+
3t9mIZPc+zRJtCHzQYmhDg==
14+
=lESj
15+
-----END PGP PRIVATE KEY BLOCK-----

crypto/testdata/key_symmetric

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN PGP PRIVATE KEY BLOCK-----
2+
3+
xVgEYs/4KxYJKwYBBAHaRw8BAQdA7tIsntXluwloh/H62PJMqasjP00M86fv
4+
/Pof9A968q8AAQDYcgkPKUdWAxsDjDHJfouPS4q5Me3ks+umlo5RJdwLZw4k
5+
zQ1TeW1tZXRyaWMgS2V5wowEEBYKAB0FAmLP+CsECwkHCAMVCAoEFgACAQIZ
6+
AQIbAwIeAQAhCRDkNhFDvaU8vxYhBDJNoyEFquVOCf99d+Q2EUO9pTy/5XQA
7+
/1F2YPouv0ydBDJU3EOS/4bmPt7yqvzciWzeKVEOkzYuAP9OsP7q/5ccqOPX
8+
mmRUKwd82/cNjdzdnWZ8Tq89XMwMAMdqBGLP+CtkCfFyZxOMF0BWLwAE8pLy
9+
RVj2n2K7k6VvrhyuTqDkFDUFALiSLrEfnmTKlsPYS3/YzsODF354ccR63q73
10+
3lmCrvFRyaf6AHvVrBYPbJR+VhuTjZTwZKvPPKv0zVdSqi5JDEQiocJ4BBgW
11+
CAAJBQJiz/grAhsMACEJEOQ2EUO9pTy/FiEEMk2jIQWq5U4J/3135DYRQ72l
12+
PL+fEQEA7RaRbfa+AtiRN7a4GuqVEDZi3qtQZ2/Qcb27/LkAD0sA/3r9drYv
13+
jyu46h1fdHHyo0HS2MiShZDZ8u60JnDltloD
14+
=8TxH
15+
-----END PGP PRIVATE KEY BLOCK-----

crypto/testdata/message_forwardee

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-----BEGIN PGP MESSAGE-----
2+
3+
wV4DB27Wn97eACkSAQdA62TlMU2QoGmf5iBLnIm4dlFRkLIg+6MbaatghwxK+Ccw
4+
yGZuVVMAK/ypFfebDf4D/rlEw3cysv213m8aoK8nAUO8xQX3XQq3Sg+EGm0BNV8E
5+
0kABEPyCWARoo5klT1rHPEhelnz8+RQXiOIX3G685XCWdCmaV+tzW082D0xGXSlC
6+
7lM8r1DumNnO8srssko2qIja
7+
=pVRa
8+
-----END PGP MESSAGE-----

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/ProtonMail/gopenpgp/v2
33
go 1.15
44

55
require (
6-
github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310
6+
github.com/ProtonMail/go-crypto v0.0.0-20230322105811-d73448b7e800
77
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f
88
github.com/davecgh/go-spew v1.1.1 // indirect
99
github.com/pkg/errors v0.9.1

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310 h1:dGAdTcqheKrQ/TW76sAcmO2IorwXplUw2inPkOzykbw=
2-
github.com/ProtonMail/go-crypto v0.0.0-20230321155629-9a39f2531310/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
1+
github.com/ProtonMail/go-crypto v0.0.0-20230322105811-d73448b7e800 h1:o8/VQLSiuRkkSAfVOpFCG1GnTsWxFIOPLvJ2O7hJcFg=
2+
github.com/ProtonMail/go-crypto v0.0.0-20230322105811-d73448b7e800/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
33
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k=
44
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw=
55
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=

0 commit comments

Comments
 (0)