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 }