frameworks/base updates to track merge from dalvik-dev

- frameworks and CoreTests modules now depend on bouncycastle
- update preloades classes for NativeBN package change
- moved CryptoTest to libcore
- updated api

Change-Id: I47363a463f074af205b5bd128cd98faab70ac849
This commit is contained in:
Brian Carlstrom
2010-06-30 00:54:29 -07:00
parent 0e94b5151d
commit 570bb5618a
6 changed files with 177 additions and 193 deletions

View File

@ -194,7 +194,7 @@ LOCAL_INTERMEDIATE_SOURCES := \
$(framework-res-source-path)/com/android/internal/R.java
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := core core-junit ext
LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit ext
LOCAL_MODULE := framework
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
@ -342,6 +342,7 @@ framework_docs_LOCAL_INTERMEDIATE_SOURCES := \
$(framework-res-source-path)/com/android/internal/R.java
framework_docs_LOCAL_JAVA_LIBRARIES := \
bouncycastle \
core \
ext \
framework \

View File

@ -231195,7 +231195,7 @@
>
</method>
<method name="getClasses"
return="java.lang.Class[]"
return="java.lang.Class&lt;?&gt;[]"
abstract="false"
native="false"
synchronized="false"
@ -231226,7 +231226,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="parameterTypes" type="java.lang.Class...">
<parameter name="parameterTypes" type="java.lang.Class&lt;?&gt;...">
</parameter>
<exception name="NoSuchMethodException" type="java.lang.NoSuchMethodException">
</exception>
@ -231234,7 +231234,7 @@
</exception>
</method>
<method name="getConstructors"
return="java.lang.reflect.Constructor[]"
return="java.lang.reflect.Constructor&lt;?&gt;[]"
abstract="false"
native="false"
synchronized="false"
@ -231258,7 +231258,7 @@
>
</method>
<method name="getDeclaredClasses"
return="java.lang.Class[]"
return="java.lang.Class&lt;?&gt;[]"
abstract="false"
native="false"
synchronized="false"
@ -231280,7 +231280,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="parameterTypes" type="java.lang.Class...">
<parameter name="parameterTypes" type="java.lang.Class&lt;?&gt;...">
</parameter>
<exception name="NoSuchMethodException" type="java.lang.NoSuchMethodException">
</exception>
@ -231288,7 +231288,7 @@
</exception>
</method>
<method name="getDeclaredConstructors"
return="java.lang.reflect.Constructor[]"
return="java.lang.reflect.Constructor&lt;?&gt;[]"
abstract="false"
native="false"
synchronized="false"
@ -231342,7 +231342,7 @@
>
<parameter name="name" type="java.lang.String">
</parameter>
<parameter name="parameterTypes" type="java.lang.Class...">
<parameter name="parameterTypes" type="java.lang.Class&lt;?&gt;...">
</parameter>
<exception name="NoSuchMethodException" type="java.lang.NoSuchMethodException">
</exception>
@ -231470,7 +231470,7 @@
>
</method>
<method name="getInterfaces"
return="java.lang.Class[]"
return="java.lang.Class&lt;?&gt;[]"
abstract="false"
native="true"
synchronized="false"
@ -231492,7 +231492,7 @@
>
<parameter name="name" type="java.lang.String">
</parameter>
<parameter name="parameterTypes" type="java.lang.Class...">
<parameter name="parameterTypes" type="java.lang.Class&lt;?&gt;...">
</parameter>
<exception name="NoSuchMethodException" type="java.lang.NoSuchMethodException">
</exception>
@ -243214,7 +243214,7 @@
>
<parameter name="componentType" type="java.lang.Class&lt;?&gt;">
</parameter>
<parameter name="dimensions" type="int[]">
<parameter name="dimensions" type="int...">
</parameter>
<exception name="IllegalArgumentException" type="java.lang.IllegalArgumentException">
</exception>
@ -244172,7 +244172,7 @@
visibility="public"
>
<method name="getDeclaringClass"
return="java.lang.Class"
return="java.lang.Class&lt;?&gt;"
abstract="true"
native="false"
synchronized="false"
@ -338875,7 +338875,7 @@
</parameter>
</constructor>
<method name="doAs"
return="java.lang.Object"
return="T"
abstract="false"
native="false"
synchronized="false"
@ -338886,11 +338886,11 @@
>
<parameter name="subject" type="javax.security.auth.Subject">
</parameter>
<parameter name="action" type="java.security.PrivilegedAction">
<parameter name="action" type="java.security.PrivilegedAction&lt;T&gt;">
</parameter>
</method>
<method name="doAs"
return="java.lang.Object"
return="T"
abstract="false"
native="false"
synchronized="false"
@ -338901,13 +338901,13 @@
>
<parameter name="subject" type="javax.security.auth.Subject">
</parameter>
<parameter name="action" type="java.security.PrivilegedExceptionAction">
<parameter name="action" type="java.security.PrivilegedExceptionAction&lt;T&gt;">
</parameter>
<exception name="PrivilegedActionException" type="java.security.PrivilegedActionException">
</exception>
</method>
<method name="doAsPrivileged"
return="java.lang.Object"
return="T"
abstract="false"
native="false"
synchronized="false"
@ -338918,13 +338918,13 @@
>
<parameter name="subject" type="javax.security.auth.Subject">
</parameter>
<parameter name="action" type="java.security.PrivilegedAction">
<parameter name="action" type="java.security.PrivilegedAction&lt;T&gt;">
</parameter>
<parameter name="context" type="java.security.AccessControlContext">
</parameter>
</method>
<method name="doAsPrivileged"
return="java.lang.Object"
return="T"
abstract="false"
native="false"
synchronized="false"
@ -338935,7 +338935,7 @@
>
<parameter name="subject" type="javax.security.auth.Subject">
</parameter>
<parameter name="action" type="java.security.PrivilegedExceptionAction">
<parameter name="action" type="java.security.PrivilegedExceptionAction&lt;T&gt;">
</parameter>
<parameter name="context" type="java.security.AccessControlContext">
</parameter>

