73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
|
|
package symm
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func FuzzAesCBCRoundTrip(f *testing.F) {
|
||
|
|
f.Add([]byte("fuzz-aes-cbc"))
|
||
|
|
f.Add([]byte{})
|
||
|
|
|
||
|
|
key := []byte("0123456789abcdef")
|
||
|
|
iv := []byte("abcdef9876543210")
|
||
|
|
|
||
|
|
f.Fuzz(func(t *testing.T, data []byte) {
|
||
|
|
enc, err := EncryptAesCBC(data, key, iv, "")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("EncryptAesCBC failed: %v", err)
|
||
|
|
}
|
||
|
|
dec, err := DecryptAesCBC(enc, key, iv, "")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("DecryptAesCBC failed: %v", err)
|
||
|
|
}
|
||
|
|
if !bytes.Equal(dec, data) {
|
||
|
|
t.Fatalf("aes cbc fuzz roundtrip mismatch")
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
func FuzzChaCha20RoundTrip(f *testing.F) {
|
||
|
|
f.Add([]byte("fuzz-chacha20"))
|
||
|
|
f.Add([]byte{})
|
||
|
|
|
||
|
|
key := []byte("0123456789abcdef0123456789abcdef")
|
||
|
|
nonce := []byte("123456789012")
|
||
|
|
|
||
|
|
f.Fuzz(func(t *testing.T, data []byte) {
|
||
|
|
enc, err := EncryptChaCha20(data, key, nonce)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("EncryptChaCha20 failed: %v", err)
|
||
|
|
}
|
||
|
|
dec, err := DecryptChaCha20(enc, key, nonce)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("DecryptChaCha20 failed: %v", err)
|
||
|
|
}
|
||
|
|
if !bytes.Equal(dec, data) {
|
||
|
|
t.Fatalf("chacha20 fuzz roundtrip mismatch")
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
func FuzzAesCBCStreamRoundTrip(f *testing.F) {
|
||
|
|
f.Add([]byte("fuzz-aes-stream"))
|
||
|
|
f.Add([]byte{})
|
||
|
|
|
||
|
|
key := []byte("0123456789abcdef")
|
||
|
|
iv := []byte("abcdef9876543210")
|
||
|
|
|
||
|
|
f.Fuzz(func(t *testing.T, data []byte) {
|
||
|
|
enc := &bytes.Buffer{}
|
||
|
|
dec := &bytes.Buffer{}
|
||
|
|
if err := EncryptAesCBCStream(enc, bytes.NewReader(data), key, iv, ""); err != nil {
|
||
|
|
t.Fatalf("EncryptAesCBCStream failed: %v", err)
|
||
|
|
}
|
||
|
|
if err := DecryptAesCBCStream(dec, bytes.NewReader(enc.Bytes()), key, iv, ""); err != nil {
|
||
|
|
t.Fatalf("DecryptAesCBCStream failed: %v", err)
|
||
|
|
}
|
||
|
|
if !bytes.Equal(dec.Bytes(), data) {
|
||
|
|
t.Fatalf("aes cbc stream fuzz roundtrip mismatch")
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|