github.com/code-to-go/safepool.lib@v0.0.0-20221205180519-ee25e63c226e/security/aescrypt_test.go (about)

     1  package security
     2  
     3  import (
     4  	"bytes"
     5  	"crypto/rand"
     6  	"io"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestAESCrypt(t *testing.T) {
    13  
    14  	b := make([]byte, 1024)
    15  	rand.Read(b)
    16  
    17  	key := GenerateBytesKey(32)
    18  	keyFunc := func(_ uint64) []byte {
    19  		return key
    20  	}
    21  
    22  	r := bytes.NewBuffer(b)
    23  	er, _ := EncryptingReader(0, keyFunc, r)
    24  	w := &bytes.Buffer{}
    25  
    26  	io.Copy(w, er)
    27  
    28  	w2 := &bytes.Buffer{}
    29  	ew, _ := DecryptingWriter(keyFunc, w2)
    30  	io.Copy(ew, w)
    31  
    32  	assert.Equal(t, w2.Bytes(), b)
    33  }
    34  
    35  func TestAESCryptAndHash(t *testing.T) {
    36  
    37  	b := make([]byte, 1024)
    38  	rand.Read(b)
    39  
    40  	key := GenerateBytesKey(32)
    41  	keyFunc := func(_ uint64) []byte {
    42  		return key
    43  	}
    44  
    45  	r := bytes.NewBuffer(b)
    46  	s1, _ := NewHashStream(r, nil)
    47  	er, _ := EncryptingReader(0, keyFunc, s1)
    48  	w := &bytes.Buffer{}
    49  
    50  	io.Copy(w, er)
    51  
    52  	w2 := &bytes.Buffer{}
    53  	s2, _ := NewHashStream(nil, w)
    54  	ew, _ := DecryptingWriter(keyFunc, s2)
    55  	io.Copy(ew, w)
    56  
    57  	assert.Equal(t, w2.Bytes(), b)
    58  	assert.Equal(t, s1.Hash(), s2.Hash())
    59  }