Add a helper for comparing byte strings.

We compare pointer/length pairs constantly. To avoid needing to type it
everywhere and get GTest's output, add a StringPiece-alike for byte
slices which supports ==, !=, and std::ostream.

BUG=129

Change-Id: I108342cbd2c6a58fec0b9cb87ebdf50364bda099
Reviewed-on: https://boringssl-review.googlesource.com/13625
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/crypto/test/test_util.cc b/crypto/test/test_util.cc
index 928972a..493b124 100644
--- a/crypto/test/test_util.cc
+++ b/crypto/test/test_util.cc
@@ -12,11 +12,12 @@
  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
 
-#include <stdint.h>
-#include <stdio.h>
-
 #include "test_util.h"
 
+#include <ostream>
+
+#include "../internal.h"
+
 
 void hexdump(FILE *fp, const char *msg, const void *in, size_t len) {
   const uint8_t *data = reinterpret_cast<const uint8_t*>(in);
@@ -27,3 +28,13 @@
   }
   fputs("\n", fp);
 }
+
+std::ostream &operator<<(std::ostream &os, const Bytes &in) {
+  // Print a byte slice as hex.
+  static const char hex[] = "0123456789abcdef";
+  for (size_t i = 0; i < in.len; i++) {
+    os << hex[in.data[i] >> 4];
+    os << hex[in.data[i] & 0xf];
+  }
+  return os;
+}