am 9c8fbb1: AI 148148: CTS: Encode SHA-1 hash of test packages in hex in

Merge commit '9c8fbb1ce18f51c64309173610e42f7fea675853' into donut

* commit '9c8fbb1ce18f51c64309173610e42f7fea675853':
  AI 148148: CTS: Encode SHA-1 hash of test packages in hex instead of Base64
diff --git a/tools/host/src/com/android/cts/HostUtils.java b/tools/host/src/com/android/cts/HostUtils.java
index e147f2a..7450dae 100644
--- a/tools/host/src/com/android/cts/HostUtils.java
+++ b/tools/host/src/com/android/cts/HostUtils.java
@@ -274,4 +274,19 @@
 
         return fmt.toString();
     }
+    
+    /**
+     * Convert the given byte array into a lowercase hex string.
+     * 
+     * @param arr The array to convert.
+     * @return The hex encoded string.
+     */
+    public static String toHexString(byte[] arr) {
+        StringBuffer buf = new StringBuffer(arr.length * 2);
+        for (byte b : arr) {
+            buf.append(String.format("%02x", b & 0xFF));
+        }
+        return buf.toString();
+    }
+    
 }
diff --git a/tools/host/src/com/android/cts/TestPackage.java b/tools/host/src/com/android/cts/TestPackage.java
index db02681..d3f3143 100644
--- a/tools/host/src/com/android/cts/TestPackage.java
+++ b/tools/host/src/com/android/cts/TestPackage.java
@@ -16,7 +16,6 @@
 
 package com.android.cts;
 
-import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.security.MessageDigest;
@@ -27,8 +26,6 @@
 import java.util.List;
 import java.util.TimerTask;
 
-import sun.misc.BASE64Encoder;
-
 import com.android.cts.TestSession.TestSessionThread;
 
 /**
@@ -63,7 +60,6 @@
     protected TestSuite mCurrentTestSuite;
 
     protected TestDevice mDevice;
-    private MessageDigest mMsgDigest;
 
     protected boolean mTestStop;
     private TestSessionThread mTestThread;
@@ -89,7 +85,7 @@
             final String testPkgBinaryName, final String targetNameSpace,
             final String targetBinaryName, final String version,
             final String androidVersion, final String jarPath, final String appNameSpace,
-            final String appPackageName) throws NoSuchAlgorithmException {
+            final String appPackageName) {
         mInstrumentationRunner = instrumentationRunner;
         mName = testPkgBinaryName;
         mTargetNameSpace = targetNameSpace;
@@ -106,7 +102,6 @@
         mTestThread = null;
         mIsInBatchMode = false;
         mCurrentTest = null;
-        mMsgDigest = MessageDigest.getInstance("SHA-1");
     }
 
     /**
@@ -732,19 +727,20 @@
      * @return message digest string(base64 encoded).
      */
     private String genMessageDigest(final String packagePath) throws IOException {
-
-        BASE64Encoder base64Encoder = new BASE64Encoder();
+        final String algorithm = "SHA-1";
         FileInputStream fin = new FileInputStream(packagePath);
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        byte[] buffer = new byte[1024];
-        int len;
-        while ((len = fin.read(buffer)) != -1) {
-            bos.write(buffer, 0, len);
+        try {
+            MessageDigest md = MessageDigest.getInstance(algorithm);
+            byte[] buffer = new byte[1024];
+            int len;
+            while ((len = fin.read(buffer)) != -1) {
+                md.update(buffer, 0, len);
+            }
+            fin.close();
+            return HostUtils.toHexString(md.digest());
+        } catch (NoSuchAlgorithmException e) {
+            return algorithm + " not found";
         }
-        fin.close();
-
-        mMsgDigest.update(bos.toByteArray());
-        return base64Encoder.encodeBuffer(mMsgDigest.digest());
     }
 
     /**