backtoback_test.go 1005 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package crypt
  2. import (
  3. "bytes"
  4. "crypto/rand"
  5. "io"
  6. "io/ioutil"
  7. "testing"
  8. )
  9. func TestBackToBack(t *testing.T) {
  10. r := io.LimitReader(rand.Reader, 1024*1024)
  11. indata, err := ioutil.ReadAll(r)
  12. if err != nil {
  13. t.Fatal(err)
  14. }
  15. key, err := GetKey(bytes.NewReader(indata))
  16. if err != nil {
  17. t.Fatal(err)
  18. }
  19. e, err := NewCrypter(key)
  20. if err != nil {
  21. t.Fatal(err)
  22. }
  23. buf := new(bytes.Buffer)
  24. cipherW, err := e.MakePipe(buf)
  25. if err != nil {
  26. t.Fatal(err)
  27. }
  28. _, err = io.Copy(cipherW, bytes.NewReader(indata))
  29. if err != nil {
  30. t.Fatal(err)
  31. }
  32. if buf.Len() != len(indata) {
  33. t.Fatalf("didn't write enough to the ciphertext buffer. got:%d", buf.Len())
  34. }
  35. d, err := NewCrypter(key)
  36. if err != nil {
  37. t.Fatal(err)
  38. }
  39. clearBuf := new(bytes.Buffer)
  40. clearW, err := d.MakePipe(clearBuf)
  41. if err != nil {
  42. t.Fatal(err)
  43. }
  44. _, err = io.Copy(clearW, buf)
  45. if err != nil {
  46. t.Fatal(err)
  47. }
  48. if bytes.Compare(indata, clearBuf.Bytes()) != 0 {
  49. t.Fatal("didn't decrypt data correctly")
  50. }
  51. }