From b0de1cc1bdf95afa1a7ef0e6792f9b19b5769e7d Mon Sep 17 00:00:00 2001
From: Thai Duong <thaidn@google.com>
Date: Tue, 3 Oct 2017 22:09:23 -0700
Subject: [PATCH] Don't depend on protobuf-java-util which doesn't support
 Android.

Change-Id: Ib465cc0feeeca5a0f6f31e8b5968af3c1e4d75f5
Bug: 67385998
ORIGINAL_AUTHOR=Thai Duong <thaidn@google.com>
GitOrigin-RevId: 3cf99a121e531d693ca3ba3ff33cba0b0f66a8f6
---
 WORKSPACE                                     |  6 ---
 java/BUILD                                    |  1 -
 .../crypto/tink/JsonKeysetReaderTest.java     | 43 ++++++++-----------
 .../crypto/tink/JsonKeysetWriterTest.java     | 13 +++---
 4 files changed, 24 insertions(+), 39 deletions(-)

diff --git a/WORKSPACE b/WORKSPACE
index 192c0d721..b64ebe037 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -216,12 +216,6 @@ maven_jar(
     sha1 = "1d63f369ac78e4838a3197147012026e791008cb",
 )
 
-maven_jar(
-    name = "com_google_protobuf_java_util",
-    artifact = "com.google.protobuf:protobuf-java-util:3.3.0",
-    sha1 = "f78f5d3c05053470023b12cbe4a94419d3792274",
-)
-
 maven_jar(
     name = "org_json_json",
     artifact = "org.json:json:20170516",
diff --git a/java/BUILD b/java/BUILD
index c6017ce71..20248b23e 100644
--- a/java/BUILD
+++ b/java/BUILD
@@ -196,7 +196,6 @@ java_library(
         "@com_fasterxml_jackson_core//jar",
         "@com_google_api_client//jar",
         "@com_google_guava//jar",
-        "@com_google_protobuf_java_util//jar",
         "@com_google_protobuf_javalite//:protobuf_java_lite",
         "@com_google_truth//jar",
         "@junit_junit_4//jar",
diff --git a/java/src/test/java/com/google/crypto/tink/JsonKeysetReaderTest.java b/java/src/test/java/com/google/crypto/tink/JsonKeysetReaderTest.java
index 3f2a415ee..1d3336cd3 100644
--- a/java/src/test/java/com/google/crypto/tink/JsonKeysetReaderTest.java
+++ b/java/src/test/java/com/google/crypto/tink/JsonKeysetReaderTest.java
@@ -27,7 +27,6 @@ import com.google.crypto.tink.mac.MacKeyTemplates;
 import com.google.crypto.tink.proto.EncryptedKeyset;
 import com.google.crypto.tink.proto.KeyTemplate;
 import com.google.crypto.tink.subtle.Random;
-import com.google.protobuf.util.JsonFormat;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -89,8 +88,11 @@ public class JsonKeysetReaderTest {
   public void testRead_singleKey_shouldWork() throws Exception {
     KeyTemplate template = MacKeyTemplates.HMAC_SHA256_128BITTAG;
     KeysetHandle handle1 = KeysetHandle.generateNew(template);
+    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+    CleartextKeysetHandle.write(handle1, JsonKeysetWriter.withOutputStream(outputStream));
     KeysetHandle handle2 = CleartextKeysetHandle.read(
-        JsonKeysetReader.withString(JsonFormat.printer().print(handle1.getKeyset())));
+        JsonKeysetReader.withInputStream(
+            new ByteArrayInputStream(outputStream.toByteArray())));
 
     assertKeysetHandle(handle1, handle2);
   }
@@ -104,8 +106,11 @@ public class JsonKeysetReaderTest {
         .add(template)
         .add(template)
         .getKeysetHandle();
+    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+    CleartextKeysetHandle.write(handle1, JsonKeysetWriter.withOutputStream(outputStream));
     KeysetHandle handle2 = CleartextKeysetHandle.read(
-        JsonKeysetReader.withString(JsonFormat.printer().print(handle1.getKeyset())));
+        JsonKeysetReader.withInputStream(
+            new ByteArrayInputStream(outputStream.toByteArray())));
 
     assertKeysetHandle(handle1, handle2);
   }
@@ -278,14 +283,11 @@ public class JsonKeysetReaderTest {
         .generateNew(MacKeyTemplates.HMAC_SHA256_128BITTAG);
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
     handle1.write(JsonKeysetWriter.withOutputStream(outputStream), masterKey);
-    EncryptedKeyset keyset1 = JsonKeysetReader
-        .withBytes(outputStream.toByteArray())
-        .readEncrypted();
-    String jsonKeyset = JsonFormat.printer().print(keyset1);
-    EncryptedKeyset keyset2 = JsonKeysetReader.withString(jsonKeyset).readEncrypted();
-    KeysetHandle handle2 = KeysetHandle.read(JsonKeysetReader.withString(jsonKeyset), masterKey);
-
-    assertThat(keyset2).isEqualTo(keyset1);
+    KeysetHandle handle2 = KeysetHandle.read(
+        JsonKeysetReader.withInputStream(
+            new ByteArrayInputStream(outputStream.toByteArray())),
+        masterKey);
+
     assertKeysetHandle(handle1, handle2);
   }
 
@@ -303,14 +305,11 @@ public class JsonKeysetReaderTest {
         .add(template)
         .getKeysetHandle();
     handle1.write(JsonKeysetWriter.withOutputStream(outputStream), masterKey);
-    EncryptedKeyset keyset1 = JsonKeysetReader
-        .withBytes(outputStream.toByteArray())
-        .readEncrypted();
-    String jsonKeyset = JsonFormat.printer().print(keyset1);
-    EncryptedKeyset keyset2 = JsonKeysetReader.withString(jsonKeyset).readEncrypted();
-    KeysetHandle handle2 = KeysetHandle.read(JsonKeysetReader.withString(jsonKeyset), masterKey);
-
-    assertThat(keyset2).isEqualTo(keyset1);
+    KeysetHandle handle2 = KeysetHandle.read(
+        JsonKeysetReader.withInputStream(
+            new ByteArrayInputStream(outputStream.toByteArray())),
+        masterKey);
+
     assertKeysetHandle(handle1, handle2);
   }
 
@@ -323,11 +322,7 @@ public class JsonKeysetReaderTest {
     KeysetHandle handle = KeysetHandle
         .generateNew(MacKeyTemplates.HMAC_SHA256_128BITTAG);
     handle.write(JsonKeysetWriter.withOutputStream(outputStream), masterKey);
-    EncryptedKeyset keyset1 = JsonKeysetReader
-        .withBytes(outputStream.toByteArray())
-        .readEncrypted();
-    String jsonKeyset = JsonFormat.printer().print(keyset1);
-    JSONObject json = new JSONObject(jsonKeyset);
+    JSONObject json = new JSONObject(new String(outputStream.toByteArray(), UTF_8));
     json.remove("encryptedKeyset"); // remove key
 
     try {
diff --git a/java/src/test/java/com/google/crypto/tink/JsonKeysetWriterTest.java b/java/src/test/java/com/google/crypto/tink/JsonKeysetWriterTest.java
index cff921d24..e8f5b6772 100644
--- a/java/src/test/java/com/google/crypto/tink/JsonKeysetWriterTest.java
+++ b/java/src/test/java/com/google/crypto/tink/JsonKeysetWriterTest.java
@@ -27,7 +27,7 @@ import com.google.crypto.tink.proto.EncryptedKeyset;
 import com.google.crypto.tink.proto.KeyTemplate;
 import com.google.crypto.tink.proto.Keyset;
 import com.google.crypto.tink.subtle.Random;
-import com.google.protobuf.util.JsonFormat;
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.security.GeneralSecurityException;
 import org.junit.BeforeClass;
@@ -55,9 +55,8 @@ public class JsonKeysetWriterTest {
   private void testWrite_shouldWork(KeysetHandle handle1) throws Exception {
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
     CleartextKeysetHandle.write(handle1, JsonKeysetWriter.withOutputStream(outputStream));
-    Keyset.Builder builder = Keyset.newBuilder();
-    JsonFormat.parser().merge(new String(outputStream.toByteArray(), UTF_8), builder);
-    KeysetHandle handle2 = KeysetHandle.fromKeyset(builder.build());
+    KeysetHandle handle2 = CleartextKeysetHandle.read(
+        JsonKeysetReader.withInputStream(new ByteArrayInputStream(outputStream.toByteArray())));
 
     assertKeysetHandle(handle1, handle2);
   }
@@ -89,10 +88,8 @@ public class JsonKeysetWriterTest {
     Aead masterKey = Registry.getPrimitive(Registry.newKeyData(masterKeyTemplate));
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
     handle1.write(JsonKeysetWriter.withOutputStream(outputStream), masterKey);
-    EncryptedKeyset.Builder builder = EncryptedKeyset.newBuilder();
-    JsonFormat.parser().merge(new String(outputStream.toByteArray(), UTF_8), builder);
-    KeysetHandle handle2 =
-        KeysetHandle.read(BinaryKeysetReader.withBytes(builder.build().toByteArray()), masterKey);
+    KeysetHandle handle2 = KeysetHandle.read(JsonKeysetReader.withInputStream(
+        new ByteArrayInputStream(outputStream.toByteArray())), masterKey);
 
     assertKeysetHandle(handle1, handle2);
   }
-- 
GitLab