X509CertSelectorTest.java revision 87eb4de6347e1be029cde77dd43ad9b1af901472
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.security.cert; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetClass; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigInteger; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidKeyException; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Principal; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PublicKey; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SignatureException; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPath; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathBuilder; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertPathBuilderException; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateEncodingException; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateException; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateExpiredException; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateFactory; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateNotYetValidException; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateParsingException; 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.PKIXBuilderParameters; 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.PKIXCertPathBuilderResult; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.TrustAnchor; 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.X509CertSelector; 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.X509Certificate; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays; 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Calendar; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection; 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collections; 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Date; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator; 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.List; 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set; 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.auth.x500.X500Principal; 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.MyCRL; 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.TestUtils; 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.TestKeyPair; 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.asn1.ASN1Boolean; 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.asn1.ASN1Integer; 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.asn1.ASN1OctetString; 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.asn1.ASN1Oid; 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.asn1.ASN1Sequence; 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.asn1.ASN1Type; 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x501.Name; 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x509.CertificatePolicies; 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x509.GeneralName; 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x509.GeneralNames; 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x509.NameConstraints; 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x509.ORAddress; 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x509.OtherName; 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x509.PolicyInformation; 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.x509.PrivateKeyUsagePeriod; 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * X509CertSelectorTest 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@TestTargetClass(X509CertSelector.class) 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class X509CertSelectorTest extends TestCase { 88fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 89fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project byte[][] constraintBytes = new byte[][] { 90fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project { 91fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 34, -96, 15, 48, 13, -127, 8, 56, 50, 50, 46, 78, 92fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 97, 109, 101, -128, 1, 0, -95, 15, 48, 13, -127, 8, 56, 93fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 50, 50, 46, 78, 97, 109, 101, -128, 1, 0}, 94fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project { 95fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 42, -96, 19, 48, 17, -127, 12, 114, 102, 99, 64, 96fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 56, 50, 50, 46, 78, 97, 109, 101, -128, 1, 0, -95, 19, 97fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 17, -127, 12, 114, 102, 99, 64, 56, 50, 50, 46, 78, 98fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 97, 109, 101, -128, 1, 0}, 99fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project { 100fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 34, -96, 15, 48, 13, -126, 8, 78, 97, 109, 101, 46, 101fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 111, 114, 103, -128, 1, 0, -95, 15, 48, 13, -126, 8, 102fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 78, 97, 109, 101, 46, 111, 114, 103, -128, 1, 0}, 103fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project { 104fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 42, -96, 19, 48, 17, -126, 12, 100, 78, 83, 46, 78, 105fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 97, 109, 101, 46, 111, 114, 103, -128, 1, 0, -95, 19, 106fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 17, -126, 12, 100, 78, 83, 46, 78, 97, 109, 101, 107fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 46, 111, 114, 103, -128, 1, 0}, 108fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project { 109fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 54, -96, 25, 48, 23, -122, 18, 104, 116, 116, 112, 110fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 58, 47, 47, 82, 101, 115, 111, 117, 114, 99, 101, 46, 111fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 73, 100, -128, 1, 0, -95, 25, 48, 23, -122, 18, 104, 112fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 116, 116, 112, 58, 47, 47, 82, 101, 115, 111, 117, 114, 113fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 99, 101, 46, 73, 100, -128, 1, 0}, 114fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project { 115fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 70, -96, 33, 48, 31, -122, 26, 104, 116, 116, 112, 116fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 58, 47, 47, 117, 110, 105, 102, 111, 114, 109, 46, 82, 117fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 101, 115, 111, 117, 114, 99, 101, 46, 73, 100, -128, 1, 118fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 0, -95, 33, 48, 31, -122, 26, 104, 116, 116, 112, 58, 119fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 47, 47, 117, 110, 105, 102, 111, 114, 109, 46, 82, 101, 120fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 115, 111, 117, 114, 99, 101, 46, 73, 100, -128, 1, 0}, 121fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project { 122fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 26, -96, 11, 48, 9, -121, 4, 1, 1, 1, 1, -128, 1, 123fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 0, -95, 11, 48, 9, -121, 4, 1, 1, 1, 1, -128, 1, 0}, 124fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project { 125fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 48, 50, -96, 23, 48, 21, -121, 16, 1, 1, 1, 1, 1, 1, 1, 126fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 1, 1, 1, 1, 1, 1, 1, 1, 1, -128, 1, 0, -95, 23, 48, 21, 127fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project -121, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 128fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project 1, -128, 1, 0}}; 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addSubjectAlternativeName(int, byte[]) 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.PARTIAL, 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "IOException checking missed", 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addSubjectAlternativeName", 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, byte[].class} 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addSubjectAlternativeNameLintLbyte_array() throws IOException { 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression for HARMONY-2487 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] types = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < types.length; i++) { 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new X509CertSelector().addSubjectAlternativeName(types[i], 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (byte[]) null); 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException for type: " + i); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addSubjectAlternativeName(int, String) 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.PARTIAL, 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies IOException.", 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addSubjectAlternativeName", 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, java.lang.String.class} 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addSubjectAlternativeNameLintLjava_lang_String() { 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression for HARMONY-727 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] types = { 0, 2, 3, 4, 5, 6, 7, 8 }; 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < types.length; i++) { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new X509CertSelector().addSubjectAlternativeName(types[i], 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "0xDFRF"); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException expected"); 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addPathToName(int, byte[]) 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.PARTIAL, 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies NullPointerException.", 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addPathToName", 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, byte[].class} 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addPathToNameLintLbyte_array() throws IOException { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression for HARMONY-2487 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] types = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < types.length; i++) { 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new X509CertSelector().addPathToName(types[i], (byte[]) null); 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("No expected NullPointerException for type: " + i); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addPathToName(int, String) 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.PARTIAL, 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies IOException.", 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addPathToName", 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, java.lang.String.class} 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addPathToNameLintLjava_lang_String() { 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression for HARMONY-724 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int type = 0; type <= 8; type++) { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new X509CertSelector().addPathToName(type, (String) null); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException expected!"); 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException ioe) { 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#X509CertSelector() 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "X509CertSelector", 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_X509CertSelector() { 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = null; 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector = new X509CertSelector(); 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception " + e.getMessage()); 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(-1, selector.getBasicConstraints()); 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.getMatchAllSubjectAltNames()); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#clone() 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "clone", 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_clone() throws Exception { 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector1 = (X509CertSelector) selector.clone(); 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getMatchAllSubjectAltNames(), selector1 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getMatchAllSubjectAltNames()); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getAuthorityKeyIdentifier(), selector1 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getAuthorityKeyIdentifier()); 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getBasicConstraints(), selector1 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getBasicConstraints()); 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getCertificate(), selector1.getCertificate()); 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getCertificateValid(), selector1 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getCertificateValid()); 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getExtendedKeyUsage(), selector1 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getExtendedKeyUsage()); 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getIssuer(), selector1.getIssuer()); 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getIssuerAsBytes(), selector1.getIssuerAsBytes()); 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getIssuerAsString(), selector1 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getIssuerAsString()); 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getKeyUsage(), selector1.getKeyUsage()); 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getNameConstraints(), selector1 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getNameConstraints()); 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getPathToNames(), selector1.getPathToNames()); 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getPolicy(), selector1.getPolicy()); 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getPrivateKeyValid(), selector1 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getPrivateKeyValid()); 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getSerialNumber(), selector1.getSerialNumber()); 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getSubject(), selector1.getSubject()); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getSubjectAlternativeNames(), selector1 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAlternativeNames()); 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getSubjectAsBytes(), selector1 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAsBytes()); 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getSubjectAsString(), selector1 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAsString()); 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getSubjectKeyIdentifier(), selector1 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectKeyIdentifier()); 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getSubjectPublicKey(), selector1 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectPublicKey()); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(selector.getSubjectPublicKeyAlgID(), selector1 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectPublicKeyAlgID()); 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector = null; 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.clone(); 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getAuthorityKeyIdentifier() 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getAuthorityKeyIdentifier", 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getAuthorityKeyIdentifier() { 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] akid1 = new byte[] { 4, 5, 1, 2, 3, 4, 5 }; // random value 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] akid2 = new byte[] { 4, 5, 5, 4, 3, 2, 1 }; // random value 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getAuthorityKeyIdentifier()); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setAuthorityKeyIdentifier(akid1); 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned keyID should be equal to specified", Arrays 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(akid1, selector.getAuthorityKeyIdentifier())); 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned keyID should be equal to specified", Arrays 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(akid1, selector.getAuthorityKeyIdentifier())); 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned keyID should differ", Arrays.equals(akid2, 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getAuthorityKeyIdentifier())); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getBasicConstraints() 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getBasicConstraints", 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getBasicConstraints() { 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] validValues = { 2, 1, 0, 1, 2, 3, 10, 20 }; 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setBasicConstraints(validValues[i]); 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(validValues[i], selector.getBasicConstraints()); 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getCertificate() 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getCertificate", 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getCertificate() throws CertificateException { 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory certFact = CertificateFactory.getInstance("X509"); 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509Certificate cert1 = (X509Certificate) certFact 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .generateCertificate(new ByteArrayInputStream(TestUtils 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getX509Certificate_v3())); 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509Certificate cert2 = (X509Certificate) certFact 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .generateCertificate(new ByteArrayInputStream(TestUtils 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getX509Certificate_v1())); 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert1); 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(cert1, selector.getCertificate()); 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert2); 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(cert2, selector.getCertificate()); 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(null); 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getCertificate()); 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getCertificateValid() 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getCertificateValid", 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getCertificateValid() { 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date1 = new Date(100); 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date2 = new Date(200); 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date3 = Calendar.getInstance().getTime(); 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getCertificateValid()); 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(date1); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned date should be equal to specified", date1 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getCertificateValid())); 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getCertificateValid().setTime(200); 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned date should be equal to specified", date1 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getCertificateValid())); 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned date should differ", date2.equals(selector 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getCertificateValid())); 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(date3); 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned date should be equal to specified", date3 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getCertificateValid())); 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(null); 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getCertificateValid()); 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getExtendedKeyUsage() 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getExtendedKeyUsage", 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getExtendedKeyUsage() { 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> ku = new HashSet<String>(Arrays 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .asList(new String[] { "1.3.6.1.5.5.7.3.1", 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.2", "1.3.6.1.5.5.7.3.3", 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.4", "1.3.6.1.5.5.7.3.8", 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.9", "1.3.6.1.5.5.7.3.5", 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.6", "1.3.6.1.5.5.7.3.7" })); 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getExtendedKeyUsage()); 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setExtendedKeyUsage(ku); 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "The returned extendedKeyUsage should be equal to specified", 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ku.equals(selector.getExtendedKeyUsage())); 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getExtendedKeyUsage().add("KRIBLEGRABLI"); 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("The returned Set should be immutable."); 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (UnsupportedOperationException e) { 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getIssuer() 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getIssuer", 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getIssuer() { 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal("O=First Org."); 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal("O=Second Org."); 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getIssuer()); 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss1); 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned issuer should be equal to specified", iss1, 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getIssuer()); 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned issuer should differ", iss2.equals(selector 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getIssuer())); 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getIssuerAsBytes() 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getIssuerAsBytes", 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getIssuerAsBytes() { 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name1 = new byte[] 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=First Org." issuer name; 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115, 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 116, 32, 79, 114, 103, 46 }; 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name2 = new byte[] 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=Second Org." issuer name; 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111, 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 110, 100, 32, 79, 114, 103, 46 }; 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal(name1); 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal(name2); 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getIssuerAsBytes()); 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss1); 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned issuer should be equal to specified", 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Arrays.equals(name1, selector.getIssuerAsBytes())); 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned issuer should differ", name2 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getIssuerAsBytes())); 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss2); 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned issuer should be equal to specified", 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Arrays.equals(name2, selector.getIssuerAsBytes())); 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getIssuerAsString() 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getIssuerAsString", 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getIssuerAsString() { 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name1 = "O=First Org."; 510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name2 = "O=Second Org."; 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal(name1); 512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal(name2); 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getIssuerAsString()); 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss1); 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned issuer should be equal to specified", name1, 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getIssuerAsString()); 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned issuer should differ", name2.equals(selector 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getIssuerAsString())); 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss2); 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned issuer should be equal to specified", name2, 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getIssuerAsString()); 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getKeyUsage() 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getKeyUsage", 533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getKeyUsage() { 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean[] ku = new boolean[] { true, false, true, false, true, false, 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project true, false, true }; 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getKeyUsage()); 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setKeyUsage(ku); 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned date should be equal to specified", Arrays 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(ku, selector.getKeyUsage())); 544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean[] result = selector.getKeyUsage(); 545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result[0] = !result[0]; 546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned keyUsage should be equal to specified", Arrays 547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(ku, selector.getKeyUsage())); 548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getMatchAllSubjectAltNames() 552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getMatchAllSubjectAltNames", 557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getMatchAllSubjectAltNames() { 560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The matchAllNames initially should be true", selector 562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getMatchAllSubjectAltNames()); 563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setMatchAllSubjectAltNames(false); 564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The value should be false", selector 565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getMatchAllSubjectAltNames()); 566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getNameConstraints() 570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getNameConstraints", 575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getNameConstraints() throws IOException { 578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 579fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// Used to generate following byte array 580fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralName[] name_constraints = new GeneralName[] { 581fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(1, "822.Name"), 582fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(1, "rfc@822.Name"), 583fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(2, "Name.org"), 584fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(2, "dNS.Name.org"), 585fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 586fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(6, "http://Resource.Id"), 587fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(6, "http://uniform.Resource.Id"), 588fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(7, "1.1.1.1"), 589fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 590fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 591fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1, 1, 1, 1, 1 }), }; 592fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 593fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// constraintBytes = new byte[name_constraints.length][]; 594fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 595fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// for (int i = 0; i < name_constraints.length; i++) { 596fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralSubtree subtree = new GeneralSubtree(name_constraints[i]); 597fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralSubtrees subtrees = new GeneralSubtrees(); 598fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// subtrees.addSubtree(subtree); 599fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// NameConstraints constraints = new NameConstraints(subtrees, 600fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// subtrees); 601fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// constraintBytes[i] = constraints.getEncoded(); 602fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// } 603fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// System.out.println("XXX"+Arrays.deepToString(constraintBytes)+"XXX"); 604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 607fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project for (int i = 0; i < constraintBytes.length; i++) { 608fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project selector.setNameConstraints(constraintBytes[i]); 609fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project assertTrue(Arrays.equals(constraintBytes[i], selector 610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getNameConstraints())); 611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getPathToNames() 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPathToNames", 621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getPathToNames() { 624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san0 = new GeneralName(new OtherName("1.2.3.4.5", 626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new byte[] { 1, 2, 0, 1 })); 627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san3 = new GeneralName(new ORAddress()); 630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san4 = new GeneralName(new Name("O=Organization")); 631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san6 = new GeneralName(6, "http://uniform.Resource.Id"); 632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san7 = new GeneralName(7, "1.1.1.1"); 633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san8 = new GeneralName(8, "1.2.3.4444.55555"); 634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san0); 637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san1); 638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san3); 640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san4); 641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san6); 642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san7); 643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san8); 644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san0); 646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setMatchAllSubjectAltNames(true); 651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPathToNames(null); 653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectAlternativeNames criteria.", selector 655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<List<?>> sans = sans1.getPairsList(); 659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPathToNames(sans); 661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<List<?>> col = selector.getPathToNames(); 663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator<List<?>> i = col.iterator(); 664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (i.hasNext()) { 665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object o = i.next(); 666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(o instanceof List)) { 667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected a List"); 668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getPolicy() 679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPolicy", 684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getPolicy() throws IOException { 687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] policies1 = new String[] { "1.3.6.1.5.5.7.3.1", 688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.2", "1.3.6.1.5.5.7.3.3", "1.3.6.1.5.5.7.3.4", 689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.8", "1.3.6.1.5.5.7.3.9", "1.3.6.1.5.5.7.3.5", 690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.6", "1.3.6.1.5.5.7.3.7" }; 691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] policies2 = new String[] { "1.3.6.7.3.1" }; 693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> p1 = new HashSet<String>(Arrays.asList(policies1)); 695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> p2 = new HashSet<String>(Arrays.asList(policies2)); 696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(null); 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getPolicy()); 701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(p1); 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned date should be equal to specified", p1, selector.getPolicy()); 704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(p2); 706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned date should be equal to specified", p2, selector.getPolicy()); 707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getPrivateKeyValid() 711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPrivateKeyValid", 716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getPrivateKeyValid() { 719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date1 = new Date(100); 720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date2 = new Date(200); 721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getPrivateKeyValid()); 724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPrivateKeyValid(date1); 725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned date should be equal to specified", date1 726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getPrivateKeyValid())); 727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getPrivateKeyValid().setTime(200); 728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned date should be equal to specified", date1 729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getPrivateKeyValid())); 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned date should differ", date2.equals(selector 731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getPrivateKeyValid())); 732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSerialNumber() 736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSerialNumber", 741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSerialNumber() { 744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger ser1 = new BigInteger("10000"); 745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger ser2 = new BigInteger("10001"); 746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getSerialNumber()); 749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSerialNumber(ser1); 750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned serial number should be equal to specified", 751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ser1, selector.getSerialNumber()); 752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned serial number should differ", ser2 753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getSerialNumber())); 754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubject() 758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubject", 763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubject() { 766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal("O=First Org."); 767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal("O=Second Org."); 768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getSubject()); 771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub1); 772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned subject should be equal to specified", sub1, 773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getSubject()); 774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned subject should differ", sub2.equals(selector 775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubject())); 776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectAlternativeNames() 780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectAlternativeNames", 785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectAlternativeNames() { 788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans = new GeneralNames(); 793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans.addName(san1); 794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans.addName(san2); 795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert_1 = new TestCert(sans); 797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAlternativeNames()); 801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectAlternativeNames(sans.getPairsList()); 803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert_1)); 805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getSubjectAlternativeNames().clear(); 806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The modification of initialization object " 807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "should not affect the modification " 808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "of internal object.", selector.match(cert_1)); 809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectAsBytes() 817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectAsBytes", 822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectAsBytes() { 825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name1 = new byte[] 826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=First Org." issuer name; 827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115, 828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 116, 32, 79, 114, 103, 46 }; 829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name2 = new byte[] 830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=Second Org." issuer name; 831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111, 832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 110, 100, 32, 79, 114, 103, 46 }; 833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal(name1); 835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal(name2); 836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAsBytes()); 841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub1); 842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned issuer should be equal to specified", 843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Arrays.equals(name1, selector.getSubjectAsBytes())); 844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned issuer should differ", name2 845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getSubjectAsBytes())); 846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub2); 847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned issuer should be equal to specified", 848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Arrays.equals(name2, selector.getSubjectAsBytes())); 849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectAsString() 856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectAsString", 861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectAsString() { 864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name1 = "O=First Org."; 865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name2 = "O=Second Org."; 866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal(name1); 867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal(name2); 868adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getSubjectAsString()); 871adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub1); 872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned subject should be equal to specified", 873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project name1, selector.getSubjectAsString()); 874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned subject should differ", name2.equals(selector 875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAsString())); 876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub2); 877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned subject should be equal to specified", 878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project name2, selector.getSubjectAsString()); 879adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectKeyIdentifier() 883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectKeyIdentifier", 888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectKeyIdentifier() { 891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] skid1 = new byte[] { 1, 2, 3, 4, 5 }; // random value 892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] skid2 = new byte[] { 4, 5, 5, 4, 3, 2, 1 }; // random value 893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectKeyIdentifier()); 897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectKeyIdentifier(skid1); 898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned keyID should be equal to specified", Arrays 899adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(skid1, selector.getSubjectKeyIdentifier())); 900adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getSubjectKeyIdentifier()[0]++; 901adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned keyID should be equal to specified", Arrays 902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(skid1, selector.getSubjectKeyIdentifier())); 903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned keyID should differ", Arrays.equals(skid2, 904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getSubjectKeyIdentifier())); 905adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectPublicKey() 909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 913adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectPublicKey", 914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectPublicKey() throws Exception { 917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 918adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // SubjectPublicKeyInfo ::= SEQUENCE { 919adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // algorithm AlgorithmIdentifier, 920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // subjectPublicKey BIT STRING } 921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] enc = { 0x30, 0x0E, // SEQUENCE 922adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x30, 0x07, // SEQUENCE 923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x06, 0x02, 0x03, 0x05,// OID 924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x01, 0x01, 0x07, // ANY 925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x03, 0x03, 0x01, 0x01, 0x06, // subjectPublicKey 926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 927adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 928adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(enc); 931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey key = selector.getSubjectPublicKey(); 932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("0.3.5", key.getAlgorithm()); 933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("X.509", key.getFormat()); 934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(Arrays.equals(enc, key.getEncoded())); 935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(key.toString()); 936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project key = new MyPublicKey(); 938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(key); 940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey keyActual = selector.getSubjectPublicKey(); 941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(key, keyActual); 942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(key.getAlgorithm(), keyActual.getAlgorithm()); 943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectPublicKeyAlgID() 947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 949adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 950adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectPublicKeyAlgID", 952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectPublicKeyAlgID() { 955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 956adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] validOIDs = { "0.0.20", "1.25.0", "2.0.39", "0.2.10", "1.35.15", 958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "2.17.89" }; 959adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 960adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectPublicKeyAlgID()); 962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validOIDs.length; i++) { 964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(validOIDs[i]); 966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(validOIDs[i], selector.getSubjectPublicKeyAlgID()); 967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.out.println("t = " + e.getMessage()); 969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //fail("Unexpected exception " + e.getMessage()); 970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 97387eb4de6347e1be029cde77dd43ad9b1af901472Urs Grob String pkaid1 = "1.2.840.113549.1.1.1"; // RSA encryption 97487eb4de6347e1be029cde77dd43ad9b1af901472Urs Grob String pkaid2 = "1.2.840.113549.1.1.4"; // MD5 with RSA encryption 975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(pkaid1); 978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned oid should be equal to specified", pkaid1 982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getSubjectPublicKeyAlgID())); 983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned oid should differ", pkaid2.equals(selector 984adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectPublicKeyAlgID())); 985adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#match(java.security.cert.Certificate) 989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "match", 994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.security.cert.Certificate.class} 995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 996adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_matchLjava_security_cert_Certificate() 997adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 998adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(null)); 1000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1001adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory certFact = CertificateFactory.getInstance("X509"); 1002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509Certificate cert1 = (X509Certificate) certFact 1003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .generateCertificate(new ByteArrayInputStream(TestUtils 1004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getX509Certificate_v3())); 1005adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1006adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509Certificate cert2 = (X509Certificate) certFact 1007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .generateCertificate(new ByteArrayInputStream(TestUtils 1008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getX509Certificate_v1())); 1009adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1010adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert1); 1011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert1)); 1012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(cert2)); 1013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert2); 1015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(cert1)); 1016adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert2)); 1017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1018adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setAuthorityKeyIdentifier(byte[]) 1021adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1022adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1023adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1024adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1025adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setAuthorityKeyIdentifier", 1026adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1027adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1028adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setAuthorityKeyIdentifierLB$() throws CertificateException { 1029adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1030adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1031adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] akid1 = new byte[] { 1, 2, 3, 4, 5 }; // random value 1032adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] akid2 = new byte[] { 5, 4, 3, 2, 1 }; // random value 1033adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(akid1); 1034adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(akid2); 1035adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1036adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setAuthorityKeyIdentifier(null); 1037adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1038adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1039adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1040adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1041adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getAuthorityKeyIdentifier()); 1042adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setAuthorityKeyIdentifier(akid1); 1044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should not match the selection criteria.", 1045adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1046adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1047adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setAuthorityKeyIdentifier(akid2); 1049adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should not match the selection criteria.", 1052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project akid2[0]++; 1055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1059adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setBasicConstraints(int) 1061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setBasicConstraints", 1066adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class} 1067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setBasicConstraintsLint() { 1069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1070adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] invalidValues = { -3, -4, -5, 1000000000 }; 1071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 1072adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1073adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setBasicConstraints(-3); 1074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException expected"); 1075adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 1076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 1077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] validValues = { -2, -1, 0, 1, 2, 3, 10, 20 }; 1081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 1082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setBasicConstraints(validValues[i]); 1083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(validValues[i], selector.getBasicConstraints()); 1084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1085adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1087adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1088adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setCertificate(java.security.cert.Certificate) 1089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1090adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1091adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setCertificate", 1094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.security.cert.X509Certificate.class} 1095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setCertificateLjava_security_cert_X509Certificate() 1097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert("same certificate"); 1100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert("other certificate"); 1101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(null); 1104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match in the case of null " 1105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "certificateEquals criteria.", selector.match(cert1) 1106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert1); 1108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert2); 1113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(null); 1116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getCertificate()); 1117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setCertificateValid(java.util.Date) 1121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setCertificateValid", 1126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Date.class} 1127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setCertificateValidLjava_util_Date() 1129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date1 = new Date(100); 1133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date2 = new Date(200); 1134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(date1); 1135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(date2); 1136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(null); 1138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getCertificateValid()); 1139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(date1); 1140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(date2); 1145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project date2.setTime(300); 1146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setExtendedKeyUsage(Set<String>) 1152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setExtendedKeyUsage", 1157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Set.class} 1158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setExtendedKeyUsageLjava_util_Set() 1160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> ku1 = new HashSet<String>(Arrays 1162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .asList(new String[] { "1.3.6.1.5.5.7.3.1", 1163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.2", "1.3.6.1.5.5.7.3.3", 1164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.4", "1.3.6.1.5.5.7.3.8", 1165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.9", "1.3.6.1.5.5.7.3.5", 1166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.6", "1.3.6.1.5.5.7.3.7" })); 1167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> ku2 = new HashSet<String>(Arrays.asList(new String[] { 1168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.1", "1.3.6.1.5.5.7.3.2", "1.3.6.1.5.5.7.3.3", 1169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.4", "1.3.6.1.5.5.7.3.8", "1.3.6.1.5.5.7.3.9", 1170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.5", "1.3.6.1.5.5.7.3.6" })); 1171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(ku1); 1172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(ku2); 1173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setExtendedKeyUsage(null); 1178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "extendedKeyUsage criteria.", selector.match(cert1) 1183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setExtendedKeyUsage(ku1); 1186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ku1, selector.getExtendedKeyUsage()); 1190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setExtendedKeyUsage(ku2); 1193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ku2, selector.getExtendedKeyUsage()); 1197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setIssuer(byte[]) 1201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setIssuer", 1206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setIssuerLB$() throws CertificateException { 1209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name1 = new byte[] 1210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=First Org." issuer name; 1211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115, 1212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 116, 32, 79, 114, 103, 46 }; 1213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name2 = new byte[] 1214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=Second Org." issuer name; 1215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111, 1216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 110, 100, 32, 79, 114, 103, 46 }; 1217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal(name1); 1218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal(name2); 1219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(iss1); 1220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(iss2); 1221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer((byte[]) null); 1226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null issuer criteria.", selector.match(cert1) 1231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(name1); 1234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(name2); 1243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setIssuer(java.lang.String) 1252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setIssuer", 1257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class} 1258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setIssuerLjava_lang_String() throws CertificateException { 1260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name1 = "O=First Org."; 1262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name2 = "O=Second Org."; 1263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal(name1); 1264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal(name2); 1265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(iss1); 1266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(iss2); 1267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer((String) null); 1272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null issuer criteria.", selector.match(cert1) 1277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(name1); 1280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(name2); 1289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setIssuer(javax.security.auth.x500.X500Principal) 1298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setIssuer", 1303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {javax.security.auth.x500.X500Principal.class} 1304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setIssuerLjavax_security_auth_x500_X500Principal() 1306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal("O=First Org."); 1308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal("O=Second Org."); 1309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(iss1); 1310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(iss2); 1311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer((X500Principal) null); 1314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null issuer criteria.", selector.match(cert1) 1316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss1); 1318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss2); 1323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setKeyUsage(boolean) 1329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setKeyUsage", 1334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {boolean[].class} 1335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setKeyUsageZ() throws CertificateException { 1337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean[] ku1 = new boolean[] { true, true, true, true, true, true, 1338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project true, true, true }; 1339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // decipherOnly is disallowed 1340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean[] ku2 = new boolean[] { true, true, true, true, true, true, 1341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project true, true, false }; 1342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(ku1); 1343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(ku2); 1344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert3 = new TestCert((boolean[]) null); 1345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setKeyUsage(null); 1349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "keyUsage criteria.", selector.match(cert1) 1351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setKeyUsage(ku1); 1353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate which does not have a keyUsage extension " 1358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "implicitly allows all keyUsage values.", selector 1359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert3)); 1360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setKeyUsage(ku2); 1361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ku2[0] = !ku2[0]; 1362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setMatchAllSubjectAltNames(boolean) 1368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setMatchAllSubjectAltNames", 1373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {boolean.class} 1374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setMatchAllSubjectAltNamesZ() { 1376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert = new TestCert(); 1377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert)); 1380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(null)); 1382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setNameConstraints(byte[] 1386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * bytes) 1387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setNameConstraints", 1392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setNameConstraintsLB$() throws IOException { 1395fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralName[] name_constraints = new GeneralName[] { 1396fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(1, "822.Name"), 1397fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(1, "rfc@822.Name"), 1398fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(2, "Name.org"), 1399fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(2, "dNS.Name.org"), 1400fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1401fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(6, "http://Resource.Id"), 1402fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(6, "http://uniform.Resource.Id"), 1403fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(7, "1.1.1.1"), 1404fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1405fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1406fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1, 1, 1, 1, 1 }), }; 1407fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1408fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// for (int i = 0; i < name_constraints.length; i++) { 1409fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralSubtree subtree = new GeneralSubtree(name_constraints[i]); 1410fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralSubtrees subtrees = new GeneralSubtrees(); 1411fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// subtrees.addSubtree(subtree); 1412fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// NameConstraints constraints = new NameConstraints(subtrees, 1413fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// subtrees); 1414fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// } 1415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1417fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project for (int i = 0; i < constraintBytes.length; i++) { 1418fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project selector.setNameConstraints(constraintBytes[i]); 1419fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project assertTrue(Arrays.equals(constraintBytes[i], selector 1420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getNameConstraints())); 1421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setPathToNames(Collection<List<?>>) 1426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setPathToNames", 1431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Collection.class} 1432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setPathToNamesLjava_util_Collection() { 1434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san0 = new GeneralName(new OtherName("1.2.3.4.5", 1436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new byte[] { 1, 2, 0, 1 })); 1437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 1438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 1439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san3 = new GeneralName(new ORAddress()); 1440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san4 = new GeneralName(new Name("O=Organization")); 1441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san6 = new GeneralName(6, "http://uniform.Resource.Id"); 1442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san7 = new GeneralName(7, "1.1.1.1"); 1443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san8 = new GeneralName(8, "1.2.3.4444.55555"); 1444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 1446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san0); 1447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san1); 1448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 1449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san3); 1450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san4); 1451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san6); 1452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san7); 1453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san8); 1454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 1455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san0); 1456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 1458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 1459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setMatchAllSubjectAltNames(true); 1461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPathToNames(null); 1463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectAlternativeNames criteria.", selector 1465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 1466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<List<?>> sans = sans1.getPairsList(); 1469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPathToNames(sans); 1471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<List<?>> col = selector.getPathToNames(); 1473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator<List<?>> i = col.iterator(); 1474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (i.hasNext()) { 1475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object o = i.next(); 1476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(o instanceof List)) { 1477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected a List"); 1478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 1483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setPolicy(Set<String>) 1489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setPolicy", 1494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Set.class} 1495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setPolicyLjava_util_Set() throws IOException { 1497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] policies1 = new String[] { "1.3.6.1.5.5.7.3.1", 1498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.2", "1.3.6.1.5.5.7.3.3", "1.3.6.1.5.5.7.3.4", 1499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.8", "1.3.6.1.5.5.7.3.9", "1.3.6.1.5.5.7.3.5", 1500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.6", "1.3.6.1.5.5.7.3.7" }; 1501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] policies2 = new String[] { "1.3.6.7.3.1" }; 1503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> p1 = new HashSet<String>(Arrays.asList(policies1)); 1505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> p2 = new HashSet<String>(Arrays.asList(policies2)); 1506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(policies1); 1510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(policies2); 1511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(null); 1513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "privateKeyValid criteria.", selector.match(cert1) 1515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(p1); 1518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(p2); 1524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setPrivateKeyValid(java.util.Date) 1532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setPrivateKeyValid", 1537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Date.class} 1538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setPrivateKeyValidLjava_util_Date() 1540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date1 = new Date(100000000); 1542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date2 = new Date(200000000); 1543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date3 = new Date(300000000); 1544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date4 = new Date(150000000); 1545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date5 = new Date(250000000); 1546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(date1, date2); 1547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(date2, date3); 1548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPrivateKeyValid(null); 1552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "privateKeyValid criteria.", selector.match(cert1) 1554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPrivateKeyValid(date4); 1556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPrivateKeyValid(date5); 1561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project date5.setTime(date4.getTime()); 1562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSerialNumber(java.math.BigInteger) 1568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSerialNumber", 1573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.math.BigInteger.class} 1574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSerialNumberLjava_math_BigInteger() 1576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger ser1 = new BigInteger("10000"); 1578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger ser2 = new BigInteger("10001"); 1579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(ser1); 1580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(ser2); 1581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSerialNumber(null); 1584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "serialNumber criteria.", selector.match(cert1) 1586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSerialNumber(ser1); 1588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSerialNumber(ser2); 1593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubject(byte[]) 1599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubject", 1604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectLB$() throws CertificateException { 1607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name1 = new byte[] 1608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=First Org." issuer name; 1609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115, 1610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 116, 32, 79, 114, 103, 46 }; 1611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name2 = new byte[] 1612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=Second Org." issuer name; 1613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111, 1614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 110, 100, 32, 79, 114, 103, 46 }; 1615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal(name1); 1616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal(name2); 1617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sub1); 1618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sub2); 1619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject((byte[]) null); 1624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null issuer criteria.", selector.match(cert1) 1629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(name1); 1632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(name2); 1641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubject(java.lang.String) 1650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubject", 1655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class} 1656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectLjava_lang_String() throws CertificateException { 1658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name1 = "O=First Org."; 1659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name2 = "O=Second Org."; 1660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal(name1); 1661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal(name2); 1662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sub1); 1663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sub2); 1664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject((String) null); 1668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null subject criteria.", selector 1673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 1674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(name1); 1677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(name2); 1686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubject(javax.security.auth.x500.X500Principal) 1695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubject", 1700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {javax.security.auth.x500.X500Principal.class} 1701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectLjavax_security_auth_x500_X500Principal() 1703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal("O=First Org."); 1705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal("O=Second Org."); 1706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sub1); 1707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sub2); 1708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject((X500Principal) null); 1711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null subjcet criteria.", selector 1713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 1714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub1); 1716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub2); 1721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectAlternativeNames(Collection<List<?>>) 1727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectAlternativeNames", 1732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Collection.class} 1733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectAlternativeNamesLjava_util_Collection() { 1735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san0 = new GeneralName(new OtherName("1.2.3.4.5", 1738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new byte[] { 1, 2, 0, 1 })); 1739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 1740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 1741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san3 = new GeneralName(new ORAddress()); 1742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san4 = new GeneralName(new Name("O=Organization")); 1743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san6 = new GeneralName(6, "http://uniform.Resource.Id"); 1744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san7 = new GeneralName(7, "1.1.1.1"); 1745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san8 = new GeneralName(8, "1.2.3.4444.55555"); 1746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 1748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san0); 1749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san1); 1750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 1751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san3); 1752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san4); 1753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san6); 1754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san7); 1755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san8); 1756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 1757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san0); 1758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 1760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 1761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setMatchAllSubjectAltNames(true); 1763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectAlternativeNames(null); 1765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectAlternativeNames criteria.", selector 1767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 1768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<List<?>> sans = sans1.getPairsList(); 1771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectAlternativeNames(sans); 1773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<List<?>> col = selector.getSubjectAlternativeNames(); 1775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator<List<?>> i = col.iterator(); 1776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (i.hasNext()) { 1777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object o = i.next(); 1778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(o instanceof List)) { 1779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("expected a List"); 1780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 1785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectKeyIdentifier(byte[]) 1791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectKeyIdentifier", 1796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectKeyIdentifierLB$() throws CertificateException { 1799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] skid1 = new byte[] { 1, 2, 3, 4, 5 }; // random value 1800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] skid2 = new byte[] { 5, 4, 3, 2, 1 }; // random value 1801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(skid1); 1802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(skid2); 1803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectKeyIdentifier(null); 1806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "serialNumber criteria.", selector.match(cert1) 1808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectKeyIdentifier(skid1); 1810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectKeyIdentifier(skid2); 1815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project skid2[0]++; 1816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectPublicKey(byte[]) 1822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectPublicKey", 1827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectPublicKeyLB$() throws Exception { 1830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //SubjectPublicKeyInfo ::= SEQUENCE { 1832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // algorithm AlgorithmIdentifier, 1833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // subjectPublicKey BIT STRING } 1834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] enc = { 0x30, 0x0E, // SEQUENCE 1835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x30, 0x07, // SEQUENCE 1836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x06, 0x02, 0x03, 0x05,//OID 1837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x01, 0x01, 0x07, //ANY 1838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x03, 0x03, 0x01, 0x01, 0x06, // subjectPublicKey 1839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 1840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(enc); 1844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey key = selector.getSubjectPublicKey(); 1845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("0.3.5", key.getAlgorithm()); 1846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("X.509", key.getFormat()); 1847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(Arrays.equals(enc, key.getEncoded())); 1848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(key.toString()); 1849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectPublicKey(java.security.PublicKey key) 1853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectPublicKey", 1858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.security.PublicKey.class} 1859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectPublicKeyLjava_security_PublicKey() 1861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pkey1 = null; 1863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pkey2 = null; 1864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pkey1 = new TestKeyPair("RSA").getPublic(); 1866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pkey2 = new TestKeyPair("DSA").getPublic(); 1867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 1868adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected Exception was thrown: " + e.getMessage()); 1869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1871adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(pkey1); 1872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(pkey2); 1873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey((PublicKey) null); 1876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectPublicKey criteria.", selector.match(cert1) 1878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1879adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(pkey1); 1880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(pkey2); 1885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectPublicKeyAlgID(java.lang.String) 1891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectPublicKeyAlgID", 1896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class} 1897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectPublicKeyAlgIDLjava_lang_String() 1899adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1900adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1901adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String pkaid1 = "1.2.840.113549.1.1.1"; // RSA (source: 1903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // http://asn1.elibel.tm.fr) 1904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String pkaid2 = "1.2.840.10040.4.1"; // DSA (source: 1905adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // http://asn1.elibel.tm.fr) 1906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pkey1; 1907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pkey2; 1908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pkey1 = new TestKeyPair("RSA").getPublic(); 1910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pkey2 = new TestKeyPair("DSA").getPublic(); 1911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 1912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 1913adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected Exception was thrown: " + e.getMessage()); 1914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 1915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(pkey1); 1917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(pkey2); 1918adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1919adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(null); 1921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1922adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectPublicKeyAlgID criteria.", selector.match(cert1) 1927adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1928adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] validOIDs = { "0.0.20", "1.25.0", "2.0.39", "0.2.10", "1.35.15", 1930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "2.17.89", "2.5.29.16", "2.5.29.17", "2.5.29.30", "2.5.29.32", 1931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "2.5.29.37" }; 1932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validOIDs.length; i++) { 1934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(validOIDs[i]); 1936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(validOIDs[i], selector.getSubjectPublicKeyAlgID()); 1937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception " + e.getMessage()); 1939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] invalidOIDs = { "0.20", "1.25", "2.39", "3.10"}; 1943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidOIDs.length; i++) { 1944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(invalidOIDs[i]); 1946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException wasn't thrown for " + invalidOIDs[i]); 1947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1949adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1950adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(pkaid1); 1953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1956adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1959adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1960adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(pkaid2); 1962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#toString() 1971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "toString", 1976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 1977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toString() { 1979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(selector.toString()); 1981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public class MyPublicKey implements PublicKey { 1984adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 2899528375354645752L; 1985adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public MyPublicKey() { 1987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(); 1988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getAlgorithm() { 1991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return "PublicKey"; 1992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getFormat() { 1995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return "Format"; 1996adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1997adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1998adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getEncoded() { 1999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new byte[0]; 2000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2001adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public long getSerVerUID() { 2003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return serialVersionUID; 2004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2005adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2006adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private class TestCert extends X509Certificate { 2008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2009adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 176676115254260405L; 2010adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* Stuff fields */ 2012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected String equalCriteria = null; // to simplify method equals() 2013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected BigInteger serialNumber = null; 2015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2016adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected X500Principal issuer = null; 2017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2018adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected X500Principal subject = null; 2019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] keyIdentifier = null; 2021adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2022adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Date date = null; 2023adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2024adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Date notBefore = null; 2025adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2026adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Date notAfter = null; 2027adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2028adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected PublicKey key = null; 2029adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2030adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected boolean[] keyUsage = null; 2031adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2032adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected List<String> extKeyUsage = null; 2033adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2034adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected int pathLen = 1; 2035adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2036adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected GeneralNames sans = null; 2037adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2038adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] encoding = null; 2039adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2040adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected String[] policies = null; 2041adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2042adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Collection<List<?>> collection = null; 2043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected NameConstraints nameConstraints = null; 2045adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2046adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* Stuff methods */ 2047adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert() { 2048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2049adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(GeneralNames sans) { 2051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setSubjectAlternativeNames(sans); 2052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(NameConstraints nameConstraints) { 2055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.nameConstraints = nameConstraints; 2056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(Collection<List<?>> collection) { 2059adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setCollection(collection); 2060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(String equalCriteria) { 2063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setEqualCriteria(equalCriteria); 2064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2066adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(String[] policies) { 2067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setPolicies(policies); 2068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2070adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(BigInteger serial) { 2071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setSerialNumber(serial); 2072adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2073adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(X500Principal principal) { 2075adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setIssuer(principal); 2076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setSubject(principal); 2077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(byte[] array) { 2080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setKeyIdentifier(array); 2081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(Date date) { 2084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setDate(date); 2085adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2087adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(Date notBefore, Date notAfter) { 2088adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setPeriod(notBefore, notAfter); 2089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2090adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2091adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(PublicKey key) { 2092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setPublicKey(key); 2093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(boolean[] keyUsage) { 2096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setKeyUsage(keyUsage); 2097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(Set<String> extKeyUsage) { 2100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setExtendedKeyUsage(extKeyUsage); 2101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(int pathLen) { 2104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.pathLen = pathLen; 2105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setSubjectAlternativeNames(GeneralNames sans) { 2108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.sans = sans; 2109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setCollection(Collection<List<?>> collection) { 2112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.collection = collection; 2113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setPolicies(String[] policies) { 2116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.policies = policies; 2117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setExtendedKeyUsage(Set<String> extKeyUsage) { 2120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.extKeyUsage = (extKeyUsage == null) ? null : new ArrayList<String>( 2121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project extKeyUsage); 2122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setKeyUsage(boolean[] keyUsage) { 2125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.keyUsage = (keyUsage == null) ? null : (boolean[]) keyUsage 2126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .clone(); 2127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setPublicKey(PublicKey key) { 2130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.key = key; 2131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setPeriod(Date notBefore, Date notAfter) { 2134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.notBefore = notBefore; 2135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.notAfter = notAfter; 2136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setSerialNumber(BigInteger serial) { 2139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.serialNumber = serial; 2140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEqualCriteria(String equalCriteria) { 2143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.equalCriteria = equalCriteria; 2144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setIssuer(X500Principal issuer) { 2147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.issuer = issuer; 2148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setSubject(X500Principal subject) { 2151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.subject = subject; 2152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setKeyIdentifier(byte[] subjectKeyID) { 2155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.keyIdentifier = (byte[]) subjectKeyID.clone(); 2156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setDate(Date date) { 2159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.date = new Date(date.getTime()); 2160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEncoding(byte[] encoding) { 2163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.encoding = encoding; 2164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* Method implementations */ 2167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object cert) { 2168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (cert == null) { 2169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 2170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((equalCriteria == null) 2172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project || (((TestCert) cert).equalCriteria == null)) { 2173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 2174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 2175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return equalCriteria.equals(((TestCert) cert).equalCriteria); 2176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String toString() { 2180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (equalCriteria != null) { 2181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return equalCriteria; 2182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ""; 2184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void checkValidity() throws CertificateExpiredException, 2187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateNotYetValidException { 2188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void checkValidity(Date date) 2191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateExpiredException, 2192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateNotYetValidException { 2193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (this.date == null) { 2194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new CertificateExpiredException(); 2195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int result = this.date.compareTo(date); 2197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (result > 0) { 2198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new CertificateExpiredException(); 2199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (result < 0) { 2201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new CertificateNotYetValidException(); 2202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getVersion() { 2206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 3; 2207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public BigInteger getSerialNumber() { 2210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (serialNumber == null) ? new BigInteger("1111") 2211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project : serialNumber; 2212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Principal getIssuerDN() { 2215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return issuer; 2216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X500Principal getIssuerX500Principal() { 2219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return issuer; 2220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Principal getSubjectDN() { 2223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return subject; 2224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X500Principal getSubjectX500Principal() { 2227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return subject; 2228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Date getNotBefore() { 2231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Date getNotAfter() { 2235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getTBSCertificate() throws CertificateEncodingException { 2239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getSignature() { 2243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getSigAlgName() { 2247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getSigAlgOID() { 2251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getSigAlgParams() { 2255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean[] getIssuerUniqueID() { 2259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean[] getSubjectUniqueID() { 2263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean[] getKeyUsage() { 2267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return keyUsage; 2268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public List<String> getExtendedKeyUsage() 2271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateParsingException { 2272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return extKeyUsage; 2273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getBasicConstraints() { 2276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return pathLen; 2277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void verify(PublicKey key) throws CertificateException, 2280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchAlgorithmException, InvalidKeyException, 2281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchProviderException, SignatureException { 2282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void verify(PublicKey key, String sigProvider) 2285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException, NoSuchAlgorithmException, 2286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InvalidKeyException, NoSuchProviderException, 2287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SignatureException { 2288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public PublicKey getPublicKey() { 2291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return key; 2292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getEncoded() throws CertificateEncodingException { 2295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return encoding; 2296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Set<String> getNonCriticalExtensionOIDs() { 2299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Set<String> getCriticalExtensionOIDs() { 2303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getExtensionValue(String oid) { 2307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (("2.5.29.14".equals(oid)) || ("2.5.29.35".equals(oid))) { 2309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Extension value is represented as an OctetString 2310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode(keyIdentifier); 2311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.16".equals(oid)) { 2313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PrivateKeyUsagePeriod pkup = new PrivateKeyUsagePeriod( 2314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notBefore, notAfter); 2315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] encoded = pkup.getEncoded(); 2316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode(encoded); 2317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (("2.5.29.37".equals(oid)) && (extKeyUsage != null)) { 2319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ASN1Oid[] oa = new ASN1Oid[extKeyUsage.size()]; 2320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] val = new String[extKeyUsage.size()]; 2321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it = extKeyUsage.iterator(); 2322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int id = 0; 2323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (it.hasNext()) { 2324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project oa[id] = ASN1Oid.getInstanceForString(); 2325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project val[id++] = (String) it.next(); 2326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new ASN1Sequence(oa).encode(val)); 2329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.19".equals(oid)) { 2331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new ASN1Sequence(new ASN1Type[] { 2333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ASN1Boolean.getInstance(), 2334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ASN1Integer.getInstance() }) 2335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .encode(new Object[] { 2336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Boolean(pathLen != 1), 2337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger.valueOf(pathLen) 2338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .toByteArray() })); 2339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.17".equals(oid) && (sans != null)) { 2341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (sans.getNames() == null) { 2342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames.ASN1.encode(sans)); 2346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.32".equals(oid) && (policies != null) 2348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && (policies.length > 0)) { 2349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Certificate Policies Extension (as specified in rfc 3280) 2350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificatePolicies certificatePolicies = new CertificatePolicies(); 2351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < policies.length; i++) { 2352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PolicyInformation policyInformation = new PolicyInformation( 2353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project policies[i]); 2354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certificatePolicies.addPolicyInformation(policyInformation); 2355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certificatePolicies.getEncoded()); 2358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.30".equals(oid) && (nameConstraints != null)) { // 2360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Name 2361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Constraints 2362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Extension 2363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // (as 2364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // specified 2365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // in 2366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // rfc 2367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 3280) 2368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project nameConstraints.getEncoded()); 2370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean hasUnsupportedCriticalExtension() { 2376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 2377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X509Certificate rootCertificate; 2382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X509Certificate endCertificate; 2384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public MyCRL crl; 2386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private X509CertSelector theCertSelector; 2388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private CertPathBuilder builder; 2390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void setupEnvironment() throws Exception { 2392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // create certificates and CRLs 2393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory cf = CertificateFactory.getInstance("X.509"); 2394fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project ByteArrayInputStream bi = new ByteArrayInputStream(TestUtils.rootCert.getBytes()); 2395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project rootCertificate = (X509Certificate) cf.generateCertificate(bi); 2396fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project bi = new ByteArrayInputStream(TestUtils.endCert.getBytes()); 2397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project endCertificate = (X509Certificate) cf.generateCertificate(bi); 2398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger revokedSerialNumber = BigInteger.valueOf(1); 2400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project crl = new MyCRL("X.509"); 2401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// X509CRL rootCRL = X509CRL; 2402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// X509CRL interCRL = X509CRLExample.createCRL(interCert, interPair 2403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// .getPrivate(), revokedSerialNumber); 2404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // create CertStore to support path building 2406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project List<Object> list = new ArrayList<Object>(); 2407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.add(rootCertificate); 2409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.add(endCertificate); 2410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// CollectionCertStoreParameters params = new CollectionCertStoreParameters( 2412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// list); 2413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// CertStore store = CertStore.getInstance("Collection", params); 2414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// 2415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector = new X509CertSelector(); 2416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setCertificate(endCertificate); 2417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setIssuer(endCertificate.getIssuerX500Principal() 2418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getEncoded()); 2419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // build the path 2421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project builder = CertPathBuilder.getInstance("PKIX"); 2422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private CertPath buildCertPath() throws InvalidAlgorithmParameterException { 2426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathBuilderResult result = null; 2427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXBuilderParameters buildParams = new PKIXBuilderParameters( 2428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collections.singleton(new TrustAnchor(rootCertificate, null)), 2429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector); 2430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 2431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result = (PKIXCertPathBuilderResult) builder 2432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .build(buildParams); 2433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch(CertPathBuilderException e) { 2434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return result.getCertPath(); 2437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addPathToName(int, byte[]) 2441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 2443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 2444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies Exception", 2445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addPathToName", 2446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, byte[].class} 2447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 2448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addPathToNameLintLbyte_array2() throws Exception { 2449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.initCertPathSSCertChain(); 2450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setupEnvironment(); 2451fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project byte[] bytes, bytesName; 2452fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // GeneralName name = new GeneralName(1, "822.Name"); 2453fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // bytes = name.getEncoded(); 2454fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // bytesName = name.getEncodedName(); 2455fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project bytes = new byte[] {-127, 8, 56, 50, 50, 46, 78, 97, 109, 101}; 245650b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob bytesName = new byte[] {22, 8, 56, 50, 50, 46, 78, 97, 109, 101}; 245750b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob bytes[bytes.length-3] = (byte) 200; 2458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 246050b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob theCertSelector.addPathToName(1, bytes); 2461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 2462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 2463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setPathToNames(null); 2466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2467fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project theCertSelector.addPathToName(1, bytesName); 2468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(theCertSelector.getPathToNames()); 2469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPath p = buildCertPath(); 2470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(p); 2471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setPathToNames(null); 2473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// name = new GeneralName(new Name("O=Android")); 2475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// theCertSelector.addPathToName(4, endCertificate.getSubjectDN().getName()); 2476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.addPathToName(4, TestUtils.rootCertificateSS.getIssuerX500Principal().getEncoded()); 2477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(theCertSelector.getPathToNames()); 2478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project p = TestUtils.buildCertPathSSCertChain(); 2479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(p); 2480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addPathToName(int, String) 2484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 2486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 2487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies IOException.", 2488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addPathToName", 2489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, java.lang.String.class} 2490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 2491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addPathToNameLintLjava_lang_String2() throws Exception { 2492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setupEnvironment(); 2493fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project byte[] bytes, bytesName; 2494fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // GeneralName name = new GeneralName(1, "822.Name"); 2495fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // bytes = name.getEncoded(); 2496fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // bytesName = name.getEncodedName(); 2497fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project bytes = new byte[] {-127, 8, 56, 50, 50, 46, 78, 97, 109, 101}; 2498fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project bytesName = new byte[] {22, 8, 56, 50, 50, 46, 78, 97, 109, 101}; 2499fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project assertNotNull(bytes); 2500fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project byte[] b = new byte[bytes.length]; 2501fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project b = bytes; 2502fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project b[bytes.length-3] = (byte) 200; 2503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 2505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.addPathToName(1, new String(b)); 2506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 2507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 2508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setPathToNames(null); 2511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2512fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project theCertSelector.addPathToName(1, new String(bytesName)); 2513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(theCertSelector.getPathToNames()); 2514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPath p = buildCertPath(); 2516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(p); 2517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setPathToNames(null); 2519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.addPathToName(1, rootCertificate.getIssuerX500Principal().getName()); 2520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(theCertSelector.getPathToNames()); 2521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //p = buildCertPath(); 2522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //assertNotNull(p); 2523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addSubjectAlternativeName(int, byte[]) 2527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 2529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 2530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "IOException checking missed", 2531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addSubjectAlternativeName", 2532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, byte[].class} 2533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 2534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addSubjectAlternativeNameLintLbyte_array2() 2535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws Exception { 2536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san0 = new GeneralName(new OtherName("1.2.3.4.5", 2539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new byte[] {1, 2, 0, 1})); 2540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 2541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 2542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 2544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san0); 2545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san1); 2546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 2547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 2549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(0, san0.getEncodedName()); 2551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(1, san1.getEncodedName()); 2552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(2, san2.getEncodedName()); 2553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 2555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san0); 2556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 2558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 2559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert1)); 2561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(cert2)); 2562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectAlternativeNames(null); 2564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName name = new GeneralName(new Name("O=Android")); 2566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 2567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(0, name.getEncodedName()); 2568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 2569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 2570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addSubjectAlternativeName(int, String) 2576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 2578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 2579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 2580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addSubjectAlternativeName", 2581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, java.lang.String.class} 2582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 2583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addSubjectAlternativeNameLintLjava_lang_String2() throws Exception{ 2584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san6 = new GeneralName(6, "http://uniform.Resource.Id"); 2585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 2586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 2588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san6); 2589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 2590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 2592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(6, "http://uniform.Resource.Id"); 2594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(2, "dNSName"); 2595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 2597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san2); 2598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 2600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 2601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert1)); 2603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(cert2)); 2604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectAlternativeNames(null); 2606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName name = new GeneralName(new Name("O=Android")); 2608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 2609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(0, (name.toString())); 2610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 2611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 2612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 2616