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 Projectpackage tests.security.cert; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.TestUtils; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ByteArrayInputStream; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.math.BigInteger; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Principal; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.PublicKey; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.CertificateException; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.CertificateFactory; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.CertificateParsingException; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.X509Certificate; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.X509Extension; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Arrays; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Collection; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Date; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.List; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Set; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.security.auth.x500.X500Principal; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(X509Certificate.class) 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class X509Certificate2Test extends junit.framework.TestCase { 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for X.509 Certificate provider 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "toString", 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_toString() throws Exception { 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression for HARMONY-3384 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateFactory certFact = CertificateFactory.getInstance("X509"); 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project X509Certificate pemCert = (X509Certificate) certFact 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .generateCertificate(new ByteArrayInputStream(TestUtils 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getX509Certificate_v3())); 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // extension value is empty sequence 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] extnValue = pemCert.getExtensionValue("2.5.29.35"); 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Arrays 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals(new byte[] {0x04, 0x02, 0x30, 0x00}, extnValue)); 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(pemCert.toString()); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // End regression for HARMONY-3384 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.security.cert.X509Certificate#X509Certificate() 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "X509Certificate", 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_X509Certificate() { 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyX509Certificate s = null; 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new MyX509Certificate(); 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception " + e.getMessage()); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("X.509", s.getType()); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "checkValidity", 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "checkValidity", 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.Date.class} 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getBasicConstraints", 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getIssuerDN", 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getIssuerUniqueID", 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getKeyUsage", 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getNotAfter", 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getNotBefore", 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSerialNumber", 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSigAlgName", 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSigAlgOID", 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSigAlgParams", 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSignature", 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSubjectDN", 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSubjectUniqueID", 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getTBSCertificate", 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getVersion", 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testAbstractMethods() { 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyX509Certificate s = new MyX509Certificate(); 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.checkValidity(); 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.checkValidity(new Date()); 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getBasicConstraints(); 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getIssuerDN(); 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getIssuerUniqueID(); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getKeyUsage(); 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getNotAfter(); 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getNotBefore(); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSerialNumber(); 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSigAlgName(); 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSigAlgOID(); 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSigAlgParams(); 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSignature(); 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSubjectDN(); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSubjectUniqueID(); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getTBSCertificate(); 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getVersion(); 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception " + e.getMessage()); 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Base64 encoded form of ASN.1 DER encoded X.509 Certificate 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // (see RFC 3280 at http://www.ietf.org/rfc/rfc3280.txt) 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // (generated by using of classes from 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // org.apache.harmony.security.x509 package) 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static String base64cert = 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "MIIByzCCATagAwIBAgICAiswCwYJKoZIhvcNAQEFMB0xGzAZBgNVBAoT" 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "EkNlcnRpZmljYXRlIElzc3VlcjAeFw0wNjA0MjYwNjI4MjJaFw0zMzAz" 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MDExNjQ0MDlaMB0xGzAZBgNVBAoTEkNlcnRpZmljYXRlIElzc3VlcjCB" 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAkLGLsPdSPDMyP1OUOKu" 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "U3cvbNK5RGaQ3bXc5aDjvApx43BcaoXgt6YD/5yXz0OsIooj5yA37bY" 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "JGcVrvFD5FMPdDd3vjNPQOep0MzG4CdbkaZde5SigPabOMQYS4oUyLBx" 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "W3LGG0mUODe5AGGqtqXU0GlKg4K2je6cCtookCUCAwEAAaMeMBwwGgYD" 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "VR0RAQH/BBAwDoEMcmZjQDgyMi5OYW1lMAsGCSqGSIb3DQEBBQOBgQBZ" 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "pVXj01dOpqnZErUQb50j8lJD1dIaz1eJTvJCSadj7ziV1VtnnapI07c" 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "XEa7ONzcHQTYTG10poHfOK/a0BaULF3GlctDESilwQYbW5BdfpAlZpbH" 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "AFLcUDh6Eq50kc0A/anh/j3mgBNuvbIMo7hHNnZB6k/prswm2BszyLD" 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "yw=="; 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static String base64certCorrect = 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "-----BEGIN CERTIFICATE-----\n" 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MIIC+jCCAragAwIBAgICAiswDAYHKoZIzjgEAwEBADAdMRswGQYDVQQKExJDZXJ0a" 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "WZpY2F0ZSBJc3N1ZXIwIhgPMTk3MDAxMTIxMzQ2NDBaGA8xOTcwMDEyNDAzMzMyMF" 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "owHzEdMBsGA1UEChMUU3ViamVjdCBPcmdhbml6YXRpb24wGTAMBgcqhkjOOAQDAQE" 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "AAwkAAQIDBAUGBwiBAgCqggIAVaOCAhQwggIQMA8GA1UdDwEB/wQFAwMBqoAwEgYD" 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "VR0TAQH/BAgwBgEB/wIBBTAUBgNVHSABAf8ECjAIMAYGBFUdIAAwZwYDVR0RAQH/B" 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "F0wW4EMcmZjQDgyMi5OYW1lggdkTlNOYW1lpBcxFTATBgNVBAoTDE9yZ2FuaXphdG" 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "lvboYaaHR0cDovL3VuaWZvcm0uUmVzb3VyY2UuSWSHBP///wCIByoDolyDsgMwDAY" 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "DVR0eAQH/BAIwADAMBgNVHSQBAf8EAjAAMIGZBgNVHSUBAf8EgY4wgYsGBFUdJQAG" 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "CCsGAQUFBwMBBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDB" 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "AYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEFBQcDBwYIKwYBBQUHAwgGCCsGAQUFBw" 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MJBggrBgEFBQgCAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GA1UdNgEB/wQDAgE" 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "BMA4GBCpNhgkBAf8EAwEBATBkBgNVHRIEXTBbgQxyZmNAODIyLk5hbWWCB2ROU05h" 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "bWWkFzEVMBMGA1UEChMMT3JnYW5pemF0aW9uhhpodHRwOi8vdW5pZm9ybS5SZXNvd" 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "XJjZS5JZIcE////AIgHKgOiXIOyAzAJBgNVHR8EAjAAMAoGA1UdIwQDAQEBMAoGA1" 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "UdDgQDAQEBMAoGA1UdIQQDAQEBMAwGByqGSM44BAMBAQADMAAwLQIUAL4QvoazNWP" 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "7jrj84/GZlhm09DsCFQCBKGKCGbrP64VtUt4JPmLjW1VxQA==\n" 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "-----END CERTIFICATE-----"; 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private X509Certificate cert; 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static String base64certTampered = "-----BEGIN CERTIFICATE-----\n" 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MIIC+jCCAragAwIBAgICAiswDAYHKoZIzjgEAwEBADAdMRswGQYDVQQKExJDZXJ0a" 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "WZpY2F0ZSBJc3N1ZXIwIhgPMTk3MDAxMTIxMzQ2NDBaGA8xOTcwMDEyNDAzMzMyMF" 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "owHzEdMBsGA1UEChMUU3ViamVjdCBPcmdhbml6YXRpb24wGTAMBgcqhkjOOAQDAQE" 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "AAwkAAQIDBAUGBwiBAgCqggIAVaOCAhQwggIQMA8GA1UdDwEB/wQFAwMBqoAwEgYD" 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "VR0TAQH/BAgwBgEB/wIBBTAUBgNVHSABAf8ECjAIMAyGBFUdIAAwZwYDVR0RAQH/B" 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "F0wW4EMcmZjQDgyMi5OYW1lggdkTlNOYW1lpBcxFTATBgNVBAoTDE9yZ2FuaXphdG" 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "lvboYaaHR0cDovL3VuaWZvcm0uUmVzb3VyY2UuSWSHBP///wCIByoDolyDsgMwDAY" 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "DVR0eAQH/BAIwADAMBgNVHSQBAf8EAjAAMIGZBgNVHSUBAf8EgY4wgYsGBFUdJQAG" 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "CCsGAQUFBwMBBggrBgEFBQcDAQYIKxYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDB" 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "AYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEFBQcDBwYIKwYBBQUHAwgGCCsGAQUFBw" 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "MJBggrBgEFBQgCAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GA1UdNgEB/wQDAgE" 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "BMA4GBCpNhgkBAf8EAwEBATBkBgNVHRIEXTBbgQxyZmNAODIyLk5hbWWCB2ROU05h" 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "bWWkFzEVMBMGA1UEChMMT3JnYW5pemF0aW9uhhpodHRwOi8vdW5pZm9ybS5SZXNvd" 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "XJjZS5JZIcE////AIgHKgOiXIOyAzAJBgNVHR8EAjAAMAoGA1UdIwQDAQEBMAoGA1" 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "UdDgQDAQEBMAoGA1UdIQQDAQEBMAwHByqGSM44BAMBAQADMAAwLQIUAL4QvoazNWP" 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "7jrj84/GZlhm09DsCFQCBKGKCGbrP64VtUt4JPmLjW1VxQA==\n" 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "-----END CERTIFICATE-----"; 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Base64 encoded form of ASN.1 DER encoded X.509 CRL 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // (see RFC 3280 at http://www.ietf.org/rfc/rfc3280.txt) 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // (generated by using of classes from 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // org.apache.harmony.security.x509 package) 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static String base64crl = 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "MIHXMIGXAgEBMAkGByqGSM44BAMwFTETMBEGA1UEChMKQ1JMIElzc3Vl" 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "chcNMDYwNDI3MDYxMzQ1WhcNMDYwNDI3MDYxNTI1WjBBMD8CAgIrFw0w" 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "NjA0MjcwNjEzNDZaMCowCgYDVR0VBAMKAQEwHAYDVR0YBBUYEzIwMDYw" 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "NDI3MDYxMzQ1LjQ2OFqgDzANMAsGA1UdFAQEBAQEBDAJBgcqhkjOOAQD" 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "AzAAMC0CFQCk0t0DTyu82QpajbBlxX9uXvUDSgIUSBN4g+xTEeexs/0k" 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "9AkjBhjF0Es="; 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // has stub implementation for abstract methods 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static class MyX509Certificate extends X509Certificate implements 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project X509Extension { 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = -7196694072296607007L; 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkValidity() { 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkValidity(Date date) { 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getVersion() { 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 3; 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public BigInteger getSerialNumber() { 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Principal getIssuerDN() { 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Principal getSubjectDN() { 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Date getNotBefore() { 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Date getNotAfter() { 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getTBSCertificate() { 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getSignature() { 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getSigAlgName() { 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getSigAlgOID() { 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getSigAlgParams() { 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean[] getIssuerUniqueID() { 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean[] getSubjectUniqueID() { 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean[] getKeyUsage() { 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getBasicConstraints() { 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void verify(PublicKey key) { 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void verify(PublicKey key, String sigProvider) { 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String toString() { 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ""; 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PublicKey getPublicKey() { 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getEncoded() { 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Set<String> getNonCriticalExtensionOIDs() { 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Set<String> getCriticalExtensionOIDs() { 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getExtensionValue(String oid) { 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean hasUnsupportedCriticalExtension() { 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.security.cert.X509Certificate#getType() 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getType", 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetType() { 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("X.509", new MyX509Certificate().getType()); 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.security.cert.X509Certificate#getIssuerX500Principal() 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getIssuerX500Principal", 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetIssuerX500Principal() { 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return valid encoding 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyX509Certificate cert = new MyX509Certificate() { 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = 638659908323741165L; 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getEncoded() { 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return TestUtils.getX509Certificate_v1(); 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(new X500Principal("CN=Z"), cert.getIssuerX500Principal()); 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.security.cert.X509Certificate#getSubjectX500Principal() 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSubjectX500Principal", 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetSubjectX500Principal() { 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return valid encoding 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MyX509Certificate cert = new MyX509Certificate() { 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = -3625913637413840694L; 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getEncoded() { 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return TestUtils.getX509Certificate_v1(); 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(new X500Principal("CN=Y"), cert.getSubjectX500Principal()); 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws CertificateException 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.security.cert.X509Certificate#getExtendedKeyUsage() 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify CertificateParsingException.", 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getExtendedKeyUsage", 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetExtendedKeyUsage() throws CertificateException { 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(new MyX509Certificate().getExtendedKeyUsage()); 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project List<String> l = cert.getExtendedKeyUsage(); 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(l); 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project l.clear(); 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project l.add("Test"); 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (l.size() > 0) { 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project l.remove(0); 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.security.cert.X509Certificate#getSubjectAlternativeNames() 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSubjectAlternativeNames", 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetSubjectAlternativeNames() 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws CertificateParsingException { 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(new MyX509Certificate().getSubjectAlternativeNames()); 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Collection<List<?>> coll = cert.getSubjectAlternativeNames(); 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //getSubjectAlternativeNames method is not supported 5082f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project assertNotNull(coll); 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project coll.clear(); 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (coll.size() > 0) { 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project coll.remove(0); 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(coll.size() < 10); 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.security.cert.X509Certificate#getIssuerAlternativeNames() 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify CertificateParsingException.", 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getIssuerAlternativeNames", 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetIssuerAlternativeNames() 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws CertificateParsingException { 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(new MyX509Certificate().getIssuerAlternativeNames()); 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Collection<List<?>> coll = cert.getIssuerAlternativeNames(); 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // getIssuerAlternativeNames returns null. 5442f099e24f514429c5c4d7d1502e32add5ad50ac6The Android Open Source Project assertNotNull(coll); 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project coll.clear(); 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (coll.size() > 0) { 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project coll.remove(0); 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(coll.size() < 10); 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = CertificateException.class, 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "CertificateException", 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testCerficateException() { 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateFactory cf = CertificateFactory.getInstance("X.509"); 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream bais = new ByteArrayInputStream( 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project base64certTampered.getBytes()); 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert = (X509Certificate) cf.generateCertificate(bais); 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CertificateException e) { 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateFactory cf = CertificateFactory.getInstance("X.509"); 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream bais = new ByteArrayInputStream(base64cert 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getBytes()); 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert = (X509Certificate) cf.generateCertificate(bais); 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CertificateException e) { 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ok 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setUp() throws Exception { 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setUp(); 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project CertificateFactory cf = CertificateFactory.getInstance("X.509"); 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream bais = new ByteArrayInputStream(base64certCorrect 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getBytes()); 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cert = (X509Certificate) cf.generateCertificate(bais); 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(cert); 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 599