diff options
Diffstat (limited to 'internal/stupidgcm')
| -rw-r--r-- | internal/stupidgcm/common_test.go | 20 | ||||
| -rw-r--r-- | internal/stupidgcm/stupidchacha_test.go | 43 | ||||
| -rw-r--r-- | internal/stupidgcm/stupidgcm_test.go | 65 | 
3 files changed, 24 insertions, 104 deletions
| diff --git a/internal/stupidgcm/common_test.go b/internal/stupidgcm/common_test.go index 28f3308..27ca7cc 100644 --- a/internal/stupidgcm/common_test.go +++ b/internal/stupidgcm/common_test.go @@ -3,10 +3,20 @@ package stupidgcm  import (  	"bytes"  	"crypto/cipher" +	"crypto/rand"  	"encoding/hex" +	"log"  	"testing"  ) +func testCiphers(t *testing.T, c1 cipher.AEAD, c2 cipher.AEAD) { +	t.Run("testEncryptDecrypt", func(t *testing.T) { testEncryptDecrypt(t, c1, c2) }) +	t.Run("testInplaceSeal", func(t *testing.T) { testInplaceSeal(t, c1, c2) }) +	t.Run("testInplaceOpen", func(t *testing.T) { testInplaceOpen(t, c1, c2) }) +	t.Run("testCorruption_c1", func(t *testing.T) { testCorruption(t, c1) }) +	t.Run("testCorruption_c2", func(t *testing.T) { testCorruption(t, c2) }) +} +  // testEncryptDecrypt encrypts and decrypts using both stupidgcm and Go's built-in  // GCM implementation and verifies that the results are identical.  func testEncryptDecrypt(t *testing.T, c1 cipher.AEAD, c2 cipher.AEAD) { @@ -150,3 +160,13 @@ func testCorruption(t *testing.T, c cipher.AEAD) {  		t.Fatalf("Should have gotten error")  	}  } + +// Get "n" random bytes from /dev/urandom or panic +func randBytes(n int) []byte { +	b := make([]byte, n) +	_, err := rand.Read(b) +	if err != nil { +		log.Panic("Failed to read random bytes: " + err.Error()) +	} +	return b +} diff --git a/internal/stupidgcm/stupidchacha_test.go b/internal/stupidgcm/stupidchacha_test.go index c1086d1..2690f85 100644 --- a/internal/stupidgcm/stupidchacha_test.go +++ b/internal/stupidgcm/stupidchacha_test.go @@ -11,9 +11,7 @@ import (  	"golang.org/x/crypto/chacha20poly1305"  ) -// TestEncryptDecrypt encrypts and decrypts using both stupidgcm and Go's built-in -// GCM implementation and verifies that the results are identical. -func TestEncryptDecryptChacha(t *testing.T) { +func TestStupidChacha20poly1305(t *testing.T) {  	key := randBytes(32)  	c := newChacha20poly1305(key)  	ref, err := chacha20poly1305.New(key) @@ -21,42 +19,5 @@ func TestEncryptDecryptChacha(t *testing.T) {  		t.Fatal(err)  	} -	testEncryptDecrypt(t, c, ref) -} - -// Seal re-uses the "dst" buffer it is large enough. -// Check that this works correctly by testing different "dst" capacities from -// 5000 to 16 and "in" lengths from 1 to 5000. -func TestInplaceSealChacha(t *testing.T) { -	key := randBytes(32) -	c := newChacha20poly1305(key) -	ref, err := chacha20poly1305.New(key) -	if err != nil { -		t.Fatal(err) -	} - -	testInplaceSeal(t, c, ref) -} - -// Open re-uses the "dst" buffer it is large enough. -// Check that this works correctly by testing different "dst" capacities from -// 5000 to 16 and "in" lengths from 1 to 5000. -func TestInplaceOpenChacha(t *testing.T) { -	key := randBytes(32) -	c := newChacha20poly1305(key) -	ref, err := chacha20poly1305.New(key) -	if err != nil { -		t.Fatal(err) -	} - -	testInplaceOpen(t, c, ref) -} - -// TestCorruption verifies that changes in the ciphertext result in a decryption -// error -func TestCorruptionChacha(t *testing.T) { -	key := randBytes(32) -	c := newChacha20poly1305(key) - -	testCorruption(t, c) +	testCiphers(t, c, ref)  } diff --git a/internal/stupidgcm/stupidgcm_test.go b/internal/stupidgcm/stupidgcm_test.go index 968034e..5323afa 100644 --- a/internal/stupidgcm/stupidgcm_test.go +++ b/internal/stupidgcm/stupidgcm_test.go @@ -8,24 +8,10 @@ package stupidgcm  import (  	"crypto/aes"  	"crypto/cipher" -	"crypto/rand" -	"log"  	"testing"  ) -// Get "n" random bytes from /dev/urandom or panic -func randBytes(n int) []byte { -	b := make([]byte, n) -	_, err := rand.Read(b) -	if err != nil { -		log.Panic("Failed to read random bytes: " + err.Error()) -	} -	return b -} - -// TestEncryptDecrypt encrypts and decrypts using both stupidgcm and Go's built-in -// GCM implementation and verifies that the results are identical. -func TestEncryptDecrypt(t *testing.T) { +func TestStupidGCM(t *testing.T) {  	key := randBytes(32)  	sGCM := New(key, false) @@ -38,52 +24,5 @@ func TestEncryptDecrypt(t *testing.T) {  		t.Fatal(err)  	} -	testEncryptDecrypt(t, sGCM, gGCM) -} - -// Seal re-uses the "dst" buffer it is large enough. -// Check that this works correctly by testing different "dst" capacities from -// 5000 to 16 and "in" lengths from 1 to 5000. -func TestInplaceSeal(t *testing.T) { -	key := randBytes(32) -	sGCM := New(key, false) - -	gAES, err := aes.NewCipher(key) -	if err != nil { -		t.Fatal(err) -	} -	gGCM, err := cipher.NewGCMWithNonceSize(gAES, 16) -	if err != nil { -		t.Fatal(err) -	} - -	testInplaceSeal(t, sGCM, gGCM) -} - -// Open re-uses the "dst" buffer it is large enough. -// Check that this works correctly by testing different "dst" capacities from -// 5000 to 16 and "in" lengths from 1 to 5000. -func TestInplaceOpen(t *testing.T) { -	key := randBytes(32) -	sGCM := New(key, false) - -	gAES, err := aes.NewCipher(key) -	if err != nil { -		t.Fatal(err) -	} -	gGCM, err := cipher.NewGCMWithNonceSize(gAES, 16) -	if err != nil { -		t.Fatal(err) -	} - -	testInplaceOpen(t, sGCM, gGCM) -} - -// TestCorruption verifies that changes in the ciphertext result in a decryption -// error -func TestCorruption(t *testing.T) { -	key := randBytes(32) -	sGCM := New(key, false) - -	testCorruption(t, sGCM) +	testCiphers(t, sGCM, gGCM)  } | 
