Description: Add argon2 test vector for 32-bit platforms
 32-bit platforms fail to allocate 2 GiB of RAM for argon2, thus, we
 need a seperate test vector.
Author: Lukas Burkhalter <lukas.burkhalter@proton.ch>
Origin: upstream, https://github.com/ProtonMail/go-crypto/pull/245
Bug: https://github.com/ProtonMail/go-crypto/issues/244
Applied-Upstream: URL, https://github.com/ProtonMail/go-crypto/commit/d7733dc924c82d4ce2c7bdc1ae59ae83689f360e
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/openpgp/read_test.go
+++ b/openpgp/read_test.go
@@ -11,6 +11,7 @@
 	"encoding/hex"
 	"io"
 	"io/ioutil"
+	"math/bits"
 	"os"
 	"strings"
 	"testing"
@@ -634,10 +635,13 @@
 		t.Errorf("inline message is wrong: %s", contents)
 	}
 }
-
 func TestSymmetricDecryptionArgon2(t *testing.T) {
+	if bits.UintSize == 32 {
+		// 32-bit platforms cannot allocate 2GiB of RAM
+		// required by the test vector.
+		t.Skip()
+	}
 	// Appendix IETF OpenPGP crypto refresh draft v08 A.8.1
-	passphrase := []byte("password")
 	file, err := os.Open("test_data/argon2-sym-message.asc")
 	if err != nil {
 		t.Fatal(err)
@@ -646,6 +650,22 @@
 	if err != nil {
 		t.Fatal(err)
 	}
+	testSymmetricDecryptionArgon2Run(t, armoredEncryptedMessage)
+}
+
+func TestSymmetricDecryptionArgon2LessMemory(t *testing.T) {
+	armoredEncryptedMessage := []byte(`-----BEGIN PGP MESSAGE-----
+
+w0gGJgcCFATa3KMW/4/9RsPME+un+MBqAwQQljCpv3dPfmVTFJAcqn+YRcIFrbY4
+iiVOkxM5uAKScyYn/T2su2j2fu+uPl/HpgLSWQIHAgx/1caHYWvwl7tyjJ/tSYwK
+m8OMKQHidSWi7UM88mN17ltnLCV/Wa3bLDIyAgJr9XKubHXeUK6/FqmtPxepd4y/
+SXkqZq0XEafMIbynK2gH6JHjctFX
+-----END PGP MESSAGE-----`)
+	testSymmetricDecryptionArgon2Run(t, armoredEncryptedMessage)
+}
+
+func testSymmetricDecryptionArgon2Run(t *testing.T, armoredEncryptedMessage []byte) {
+	passphrase := []byte("password")
 	// Unarmor string
 	raw, err := armor.Decode(strings.NewReader(string(armoredEncryptedMessage)))
 	if err != nil {
--- a/openpgp/v2/read_test.go
+++ b/openpgp/v2/read_test.go
@@ -11,6 +11,7 @@
 	"encoding/hex"
 	"io"
 	"io/ioutil"
+	"math/bits"
 	"os"
 	"strings"
 	"testing"
@@ -667,8 +668,12 @@
 }
 
 func TestSymmetricDecryptionArgon2(t *testing.T) {
+	if bits.UintSize == 32 {
+		// 32-bit platforms cannot allocate 2GiB of RAM
+		// required by the test vector.
+		t.Skip()
+	}
 	// Appendix IETF OpenPGP crypto refresh draft v08 A.8.1
-	passphrase := []byte("password")
 	file, err := os.Open("../test_data/argon2-sym-message.asc")
 	if err != nil {
 		t.Fatal(err)
@@ -677,6 +682,22 @@
 	if err != nil {
 		t.Fatal(err)
 	}
+	testSymmetricDecryptionArgon2Run(t, armoredEncryptedMessage)
+}
+
+func TestSymmetricDecryptionArgon2LessMemory(t *testing.T) {
+	armoredEncryptedMessage := []byte(`-----BEGIN PGP MESSAGE-----
+
+w0gGJgcCFATa3KMW/4/9RsPME+un+MBqAwQQljCpv3dPfmVTFJAcqn+YRcIFrbY4
+iiVOkxM5uAKScyYn/T2su2j2fu+uPl/HpgLSWQIHAgx/1caHYWvwl7tyjJ/tSYwK
+m8OMKQHidSWi7UM88mN17ltnLCV/Wa3bLDIyAgJr9XKubHXeUK6/FqmtPxepd4y/
+SXkqZq0XEafMIbynK2gH6JHjctFX
+-----END PGP MESSAGE-----`)
+	testSymmetricDecryptionArgon2Run(t, armoredEncryptedMessage)
+}
+
+func testSymmetricDecryptionArgon2Run(t *testing.T, armoredEncryptedMessage []byte) {
+	passphrase := []byte("password")
 	// Unarmor string
 	raw, err := armor.Decode(strings.NewReader(string(armoredEncryptedMessage)))
 	if err != nil {
