diff options
author | Julien Dessaux | 2024-09-30 00:58:49 +0200 |
---|---|---|
committer | Julien Dessaux | 2024-09-30 01:00:59 +0200 |
commit | 4ff490806c826cf2da4c2291ed924f0a49383fce (patch) | |
tree | 6870f4883cd03a824095b969500f08fb59f04038 /pkg/scrypto/aes256_test.go | |
parent | chore(tfstated): rename tfstate to tfstated (diff) | |
download | tfstated-4ff490806c826cf2da4c2291ed924f0a49383fce.tar.gz tfstated-4ff490806c826cf2da4c2291ed924f0a49383fce.tar.bz2 tfstated-4ff490806c826cf2da4c2291ed924f0a49383fce.zip |
feat(tfstated): implement GET and POST methods, states are encrypted in a sqlite3 database
Diffstat (limited to '')
-rw-r--r-- | pkg/scrypto/aes256_test.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/pkg/scrypto/aes256_test.go b/pkg/scrypto/aes256_test.go new file mode 100644 index 0000000..9914625 --- /dev/null +++ b/pkg/scrypto/aes256_test.go @@ -0,0 +1,60 @@ +package scrypto + +import ( + "encoding/hex" + "slices" + "strings" + "testing" +) + +func TestAES256KeyHex(t *testing.T) { + testKeyHex := "28278b7c0a25f01d3cab639633b9487f9ea1e9a2176dc9595a3f01323aa44284" + testKey, _ := hex.DecodeString(testKeyHex) + + var key AES256Key + if err := key.FromHex(testKeyHex); err != nil { + t.Errorf("got unexpected error %+v", err) + } + if slices.Compare(testKey, key[:]) != 0 { + t.Errorf("got %v, wanted %v", testKey, key[:]) + } + if strings.Compare(testKeyHex, key.Hex()) != 0 { + t.Errorf("got %v, wanted %v", testKeyHex, key.Hex()) + } +} + +func TestAES256(t *testing.T) { + keyHex := "28278b7c0a25f01d3cab639633b9487f9ea1e9a2176dc9595a3f01323aa44284" + var key AES256Key + if err := key.FromHex(keyHex); err != nil { + t.Errorf("got unexpected error %+v", err) + } + + data := []byte("Hello world!") + encryptedData, err := key.EncryptAES256(data) + if err != nil { + t.Errorf("got unexpected error when encrypting data %+v", err) + } + + decryptedData, err := key.DecryptAES256(encryptedData) + if err != nil { + t.Errorf("got unexpected error when decrypting data %+v", err) + } + + if slices.Compare(data, decryptedData) != 0 { + t.Errorf("got %v, wanted %v", decryptedData, data) + } +} + +func TestAES256InvalidData(t *testing.T) { + keyHex := "28278b7c0a25f01d3cab639633b9487f9ea1e9a2176dc9595a3f01323aa44284" + var key AES256Key + if err := key.FromHex(keyHex); err != nil { + t.Errorf("got unexpected error when converting data from base64: %+v", err) + } + + iv := make([]byte, AES256IVSize) + if _, err := key.DecryptAES256(append(iv, []byte("foo")...)); err == nil { + t.Error("decrypting operation should have failed") + } +} |