View File

@ -234855,7 +234855,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="dest" type="java.io.PipedReader">
<parameter name="destination" type="java.io.PipedReader">
</parameter>
<exception name="IOException" type="java.io.IOException">
</exception>
@ -242004,7 +242004,7 @@
>
</method>
<method name="getClasses"
return="java.lang.Class[]"
return="java.lang.Class&lt;?&gt;[]"
abstract="false"
native="false"
synchronized="false"
@ -242035,7 +242035,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="parameterTypes" type="java.lang.Class...">
<parameter name="parameterTypes" type="java.lang.Class&lt;?&gt;...">
</parameter>
<exception name="NoSuchMethodException" type="java.lang.NoSuchMethodException">
</exception>
@ -242043,7 +242043,7 @@
</exception>
</method>
<method name="getConstructors"
return="java.lang.reflect.Constructor[]"
return="java.lang.reflect.Constructor&lt;?&gt;[]"
abstract="false"
native="false"
synchronized="false"
@ -242067,7 +242067,7 @@
>
</method>
<method name="getDeclaredClasses"
return="java.lang.Class[]"
return="java.lang.Class&lt;?&gt;[]"
abstract="false"
native="false"
synchronized="false"
@ -242089,7 +242089,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="parameterTypes" type="java.lang.Class...">
<parameter name="parameterTypes" type="java.lang.Class&lt;?&gt;...">
</parameter>
<exception name="NoSuchMethodException" type="java.lang.NoSuchMethodException">
</exception>
@ -242097,7 +242097,7 @@
</exception>
</method>
<method name="getDeclaredConstructors"
return="java.lang.reflect.Constructor[]"
return="java.lang.reflect.Constructor&lt;?&gt;[]"
abstract="false"
native="false"
synchronized="false"
@ -242151,7 +242151,7 @@
>
<parameter name="name" type="java.lang.String">
</parameter>
<parameter name="parameterTypes" type="java.lang.Class...">
<parameter name="parameterTypes" type="java.lang.Class&lt;?&gt;...">
</parameter>
<exception name="NoSuchMethodException" type="java.lang.NoSuchMethodException">
</exception>
@ -242279,7 +242279,7 @@
>
</method>
<method name="getInterfaces"
return="java.lang.Class[]"
return="java.lang.Class&lt;?&gt;[]"
abstract="false"
native="true"
synchronized="false"
@ -242301,7 +242301,7 @@
>
<parameter name="name" type="java.lang.String">
</parameter>
<parameter name="parameterTypes" type="java.lang.Class...">
<parameter name="parameterTypes" type="java.lang.Class&lt;?&gt;...">
</parameter>
<exception name="NoSuchMethodException" type="java.lang.NoSuchMethodException">
</exception>
@ -245900,10 +245900,10 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="x" type="double">
</parameter>
<parameter name="y" type="double">
</parameter>
<parameter name="x" type="double">
</parameter>
</method>
<method name="cbrt"
return="double"
@ -249723,7 +249723,7 @@
</parameter>
<parameter name="length" type="int">
</parameter>
<parameter name="encoding" type="java.lang.String">
<parameter name="charsetName" type="java.lang.String">
</parameter>
<exception name="UnsupportedEncodingException" type="java.io.UnsupportedEncodingException">
</exception>
@ -249737,7 +249737,7 @@
>
<parameter name="data" type="byte[]">
</parameter>
<parameter name="encoding" type="java.lang.String">
<parameter name="charsetName" type="java.lang.String">
</parameter>
<exception name="UnsupportedEncodingException" type="java.io.UnsupportedEncodingException">
</exception>
@ -249755,7 +249755,7 @@
</parameter>
<parameter name="length" type="int">
</parameter>
<parameter name="encoding" type="java.nio.charset.Charset">
<parameter name="charset" type="java.nio.charset.Charset">
</parameter>
</constructor>
<constructor name="String"
@ -249767,7 +249767,7 @@
>
<parameter name="data" type="byte[]">
</parameter>
<parameter name="encoding" type="java.nio.charset.Charset">
<parameter name="charset" type="java.nio.charset.Charset">
</parameter>
</constructor>
<constructor name="String"
@ -250058,17 +250058,6 @@
<parameter name="args" type="java.lang.Object...">
</parameter>
</method>
<method name="getBytes"
return="byte[]"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
</method>
<method name="getBytes"
return="void"
abstract="false"
@ -250098,7 +250087,18 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="encoding" type="java.lang.String">
</method>
<method name="getBytes"
return="byte[]"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="charsetName" type="java.lang.String">
</parameter>
<exception name="UnsupportedEncodingException" type="java.io.UnsupportedEncodingException">
</exception>
@ -250113,7 +250113,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="encoding" type="java.nio.charset.Charset">
<parameter name="charset" type="java.nio.charset.Charset">
</parameter>
</method>
<method name="getChars"
@ -254447,7 +254447,7 @@
>
<parameter name="componentType" type="java.lang.Class&lt;?&gt;">
</parameter>
<parameter name="dimensions" type="int[]">
<parameter name="dimensions" type="int...">
</parameter>
<exception name="IllegalArgumentException" type="java.lang.IllegalArgumentException">
</exception>
@ -255405,7 +255405,7 @@
visibility="public"
>
<method name="getDeclaringClass"
return="java.lang.Class"
return="java.lang.Class&lt;?&gt;"
abstract="true"
native="false"
synchronized="false"
@ -272444,7 +272444,7 @@
return="boolean"
abstract="false"
native="false"
synchronized="true"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
@ -273600,7 +273600,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="perm" type="java.security.Permission">
<parameter name="permission" type="java.security.Permission">
</parameter>
<exception name="AccessControlException" type="java.security.AccessControlException">
</exception>
@ -273665,6 +273665,34 @@
<exception name="PrivilegedActionException" type="java.security.PrivilegedActionException">
</exception>
</method>
<method name="doPrivilegedWithCombiner"
return="T"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="action" type="java.security.PrivilegedAction&lt;T&gt;">
</parameter>
</method>
<method name="doPrivilegedWithCombiner"
return="T"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="action" type="java.security.PrivilegedExceptionAction&lt;T&gt;">
</parameter>
<exception name="PrivilegedActionException" type="java.security.PrivilegedActionException">
</exception>
</method>
<method name="getContext"
return="java.security.AccessControlContext"
abstract="false"
@ -316246,7 +316274,7 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="f" type="java.lang.String">
<parameter name="flags" type="java.lang.String">
</parameter>
</constructor>
<method name="getFlags"
@ -339984,8 +340012,6 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="input" type="java.lang.CharSequence">
</parameter>
</method>
<method name="reset"
return="java.util.regex.Matcher"
@ -339997,6 +340023,8 @@
deprecated="not deprecated"
visibility="public"
>
<parameter name="input" type="java.lang.CharSequence">
</parameter>
</method>
<method name="start"
return="int"
@ -361344,7 +361372,7 @@
</parameter>
</constructor>
<method name="doAs"
return="java.lang.Object"
return="T"
abstract="false"
native="false"
synchronized="false"
@ -361355,11 +361383,11 @@
>
<parameter name="subject" type="javax.security.auth.Subject">
</parameter>
<parameter name="action" type="java.security.PrivilegedAction">
<parameter name="action" type="java.security.PrivilegedAction&lt;T&gt;">
</parameter>
</method>
<method name="doAs"
return="java.lang.Object"
return="T"
abstract="false"
native="false"
synchronized="false"
@ -361370,13 +361398,13 @@
>
<parameter name="subject" type="javax.security.auth.Subject">
</parameter>
<parameter name="action" type="java.security.PrivilegedExceptionAction">
<parameter name="action" type="java.security.PrivilegedExceptionAction&lt;T&gt;">
</parameter>
<exception name="PrivilegedActionException" type="java.security.PrivilegedActionException">
</exception>
</method>
<method name="doAsPrivileged"
return="java.lang.Object"
return="T"
abstract="false"
native="false"
synchronized="false"
@ -361387,13 +361415,13 @@
>
<parameter name="subject" type="javax.security.auth.Subject">
</parameter>
<parameter name="action" type="java.security.PrivilegedAction">
<parameter name="action" type="java.security.PrivilegedAction&lt;T&gt;">
</parameter>
<parameter name="context" type="java.security.AccessControlContext">
</parameter>
</method>
<method name="doAsPrivileged"
return="java.lang.Object"
return="T"
abstract="false"
native="false"
synchronized="false"
@ -361404,7 +361432,7 @@
>
<parameter name="subject" type="javax.security.auth.Subject">
</parameter>
<parameter name="action" type="java.security.PrivilegedExceptionAction">
<parameter name="action" type="java.security.PrivilegedExceptionAction&lt;T&gt;">
</parameter>
<parameter name="context" type="java.security.AccessControlContext">
</parameter>
@ -365963,6 +365991,23 @@
<exception name="DatatypeConfigurationException" type="javax.xml.datatype.DatatypeConfigurationException">
</exception>
</method>
<method name="newInstance"
return="javax.xml.datatype.DatatypeFactory"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="factoryClassName" type="java.lang.String">
</parameter>
<parameter name="classLoader" type="java.lang.ClassLoader">
</parameter>
<exception name="DatatypeConfigurationException" type="javax.xml.datatype.DatatypeConfigurationException">
</exception>
</method>
<method name="newXMLGregorianCalendar"
return="javax.xml.datatype.XMLGregorianCalendar"
abstract="true"
@ -367469,6 +367514,21 @@
visibility="public"
>
</method>
<method name="newInstance"
return="javax.xml.parsers.DocumentBuilderFactory"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="factoryClassName" type="java.lang.String">
</parameter>
<parameter name="classLoader" type="java.lang.ClassLoader">
</parameter>
</method>
<method name="setAttribute"
return="void"
abstract="true"
@ -368113,6 +368173,21 @@
visibility="public"
>
</method>
<method name="newInstance"
return="javax.xml.parsers.SAXParserFactory"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="factoryClassName" type="java.lang.String">
</parameter>
<parameter name="classLoader" type="java.lang.ClassLoader">
</parameter>
</method>
<method name="newSAXParser"
return="javax.xml.parsers.SAXParser"
abstract="true"
@ -369034,6 +369109,23 @@
<exception name="TransformerFactoryConfigurationError" type="javax.xml.transform.TransformerFactoryConfigurationError">
</exception>
</method>
<method name="newInstance"
return="javax.xml.transform.TransformerFactory"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="factoryClassName" type="java.lang.String">
</parameter>
<parameter name="classLoader" type="java.lang.ClassLoader">
</parameter>
<exception name="TransformerFactoryConfigurationError" type="javax.xml.transform.TransformerFactoryConfigurationError">
</exception>
</method>
<method name="newTemplates"
return="javax.xml.transform.Templates"
abstract="true"
@ -370475,13 +370567,30 @@
native="false"
synchronized="false"
static="true"
final="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="schemaLanguage" type="java.lang.String">
</parameter>
</method>
<method name="newInstance"
return="javax.xml.validation.SchemaFactory"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="schemaLanguage" type="java.lang.String">
</parameter>
<parameter name="factoryClassName" type="java.lang.String">
</parameter>
<parameter name="classLoader" type="java.lang.ClassLoader">
</parameter>
</method>
<method name="newSchema"
return="javax.xml.validation.Schema"
abstract="false"

