Merge "Enable Apache Harmony crypto tests."
diff --git a/Android.mk b/Android.mk
index 93ade53..019c4e2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -8,23 +8,26 @@
 
 harmony_test_dirs := \
     beans \
+    crypto \
     logging \
     luni \
     sql \
     support \
 
 # TODO: get these working too!
-#    crypto \
 #    security \
 #    x-net
 
 harmony_test_src_files := \
     $(call all-harmony-test-java-files-under,$(harmony_test_dirs),src/test/java) \
+    $(call all-harmony-test-java-files-under,$(harmony_test_dirs),src/test/api/java) \
     $(call all-harmony-test-java-files-under,$(harmony_test_dirs),src/test/support/java) \
+    $(call all-harmony-test-java-files-under,$(harmony_test_dirs),src/test/support/common/java) \
     $(call all-harmony-test-java-files-under,luni,src/test/api/common) \
     $(call all-harmony-test-java-files-under,luni,src/test/api/unix) \
     $(call all-harmony-test-java-files-under,luni,src/test/impl/common) \
-    $(call all-harmony-test-java-files-under,luni,src/test/impl/unix)
+    $(call all-harmony-test-java-files-under,luni,src/test/impl/unix) \
+    $(call all-harmony-test-java-files-under,security,src/test/support/common/java)
 
 # We need to use -maxdepth 4 because there's a non-resource directory called "resources" deeper in the tree.
 define harmony-test-resource-dirs
diff --git a/crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/spec/SecretKeySpecTest.java b/crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/spec/SecretKeySpecTest.java
index ce1a97b..4b61174 100644
--- a/crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/spec/SecretKeySpecTest.java
+++ b/crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/spec/SecretKeySpecTest.java
@@ -121,6 +121,11 @@
         } catch (ArrayIndexOutOfBoundsException e) {
         }
 
+        // BEGIN Android-removed: Unnecessarily specific test
+        // This is illegal for three reasons (key too short, invalid offset, invalid length),
+        // and the spec doesn't specify which exception should be thrown if multiple are
+        // valid.  We happen to throw IllegalArgumentException, which is allowed behavior.
+        /*
         // Regression test for HARMONY-6347
         try {
             new SecretKeySpec(key, -1, key.length + 2, algorithm);
@@ -130,6 +135,9 @@
             fail("Not expected IllegalArgumentException was thrown.");
         } catch (ArrayIndexOutOfBoundsException e) {
         }
+        */
+        // END Android-removed: Unnecessarily specific test
+
 
         try {
             new SecretKeySpec(key, offset, len, null);
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.0.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.0.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.0.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.0.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.1.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.1.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.1.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.1.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.2.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.2.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.2.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/BadPaddingExceptionTest.golden.2.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.0.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.0.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.0.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.0.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.1.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.1.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.1.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.1.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.2.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.2.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.2.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ExemptionMechanismExceptionTest.golden.2.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.0.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.0.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.0.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.0.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.1.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.1.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.1.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.1.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.2.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.2.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.2.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/IllegalBlockSizeExceptionTest.golden.2.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.0.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.0.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.0.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.0.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.1.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.1.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.1.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.1.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.2.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.2.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.2.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/NoSuchPaddingExceptionTest.golden.2.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.0.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.0.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.0.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.0.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.1.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.1.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.1.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.1.ser
Binary files differ
diff --git a/crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.2.ser b/crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.2.ser
similarity index 100%
rename from crypto/src/test/resources/serialization/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.2.ser
rename to crypto/src/test/resources/serialization/com/android/org/apache/harmony/crypto/tests/javax/crypto/serialization/ShortBufferExceptionTest.golden.2.ser
Binary files differ
diff --git a/security/src/test/support/common/java/org/apache/harmony/security/tests/support/provider/cert/CertFactoryTestData.java b/security/src/test/support/common/java/org/apache/harmony/security/tests/support/provider/cert/CertFactoryTestData.java
index 15fad04..875350c 100644
--- a/security/src/test/support/common/java/org/apache/harmony/security/tests/support/provider/cert/CertFactoryTestData.java
+++ b/security/src/test/support/common/java/org/apache/harmony/security/tests/support/provider/cert/CertFactoryTestData.java
@@ -22,8 +22,9 @@
 package org.apache.harmony.security.tests.support.provider.cert;
 
 import java.io.UnsupportedEncodingException;
-
-import org.apache.harmony.luni.util.Base64;
+// Android-changed: Don't use Harmony's Base64 class
+// import org.apache.harmony.luni.util.Base64;
+import java.util.Base64;
 
 /**
  * Class contains the base 64 encodings of X.509 certificates,
@@ -295,15 +296,21 @@
 
 
     public static byte[] getCertPathPKCS7Encoding() throws UnsupportedEncodingException {
-        return Base64.decode(certPathPKCS7Base64.getBytes("UTF-8"));
+        // Android-changed: Don't use Harmony's Base64 class
+        // return Base64.decode(certPathPKCS7Base64.getBytes("UTF-8"));
+        return Base64.getDecoder().decode(certPathPKCS7Base64.getBytes("UTF-8"));
     }
 
     public static byte[] getCertPathPkiPathEncoding() throws UnsupportedEncodingException {
-        return Base64.decode(certPathPkiPathBase64.getBytes("UTF-8"));
+        // Android-changed: Don't use Harmony's Base64 class
+        // return Base64.decode(certPathPkiPathBase64.getBytes("UTF-8"));
+        return Base64.getDecoder().decode(certPathPkiPathBase64.getBytes("UTF-8"));
     }
 
     public static byte[] getCertEncoding() throws UnsupportedEncodingException {
-        return Base64.decode(certEncodingBase64.getBytes("UTF-8"));
+        // Android-changed: Don't use Harmony's Base64 class
+        // return Base64.decode(certEncodingBase64.getBytes("UTF-8"));
+        return Base64.getDecoder().decode(certEncodingBase64.getBytes("UTF-8"));
     }
 
     public static byte[] getBase64CertEncoding() throws UnsupportedEncodingException {
@@ -315,7 +322,9 @@
     }
 
     public static byte[] getCRLEncoding() throws UnsupportedEncodingException {
-        return Base64.decode(crlEncodingBase64.getBytes("UTF-8"));
+        // Android-changed: Don't use Harmony's Base64 class
+        // return Base64.decode(crlEncodingBase64.getBytes("UTF-8"));
+        return Base64.getDecoder().decode(crlEncodingBase64.getBytes("UTF-8"));
     }
 }