1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project* @author Vladimir N. Molotkov 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project* @version $Revision$ 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project*/ 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.security.cert; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.AndroidOnly; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.KnownFailure; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ByteArrayInputStream; 372f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Projectimport java.io.IOException; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ObjectStreamException; 392f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.InvalidKeyException; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.NoSuchAlgorithmException; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.NoSuchProviderException; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Provider; 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.PublicKey; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Security; 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.SignatureException; 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.Certificate; 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.CertificateEncodingException; 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.CertificateException; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.CertificateFactory; 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Arrays; 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.MyCertificate; 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.MyFailingCertificate; 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.TestUtils; 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.testframework.serialization.SerializationTest; 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests for <code>Certificate</code> fields and methods 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Certificate.class) 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class CertificateTest extends TestCase { 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Meaningless cert encoding just for testing purposes 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final byte[] testEncoding = new byte[] { (byte) 1, (byte) 2, 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 3, (byte) 4, (byte) 5 }; 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Tests 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>Certificate(String type)</code> method<br> 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Certificate", 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testCertificate() { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(testEncoding, c1.getEncoded())); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("TEST", c1.getPublicKey().getAlgorithm()); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals( 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new byte[] { (byte) 1, (byte) 2, (byte) 3 }, c1 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getPublicKey().getEncoded())); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("TEST_FORMAT", c1.getPublicKey().getFormat()); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("TEST_TYPE", c1.getType()); 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CertificateEncodingException e) { 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected CertificateEncodingException " + e.getMessage()); 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>hashCode()</code> method<br> 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns hash of the <code>Certificate</code> instance 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws CertificateEncodingException 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "hashCode", 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testHashCode() throws CertificateEncodingException { 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c2 = new MyCertificate("TEST_TYPE", testEncoding); 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(c1.hashCode() == c2.hashCode()); 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(c1.hashCode() == new MyCertificate("TEST_TYPE", cert 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getEncoded()).hashCode()); 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(c1.hashCode() == cert.hashCode()); 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>hashCode()</code> method<br> 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: hash code of equal objects should be the same 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "hashCode", 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testHashCodeEqualsObject() { 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c2 = new MyCertificate("TEST_TYPE", testEncoding); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue((c1.hashCode() == c2.hashCode()) && c1.equals(c2)); 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(cert.equals(c1)); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getType()</code> method<br> 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns this certificate type 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getType", 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetType() { 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("TEST_TYPE", c1.getType()); 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test #1 for <code>equals(Object)</code> method<br> 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: object equals to itself 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies positive case.", 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "equals", 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Object.class} 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEqualsObject01() { 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(c1.equals(c1)); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>equals(Object)</code> method<br> 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: object equals to other <code>Certificate</code> 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * instance with the same state 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies positive case.", 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "equals", 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Object.class} 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEqualsObject02() { 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c2 = new MyCertificate("TEST_TYPE", testEncoding); 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(c1.equals(c2) && c2.equals(c1)); 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>equals(Object)</code> method<br> 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: object not equals to <code>null</code> 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies equals method with null as a parameter.", 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "equals", 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Object.class} 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEqualsObject03() { 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(c1.equals(null)); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>equals(Object)</code> method<br> 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: object not equals to other which is not 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * instance of <code>Certificate</code> 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies negative case.", 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "equals", 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Object.class} 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testEqualsObject04() { 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(c1.equals("TEST_TYPE")); 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // the following tests just call methods 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // that are abstract in <code>Certificate</code> 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // (So they just like signature tests) 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>getEncoded()</code> method<br> 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws CertificateException 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Can not verify CertificateEncodingException. indirectly tested", 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getEncoded", 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @KnownFailure("Assertion does not evaluate to true... Works in javax.Certificate") 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetEncoded() throws CertificateException { 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(c1.getEncoded()); 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays.equals(TestUtils.rootCert.getBytes(),cert.getEncoded())); 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2582f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project byte[] b = TestUtils.rootCert.getBytes(); 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b[4] = (byte) 200; 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateFactory cf = CertificateFactory.getInstance("X.509"); 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream stream = new ByteArrayInputStream(b); 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert = cf.generateCertificate(stream); 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CertificateException e) { 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //ok 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>verify(PublicKey)</code> method<br> 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws InvalidKeyException 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws CertificateException 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NoSuchAlgorithmException 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NoSuchProviderException 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws SignatureException 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies only null as a parameter.", 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "verify", 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.PublicKey.class} 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testVerifyPublicKey() 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws InvalidKeyException, 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateException, 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchAlgorithmException, 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchProviderException, 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SignatureException { 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1.verify(null); 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>verify(PublicKey,String)</code> method<br> 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws InvalidKeyException 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws CertificateException 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NoSuchAlgorithmException 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NoSuchProviderException 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws SignatureException 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies only null as parameters.", 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "verify", 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.PublicKey.class, java.lang.String.class} 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testVerifyPublicKeyString() 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws InvalidKeyException, 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateException, 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchAlgorithmException, 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchProviderException, 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SignatureException { 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1.verify(null, null); 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>toString()</code> method<br> 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "toString", 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testToString() { 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1.toString(); 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>testGetPublicKey()</code> method<br> 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getPublicKey", 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testGetPublicKey() { 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1.getPublicKey(); 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>writeReplace()</code> method<br> 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify ObjectStreamException.", 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "writeReplace", 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testWriteReplace() { 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyCertificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object obj = c1.writeReplace(); 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(obj.toString().contains( 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.security.cert.Certificate$CertificateRep")); 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ObjectStreamException e) { 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected ObjectStreamException " + e.getMessage()); 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class MyModifiablePublicKey implements PublicKey { 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private PublicKey key; 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean modifiedAlgo; 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private String algo; 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private String format; 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean modifiedFormat; 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean modifiedEncoding; 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private byte[] encoding; 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MyModifiablePublicKey(PublicKey k) { 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(); 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.key = k; 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getAlgorithm() { 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (modifiedAlgo) { 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return algo; 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return key.getAlgorithm(); 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getFormat() { 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (modifiedFormat) { 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this.format; 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return key.getFormat(); 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getEncoded() { 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (modifiedEncoding) { 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this.encoding; 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return key.getEncoded(); 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long getSerVerUID() { 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return key.serialVersionUID; 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setAlgorithm(String myAlgo) { 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project modifiedAlgo = true; 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.algo = myAlgo; 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setFormat(String myFormat) { 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project modifiedFormat = true; 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project format = myFormat; 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setEncoding(byte[] myEncoded) { 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project modifiedEncoding = true; 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project encoding = myEncoded; 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private Certificate cert; 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private Provider wrongProvider; 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private Provider useFulProvider; 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setUp() throws Exception { 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setUp(); 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestUtils.initCertPathSSCertChain(); 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert = TestUtils.rootCertificateSS; 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateFactory cf = CertificateFactory.getInstance("X.509"); 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project wrongProvider = cf.getProvider(); 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project useFulProvider = Security.getProviders("Signature.sha1WithRSAEncryption")[0]; 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>verify(PublicKey,String)</code> method<br> 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws InvalidKeyException 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws CertificateException 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NoSuchAlgorithmException 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NoSuchProviderException 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws SignatureException 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Test fails: ClassCastException when SignatureException is expected", 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "verify", 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.PublicKey.class, java.lang.String.class} 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testVerifyPublicKeyString2() throws InvalidKeyException, 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateException, NoSuchAlgorithmException, 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchProviderException, SignatureException { 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // real test 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert.verify(cert.getPublicKey(), useFulProvider.getName()); 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Exception tests 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert.verify(cert.getPublicKey(), "UnknownProvider"); 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchProviderException e) { 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4882f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // This test has side effects affecting all other tests running later 4892f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // on in the same vm instance. Maybe a better way would be to first add 4902f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // a new provider, test if it works, then remove it and test if the 4912f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // exception is thrown. 4922f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // 4932f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // Security.removeProvider(wrongProvider.getName()); 4942f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // 4952f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // try { 4962f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // cert.verify(cert.getPublicKey(), wrongProvider.getName()); 4972f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // } catch (NoSuchAlgorithmException e) { 4982f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // // ok 4992f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // } 5002f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // 5012f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project // Security.insertProviderAt(wrongProvider, oldPosition); 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PublicKey k = cert.getPublicKey(); 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyModifiablePublicKey tamperedKey = new MyModifiablePublicKey(k); 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tamperedKey.setAlgorithm("wrongAlgo"); 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert.verify(tamperedKey, provs[0].getName()); 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SignatureException e) { 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert.verify(c1.getPublicKey(), provs[0].getName()); 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidKeyException e) { 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>verify(PublicKey)</code> method<br> 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws InvalidKeyException 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws CertificateException 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NoSuchAlgorithmException 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NoSuchProviderException 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws SignatureException 5302f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project * @throws IOException 5312f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project * @throws InvalidAlgorithmParameterException 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 5352f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project notes = "Can't test exception for cases where the algorithm is unknown", 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "verify", 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.PublicKey.class} 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testVerifyPublicKey2() throws InvalidKeyException, 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateException, NoSuchAlgorithmException, 5432f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project NoSuchProviderException, SignatureException, InvalidAlgorithmParameterException, IOException { 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Certificate c1 = new MyCertificate("TEST_TYPE", testEncoding); 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c1.verify(null); 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert.verify(cert.getPublicKey()); 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PublicKey k = cert.getPublicKey(); 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyModifiablePublicKey changedEncoding = new MyModifiablePublicKey(k); 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project changedEncoding 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .setEncoding(new byte[cert.getEncoded().length - 1]); 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert.verify(c1.getPublicKey()); 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("expected InvalidKeyException"); 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidKeyException e) { 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert.verify(changedEncoding); 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Exception expected"); 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 5682f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project } 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This test just calls <code>writeReplace()</code> method<br> 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "writeReplace", 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final void testWriteReplace2() { 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyCertificate c1 = new MyFailingCertificate("TEST_TYPE", testEncoding); 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object obj = c1.writeReplace(); 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ObjectStreamException e) { 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //ok 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests serialization/deserialization compatibility. 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies serialization/deserialization compatibility. And tests default constructor", 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "!SerializationSelf", 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "writeReplace", 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Certificate.CertificateRep.readResolve", 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSerializationSelf() throws Exception { 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestUtils.initCertPathSSCertChain(); 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SerializationTest.verifySelf(TestUtils.rootCertificateSS); 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests serialization/deserialization compatibility with RI. 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies serialization/deserialization compatibility.", 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "!SerializationGolden", 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "writeReplace", 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Certificate.CertificateRep.readResolve", 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("Gets security providers with specific signature algorithm: " + 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Security.getProviders(\"Signature.sha1WithRSAEncryption\")") 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSerializationCompatibility() throws Exception { 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //create test file (once) 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// SerializationTest.createGoldenFile("device/dalvik/libcore/security/src/test/resources/serialization", this, TestUtils.rootCertificateSS); 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestUtils.initCertPathSSCertChain(); 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SerializationTest.verifyGolden(this, TestUtils.rootCertificateSS); 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 656