View File

@ -845,6 +845,7 @@ java.math.BigDecimal
java.math.BigInt
java.math.BigInteger
java.math.Multiplication
java.math.NativeBN
java.net.AddressCache
java.net.AddressCache$1
java.net.ConnectException
@ -1249,7 +1250,6 @@ org.ccil.cowan.tagsoup.Parser
org.json.JSONObject
org.kxml2.io.KXmlParser
org.kxml2.io.KXmlSerializer
org.openssl.NativeBN
org.xml.sax.Attributes
org.xml.sax.InputSource
org.xml.sax.helpers.AttributesImpl

View File

@ -6,7 +6,7 @@ LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := \
$(call all-subdir-java-files)
LOCAL_JAVA_LIBRARIES := android.test.runner
LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle
LOCAL_PACKAGE_NAME := CoreTests

View File

@ -1,126 +0,0 @@
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.core;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigest;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.ExtendedDigest;
import org.bouncycastle.crypto.digests.MD4Digest;
import org.bouncycastle.crypto.digests.MD5Digest;
import org.bouncycastle.crypto.digests.SHA1Digest;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
/**
* Implements unit tests for our JNI wrapper around OpenSSL. We use the
* existing Bouncy Castle implementation as our test oracle.
*/
public class CryptoTest extends TestCase {
/**
* Processes the two given message digests for the same data and checks
* the results. Requirement is that the results must be equal, the digest
* implementations must have the same properties, and the new implementation
* must be faster than the old one.
*
* @param oldDigest The old digest implementation, provided by Bouncy Castle
* @param newDigest The new digest implementation, provided by OpenSSL
*/
public void doTestMessageDigest(Digest oldDigest, Digest newDigest) {
final int ITERATIONS = 10;
byte[] data = new byte[1024];
byte[] oldHash = new byte[oldDigest.getDigestSize()];
byte[] newHash = new byte[newDigest.getDigestSize()];
Assert.assertEquals("Hash names must be equal", oldDigest.getAlgorithmName(), newDigest.getAlgorithmName());
Assert.assertEquals("Hash sizes must be equal", oldHash.length, newHash.length);
Assert.assertEquals("Hash block sizes must be equal", ((ExtendedDigest)oldDigest).getByteLength(), ((ExtendedDigest)newDigest).getByteLength());
for (int i = 0; i < data.length; i++) {
data[i] = (byte)i;
}
long oldTime = 0;
long newTime = 0;
for (int j = 0; j < ITERATIONS; j++) {
long t0 = System.currentTimeMillis();
for (int i = 0; i < 4; i++) {
oldDigest.update(data, 0, data.length);
}
int oldLength = oldDigest.doFinal(oldHash, 0);
long t1 = System.currentTimeMillis();
oldTime = oldTime + (t1 - t0);
long t2 = System.currentTimeMillis();
for (int i = 0; i < 4; i++) {
newDigest.update(data, 0, data.length);
}
int newLength = newDigest.doFinal(newHash, 0);
long t3 = System.currentTimeMillis();
newTime = newTime + (t3 - t2);
Assert.assertEquals("Hash sizes must be equal", oldLength, newLength);
for (int i = 0; i < oldLength; i++) {
Assert.assertEquals("Hashes[" + i + "] must be equal", oldHash[i], newHash[i]);
}
}
android.util.Log.d("CryptoTest", "Time for " + ITERATIONS + " x old hash processing: " + oldTime + " ms");
android.util.Log.d("CryptoTest", "Time for " + ITERATIONS + " x new hash processing: " + newTime + " ms");
// Assert.assertTrue("New hash should be faster", newTime < oldTime);
}
/**
* Tests the MD4 implementation.
*/
@MediumTest
public void testMD4() {
Digest oldDigest = new MD4Digest();
Digest newDigest = OpenSSLMessageDigest.getInstance("MD4");
doTestMessageDigest(oldDigest, newDigest);
}
/**
* Tests the MD5 implementation.
*/
@MediumTest
public void testMD5() {
Digest oldDigest = new MD5Digest();
Digest newDigest = OpenSSLMessageDigest.getInstance("MD5");
doTestMessageDigest(oldDigest, newDigest);
}
/**
* Tests the SHA-1 implementation.
*/
@MediumTest
public void testSHA1() {
Digest oldDigest = new SHA1Digest();
Digest newDigest = OpenSSLMessageDigest.getInstance("SHA-1");
doTestMessageDigest(oldDigest, newDigest);
}
}